{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///material-components-web.min.js","webpack:///webpack/bootstrap 1adfff9af08dec06a198","webpack:///./packages/mdc-base/foundation.ts","webpack:///./packages/mdc-base/component.ts","webpack:///./packages/mdc-dom/index.ts","webpack:///./packages/mdc-ripple/index.ts","webpack:///./packages/mdc-ripple/component.ts","webpack:///./packages/mdc-menu-surface/constants.ts","webpack:///./packages/mdc-top-app-bar/constants.ts","webpack:///./packages/mdc-list/foundation.ts","webpack:///./packages/mdc-menu-surface/foundation.ts","webpack:///./packages/mdc-tab-indicator/foundation.ts","webpack:///./packages/mdc-animation/util.ts","webpack:///./packages/mdc-dom/ponyfill.ts","webpack:///./packages/mdc-ripple/util.ts","webpack:///./packages/mdc-ripple/foundation.ts","webpack:///./packages/mdc-drawer/dismissible/foundation.ts","webpack:///./packages/mdc-floating-label/index.ts","webpack:///./packages/mdc-floating-label/foundation.ts","webpack:///./packages/mdc-line-ripple/index.ts","webpack:///./packages/mdc-menu/constants.ts","webpack:///./packages/mdc-notched-outline/index.ts","webpack:///./packages/mdc-snackbar/constants.ts","webpack:///./packages/mdc-tab-scroller/rtl-scroller.ts","webpack:///./packages/mdc-top-app-bar/standard/foundation.ts","webpack:///./packages/mdc-top-app-bar/foundation.ts","webpack:///./packages/mdc-checkbox/foundation.ts","webpack:///./packages/mdc-chips/chip/index.ts","webpack:///./packages/mdc-chips/chip/constants.ts","webpack:///./packages/mdc-chips/chip/foundation.ts","webpack:///./packages/mdc-chips/chip-set/foundation.ts","webpack:///./packages/mdc-dialog/util.ts","webpack:///./packages/mdc-dialog/foundation.ts","webpack:///./packages/mdc-drawer/util.ts","webpack:///./packages/mdc-drawer/node_modules/focus-trap/index.js","webpack:///./packages/mdc-list/component.ts","webpack:///./packages/mdc-list/constants.ts","webpack:///./packages/mdc-drawer/modal/foundation.ts","webpack:///./packages/mdc-form-field/foundation.ts","webpack:///./packages/mdc-grid-list/foundation.ts","webpack:///./packages/mdc-icon-button/foundation.ts","webpack:///./packages/mdc-line-ripple/foundation.ts","webpack:///./packages/mdc-linear-progress/foundation.ts","webpack:///./packages/mdc-list/index.ts","webpack:///./packages/mdc-menu-surface/index.ts","webpack:///./packages/mdc-menu-surface/util.ts","webpack:///./packages/mdc-menu/index.ts","webpack:///./packages/mdc-menu/foundation.ts","webpack:///./packages/mdc-notched-outline/constants.ts","webpack:///./packages/mdc-notched-outline/foundation.ts","webpack:///./packages/mdc-radio/foundation.ts","webpack:///./packages/mdc-select/constants.ts","webpack:///./packages/mdc-select/foundation.ts","webpack:///./packages/mdc-select/helper-text/index.ts","webpack:///./packages/mdc-select/helper-text/foundation.ts","webpack:///./packages/mdc-select/icon/index.ts","webpack:///./packages/mdc-select/icon/foundation.ts","webpack:///./packages/mdc-slider/constants.ts","webpack:///./packages/mdc-slider/foundation.ts","webpack:///./packages/mdc-snackbar/util.ts","webpack:///./packages/mdc-snackbar/foundation.ts","webpack:///./packages/mdc-switch/foundation.ts","webpack:///./packages/mdc-tab-scroller/index.ts","webpack:///./packages/mdc-tab-scroller/util.ts","webpack:///./packages/mdc-tab-scroller/constants.ts","webpack:///./packages/mdc-tab-scroller/foundation.ts","webpack:///./packages/mdc-tab/index.ts","webpack:///./packages/mdc-tab-indicator/index.ts","webpack:///./packages/mdc-tab-indicator/fading-foundation.ts","webpack:///./packages/mdc-tab-indicator/sliding-foundation.ts","webpack:///./packages/mdc-tab/foundation.ts","webpack:///./packages/mdc-tab-bar/foundation.ts","webpack:///./packages/mdc-textfield/character-counter/index.ts","webpack:///./packages/mdc-textfield/character-counter/foundation.ts","webpack:///./packages/mdc-textfield/constants.ts","webpack:///./packages/mdc-textfield/foundation.ts","webpack:///./packages/mdc-textfield/helper-text/index.ts","webpack:///./packages/mdc-textfield/helper-text/foundation.ts","webpack:///./packages/mdc-textfield/icon/index.ts","webpack:///./packages/mdc-textfield/icon/foundation.ts","webpack:///./packages/mdc-toolbar/foundation.ts","webpack:///./packages/mdc-top-app-bar/fixed/foundation.ts","webpack:///./packages/mdc-top-app-bar/short/foundation.ts","webpack:///./packages/material-components-web/index.ts","webpack:///./packages/mdc-auto-init/index.ts","webpack:///./packages/mdc-base/index.ts","webpack:///./packages/mdc-checkbox/index.ts","webpack:///./packages/mdc-checkbox/component.ts","webpack:///./packages/mdc-ripple/constants.ts","webpack:///./packages/mdc-checkbox/constants.ts","webpack:///./packages/mdc-chips/index.ts","webpack:///./packages/mdc-chips/chip/component.ts","webpack:///./packages/mdc-chips/chip-set/index.ts","webpack:///./packages/mdc-chips/chip-set/component.ts","webpack:///./packages/mdc-chips/chip-set/constants.ts","webpack:///./packages/mdc-dialog/index.ts","webpack:///./packages/mdc-dialog/node_modules/focus-trap/index.js","webpack:///./packages/mdc-dialog/node_modules/tabbable/index.js","webpack:///./packages/mdc-dialog/node_modules/xtend/immutable.js","webpack:///./packages/mdc-dialog/component.ts","webpack:///./packages/mdc-dialog/constants.ts","webpack:///./packages/mdc-drawer/index.ts","webpack:///./packages/mdc-drawer/node_modules/tabbable/index.js","webpack:///./packages/mdc-drawer/node_modules/xtend/immutable.js","webpack:///./packages/mdc-drawer/component.ts","webpack:///./packages/mdc-drawer/constants.ts","webpack:///./packages/mdc-floating-label/component.ts","webpack:///./packages/mdc-floating-label/constants.ts","webpack:///./packages/mdc-form-field/index.ts","webpack:///./packages/mdc-form-field/component.ts","webpack:///./packages/mdc-form-field/constants.ts","webpack:///./packages/mdc-grid-list/index.ts","webpack:///./packages/mdc-grid-list/component.ts","webpack:///./packages/mdc-grid-list/constants.ts","webpack:///./packages/mdc-icon-button/index.ts","webpack:///./packages/mdc-icon-button/component.ts","webpack:///./packages/mdc-icon-button/constants.ts","webpack:///./packages/mdc-line-ripple/component.ts","webpack:///./packages/mdc-line-ripple/constants.ts","webpack:///./packages/mdc-linear-progress/index.ts","webpack:///./packages/mdc-linear-progress/component.ts","webpack:///./packages/mdc-linear-progress/constants.ts","webpack:///./packages/mdc-menu-surface/component.ts","webpack:///./packages/mdc-menu/component.ts","webpack:///./packages/mdc-notched-outline/component.ts","webpack:///./packages/mdc-radio/index.ts","webpack:///./packages/mdc-radio/component.ts","webpack:///./packages/mdc-radio/constants.ts","webpack:///./packages/mdc-select/index.ts","webpack:///./packages/mdc-select/component.ts","webpack:///./packages/mdc-select/helper-text/component.ts","webpack:///./packages/mdc-select/helper-text/constants.ts","webpack:///./packages/mdc-select/icon/component.ts","webpack:///./packages/mdc-select/icon/constants.ts","webpack:///./packages/mdc-slider/index.ts","webpack:///./packages/mdc-slider/component.ts","webpack:///./packages/mdc-snackbar/index.ts","webpack:///./packages/mdc-snackbar/component.ts","webpack:///./packages/mdc-switch/index.ts","webpack:///./packages/mdc-switch/component.ts","webpack:///./packages/mdc-switch/constants.ts","webpack:///./packages/mdc-tab-bar/index.ts","webpack:///./packages/mdc-tab-bar/component.ts","webpack:///./packages/mdc-tab-scroller/component.ts","webpack:///./packages/mdc-tab-scroller/rtl-default-scroller.ts","webpack:///./packages/mdc-tab-scroller/rtl-negative-scroller.ts","webpack:///./packages/mdc-tab-scroller/rtl-reverse-scroller.ts","webpack:///./packages/mdc-tab/component.ts","webpack:///./packages/mdc-tab-indicator/component.ts","webpack:///./packages/mdc-tab-indicator/constants.ts","webpack:///./packages/mdc-tab/constants.ts","webpack:///./packages/mdc-tab-bar/constants.ts","webpack:///./packages/mdc-textfield/index.ts","webpack:///./packages/mdc-textfield/component.ts","webpack:///./packages/mdc-textfield/character-counter/component.ts","webpack:///./packages/mdc-textfield/character-counter/constants.ts","webpack:///./packages/mdc-textfield/helper-text/component.ts","webpack:///./packages/mdc-textfield/helper-text/constants.ts","webpack:///./packages/mdc-textfield/icon/component.ts","webpack:///./packages/mdc-textfield/icon/constants.ts","webpack:///./packages/mdc-toolbar/index.ts","webpack:///./packages/mdc-toolbar/component.ts","webpack:///./packages/mdc-toolbar/constants.ts","webpack:///./packages/mdc-top-app-bar/index.ts","webpack:///./packages/mdc-top-app-bar/component.ts"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","value","MDCFoundation","adapter","adapter_","init","destroy","default","__read","Symbol","iterator","r","e","ar","next","done","push","error","__spread","arguments","length","concat","foundation_1","MDCComponent","foundation","args","_i","root_","initialize","apply","foundation_","undefined","getDefaultFoundation","initialSyncWithDOM","attachTo","_args","Error","listen","evtType","handler","addEventListener","unlisten","removeEventListener","emit","evtData","shouldBubble","evt","CustomEvent","bubbles","detail","document","createEvent","initCustomEvent","dispatchEvent","__importStar","mod","result","k","ponyfill","__export","util","__extends","_extendStatics","b","setPrototypeOf","__proto__","Array","__","constructor","create","component_1","index_1","MDCRipple","_super","_this","disabled","opts","isUnbounded","ripple","unbounded","createAdapter","instance","addClass","className","classList","add","browserSupportsCssVars","supportsCssVariables","window","computeBoundingRect","getBoundingClientRect","containsEventTarget","target","contains","deregisterDocumentInteractionHandler","documentElement","applyPassive","deregisterInteractionHandler","deregisterResizeHandler","getWindowPageOffset","x","pageXOffset","y","pageYOffset","isSurfaceActive","matches","isSurfaceDisabled","Boolean","registerDocumentInteractionHandler","registerInteractionHandler","registerResizeHandler","removeClass","remove","updateCssVariable","varName","style","setProperty","unbounded_","set","setUnbounded_","activate","deactivate","layout","MDCRippleFoundation","dataset","setUnbounded","cssClasses","ANCHOR","ANIMATING_CLOSED","ANIMATING_OPEN","FIXED","OPEN","ROOT","strings","CLOSED_EVENT","OPENED_EVENT","FOCUSABLE_ELEMENTS","join","numbers","TRANSITION_OPEN_DURATION","TRANSITION_CLOSE_DURATION","MARGIN_TO_EDGE","ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO","CornerBit","Corner","FIXED_CLASS","FIXED_SCROLLED_CLASS","SHORT_CLASS","SHORT_COLLAPSED_CLASS","SHORT_HAS_ACTION_ITEM_CLASS","DEBOUNCE_THROTTLE_RESIZE_TIME_MS","MAX_TOP_APP_BAR_HEIGHT","ACTION_ITEM_SELECTOR","NAVIGATION_EVENT","NAVIGATION_ICON_SELECTOR","ROOT_SELECTOR","TITLE_SELECTOR","isNumberArray","selectedIndex","__assign","assign","t","constants_1","ELEMENTS_KEY_ALLOWED_IN","MDCListFoundation","defaultAdapter","wrapFocus_","isVertical_","isSingleSelectionList_","selectedIndex_","focusedItemIndex_","useActivatedClass_","isCheckboxList_","isRadioList_","addClassForElementIndex","focusItemAtIndex","getFocusedElementIndex","getListItemCount","hasCheckboxAtIndex","hasRadioAtIndex","isCheckboxCheckedAtIndex","isFocusInsideList","notifyAction","removeClassForElementIndex","setAttributeForElementIndex","setCheckedCheckboxOrRadioAtIndex","setTabIndexForListItemChildren","setWrapFocus","setVerticalOrientation","setSingleSelection","setUseActivatedClass","useActivated","getSelectedIndex","setSelectedIndex","index","isIndexValid_","setCheckboxAtIndex_","setRadioAtIndex_","setSingleSelectionAtIndex_","handleFocusIn","_","listItemIndex","handleFocusOut","setTimeout","setTabindexToFirstSelectedItem_","handleKeydown","isRootListItem","arrowLeft","key","keyCode","arrowUp","arrowRight","arrowDown","isHome","isEnd","isEnter","isSpace","currentIndex","nextIndex","preventDefaultEvent_","focusNextElement","focusPrevElement","focusFirstElement","focusLastElement","tagName","isSelectableList_","setSelectedIndexOnAction_","setTabindexAtIndex_","handleClick","toggleCheckbox","count","prevIndex","lastIndex","toLowerCase","indexOf","preventDefault","selectedClassName","LIST_ITEM_SELECTED_CLASS","LIST_ITEM_ACTIVATED_CLASS","ARIA_SELECTED","ARIA_CHECKED","isChecked","targetIndex","reduce","minIndex","Math","min","some","isIndexInRange_","listSize","toggleCheckboxAtIndex_","selectedIndexes","slice","filter","__values","MDCMenuSurfaceFoundation","isOpen_","isQuickOpen_","isHoistedElement_","isFixedPosition_","openAnimationEndTimerId_","closeAnimationEndTimerId_","animationRequestId_","anchorCorner_","TOP_START","anchorMargin_","top","right","bottom","left","position_","hasClass","hasAnchor","isElementInContainer","isFocused","isFirstElementFocused","isLastElementFocused","isRtl","getInnerDimensions","height","width","getAnchorDimensions","getWindowDimensions","getBodyDimensions","getWindowScroll","setPosition","setMaxHeight","setTransformOrigin","saveFocus","restoreFocus","notifyClose","notifyOpen","_a","clearTimeout","cancelAnimationFrame","setAnchorCorner","corner","setAnchorMargin","margin","setIsHoisted","isHoisted","setFixedPosition","isFixedPosition","setAbsolutePosition","isFinite_","setQuickOpen","quickOpen","isOpen","open","requestAnimationFrame","dimensions_","autoPosition_","close","maybeRestoreFocus_","handleBodyClick","el","shiftKey","isEscape","isTab","measurements_","getAutoLayoutMeasurements_","getOriginCorner_","maxMenuSurfaceHeight","getMenuSurfaceMaxHeight_","verticalAlignment","hasBit_","BOTTOM","horizontalAlignment","RIGHT","horizontalOffset","getHorizontalOriginOffset_","verticalOffset","getVerticalOriginOffset_","_b","anchorSize","surfaceSize","position","adjustPositionForHoistedElement_","anchorRect","bodySize","viewportSize","windowScroll","viewportDistance","TOP_LEFT","isBottomAligned","availableTop","availableBottom","topOverflow","bottomOverflow","setBit_","isFlipRtl","FLIP_RTL","avoidHorizontalOverlap","isAlignedRight","availableLeft","availableRight","leftOverflow","rightOverflow","maxHeight","isBottomAnchored","isRightAligned","rightOffset","avoidVerticalOverlap","e_1","props","keys","props_1","props_1_1","prop","e_1_1","return","isRootFocused","childHasFocus","activeElement","bit","num","isFinite","MDCTabIndicatorFoundation","computeContentClientRect","setContentStyleProperty","isWindow","windowObj","createElement","getCorrectPropertyName","cssProperty","cssPropertyNameMap","standard","prefixed","getCorrectEventName","eventType","jsEventTypeMap","animation","transform","transition","animationend","animationiteration","animationstart","transitionend","closest","element","selector","parentElement","webkitMatchesSelector","msMatchesSelector","detectEdgePseudoVarBug","node","body","appendChild","computedStyle","getComputedStyle","hasPseudoVarBug","borderTopStyle","forceRefresh","CSS","supportsCssVars","supportsCssVariables_","supports","explicitlySupportsCssVars","weAreFeatureDetectingSafari10plus","globalObj","supportsPassive_","isSupported_1","passive","getNormalizedEventCoords","pageOffset","clientRect","normalizedX","normalizedY","documentX","documentY","type","touchEvent","changedTouches","pageX","pageY","mouseEvent","util_1","ACTIVATION_EVENT_TYPES","POINTER_DEACTIVATION_EVENT_TYPES","activatedTargets","activationAnimationHasEnded_","activationTimer_","fgDeactivationRemovalTimer_","fgScale_","frame_","initialSize_","layoutFrame_","maxRadius_","unboundedCoords_","activationState_","defaultActivationState_","activationTimerCallback_","runDeactivationUXLogicIfReady_","activateHandler_","activate_","deactivateHandler_","deactivate_","focusHandler_","handleFocus","blurHandler_","handleBlur","resizeHandler_","supportsPressRipple","supportsPressRipple_","registerRootHandlers_","ROOT_1","UNBOUNDED_1","UNBOUNDED","layoutInternal_","FG_ACTIVATION","FG_DEACTIVATION","ROOT_2","UNBOUNDED_2","removeCssVars_","deregisterRootHandlers_","deregisterDeactivationHandlers_","BG_FOCUSED","activationEvent","hasDeactivationUXRun","isActivated","isProgrammatic","wasActivatedByPointer","wasElementMadeActive","forEach","registerDeactivationHandlers_","rippleStrings","activationState","previousActivationEvent","previousActivationEvent_","resetActivationState_","checkElementMadeActive_","animateActivation_","VAR_FG_TRANSLATE_START","VAR_FG_TRANSLATE_END","DEACTIVATION_TIMEOUT_MS","translateStart","translateEnd","_c","getFgTranslationCoordinates_","startPoint","endPoint","rmBoundedActivationClasses_","FG_DEACTIVATION_MS","TAP_DELAY_MS","state","animateDeactivation_","maxDim","max","sqrt","pow","PADDING","floor","INITIAL_ORIGIN_SCALE","updateLayoutCssVars_","VAR_FG_SIZE","VAR_LEFT","VAR_TOP","VAR_FG_SCALE","round","MDCDismissibleDrawerFoundation","animationFrame_","animationTimer_","elementHasClass","focusActiveNavigationItem","trapFocus","releaseFocus","isOpening","isClosing","ANIMATE","runNextAnimationFrame_","OPENING","CLOSING","handleTransitionEnd","isElement_","closed_","opened_","callback","MDCFloatingLabelFoundation","shakeAnimationEndHandler_","handleShakeAnimationEnd_","getWidth","shake","shouldShake","LABEL_SHAKE","float","shouldFloat","LABEL_FLOAT_ABOVE","MENU_SELECTED_LIST_ITEM","MENU_SELECTION_GROUP","ARIA_SELECTED_ATTR","CHECKBOX_SELECTOR","LIST_SELECTOR","SELECTED_EVENT","ACTION_SELECTOR","ARIA_LIVE_LABEL_TEXT_ATTR","CLOSING_EVENT","DISMISS_SELECTOR","LABEL_SELECTOR","OPENING_EVENT","REASON_ACTION","REASON_DISMISS","SURFACE_SELECTOR","DEFAULT_AUTO_DISMISS_TIMEOUT_MS","MAX_AUTO_DISMISS_TIMEOUT_MS","MIN_AUTO_DISMISS_TIMEOUT_MS","SNACKBAR_ANIMATION_CLOSE_TIME_MS","SNACKBAR_ANIMATION_OPEN_TIME_MS","ARIA_LIVE_DELAY_MS","MDCTabScrollerRTL","INITIAL_VALUE","MDCTopAppBarFoundation","wasDocked_","isDockedShowing_","currentAppBarOffsetTop_","isCurrentlyBeingResized_","resizeThrottleId_","resizeDebounceId_","lastScrollPosition_","getViewportScrollY","topAppBarHeight_","getTopAppBarHeight","scrollHandler_","topAppBarScrollHandler_","topAppBarResizeHandler_","setStyle","checkForUpdate_","offscreenBoundaryTop","hasAnyPixelsOffscreen","hasAnyPixelsOnscreen","partiallyShowing","moveTopAppBar_","offset","abs","currentScrollPosition","diff","throttledResizeHandler_","currentHeight","MDCTopAppBarBaseFoundation","navClickHandler_","notifyNavigationIconClicked","registerNavigationIconInteractionHandler","deregisterNavigationIconInteractionHandler","registerScrollHandler","deregisterScrollHandler","getTotalActionItems","initScrollHandler","initResizeHandler_","destroyScrollHandler","destroyResizeHandler_","MDCCheckboxFoundation","currentCheckState_","TRANSITION_STATE_INIT","currentAnimationClass_","animEndLatchTimer_","enableAnimationEndHandler_","forceLayout","hasNativeControl","isAttachedToDOM","isIndeterminate","removeNativeControlAttr","setNativeControlAttr","setNativeControlDisabled","determineCheckState_","updateAriaChecked_","UPGRADED","setDisabled","DISABLED","handleAnimationEnd","ANIM_END_LATCH_MS","handleChange","transitionCheckState_","oldState","newState","getTransitionAnimationClass_","TRANSITION_STATE_INDETERMINATE","TRANSITION_STATE_CHECKED","TRANSITION_STATE_UNCHECKED","ANIM_UNCHECKED_CHECKED","ANIM_UNCHECKED_INDETERMINATE","ANIM_CHECKED_UNCHECKED","ANIM_CHECKED_INDETERMINATE","ANIM_INDETERMINATE_CHECKED","ANIM_INDETERMINATE_UNCHECKED","ARIA_CHECKED_ATTR","ARIA_CHECKED_INDETERMINATE_VALUE","CHECKMARK_SELECTOR","ENTRY_ANIMATION_NAME","INTERACTION_EVENT","LEADING_ICON_SELECTOR","REMOVAL_EVENT","SELECTION_EVENT","TRAILING_ICON_INTERACTION_EVENT","TRAILING_ICON_SELECTOR","CHECKMARK","CHIP_EXIT","HIDDEN_LEADING_ICON","LEADING_ICON","SELECTED","TRAILING_ICON","emptyClientRect","MDCChipFoundation","shouldRemoveOnTrailingIconClick_","addClassToLeadingIcon","eventTargetHasClass","getCheckmarkBoundingClientRect","getComputedStyleValue","getRootBoundingClientRect","hasLeadingIcon","notifyInteraction","notifyRemoval","notifySelection","notifyTrailingIconInteraction","removeClassFromLeadingIcon","setStyleProperty","isSelected","setSelected","selected","getShouldRemoveOnTrailingIconClick","setShouldRemoveOnTrailingIconClick","shouldRemove","getDimensions","getRootRect","checkmarkRect","rootRect","checkmarkWidth","beginExit","handleInteraction","propertyName","chipWidth_1","handleTrailingIconInteraction","stopPropagation","MDCChipSetFoundation","selectedChipIds_","removeChip","getSelectedChipIds","select","chipId","CHOICE","previouslySelectedChip","handleChipInteraction","FILTER","toggleSelect_","handleChipSelection","chipIsSelected","deselect_","handleChipRemoval","splice","createFocusTrapInstance","surfaceEl","focusTrapFactory","initialFocusEl","focus_trap_1","clickOutsideDeactivates","escapeDeactivates","initialFocus","isScrollable","scrollHeight","offsetHeight","areTopsMisaligned","els","tops","Set","offsetTop","size","__importDefault","MDCDialogFoundation","escapeKeyAction_","CLOSE_ACTION","scrimClickAction_","autoStackButtons_","areButtonsStacked_","addBodyClass","areButtonsStacked","clickDefaultButton","eventTargetMatches","getActionFromEvent","isContentScrollable","notifyClosed","notifyClosing","notifyOpened","notifyOpening","removeBodyClass","reverseButtons","STACKED","setAutoStackButtons","DESTROY_ACTION","handleAnimationTimerEnd_","SCROLL_LOCK","DIALOG_ANIMATION_OPEN_TIME_MS","action","DIALOG_ANIMATION_CLOSE_TIME_MS","getEscapeKeyAction","setEscapeKeyAction","getScrimClickAction","setScrimClickAction","getAutoStackButtons","autoStack","isClick","isScrim","SCRIM_SELECTOR","isDefault","SUPPRESS_DEFAULT_PRESS_SELECTOR","handleDocumentKeydown","detectStackedButtons_","detectScrollableContent_","SCROLLABLE","returnFocusOnDeactivate","focusTrap","userOptions","activateOptions","active","updateTabbableNodes","paused","nodeFocusedBeforeActivation","doc","onActivate","config","addListeners","trap","deactivateOptions","removeListeners","activeFocusTraps","deactivateTrap","onDeactivate","returnFocus","delay","tryFocus","pause","unpause","activateTrap","getInitialFocusNode","checkFocusIn","checkPointerDown","checkClick","checkKey","getNodeForOption","optionName","optionValue","querySelector","container","firstTabbableNode","tabbable","isFocusable","Document","stopImmediatePropagation","mostRecentlyFocusedNode","isEscapeEvent","isTabEvent","checkTab","lastTabbableNode","tabbableNodes","focus","isSelectableInput","xtend","fn","trapQueue","activeTrap","trapIndex","MDCList","querySelectorAll","ENABLED_ITEMS_SELECTOR","isSingleSelectionList","handleClick_","handleClickEvent_","bind","handleKeydown_","handleKeydownEvent_","focusInEventListener_","handleFocusInEvent_","focusOutEventListener_","handleFocusOutEvent_","initializeListType","direction","getAttribute","ARIA_ORIENTATION","vertical","ARIA_ORIENTATION_HORIZONTAL","setAttribute","FOCUSABLE_CHILD_ELEMENTS","checkboxListItems","ARIA_ROLE_CHECKBOX_SELECTOR","singleSelectedListItem","radioSelectedListItem","ARIA_CHECKED_RADIO_SELECTOR","preselectedItems","ARIA_CHECKED_CHECKBOX_SELECTOR","map","listItem","listElements","singleSelection","RADIO_SELECTOR","checked","ACTION_EVENT","attr","toggleEl","CHECKBOX_RADIO_SELECTOR","event","initEvent","tabIndexValue","CHILD_ELEMENTS_TO_TOGGLE_TABINDEX","getListItemIndex_","eventTarget","nearestParent","LIST_ITEM_CLASS","MDCModalDrawerFoundation","handleScrimClick","MDCFormFieldFoundation","clickHandler_","activateInputRipple","deactivateInputRipple","MDCGridListFoundation","resizeFrame_","alignCenter","getNumberOfTiles","getOffsetWidth","getOffsetWidthForTileAtIndex","setStyleForTilesElement","alignCenter_","gridWidth","itemWidth","tilesWidth","MDCIconButtonToggleFoundation","notifyChange","setAttr","ARIA_PRESSED","isOn","toggle","ICON_BUTTON_ON","MDCLineRippleFoundation","transitionEndHandler_","registerEventHandler","deregisterEventHandler","LINE_RIPPLE_DEACTIVATING","LINE_RIPPLE_ACTIVE","setRippleCenter","xCoordinate","isDeactivating","MDCLinearProgressFoundation","getBuffer","getPrimaryBar","isDeterminate_","INDETERMINATE_CLASS","isReversed_","REVERSED_CLASS","progress_","setDeterminate","isDeterminate","setScale_","setProgress","setBuffer","setReverse","isReversed","CLOSED_CLASS","scaleValue","getTransformPropertyName","cachedCssTransformPropertyName_","foundation_2","foundation_3","MDCMenuFoundation","addClassToElementAtIndex","removeClassFromElementAtIndex","addAttributeToElementAtIndex","removeAttributeFromElementAtIndex","elementContainsClass","closeSurface","getElementIndex","getParentElement","getSelectedElementIndex","notifySelected","handleItemAction","selectionGroup","getSelectionGroup_","handleSelectionGroup_","parent","isGroup","NOTCH_ELEMENT_SELECTOR","NOTCH_ELEMENT_PADDING","NO_LABEL","OUTLINE_NOTCHED","OUTLINE_UPGRADED","MDCNotchedOutlineFoundation","setNotchWidthProperty","removeNotchWidthProperty","notch","notchWidth","closeNotch","MDCRadioFoundation","FOCUSED","INVALID","OUTLINED","REQUIRED","SELECTED_ITEM_CLASS","WITH_LEADING_ICON","ARIA_CONTROLS","CHANGE_EVENT","ENHANCED_VALUE_ATTR","HIDDEN_INPUT_SELECTOR","LINE_RIPPLE_SELECTOR","MENU_SELECTOR","NATIVE_CONTROL_SELECTOR","OUTLINE_SELECTOR","SELECTED_ITEM_SELECTOR","SELECTED_TEXT_SELECTOR","LABEL_SCALE","MDCSelectFoundation","foundationMap","leadingIcon_","leadingIcon","helperText_","helperText","activateBottomLine","deactivateBottomLine","setValue","getValue","floatLabel","getLabelWidth","hasOutline","notchOutline","closeOutline","openMenu","closeMenu","isMenuOpen","checkValidity","setValid","isDisabled","setHelperTextContent","content","setContent","openNotch","didChange","optionHasValue","isRequired","isValid","setValidity","showToScreenReader","labelScale","labelWidth","setLeadingIconAriaLabel","label","setAriaLabel","setLeadingIconContent","MDCSelectHelperTextFoundation","removeAttr","setPersistent","isPersistent","HELPER_TEXT_PERSISTENT","setValidation","isValidation","HELPER_TEXT_VALIDATION_MSG","ARIA_HIDDEN","selectIsValid","helperTextIsPersistent","helperTextIsValidationMsg","validationMsgNeedsDisplay","ROLE","hide_","INTERACTION_EVENTS","MDCSelectIconFoundation","savedTabIndex_","interactionHandler_","getAttr","notifyIconAction","ICON_ROLE","isEnterKey","ACTIVE","DISCRETE","FOCUS","HAS_TRACK_MARKER","IN_TRANSIT","IS_DISCRETE","ARIA_DISABLED","ARIA_VALUEMAX","ARIA_VALUEMIN","ARIA_VALUENOW","INPUT_EVENT","LAST_TRACK_MARKER_SELECTOR","PIN_VALUE_MARKER_SELECTOR","STEP_DATA_ATTR","THUMB_CONTAINER_SELECTOR","TRACK_MARKER_CONTAINER_SELECTOR","TRACK_SELECTOR","PAGE_FACTOR","DOWN_EVENTS","UP_EVENTS","MOVE_EVENT_MAP","mousedown","pointerdown","touchstart","KEY_IDS","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","ARROW_UP","END","HOME","PAGE_DOWN","PAGE_UP","MDCSliderFoundation","NaN","active_","inTransit_","isDiscrete_","hasTrackMarker_","handlingThumbTargetEvt_","min_","max_","step_","value_","disabled_","preventFocusState_","thumbContainerPointerHandler_","interactionStartHandler_","handleDown_","keydownHandler_","handleFocus_","handleBlur_","removeAttribute","getTabIndex","registerThumbContainerInteractionHandler","deregisterThumbContainerInteractionHandler","registerBodyInteractionHandler","deregisterBodyInteractionHandler","notifyInput","setThumbContainerStyleProperty","setTrackStyleProperty","setMarkerValue","appendTrackMarkers","removeTrackMarkers","setLastTrackMarkersStyleProperty","isRTL","evtName","getStep","setupTrackMarker","getMin","getMax","step","numMarkers","indivisible","ceil","lastStepRatio","String","rect_","updateUIForCurrentValue_","setValue_","setMax","setMin","setStep","toggleClass_","isNaN","downEvent","setInTransit_","setActive_","moveHandler","moveEvent","handleMove_","moveEventType","upHandler","handleUp_","setValueFromEvt_","getPageX_","targetTouches","computeValueFromPageX_","xPos","pctComplete","keyId","getKeyId_","getValueForKeyId_","kbdEvt","delta","shouldFireInput","force","valueSetToBoundary","quantize_","translatePx","transformProp","transitionendEvtName","onTransitionEnd_1","inTransit","shouldBePresent","announce","ariaEl","labelEl","priority","labelText","textContent","trim","innerHTML","MDCSnackbarFoundation","autoDismissTimer_","autoDismissTimeoutMs_","closeOnEscape_","clearAutoDismissTimer_","getTimeoutMs","reason","setTimeoutMs","timeoutMs","minValue","maxValue","getCloseOnEscape","setCloseOnEscape","closeOnEscape","handleKeyDown","handleActionButtonClick","_evt","handleActionIconClick","MDCSwitchFoundation","setNativeControlChecked","setChecked","updateCheckedStyling_","nativeControl","CHECKED","computeHorizontalScrollbarHeight","documentObj","shouldCacheResult","horizontalScrollbarHeight_","SCROLL_TEST","horizontalScrollbarHeight","clientHeight","removeChild","ANIMATING","SCROLL_AREA_SCROLL","AREA_SELECTOR","CONTENT_SELECTOR","rtl_default_scroller_1","rtl_negative_scroller_1","rtl_reverse_scroller_1","MDCTabScrollerFoundation","isAnimating_","eventTargetMatchesSelector","addScrollAreaClass","setScrollAreaStyleProperty","setScrollContentStyleProperty","getScrollContentStyleValue","setScrollAreaScrollLeft","getScrollAreaScrollLeft","getScrollContentOffsetWidth","getScrollAreaOffsetWidth","computeScrollAreaClientRect","computeScrollContentClientRect","getScrollPosition","isRTL_","computeCurrentScrollPositionRTL_","currentTranslateX","calculateCurrentTranslateX_","stopScrollAnimation_","evtTarget","incrementScroll","scrollXIncrement","incrementScrollRTL_","incrementScroll_","scrollTo","scrollX","scrollToRTL_","scrollTo_","getRTLScroller","rtlScrollerInstance_","rtlScrollerFactory_","transformValue","match","exec","matrixParams","split","tx","parseFloat","clampScrollValue_","edges","calculateScrollEdges_","translateX","getScrollPositionRTL","currentScrollX","safeScrollX","scrollDelta","animate_","finalScrollPosition","scrollToRTL","targetScrollX","incrementScrollRTL","getAnimatingScrollPosition_","scrollLeft","getAnimatingScrollPosition","initialScrollLeft","newScrollLeft","MDCTabScrollerRTLNegative","rootClientRect","contentClientRect","rightEdgeDelta","MDCTabScrollerRTLReverse","MDCTabScrollerRTLDefault","MDCFadingTabIndicatorFoundation","MDCSlidingTabIndicatorFoundation","previousIndicatorClientRect","currentClientRect","widthDelta","xPosition","NO_TRANSITION","MDCTabFoundation","focusOnActivate_","activateIndicator","deactivateIndicator","notifyInteracted","getOffsetLeft","getContentOffsetLeft","getContentOffsetWidth","isActive","setFocusOnActivate","focusOnActivate","TABINDEX","computeDimensions","rootWidth","rootLeft","contentWidth","contentLeft","contentRight","rootRight","ACCEPTABLE_KEYS","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","END_KEY","HOME_KEY","ENTER_KEY","SPACE_KEY","KEYCODE_MAP","Map","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","END_KEYCODE","HOME_KEYCODE","ENTER_KEYCODE","SPACE_KEYCODE","MDCTabBarFoundation","useAutomaticActivation_","getScrollContentWidth","setActiveTab","activateTabAtIndex","deactivateTabAtIndex","focusTabAtIndex","getTabIndicatorClientRectAtIndex","getTabDimensionsAtIndex","getPreviousActiveTabIndex","getFocusedTabIndex","getIndexOfTabById","getTabListLength","notifyTabActivated","setUseAutomaticActivation","useAutomaticActivation","activateTab","previousActiveIndex","indexIsInRange_","scrollIntoView","getKeyFromEvent_","isActivationKey_","determineTargetFromKey_","focusedTabIndex","handleTabInteraction","tabId","scrollIntoViewRTL_","scrollIntoView_","origin","maxIndex","shouldGoToEnd","shouldDecrement","shouldIncrement","calculateScrollIncrement_","scrollPosition","barWidth","nextTabDimensions","relativeContentLeft","relativeContentRight","leftIncrement","EXTRA_SCROLL_AMOUNT","rightIncrement","calculateScrollIncrementRTL_","scrollContentWidth","findAdjacentTabIndexClosestToEdge_","tabDimensions","relativeRootLeft","relativeRootRight","relativeRootDelta","leftEdgeIsCloser","rightEdgeIsCloser","findAdjacentTabIndexClosestToEdgeRTL_","rootDelta","has","scrollIncrement","scrollWidth","MDCTextFieldCharacterCounterFoundation","setCounterValue","currentLength","maxLength","ICON_SELECTOR","INPUT_SELECTOR","DENSE","HELPER_LINE","TEXTAREA","DENSE_LABEL_SCALE","VALIDATION_ATTR_WHITELIST","ALWAYS_FLOAT_TYPES","POINTERDOWN_EVENTS","MDCTextFieldFoundation","isFocused_","receivedUserInput_","isValid_","useNativeValidation_","characterCounter_","characterCounter","trailingIcon_","trailingIcon","inputFocusHandler_","activateFocus","inputBlurHandler_","deactivateFocus","inputInputHandler_","handleInput","setPointerXOffset_","textFieldInteractionHandler_","handleTextFieldInteraction","validationAttributeChangeHandler_","attributesList","handleValidationAttributeChange","getNativeInput_","shouldAlwaysFloat_","isBadInput_","registerTextFieldInteractionHandler","deregisterTextFieldInteractionHandler","registerInputInteractionHandler","deregisterInputInteractionHandler","registerValidationAttributeChangeHandler","MutationObserver","deregisterValidationAttributeChangeHandler","getNativeInput","activateLineRipple","deactivateLineRipple","setLineRippleTransformOrigin","shakeLabel","hasLabel","validationObserver_","setCharacterCounter_","nativeInput","attributeName","styleValidity_","isDense","styleFocused_","touches","targetEvent","targetClientRect","clientX","autoCompleteFocus","isNativeInputValid_","setUseNativeValidation","useNativeValidation","styleDisabled_","setTrailingIconAriaLabel","setTrailingIconContent","validity","badInput","valid","MDCTextFieldHelperTextFoundation","inputIsValid","MDCTextFieldIconFoundation","MDCToolbarFoundation","checkRowHeightFrame_","scrollFrame_","executedLastChange_","isFixed_","isFixedLastRow_","hasFlexibleFirstRow_","useFlexDefaultBehavior_","calculations_","flexibleExpansionHeight","flexibleExpansionRatio","maxTranslateYDistance","maxTranslateYRatio","scrollThreshold","scrollThresholdRatio","toolbarHeight","toolbarRatio","toolbarRowHeight","getViewportWidth","getOffsetHeight","getFirstRowElementOffsetHeight","setStyleForTitleElement","setStyleForFlexibleRowElement","setStyleForFixedAdjustElement","FIXED_LASTROW","TOOLBAR_ROW_FLEXIBLE","FLEXIBLE_DEFAULT_BEHAVIOR","checkRowHeight_","updateToolbarStyles_","initKeyRatio_","setKeyHeights_","updateAdjustElementStyles","getFlexibleExpansionRatio_","scrollTop","newToolbarRowHeight","getRowHeight_","hasScrolledOutOfThreshold","scrolledOutOfThreshold_","updateToolbarFlexibleState_","updateToolbarFixedState_","updateFlexibleRowElementStyles_","firstRowMaxRatio","breakpoint","TOOLBAR_MOBILE_BREAKPOINT","TOOLBAR_ROW_MOBILE_HEIGHT","TOOLBAR_ROW_HEIGHT","FLEXIBLE_MAX","FLEXIBLE_MIN","translateDistance","FIXED_AT_LAST_ROW","updateElementStylesDefaultBehavior_","maxTitleSize","MAX_TITLE_SIZE","minTitleSize","MIN_TITLE_SIZE","currentTitleSize","MDCFixedTopAppBarFoundation","wasScrolled_","fixedScrollHandler_","MDCShortTopAppBarFoundation","isCollapsed_","shortAppBarScrollHandler_","autoInit","base","checkbox","chips","dialog","dom","drawer","floatingLabel","formField","gridList","iconButton","lineRipple","linearProgress","list","menuSurface","menu","notchedOutline","radio","slider","snackbar","switchControl","tabBar","tabIndicator","tabScroller","tab","textField","toolbar","topAppBar","register","MDCCheckbox","MDCChip","MDCChipSet","MDCDialog","MDCDrawer","MDCFloatingLabel","MDCFormField","MDCGridList","MDCIconButtonToggle","MDCLineRipple","MDCLinearProgress","MDCMenu","MDCMenuSurface","MDCNotchedOutline","MDCRadio","MDCSelect","MDCSlider","MDCSnackbar","MDCSwitch","MDCTabBar","MDCTextField","MDCToolbar","MDCTopAppBar","mdcAutoInit","warn","CONSOLE_WARN","components","nodes","nodes_1","nodes_1_1","ctorName","Constructor","registry","getOwnPropertyDescriptor","component","writable","console","componentName","registryValue","deregister","deregisterAll","validDescriptor","inputPropDesc","index_2","CB_PROTO_PROPS","ripple_","createRipple_","nativeControl_","indeterminate","handleChange_","handleAnimationEnd_","installPropertyChangeHooks_","uninstallPropertyChangeHooks_","offsetWidth","parentNode","nativeCb","cbProto","getPrototypeOf","controlState","desc","nativeGetter","nativeCbDesc","INDETERMINATE","id","rippleFactory","checkmark_","rippleAdapter","handleInteraction_","handleTransitionEnd_","handleTrailingIconInteraction_","getPropertyValue","CHIP_SELECTOR","idCounter","chips_","chipFactory","chipFactory_","instantiateChips_","chip","handleChipInteraction_","handleChipSelection_","handleChipRemoval_","addChip","chipEl","findChipIndex_","options","elementDocument","ownerDocument","regularTabbables","orderedTabbables","untouchabilityChecker","UntouchabilityChecker","candidates","candidateSelector","includeContainer","unshift","candidate","candidateTabindex","isNodeMatchingSelectorTabbable","getTabindex","documentOrder","tabIndex","sort","sortOrderedTabbables","a","isNodeMatchingSelectorFocusable","isNonTabbableRadio","isTabbable","isHiddenInput","isUntouchable","focusableCandidateSelector","tabindexAttr","parseInt","isContentEditable","find","predicate","contentEditable","isInput","isRadio","isTabbableRadio","getCheckedRadio","radioSet","cache","candidateSelectors","Element","hasDisplayNone","nodeComputedStyle","nodeType","Node","ELEMENT_NODE","cached","item","defaultView","display","visibility","extend","source","ponyfill_1","component_2","CONTAINER_SELECTOR","container_","content_","buttons_","BUTTON_SELECTOR","defaultButton_","DEFAULT_BUTTON_SELECTOR","focusTrapFactory_","initialFocusEl_","buttonRipples_","buttonEl","focusTrap_","handleDocumentKeydown_","handleLayout_","LAYOUT_EVENTS","handleOpening_","handleClosing_","click","ACTION_ATTRIBUTE","reverse","button","listFactory","listEl","list_","wrapFocus","MODAL","scrim_","handleScrimClick_","previousFocus_","previousFocus","activeNavItemEl","CLOSE_EVENT","OPEN_EVENT","DISMISSIBLE","APP_CONTENT_SELECTOR","input_","input","label_","TILE_SELECTOR","TILES_SELECTOR","attrName","attrValue","BUFFER_SELECTOR","PRIMARY_BAR_SELECTOR","styleProperty","parentEl","anchorElement","handleBodyClick_","registerBodyClickListener_","deregisterBodyClickListener_","focusableElements","firstFocusableElement_","lastFocusableElement_","hoistMenuToBody","setMenuSurfaceAnchorElement","isFixed","innerWidth","innerHeight","clientWidth","menuSurfaceFactory","menuSurfaceFactory_","listFactory_","menuSurface_","handleItemAction_","items","afterOpenedCallback_","handleAfterOpened_","getOptionByIndex","setAnchorElement","selectedListItem","notchElement_","transitionDuration","removeProperty","menuSurfaceConstants","menuConstants","index_3","index_4","index_5","index_6","index_7","POINTER_EVENTS","labelFactory","lineRippleFactory","outlineFactory","menuFactory","iconFactory","helperTextFactory","MDCSelectIcon","MDCSelectHelperText","isMenuOpen_","selectedText_","targetElement","targetElement_","hasAttribute","helperTextElement","getElementById","enhancedSelectSetup_","labelElement","lineRippleElement","lineRipple_","outlineElement","outline_","menuElement_","initialSyncRequiredState_","addMutationObserverForRequired_","getNormalizedXCoordinate_","handleMenuSelected_","handleMenuOpened_","menu_","handleMenuClosed_","hiddenInput_","enhancedAdapterMethods","getEnhancedSelectAdapterMethods_","disconnect","selectedEl","required","toString","getNativeSelectAdapterMethods_","getCommonAdapterMethods_","getOutlineAdapterMethods_","getLabelAdapterMethods_","getFoundationMap_","BOTTOM_START","setEnhancedSelectedIndex_","isTouchEvent_","selectedItem","previouslySelected","observerHandler","getAttributesList","mutationsList","mutation","observer","observe","attributes","ICON_EVENT","thumbContainer_","track_","pinValueMarker_","trackMarkerContainer_","innerText","toLocaleString","frag","createDocumentFragment","marker","firstChild","origValueNow","parseFloat_","stepUp","amount","stepDown","str","defaultValue","announcerFactory","announce_","surfaceEl_","labelEl_","actionEl_","handleKeyDown_","handleSurfaceClick_","isActionButton_","isActionIcon_","registerKeyDownHandler_","registerSurfaceClickHandler_","deregisterKeyDownHandler_","deregisterSurfaceClickHandler_","actionButtonText","changeHandler_","RIPPLE_SURFACE_SELECTOR","rippleSurface","tabIdCounter","tabList_","tabFactory","tabScrollerFactory","MDCTab","MDCTabScroller","instantiateTabs_","tabScroller_","instantiateTabScroller_","handleTabInteraction_","INTERACTED_EVENT","computeIndicatorClientRect","tabElements","getTabElements_","TAB_ACTIVATED_EVENT","TAB_SELECTOR","tabScrollerElement","TAB_SCROLLER_SELECTOR","area_","propName","rtl_scroller_1","currentScrollLeft","clampedScrollLeft","tabIndicatorFactory","MDCTabIndicator","RIPPLE_SELECTOR","rippleFoundation","tabIndicatorElement","TAB_INDICATOR_SELECTOR","tabIndicator_","offsetLeft","fading_foundation_1","sliding_foundation_1","FADE","characterCounterFactory","MDCTextFieldHelperText","MDCTextFieldCharacterCounter","MDCTextFieldIcon","helperTextStrings","nextElementSibling","hasHelperLine","helperTextEl","characterCounterStrings","characterCounterEl","iconElements","pattern","minLength","getRootAdapterMethods_","getInputAdapterMethods_","getLineRippleAdapterMethods_","isTextArea","isOutlined","ripples_","fixedAdjustElement_","titleElement_","firstRowElement","FIRST_ROW_SELECTOR","firstRowElement_","icon","fixedAdjustElement","navIcon_","icons","iconRipples_","scrollTarget_","iconRipple","setScrollTarget","win"],"mappings":"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","file":"material-components-web.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mdc\"] = factory();\n\telse\n\t\troot[\"mdc\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","/*!\n Material Components for the Web\n Copyright (c) 2019 Google Inc.\n License: MIT\n*/\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mdc\"] = factory();\n\telse\n\t\troot[\"mdc\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 81);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MDCFoundation = /** @class */function () {\n function MDCFoundation(adapter) {\n if (adapter === void 0) {\n adapter = {};\n }\n this.adapter_ = adapter;\n }\n Object.defineProperty(MDCFoundation, \"cssClasses\", {\n get: function get() {\n // Classes extending MDCFoundation should implement this method to return an object which exports every\n // CSS class the foundation class needs as a property. e.g. {ACTIVE: 'mdc-component--active'}\n return {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"strings\", {\n get: function get() {\n // Classes extending MDCFoundation should implement this method to return an object which exports all\n // semantic strings as constants. e.g. {ARIA_ROLE: 'tablist'}\n return {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"numbers\", {\n get: function get() {\n // Classes extending MDCFoundation should implement this method to return an object which exports all\n // of its semantic numbers as constants. e.g. {ANIMATION_DELAY_MS: 350}\n return {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"defaultAdapter\", {\n get: function get() {\n // Classes extending MDCFoundation may choose to implement this getter in order to provide a convenient\n // way of viewing the necessary methods of an adapter. In the future, this could also be used for adapter\n // validation.\n return {};\n },\n enumerable: true,\n configurable: true\n });\n MDCFoundation.prototype.init = function () {\n // Subclasses should override this method to perform initialization routines (registering events, etc.)\n };\n MDCFoundation.prototype.destroy = function () {\n // Subclasses should override this method to perform de-initialization routines (de-registering events, etc.)\n };\n return MDCFoundation;\n}();\nexports.MDCFoundation = MDCFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCFoundation;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar MDCComponent = /** @class */function () {\n function MDCComponent(root, foundation) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n this.root_ = root;\n this.initialize.apply(this, __spread(args));\n // Note that we initialize foundation here and not within the constructor's default param so that\n // this.root_ is defined and can be used within the foundation class.\n this.foundation_ = foundation === undefined ? this.getDefaultFoundation() : foundation;\n this.foundation_.init();\n this.initialSyncWithDOM();\n }\n MDCComponent.attachTo = function (root) {\n // Subclasses which extend MDCBase should provide an attachTo() method that takes a root element and\n // returns an instantiated component with its root set to that element. Also note that in the cases of\n // subclasses, an explicit foundation class will not have to be passed in; it will simply be initialized\n // from getDefaultFoundation().\n return new MDCComponent(root, new foundation_1.MDCFoundation({}));\n };\n /* istanbul ignore next: method param only exists for typing purposes; it does not need to be unit tested */\n MDCComponent.prototype.initialize = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n // Subclasses can override this to do any additional setup work that would be considered part of a\n // \"constructor\". Essentially, it is a hook into the parent constructor before the foundation is\n // initialized. Any additional arguments besides root and foundation will be passed in here.\n };\n MDCComponent.prototype.getDefaultFoundation = function () {\n // Subclasses must override this method to return a properly configured foundation class for the\n // component.\n throw new Error('Subclasses must override getDefaultFoundation to return a properly configured ' + 'foundation class');\n };\n MDCComponent.prototype.initialSyncWithDOM = function () {\n // Subclasses should override this method if they need to perform work to synchronize with a host DOM\n // object. An example of this would be a form control wrapper that needs to synchronize its internal state\n // to some property or attribute of the host DOM. Please note: this is *not* the place to perform DOM\n // reads/writes that would cause layout / paint, as this is called synchronously from within the constructor.\n };\n MDCComponent.prototype.destroy = function () {\n // Subclasses may implement this method to release any resources / deregister any listeners they have\n // attached. An example of this might be deregistering a resize event from the window object.\n this.foundation_.destroy();\n };\n MDCComponent.prototype.listen = function (evtType, handler) {\n this.root_.addEventListener(evtType, handler);\n };\n MDCComponent.prototype.unlisten = function (evtType, handler) {\n this.root_.removeEventListener(evtType, handler);\n };\n /**\n * Fires a cross-browser-compatible custom event from the component root of the given type, with the given data.\n */\n MDCComponent.prototype.emit = function (evtType, evtData, shouldBubble) {\n if (shouldBubble === void 0) {\n shouldBubble = false;\n }\n var evt;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent(evtType, {\n bubbles: shouldBubble,\n detail: evtData\n });\n } else {\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(evtType, shouldBubble, false, evtData);\n }\n this.root_.dispatchEvent(evt);\n };\n return MDCComponent;\n}();\nexports.MDCComponent = MDCComponent;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCComponent;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ponyfill = __importStar(__webpack_require__(11));\nexports.ponyfill = ponyfill;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util = __importStar(__webpack_require__(12));\nexports.util = util;\n__export(__webpack_require__(4));\n__export(__webpack_require__(13));\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar index_1 = __webpack_require__(2);\nvar foundation_1 = __webpack_require__(13);\nvar util = __importStar(__webpack_require__(12));\nvar MDCRipple = /** @class */function (_super) {\n __extends(MDCRipple, _super);\n function MDCRipple() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.disabled = false;\n return _this;\n }\n MDCRipple.attachTo = function (root, opts) {\n if (opts === void 0) {\n opts = { isUnbounded: undefined };\n }\n var ripple = new MDCRipple(root);\n // Only override unbounded behavior if option is explicitly specified\n if (opts.isUnbounded !== undefined) {\n ripple.unbounded = opts.isUnbounded;\n }\n return ripple;\n };\n MDCRipple.createAdapter = function (instance) {\n return {\n addClass: function addClass(className) {\n return instance.root_.classList.add(className);\n },\n browserSupportsCssVars: function browserSupportsCssVars() {\n return util.supportsCssVariables(window);\n },\n computeBoundingRect: function computeBoundingRect() {\n return instance.root_.getBoundingClientRect();\n },\n containsEventTarget: function containsEventTarget(target) {\n return instance.root_.contains(target);\n },\n deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler(evtType, handler) {\n return document.documentElement.removeEventListener(evtType, handler, util.applyPassive());\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return instance.root_.removeEventListener(evtType, handler, util.applyPassive());\n },\n deregisterResizeHandler: function deregisterResizeHandler(handler) {\n return window.removeEventListener('resize', handler);\n },\n getWindowPageOffset: function getWindowPageOffset() {\n return { x: window.pageXOffset, y: window.pageYOffset };\n },\n isSurfaceActive: function isSurfaceActive() {\n return index_1.ponyfill.matches(instance.root_, ':active');\n },\n isSurfaceDisabled: function isSurfaceDisabled() {\n return Boolean(instance.disabled);\n },\n isUnbounded: function isUnbounded() {\n return Boolean(instance.unbounded);\n },\n registerDocumentInteractionHandler: function registerDocumentInteractionHandler(evtType, handler) {\n return document.documentElement.addEventListener(evtType, handler, util.applyPassive());\n },\n registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return instance.root_.addEventListener(evtType, handler, util.applyPassive());\n },\n registerResizeHandler: function registerResizeHandler(handler) {\n return window.addEventListener('resize', handler);\n },\n removeClass: function removeClass(className) {\n return instance.root_.classList.remove(className);\n },\n updateCssVariable: function updateCssVariable(varName, value) {\n return instance.root_.style.setProperty(varName, value);\n }\n };\n };\n Object.defineProperty(MDCRipple.prototype, \"unbounded\", {\n get: function get() {\n return Boolean(this.unbounded_);\n },\n set: function set(unbounded) {\n this.unbounded_ = Boolean(unbounded);\n this.setUnbounded_();\n },\n enumerable: true,\n configurable: true\n });\n MDCRipple.prototype.activate = function () {\n this.foundation_.activate();\n };\n MDCRipple.prototype.deactivate = function () {\n this.foundation_.deactivate();\n };\n MDCRipple.prototype.layout = function () {\n this.foundation_.layout();\n };\n MDCRipple.prototype.getDefaultFoundation = function () {\n return new foundation_1.MDCRippleFoundation(MDCRipple.createAdapter(this));\n };\n MDCRipple.prototype.initialSyncWithDOM = function () {\n var root = this.root_;\n this.unbounded = 'mdcRippleIsUnbounded' in root.dataset;\n };\n /**\n * Closure Compiler throws an access control error when directly accessing a\n * protected or private property inside a getter/setter, like unbounded above.\n * By accessing the protected property inside a method, we solve that problem.\n * That's why this function exists.\n */\n MDCRipple.prototype.setUnbounded_ = function () {\n this.foundation_.setUnbounded(Boolean(this.unbounded_));\n };\n return MDCRipple;\n}(component_1.MDCComponent);\nexports.MDCRipple = MDCRipple;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n ANCHOR: 'mdc-menu-surface--anchor',\n ANIMATING_CLOSED: 'mdc-menu-surface--animating-closed',\n ANIMATING_OPEN: 'mdc-menu-surface--animating-open',\n FIXED: 'mdc-menu-surface--fixed',\n OPEN: 'mdc-menu-surface--open',\n ROOT: 'mdc-menu-surface'\n};\nexports.cssClasses = cssClasses;\n// tslint:disable:object-literal-sort-keys\nvar strings = {\n CLOSED_EVENT: 'MDCMenuSurface:closed',\n OPENED_EVENT: 'MDCMenuSurface:opened',\n FOCUSABLE_ELEMENTS: ['button:not(:disabled)', '[href]:not([aria-disabled=\"true\"])', 'input:not(:disabled)', 'select:not(:disabled)', 'textarea:not(:disabled)', '[tabindex]:not([tabindex=\"-1\"]):not([aria-disabled=\"true\"])'].join(', ')\n};\nexports.strings = strings;\n// tslint:enable:object-literal-sort-keys\nvar numbers = {\n /** Total duration of menu-surface open animation. */\n TRANSITION_OPEN_DURATION: 120,\n /** Total duration of menu-surface close animation. */\n TRANSITION_CLOSE_DURATION: 75,\n /** Margin left to the edge of the viewport when menu-surface is at maximum possible height. */\n MARGIN_TO_EDGE: 32,\n /** Ratio of anchor width to menu-surface width for switching from corner positioning to center positioning. */\n ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO: 0.67\n};\nexports.numbers = numbers;\n/**\n * Enum for bits in the {@see Corner) bitmap.\n */\nvar CornerBit;\n(function (CornerBit) {\n CornerBit[CornerBit[\"BOTTOM\"] = 1] = \"BOTTOM\";\n CornerBit[CornerBit[\"CENTER\"] = 2] = \"CENTER\";\n CornerBit[CornerBit[\"RIGHT\"] = 4] = \"RIGHT\";\n CornerBit[CornerBit[\"FLIP_RTL\"] = 8] = \"FLIP_RTL\";\n})(CornerBit || (CornerBit = {}));\nexports.CornerBit = CornerBit;\n/**\n * Enum for representing an element corner for positioning the menu-surface.\n *\n * The START constants map to LEFT if element directionality is left\n * to right and RIGHT if the directionality is right to left.\n * Likewise END maps to RIGHT or LEFT depending on the directionality.\n */\nvar Corner;\n(function (Corner) {\n Corner[Corner[\"TOP_LEFT\"] = 0] = \"TOP_LEFT\";\n Corner[Corner[\"TOP_RIGHT\"] = 4] = \"TOP_RIGHT\";\n Corner[Corner[\"BOTTOM_LEFT\"] = 1] = \"BOTTOM_LEFT\";\n Corner[Corner[\"BOTTOM_RIGHT\"] = 5] = \"BOTTOM_RIGHT\";\n Corner[Corner[\"TOP_START\"] = 8] = \"TOP_START\";\n Corner[Corner[\"TOP_END\"] = 12] = \"TOP_END\";\n Corner[Corner[\"BOTTOM_START\"] = 9] = \"BOTTOM_START\";\n Corner[Corner[\"BOTTOM_END\"] = 13] = \"BOTTOM_END\";\n})(Corner || (Corner = {}));\nexports.Corner = Corner;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n FIXED_CLASS: 'mdc-top-app-bar--fixed',\n FIXED_SCROLLED_CLASS: 'mdc-top-app-bar--fixed-scrolled',\n SHORT_CLASS: 'mdc-top-app-bar--short',\n SHORT_COLLAPSED_CLASS: 'mdc-top-app-bar--short-collapsed',\n SHORT_HAS_ACTION_ITEM_CLASS: 'mdc-top-app-bar--short-has-action-item'\n};\nexports.cssClasses = cssClasses;\nvar numbers = {\n DEBOUNCE_THROTTLE_RESIZE_TIME_MS: 100,\n MAX_TOP_APP_BAR_HEIGHT: 128\n};\nexports.numbers = numbers;\nvar strings = {\n ACTION_ITEM_SELECTOR: '.mdc-top-app-bar__action-item',\n NAVIGATION_EVENT: 'MDCTopAppBar:nav',\n NAVIGATION_ICON_SELECTOR: '.mdc-top-app-bar__navigation-icon',\n ROOT_SELECTOR: '.mdc-top-app-bar',\n TITLE_SELECTOR: '.mdc-top-app-bar__title'\n};\nexports.strings = strings;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(34);\nvar ELEMENTS_KEY_ALLOWED_IN = ['input', 'button', 'textarea', 'select'];\nfunction isNumberArray(selectedIndex) {\n return selectedIndex instanceof Array;\n}\nvar MDCListFoundation = /** @class */function (_super) {\n __extends(MDCListFoundation, _super);\n function MDCListFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCListFoundation.defaultAdapter, adapter)) || this;\n _this.wrapFocus_ = false;\n _this.isVertical_ = true;\n _this.isSingleSelectionList_ = false;\n _this.selectedIndex_ = -1;\n _this.focusedItemIndex_ = -1;\n _this.useActivatedClass_ = false;\n _this.isCheckboxList_ = false;\n _this.isRadioList_ = false;\n return _this;\n }\n Object.defineProperty(MDCListFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCListFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCListFoundation, \"defaultAdapter\", {\n get: function get() {\n return {\n addClassForElementIndex: function addClassForElementIndex() {\n return undefined;\n },\n focusItemAtIndex: function focusItemAtIndex() {\n return undefined;\n },\n getFocusedElementIndex: function getFocusedElementIndex() {\n return 0;\n },\n getListItemCount: function getListItemCount() {\n return 0;\n },\n hasCheckboxAtIndex: function hasCheckboxAtIndex() {\n return false;\n },\n hasRadioAtIndex: function hasRadioAtIndex() {\n return false;\n },\n isCheckboxCheckedAtIndex: function isCheckboxCheckedAtIndex() {\n return false;\n },\n isFocusInsideList: function isFocusInsideList() {\n return false;\n },\n notifyAction: function notifyAction() {\n return undefined;\n },\n removeClassForElementIndex: function removeClassForElementIndex() {\n return undefined;\n },\n setAttributeForElementIndex: function setAttributeForElementIndex() {\n return undefined;\n },\n setCheckedCheckboxOrRadioAtIndex: function setCheckedCheckboxOrRadioAtIndex() {\n return undefined;\n },\n setTabIndexForListItemChildren: function setTabIndexForListItemChildren() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n MDCListFoundation.prototype.layout = function () {\n if (this.adapter_.getListItemCount() === 0) {\n return;\n }\n if (this.adapter_.hasCheckboxAtIndex(0)) {\n this.isCheckboxList_ = true;\n } else if (this.adapter_.hasRadioAtIndex(0)) {\n this.isRadioList_ = true;\n }\n };\n /**\n * Sets the private wrapFocus_ variable.\n */\n MDCListFoundation.prototype.setWrapFocus = function (value) {\n this.wrapFocus_ = value;\n };\n /**\n * Sets the isVertical_ private variable.\n */\n MDCListFoundation.prototype.setVerticalOrientation = function (value) {\n this.isVertical_ = value;\n };\n /**\n * Sets the isSingleSelectionList_ private variable.\n */\n MDCListFoundation.prototype.setSingleSelection = function (value) {\n this.isSingleSelectionList_ = value;\n };\n /**\n * Sets the useActivatedClass_ private variable.\n */\n MDCListFoundation.prototype.setUseActivatedClass = function (useActivated) {\n this.useActivatedClass_ = useActivated;\n };\n MDCListFoundation.prototype.getSelectedIndex = function () {\n return this.selectedIndex_;\n };\n MDCListFoundation.prototype.setSelectedIndex = function (index) {\n if (!this.isIndexValid_(index)) {\n return;\n }\n if (this.isCheckboxList_) {\n this.setCheckboxAtIndex_(index);\n } else if (this.isRadioList_) {\n this.setRadioAtIndex_(index);\n } else {\n this.setSingleSelectionAtIndex_(index);\n }\n };\n /**\n * Focus in handler for the list items.\n */\n MDCListFoundation.prototype.handleFocusIn = function (_, listItemIndex) {\n if (listItemIndex >= 0) {\n this.adapter_.setTabIndexForListItemChildren(listItemIndex, '0');\n }\n };\n /**\n * Focus out handler for the list items.\n */\n MDCListFoundation.prototype.handleFocusOut = function (_, listItemIndex) {\n var _this = this;\n if (listItemIndex >= 0) {\n this.adapter_.setTabIndexForListItemChildren(listItemIndex, '-1');\n }\n /**\n * Between Focusout & Focusin some browsers do not have focus on any element. Setting a delay to wait till the focus\n * is moved to next element.\n */\n setTimeout(function () {\n if (!_this.adapter_.isFocusInsideList()) {\n _this.setTabindexToFirstSelectedItem_();\n }\n }, 0);\n };\n /**\n * Key handler for the list.\n */\n MDCListFoundation.prototype.handleKeydown = function (evt, isRootListItem, listItemIndex) {\n var arrowLeft = evt.key === 'ArrowLeft' || evt.keyCode === 37;\n var arrowUp = evt.key === 'ArrowUp' || evt.keyCode === 38;\n var arrowRight = evt.key === 'ArrowRight' || evt.keyCode === 39;\n var arrowDown = evt.key === 'ArrowDown' || evt.keyCode === 40;\n var isHome = evt.key === 'Home' || evt.keyCode === 36;\n var isEnd = evt.key === 'End' || evt.keyCode === 35;\n var isEnter = evt.key === 'Enter' || evt.keyCode === 13;\n var isSpace = evt.key === 'Space' || evt.keyCode === 32;\n var currentIndex = this.adapter_.getFocusedElementIndex();\n var nextIndex = -1;\n if (currentIndex === -1) {\n currentIndex = listItemIndex;\n if (currentIndex < 0) {\n // If this event doesn't have a mdc-list-item ancestor from the\n // current list (not from a sublist), return early.\n return;\n }\n }\n if (this.isVertical_ && arrowDown || !this.isVertical_ && arrowRight) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusNextElement(currentIndex);\n } else if (this.isVertical_ && arrowUp || !this.isVertical_ && arrowLeft) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusPrevElement(currentIndex);\n } else if (isHome) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusFirstElement();\n } else if (isEnd) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusLastElement();\n } else if (isEnter || isSpace) {\n if (isRootListItem) {\n // Return early if enter key is pressed on anchor element which triggers synthetic MouseEvent event.\n var target = evt.target;\n if (target && target.tagName === 'A' && isEnter) {\n return;\n }\n this.preventDefaultEvent_(evt);\n if (this.isSelectableList_()) {\n this.setSelectedIndexOnAction_(currentIndex);\n }\n this.adapter_.notifyAction(currentIndex);\n }\n }\n this.focusedItemIndex_ = currentIndex;\n if (nextIndex >= 0) {\n this.setTabindexAtIndex_(nextIndex);\n this.focusedItemIndex_ = nextIndex;\n }\n };\n /**\n * Click handler for the list.\n */\n MDCListFoundation.prototype.handleClick = function (index, toggleCheckbox) {\n if (index === -1) {\n return;\n }\n if (this.isSelectableList_()) {\n this.setSelectedIndexOnAction_(index, toggleCheckbox);\n }\n this.adapter_.notifyAction(index);\n this.setTabindexAtIndex_(index);\n this.focusedItemIndex_ = index;\n };\n /**\n * Focuses the next element on the list.\n */\n MDCListFoundation.prototype.focusNextElement = function (index) {\n var count = this.adapter_.getListItemCount();\n var nextIndex = index + 1;\n if (nextIndex >= count) {\n if (this.wrapFocus_) {\n nextIndex = 0;\n } else {\n // Return early because last item is already focused.\n return index;\n }\n }\n this.adapter_.focusItemAtIndex(nextIndex);\n return nextIndex;\n };\n /**\n * Focuses the previous element on the list.\n */\n MDCListFoundation.prototype.focusPrevElement = function (index) {\n var prevIndex = index - 1;\n if (prevIndex < 0) {\n if (this.wrapFocus_) {\n prevIndex = this.adapter_.getListItemCount() - 1;\n } else {\n // Return early because first item is already focused.\n return index;\n }\n }\n this.adapter_.focusItemAtIndex(prevIndex);\n return prevIndex;\n };\n MDCListFoundation.prototype.focusFirstElement = function () {\n this.adapter_.focusItemAtIndex(0);\n return 0;\n };\n MDCListFoundation.prototype.focusLastElement = function () {\n var lastIndex = this.adapter_.getListItemCount() - 1;\n this.adapter_.focusItemAtIndex(lastIndex);\n return lastIndex;\n };\n /**\n * Ensures that preventDefault is only called if the containing element doesn't\n * consume the event, and it will cause an unintended scroll.\n */\n MDCListFoundation.prototype.preventDefaultEvent_ = function (evt) {\n var target = evt.target;\n var tagName = (\"\" + target.tagName).toLowerCase();\n if (ELEMENTS_KEY_ALLOWED_IN.indexOf(tagName) === -1) {\n evt.preventDefault();\n }\n };\n MDCListFoundation.prototype.setSingleSelectionAtIndex_ = function (index) {\n var selectedClassName = constants_1.cssClasses.LIST_ITEM_SELECTED_CLASS;\n if (this.useActivatedClass_) {\n selectedClassName = constants_1.cssClasses.LIST_ITEM_ACTIVATED_CLASS;\n }\n if (this.selectedIndex_ >= 0 && this.selectedIndex_ !== index) {\n this.adapter_.removeClassForElementIndex(this.selectedIndex_, selectedClassName);\n this.adapter_.setAttributeForElementIndex(this.selectedIndex_, constants_1.strings.ARIA_SELECTED, 'false');\n }\n this.adapter_.addClassForElementIndex(index, selectedClassName);\n this.adapter_.setAttributeForElementIndex(index, constants_1.strings.ARIA_SELECTED, 'true');\n this.selectedIndex_ = index;\n };\n /**\n * Toggles radio at give index. Radio doesn't change the checked state if it is already checked.\n */\n MDCListFoundation.prototype.setRadioAtIndex_ = function (index) {\n this.adapter_.setCheckedCheckboxOrRadioAtIndex(index, true);\n if (this.selectedIndex_ >= 0) {\n this.adapter_.setAttributeForElementIndex(this.selectedIndex_, constants_1.strings.ARIA_CHECKED, 'false');\n }\n this.adapter_.setAttributeForElementIndex(index, constants_1.strings.ARIA_CHECKED, 'true');\n this.selectedIndex_ = index;\n };\n MDCListFoundation.prototype.setCheckboxAtIndex_ = function (index) {\n for (var i = 0; i < this.adapter_.getListItemCount(); i++) {\n var isChecked = false;\n if (index.indexOf(i) >= 0) {\n isChecked = true;\n }\n this.adapter_.setCheckedCheckboxOrRadioAtIndex(i, isChecked);\n this.adapter_.setAttributeForElementIndex(i, constants_1.strings.ARIA_CHECKED, isChecked ? 'true' : 'false');\n }\n this.selectedIndex_ = index;\n };\n MDCListFoundation.prototype.setTabindexAtIndex_ = function (index) {\n if (this.focusedItemIndex_ === -1 && index !== 0) {\n // If no list item was selected set first list item's tabindex to -1.\n // Generally, tabindex is set to 0 on first list item of list that has no preselected items.\n this.adapter_.setAttributeForElementIndex(0, 'tabindex', '-1');\n } else if (this.focusedItemIndex_ >= 0 && this.focusedItemIndex_ !== index) {\n this.adapter_.setAttributeForElementIndex(this.focusedItemIndex_, 'tabindex', '-1');\n }\n this.adapter_.setAttributeForElementIndex(index, 'tabindex', '0');\n };\n /**\n * @return Return true if it is single selectin list, checkbox list or radio list.\n */\n MDCListFoundation.prototype.isSelectableList_ = function () {\n return this.isSingleSelectionList_ || this.isCheckboxList_ || this.isRadioList_;\n };\n MDCListFoundation.prototype.setTabindexToFirstSelectedItem_ = function () {\n var targetIndex = 0;\n if (this.isSelectableList_()) {\n if (typeof this.selectedIndex_ === 'number' && this.selectedIndex_ !== -1) {\n targetIndex = this.selectedIndex_;\n } else if (isNumberArray(this.selectedIndex_) && this.selectedIndex_.length > 0) {\n targetIndex = this.selectedIndex_.reduce(function (currentIndex, minIndex) {\n return Math.min(currentIndex, minIndex);\n });\n }\n }\n this.setTabindexAtIndex_(targetIndex);\n };\n MDCListFoundation.prototype.isIndexValid_ = function (index) {\n var _this = this;\n if (index instanceof Array) {\n if (!this.isCheckboxList_) {\n throw new Error('MDCListFoundation: Array of index is only supported for checkbox based list');\n }\n if (index.length === 0) {\n return true;\n } else {\n return index.some(function (i) {\n return _this.isIndexInRange_(i);\n });\n }\n } else if (typeof index === 'number') {\n if (this.isCheckboxList_) {\n throw new Error('MDCListFoundation: Expected array of index for checkbox based list but got number: ' + index);\n }\n return this.isIndexInRange_(index);\n } else {\n return false;\n }\n };\n MDCListFoundation.prototype.isIndexInRange_ = function (index) {\n var listSize = this.adapter_.getListItemCount();\n return index >= 0 && index < listSize;\n };\n MDCListFoundation.prototype.setSelectedIndexOnAction_ = function (index, toggleCheckbox) {\n if (toggleCheckbox === void 0) {\n toggleCheckbox = true;\n }\n if (this.isCheckboxList_) {\n this.toggleCheckboxAtIndex_(index, toggleCheckbox);\n } else {\n this.setSelectedIndex(index);\n }\n };\n MDCListFoundation.prototype.toggleCheckboxAtIndex_ = function (index, toggleCheckbox) {\n var isChecked = this.adapter_.isCheckboxCheckedAtIndex(index);\n if (toggleCheckbox) {\n isChecked = !isChecked;\n this.adapter_.setCheckedCheckboxOrRadioAtIndex(index, isChecked);\n }\n this.adapter_.setAttributeForElementIndex(index, constants_1.strings.ARIA_CHECKED, isChecked ? 'true' : 'false');\n // If none of the checkbox items are selected and selectedIndex is not initialized then provide a default value.\n var selectedIndexes = this.selectedIndex_ === -1 ? [] : this.selectedIndex_.slice();\n if (isChecked) {\n selectedIndexes.push(index);\n } else {\n selectedIndexes = selectedIndexes.filter(function (i) {\n return i !== index;\n });\n }\n this.selectedIndex_ = selectedIndexes;\n };\n return MDCListFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCListFoundation = MDCListFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCListFoundation;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __values = this && this.__values || function (o) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator],\n i = 0;\n if (m) return m.call(o);\n return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(5);\nvar MDCMenuSurfaceFoundation = /** @class */function (_super) {\n __extends(MDCMenuSurfaceFoundation, _super);\n function MDCMenuSurfaceFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCMenuSurfaceFoundation.defaultAdapter, adapter)) || this;\n _this.isOpen_ = false;\n _this.isQuickOpen_ = false;\n _this.isHoistedElement_ = false;\n _this.isFixedPosition_ = false;\n _this.openAnimationEndTimerId_ = 0;\n _this.closeAnimationEndTimerId_ = 0;\n _this.animationRequestId_ = 0;\n _this.anchorCorner_ = constants_1.Corner.TOP_START;\n _this.anchorMargin_ = { top: 0, right: 0, bottom: 0, left: 0 };\n _this.position_ = { x: 0, y: 0 };\n return _this;\n }\n Object.defineProperty(MDCMenuSurfaceFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCMenuSurfaceFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCMenuSurfaceFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCMenuSurfaceFoundation, \"Corner\", {\n get: function get() {\n return constants_1.Corner;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCMenuSurfaceFoundation, \"defaultAdapter\", {\n /**\n * @see {@link MDCMenuSurfaceAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n hasClass: function hasClass() {\n return false;\n },\n hasAnchor: function hasAnchor() {\n return false;\n },\n isElementInContainer: function isElementInContainer() {\n return false;\n },\n isFocused: function isFocused() {\n return false;\n },\n isFirstElementFocused: function isFirstElementFocused() {\n return false;\n },\n isLastElementFocused: function isLastElementFocused() {\n return false;\n },\n isRtl: function isRtl() {\n return false;\n },\n getInnerDimensions: function getInnerDimensions() {\n return { height: 0, width: 0 };\n },\n getAnchorDimensions: function getAnchorDimensions() {\n return null;\n },\n getWindowDimensions: function getWindowDimensions() {\n return { height: 0, width: 0 };\n },\n getBodyDimensions: function getBodyDimensions() {\n return { height: 0, width: 0 };\n },\n getWindowScroll: function getWindowScroll() {\n return { x: 0, y: 0 };\n },\n setPosition: function setPosition() {\n return undefined;\n },\n setMaxHeight: function setMaxHeight() {\n return undefined;\n },\n setTransformOrigin: function setTransformOrigin() {\n return undefined;\n },\n saveFocus: function saveFocus() {\n return undefined;\n },\n restoreFocus: function restoreFocus() {\n return undefined;\n },\n focusFirstElement: function focusFirstElement() {\n return undefined;\n },\n focusLastElement: function focusLastElement() {\n return undefined;\n },\n notifyClose: function notifyClose() {\n return undefined;\n },\n notifyOpen: function notifyOpen() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCMenuSurfaceFoundation.prototype.init = function () {\n var _a = MDCMenuSurfaceFoundation.cssClasses,\n ROOT = _a.ROOT,\n OPEN = _a.OPEN;\n if (!this.adapter_.hasClass(ROOT)) {\n throw new Error(ROOT + \" class required in root element.\");\n }\n if (this.adapter_.hasClass(OPEN)) {\n this.isOpen_ = true;\n }\n };\n MDCMenuSurfaceFoundation.prototype.destroy = function () {\n clearTimeout(this.openAnimationEndTimerId_);\n clearTimeout(this.closeAnimationEndTimerId_);\n // Cancel any currently running animations.\n cancelAnimationFrame(this.animationRequestId_);\n };\n /**\n * @param corner Default anchor corner alignment of top-left menu surface corner.\n */\n MDCMenuSurfaceFoundation.prototype.setAnchorCorner = function (corner) {\n this.anchorCorner_ = corner;\n };\n /**\n * @param margin Set of margin values from anchor.\n */\n MDCMenuSurfaceFoundation.prototype.setAnchorMargin = function (margin) {\n this.anchorMargin_.top = margin.top || 0;\n this.anchorMargin_.right = margin.right || 0;\n this.anchorMargin_.bottom = margin.bottom || 0;\n this.anchorMargin_.left = margin.left || 0;\n };\n /** Used to indicate if the menu-surface is hoisted to the body. */\n MDCMenuSurfaceFoundation.prototype.setIsHoisted = function (isHoisted) {\n this.isHoistedElement_ = isHoisted;\n };\n /** Used to set the menu-surface calculations based on a fixed position menu. */\n MDCMenuSurfaceFoundation.prototype.setFixedPosition = function (isFixedPosition) {\n this.isFixedPosition_ = isFixedPosition;\n };\n /** Sets the menu-surface position on the page. */\n MDCMenuSurfaceFoundation.prototype.setAbsolutePosition = function (x, y) {\n this.position_.x = this.isFinite_(x) ? x : 0;\n this.position_.y = this.isFinite_(y) ? y : 0;\n };\n MDCMenuSurfaceFoundation.prototype.setQuickOpen = function (quickOpen) {\n this.isQuickOpen_ = quickOpen;\n };\n MDCMenuSurfaceFoundation.prototype.isOpen = function () {\n return this.isOpen_;\n };\n /**\n * Open the menu surface.\n */\n MDCMenuSurfaceFoundation.prototype.open = function () {\n var _this = this;\n this.adapter_.saveFocus();\n if (!this.isQuickOpen_) {\n this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);\n }\n this.animationRequestId_ = requestAnimationFrame(function () {\n _this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n _this.dimensions_ = _this.adapter_.getInnerDimensions();\n _this.autoPosition_();\n if (_this.isQuickOpen_) {\n _this.adapter_.notifyOpen();\n } else {\n _this.openAnimationEndTimerId_ = setTimeout(function () {\n _this.openAnimationEndTimerId_ = 0;\n _this.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);\n _this.adapter_.notifyOpen();\n }, constants_1.numbers.TRANSITION_OPEN_DURATION);\n }\n });\n this.isOpen_ = true;\n };\n /**\n * Closes the menu surface.\n */\n MDCMenuSurfaceFoundation.prototype.close = function () {\n var _this = this;\n if (!this.isQuickOpen_) {\n this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);\n }\n requestAnimationFrame(function () {\n _this.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n if (_this.isQuickOpen_) {\n _this.adapter_.notifyClose();\n } else {\n _this.closeAnimationEndTimerId_ = setTimeout(function () {\n _this.closeAnimationEndTimerId_ = 0;\n _this.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);\n _this.adapter_.notifyClose();\n }, constants_1.numbers.TRANSITION_CLOSE_DURATION);\n }\n });\n this.isOpen_ = false;\n this.maybeRestoreFocus_();\n };\n /** Handle clicks and close if not within menu-surface element. */\n MDCMenuSurfaceFoundation.prototype.handleBodyClick = function (evt) {\n var el = evt.target;\n if (this.adapter_.isElementInContainer(el)) {\n return;\n }\n this.close();\n };\n /** Handle keys that close the surface. */\n MDCMenuSurfaceFoundation.prototype.handleKeydown = function (evt) {\n var keyCode = evt.keyCode,\n key = evt.key,\n shiftKey = evt.shiftKey;\n var isEscape = key === 'Escape' || keyCode === 27;\n var isTab = key === 'Tab' || keyCode === 9;\n if (isEscape) {\n this.close();\n } else if (isTab) {\n if (this.adapter_.isLastElementFocused() && !shiftKey) {\n this.adapter_.focusFirstElement();\n evt.preventDefault();\n } else if (this.adapter_.isFirstElementFocused() && shiftKey) {\n this.adapter_.focusLastElement();\n evt.preventDefault();\n }\n }\n };\n MDCMenuSurfaceFoundation.prototype.autoPosition_ = function () {\n var _a;\n // Compute measurements for autoposition methods reuse.\n this.measurements_ = this.getAutoLayoutMeasurements_();\n var corner = this.getOriginCorner_();\n var maxMenuSurfaceHeight = this.getMenuSurfaceMaxHeight_(corner);\n var verticalAlignment = this.hasBit_(corner, constants_1.CornerBit.BOTTOM) ? 'bottom' : 'top';\n var horizontalAlignment = this.hasBit_(corner, constants_1.CornerBit.RIGHT) ? 'right' : 'left';\n var horizontalOffset = this.getHorizontalOriginOffset_(corner);\n var verticalOffset = this.getVerticalOriginOffset_(corner);\n var _b = this.measurements_,\n anchorSize = _b.anchorSize,\n surfaceSize = _b.surfaceSize;\n var position = (_a = {}, _a[horizontalAlignment] = horizontalOffset, _a[verticalAlignment] = verticalOffset, _a);\n // Center align when anchor width is comparable or greater than menu surface, otherwise keep corner.\n if (anchorSize.width / surfaceSize.width > constants_1.numbers.ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO) {\n horizontalAlignment = 'center';\n }\n // If the menu-surface has been hoisted to the body, it's no longer relative to the anchor element\n if (this.isHoistedElement_ || this.isFixedPosition_) {\n this.adjustPositionForHoistedElement_(position);\n }\n this.adapter_.setTransformOrigin(horizontalAlignment + \" \" + verticalAlignment);\n this.adapter_.setPosition(position);\n this.adapter_.setMaxHeight(maxMenuSurfaceHeight ? maxMenuSurfaceHeight + 'px' : '');\n };\n /**\n * @return Measurements used to position menu surface popup.\n */\n MDCMenuSurfaceFoundation.prototype.getAutoLayoutMeasurements_ = function () {\n var anchorRect = this.adapter_.getAnchorDimensions();\n var bodySize = this.adapter_.getBodyDimensions();\n var viewportSize = this.adapter_.getWindowDimensions();\n var windowScroll = this.adapter_.getWindowScroll();\n if (!anchorRect) {\n // tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together\n anchorRect = {\n top: this.position_.y,\n right: this.position_.x,\n bottom: this.position_.y,\n left: this.position_.x,\n width: 0,\n height: 0\n };\n // tslint:enable:object-literal-sort-keys\n }\n return {\n anchorSize: anchorRect,\n bodySize: bodySize,\n surfaceSize: this.dimensions_,\n viewportDistance: {\n // tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together\n top: anchorRect.top,\n right: viewportSize.width - anchorRect.right,\n bottom: viewportSize.height - anchorRect.bottom,\n left: anchorRect.left\n },\n viewportSize: viewportSize,\n windowScroll: windowScroll\n };\n };\n /**\n * Computes the corner of the anchor from which to animate and position the menu surface.\n */\n MDCMenuSurfaceFoundation.prototype.getOriginCorner_ = function () {\n // Defaults: open from the top left.\n var corner = constants_1.Corner.TOP_LEFT;\n var _a = this.measurements_,\n viewportDistance = _a.viewportDistance,\n anchorSize = _a.anchorSize,\n surfaceSize = _a.surfaceSize;\n var isBottomAligned = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.BOTTOM);\n var availableTop = isBottomAligned ? viewportDistance.top + anchorSize.height + this.anchorMargin_.bottom : viewportDistance.top + this.anchorMargin_.top;\n var availableBottom = isBottomAligned ? viewportDistance.bottom - this.anchorMargin_.bottom : viewportDistance.bottom + anchorSize.height - this.anchorMargin_.top;\n var topOverflow = surfaceSize.height - availableTop;\n var bottomOverflow = surfaceSize.height - availableBottom;\n if (bottomOverflow > 0 && topOverflow < bottomOverflow) {\n corner = this.setBit_(corner, constants_1.CornerBit.BOTTOM);\n }\n var isRtl = this.adapter_.isRtl();\n var isFlipRtl = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.FLIP_RTL);\n var avoidHorizontalOverlap = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.RIGHT);\n var isAlignedRight = avoidHorizontalOverlap && !isRtl || !avoidHorizontalOverlap && isFlipRtl && isRtl;\n var availableLeft = isAlignedRight ? viewportDistance.left + anchorSize.width + this.anchorMargin_.right : viewportDistance.left + this.anchorMargin_.left;\n var availableRight = isAlignedRight ? viewportDistance.right - this.anchorMargin_.right : viewportDistance.right + anchorSize.width - this.anchorMargin_.left;\n var leftOverflow = surfaceSize.width - availableLeft;\n var rightOverflow = surfaceSize.width - availableRight;\n if (leftOverflow < 0 && isAlignedRight && isRtl || avoidHorizontalOverlap && !isAlignedRight && leftOverflow < 0 || rightOverflow > 0 && leftOverflow < rightOverflow) {\n corner = this.setBit_(corner, constants_1.CornerBit.RIGHT);\n }\n return corner;\n };\n /**\n * @param corner Origin corner of the menu surface.\n * @return Maximum height of the menu surface, based on available space. 0 indicates should not be set.\n */\n MDCMenuSurfaceFoundation.prototype.getMenuSurfaceMaxHeight_ = function (corner) {\n var viewportDistance = this.measurements_.viewportDistance;\n var maxHeight = 0;\n var isBottomAligned = this.hasBit_(corner, constants_1.CornerBit.BOTTOM);\n var isBottomAnchored = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.BOTTOM);\n var MARGIN_TO_EDGE = MDCMenuSurfaceFoundation.numbers.MARGIN_TO_EDGE;\n // When maximum height is not specified, it is handled from CSS.\n if (isBottomAligned) {\n maxHeight = viewportDistance.top + this.anchorMargin_.top - MARGIN_TO_EDGE;\n if (!isBottomAnchored) {\n maxHeight += this.measurements_.anchorSize.height;\n }\n } else {\n maxHeight = viewportDistance.bottom - this.anchorMargin_.bottom + this.measurements_.anchorSize.height - MARGIN_TO_EDGE;\n if (isBottomAnchored) {\n maxHeight -= this.measurements_.anchorSize.height;\n }\n }\n return maxHeight;\n };\n /**\n * @param corner Origin corner of the menu surface.\n * @return Horizontal offset of menu surface origin corner from corresponding anchor corner.\n */\n MDCMenuSurfaceFoundation.prototype.getHorizontalOriginOffset_ = function (corner) {\n var anchorSize = this.measurements_.anchorSize;\n // isRightAligned corresponds to using the 'right' property on the surface.\n var isRightAligned = this.hasBit_(corner, constants_1.CornerBit.RIGHT);\n var avoidHorizontalOverlap = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.RIGHT);\n if (isRightAligned) {\n var rightOffset = avoidHorizontalOverlap ? anchorSize.width - this.anchorMargin_.left : this.anchorMargin_.right;\n // For hoisted or fixed elements, adjust the offset by the difference between viewport width and body width so\n // when we calculate the right value (`adjustPositionForHoistedElement_`) based on the element position,\n // the right property is correct.\n if (this.isHoistedElement_ || this.isFixedPosition_) {\n return rightOffset - (this.measurements_.viewportSize.width - this.measurements_.bodySize.width);\n }\n return rightOffset;\n }\n return avoidHorizontalOverlap ? anchorSize.width - this.anchorMargin_.right : this.anchorMargin_.left;\n };\n /**\n * @param corner Origin corner of the menu surface.\n * @return Vertical offset of menu surface origin corner from corresponding anchor corner.\n */\n MDCMenuSurfaceFoundation.prototype.getVerticalOriginOffset_ = function (corner) {\n var anchorSize = this.measurements_.anchorSize;\n var isBottomAligned = this.hasBit_(corner, constants_1.CornerBit.BOTTOM);\n var avoidVerticalOverlap = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.BOTTOM);\n var y = 0;\n if (isBottomAligned) {\n y = avoidVerticalOverlap ? anchorSize.height - this.anchorMargin_.top : -this.anchorMargin_.bottom;\n } else {\n y = avoidVerticalOverlap ? anchorSize.height + this.anchorMargin_.bottom : this.anchorMargin_.top;\n }\n return y;\n };\n /** Calculates the offsets for positioning the menu-surface when the menu-surface has been hoisted to the body. */\n MDCMenuSurfaceFoundation.prototype.adjustPositionForHoistedElement_ = function (position) {\n var e_1, _a;\n var _b = this.measurements_,\n windowScroll = _b.windowScroll,\n viewportDistance = _b.viewportDistance;\n var props = Object.keys(position);\n try {\n for (var props_1 = __values(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n var prop = props_1_1.value;\n var value = position[prop] || 0;\n // Hoisted surfaces need to have the anchor elements location on the page added to the\n // position properties for proper alignment on the body.\n value += viewportDistance[prop];\n // Surfaces that are absolutely positioned need to have additional calculations for scroll\n // and bottom positioning.\n if (!this.isFixedPosition_) {\n if (prop === 'top') {\n value += windowScroll.y;\n } else if (prop === 'bottom') {\n value -= windowScroll.y;\n } else if (prop === 'left') {\n value += windowScroll.x;\n } else {\n // prop === 'right'\n value -= windowScroll.x;\n }\n }\n position[prop] = value;\n }\n } catch (e_1_1) {\n e_1 = { error: e_1_1 };\n } finally {\n try {\n if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n };\n /**\n * The last focused element when the menu surface was opened should regain focus, if the user is\n * focused on or within the menu surface when it is closed.\n */\n MDCMenuSurfaceFoundation.prototype.maybeRestoreFocus_ = function () {\n var isRootFocused = this.adapter_.isFocused();\n var childHasFocus = document.activeElement && this.adapter_.isElementInContainer(document.activeElement);\n if (isRootFocused || childHasFocus) {\n this.adapter_.restoreFocus();\n }\n };\n MDCMenuSurfaceFoundation.prototype.hasBit_ = function (corner, bit) {\n return Boolean(corner & bit); // tslint:disable-line:no-bitwise\n };\n MDCMenuSurfaceFoundation.prototype.setBit_ = function (corner, bit) {\n return corner | bit; // tslint:disable-line:no-bitwise\n };\n /**\n * isFinite that doesn't force conversion to number type.\n * Equivalent to Number.isFinite in ES2015, which is not supported in IE.\n */\n MDCMenuSurfaceFoundation.prototype.isFinite_ = function (num) {\n return typeof num === 'number' && isFinite(num);\n };\n return MDCMenuSurfaceFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCMenuSurfaceFoundation = MDCMenuSurfaceFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCMenuSurfaceFoundation;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(147);\nvar MDCTabIndicatorFoundation = /** @class */function (_super) {\n __extends(MDCTabIndicatorFoundation, _super);\n function MDCTabIndicatorFoundation(adapter) {\n return _super.call(this, __assign({}, MDCTabIndicatorFoundation.defaultAdapter, adapter)) || this;\n }\n Object.defineProperty(MDCTabIndicatorFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabIndicatorFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabIndicatorFoundation, \"defaultAdapter\", {\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n computeContentClientRect: function computeContentClientRect() {\n return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };\n },\n setContentStyleProperty: function setContentStyleProperty() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCTabIndicatorFoundation.prototype.computeContentClientRect = function () {\n return this.adapter_.computeContentClientRect();\n };\n return MDCTabIndicatorFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCTabIndicatorFoundation = MDCTabIndicatorFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTabIndicatorFoundation;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssPropertyNameMap = {\n animation: {\n prefixed: '-webkit-animation',\n standard: 'animation'\n },\n transform: {\n prefixed: '-webkit-transform',\n standard: 'transform'\n },\n transition: {\n prefixed: '-webkit-transition',\n standard: 'transition'\n }\n};\nvar jsEventTypeMap = {\n animationend: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationEnd',\n standard: 'animationend'\n },\n animationiteration: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationIteration',\n standard: 'animationiteration'\n },\n animationstart: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationStart',\n standard: 'animationstart'\n },\n transitionend: {\n cssProperty: 'transition',\n prefixed: 'webkitTransitionEnd',\n standard: 'transitionend'\n }\n};\nfunction isWindow(windowObj) {\n return Boolean(windowObj.document) && typeof windowObj.document.createElement === 'function';\n}\nfunction getCorrectPropertyName(windowObj, cssProperty) {\n if (isWindow(windowObj) && cssProperty in cssPropertyNameMap) {\n var el = windowObj.document.createElement('div');\n var _a = cssPropertyNameMap[cssProperty],\n standard = _a.standard,\n prefixed = _a.prefixed;\n var isStandard = standard in el.style;\n return isStandard ? standard : prefixed;\n }\n return cssProperty;\n}\nexports.getCorrectPropertyName = getCorrectPropertyName;\nfunction getCorrectEventName(windowObj, eventType) {\n if (isWindow(windowObj) && eventType in jsEventTypeMap) {\n var el = windowObj.document.createElement('div');\n var _a = jsEventTypeMap[eventType],\n standard = _a.standard,\n prefixed = _a.prefixed,\n cssProperty = _a.cssProperty;\n var isStandard = cssProperty in el.style;\n return isStandard ? standard : prefixed;\n }\n return eventType;\n}\nexports.getCorrectEventName = getCorrectEventName;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @fileoverview A \"ponyfill\" is a polyfill that doesn't modify the global prototype chain.\n * This makes ponyfills safer than traditional polyfills, especially for libraries like MDC.\n */\nfunction closest(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n var el = element;\n while (el) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentElement;\n }\n return null;\n}\nexports.closest = closest;\nfunction matches(element, selector) {\n var nativeMatches = element.matches || element.webkitMatchesSelector || element.msMatchesSelector;\n return nativeMatches.call(element, selector);\n}\nexports.matches = matches;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Stores result from supportsCssVariables to avoid redundant processing to\n * detect CSS custom variable support.\n */\nvar supportsCssVariables_;\n/**\n * Stores result from applyPassive to avoid redundant processing to detect\n * passive event listener support.\n */\nvar supportsPassive_;\nfunction detectEdgePseudoVarBug(windowObj) {\n // Detect versions of Edge with buggy var() support\n // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11495448/\n var document = windowObj.document;\n var node = document.createElement('div');\n node.className = 'mdc-ripple-surface--test-edge-var-bug';\n document.body.appendChild(node);\n // The bug exists if ::before style ends up propagating to the parent element.\n // Additionally, getComputedStyle returns null in iframes with display: \"none\" in Firefox,\n // but Firefox is known to support CSS custom properties correctly.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n var computedStyle = windowObj.getComputedStyle(node);\n var hasPseudoVarBug = computedStyle !== null && computedStyle.borderTopStyle === 'solid';\n node.remove();\n return hasPseudoVarBug;\n}\nfunction supportsCssVariables(windowObj, forceRefresh) {\n if (forceRefresh === void 0) {\n forceRefresh = false;\n }\n var CSS = windowObj.CSS;\n var supportsCssVars = supportsCssVariables_;\n if (typeof supportsCssVariables_ === 'boolean' && !forceRefresh) {\n return supportsCssVariables_;\n }\n var supportsFunctionPresent = CSS && typeof CSS.supports === 'function';\n if (!supportsFunctionPresent) {\n return false;\n }\n var explicitlySupportsCssVars = CSS.supports('--css-vars', 'yes');\n // See: https://bugs.webkit.org/show_bug.cgi?id=154669\n // See: README section on Safari\n var weAreFeatureDetectingSafari10plus = CSS.supports('(--css-vars: yes)') && CSS.supports('color', '#00000000');\n if (explicitlySupportsCssVars || weAreFeatureDetectingSafari10plus) {\n supportsCssVars = !detectEdgePseudoVarBug(windowObj);\n } else {\n supportsCssVars = false;\n }\n if (!forceRefresh) {\n supportsCssVariables_ = supportsCssVars;\n }\n return supportsCssVars;\n}\nexports.supportsCssVariables = supportsCssVariables;\n/**\n * Determine whether the current browser supports passive event listeners, and\n * if so, use them.\n */\nfunction applyPassive(globalObj, forceRefresh) {\n if (globalObj === void 0) {\n globalObj = window;\n }\n if (forceRefresh === void 0) {\n forceRefresh = false;\n }\n if (supportsPassive_ === undefined || forceRefresh) {\n var isSupported_1 = false;\n try {\n globalObj.document.addEventListener('test', function () {\n return undefined;\n }, {\n get passive() {\n isSupported_1 = true;\n return isSupported_1;\n }\n });\n } catch (e) {} // tslint:disable-line:no-empty cannot throw error due to tests. tslint also disables console.log.\n supportsPassive_ = isSupported_1;\n }\n return supportsPassive_ ? { passive: true } : false;\n}\nexports.applyPassive = applyPassive;\nfunction getNormalizedEventCoords(evt, pageOffset, clientRect) {\n if (!evt) {\n return { x: 0, y: 0 };\n }\n var x = pageOffset.x,\n y = pageOffset.y;\n var documentX = x + clientRect.left;\n var documentY = y + clientRect.top;\n var normalizedX;\n var normalizedY;\n // Determine touch point relative to the ripple container.\n if (evt.type === 'touchstart') {\n var touchEvent = evt;\n normalizedX = touchEvent.changedTouches[0].pageX - documentX;\n normalizedY = touchEvent.changedTouches[0].pageY - documentY;\n } else {\n var mouseEvent = evt;\n normalizedX = mouseEvent.pageX - documentX;\n normalizedY = mouseEvent.pageY - documentY;\n }\n return { x: normalizedX, y: normalizedY };\n}\nexports.getNormalizedEventCoords = getNormalizedEventCoords;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(86);\nvar util_1 = __webpack_require__(12);\n// Activation events registered on the root element of each instance for activation\nvar ACTIVATION_EVENT_TYPES = ['touchstart', 'pointerdown', 'mousedown', 'keydown'];\n// Deactivation events registered on documentElement when a pointer-related down event occurs\nvar POINTER_DEACTIVATION_EVENT_TYPES = ['touchend', 'pointerup', 'mouseup', 'contextmenu'];\n// simultaneous nested activations\nvar activatedTargets = [];\nvar MDCRippleFoundation = /** @class */function (_super) {\n __extends(MDCRippleFoundation, _super);\n function MDCRippleFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCRippleFoundation.defaultAdapter, adapter)) || this;\n _this.activationAnimationHasEnded_ = false;\n _this.activationTimer_ = 0;\n _this.fgDeactivationRemovalTimer_ = 0;\n _this.fgScale_ = '0';\n _this.frame_ = { width: 0, height: 0 };\n _this.initialSize_ = 0;\n _this.layoutFrame_ = 0;\n _this.maxRadius_ = 0;\n _this.unboundedCoords_ = { left: 0, top: 0 };\n _this.activationState_ = _this.defaultActivationState_();\n _this.activationTimerCallback_ = function () {\n _this.activationAnimationHasEnded_ = true;\n _this.runDeactivationUXLogicIfReady_();\n };\n _this.activateHandler_ = function (e) {\n return _this.activate_(e);\n };\n _this.deactivateHandler_ = function () {\n return _this.deactivate_();\n };\n _this.focusHandler_ = function () {\n return _this.handleFocus();\n };\n _this.blurHandler_ = function () {\n return _this.handleBlur();\n };\n _this.resizeHandler_ = function () {\n return _this.layout();\n };\n return _this;\n }\n Object.defineProperty(MDCRippleFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"defaultAdapter\", {\n get: function get() {\n return {\n addClass: function addClass() {\n return undefined;\n },\n browserSupportsCssVars: function browserSupportsCssVars() {\n return true;\n },\n computeBoundingRect: function computeBoundingRect() {\n return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };\n },\n containsEventTarget: function containsEventTarget() {\n return true;\n },\n deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler() {\n return undefined;\n },\n deregisterInteractionHandler: function deregisterInteractionHandler() {\n return undefined;\n },\n deregisterResizeHandler: function deregisterResizeHandler() {\n return undefined;\n },\n getWindowPageOffset: function getWindowPageOffset() {\n return { x: 0, y: 0 };\n },\n isSurfaceActive: function isSurfaceActive() {\n return true;\n },\n isSurfaceDisabled: function isSurfaceDisabled() {\n return true;\n },\n isUnbounded: function isUnbounded() {\n return true;\n },\n registerDocumentInteractionHandler: function registerDocumentInteractionHandler() {\n return undefined;\n },\n registerInteractionHandler: function registerInteractionHandler() {\n return undefined;\n },\n registerResizeHandler: function registerResizeHandler() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n updateCssVariable: function updateCssVariable() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n MDCRippleFoundation.prototype.init = function () {\n var _this = this;\n var supportsPressRipple = this.supportsPressRipple_();\n this.registerRootHandlers_(supportsPressRipple);\n if (supportsPressRipple) {\n var _a = MDCRippleFoundation.cssClasses,\n ROOT_1 = _a.ROOT,\n UNBOUNDED_1 = _a.UNBOUNDED;\n requestAnimationFrame(function () {\n _this.adapter_.addClass(ROOT_1);\n if (_this.adapter_.isUnbounded()) {\n _this.adapter_.addClass(UNBOUNDED_1);\n // Unbounded ripples need layout logic applied immediately to set coordinates for both shade and ripple\n _this.layoutInternal_();\n }\n });\n }\n };\n MDCRippleFoundation.prototype.destroy = function () {\n var _this = this;\n if (this.supportsPressRipple_()) {\n if (this.activationTimer_) {\n clearTimeout(this.activationTimer_);\n this.activationTimer_ = 0;\n this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_ACTIVATION);\n }\n if (this.fgDeactivationRemovalTimer_) {\n clearTimeout(this.fgDeactivationRemovalTimer_);\n this.fgDeactivationRemovalTimer_ = 0;\n this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_DEACTIVATION);\n }\n var _a = MDCRippleFoundation.cssClasses,\n ROOT_2 = _a.ROOT,\n UNBOUNDED_2 = _a.UNBOUNDED;\n requestAnimationFrame(function () {\n _this.adapter_.removeClass(ROOT_2);\n _this.adapter_.removeClass(UNBOUNDED_2);\n _this.removeCssVars_();\n });\n }\n this.deregisterRootHandlers_();\n this.deregisterDeactivationHandlers_();\n };\n /**\n * @param evt Optional event containing position information.\n */\n MDCRippleFoundation.prototype.activate = function (evt) {\n this.activate_(evt);\n };\n MDCRippleFoundation.prototype.deactivate = function () {\n this.deactivate_();\n };\n MDCRippleFoundation.prototype.layout = function () {\n var _this = this;\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n }\n this.layoutFrame_ = requestAnimationFrame(function () {\n _this.layoutInternal_();\n _this.layoutFrame_ = 0;\n });\n };\n MDCRippleFoundation.prototype.setUnbounded = function (unbounded) {\n var UNBOUNDED = MDCRippleFoundation.cssClasses.UNBOUNDED;\n if (unbounded) {\n this.adapter_.addClass(UNBOUNDED);\n } else {\n this.adapter_.removeClass(UNBOUNDED);\n }\n };\n MDCRippleFoundation.prototype.handleFocus = function () {\n var _this = this;\n requestAnimationFrame(function () {\n return _this.adapter_.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);\n });\n };\n MDCRippleFoundation.prototype.handleBlur = function () {\n var _this = this;\n requestAnimationFrame(function () {\n return _this.adapter_.removeClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);\n });\n };\n /**\n * We compute this property so that we are not querying information about the client\n * until the point in time where the foundation requests it. This prevents scenarios where\n * client-side feature-detection may happen too early, such as when components are rendered on the server\n * and then initialized at mount time on the client.\n */\n MDCRippleFoundation.prototype.supportsPressRipple_ = function () {\n return this.adapter_.browserSupportsCssVars();\n };\n MDCRippleFoundation.prototype.defaultActivationState_ = function () {\n return {\n activationEvent: undefined,\n hasDeactivationUXRun: false,\n isActivated: false,\n isProgrammatic: false,\n wasActivatedByPointer: false,\n wasElementMadeActive: false\n };\n };\n /**\n * supportsPressRipple Passed from init to save a redundant function call\n */\n MDCRippleFoundation.prototype.registerRootHandlers_ = function (supportsPressRipple) {\n var _this = this;\n if (supportsPressRipple) {\n ACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter_.registerInteractionHandler(evtType, _this.activateHandler_);\n });\n if (this.adapter_.isUnbounded()) {\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n }\n }\n this.adapter_.registerInteractionHandler('focus', this.focusHandler_);\n this.adapter_.registerInteractionHandler('blur', this.blurHandler_);\n };\n MDCRippleFoundation.prototype.registerDeactivationHandlers_ = function (evt) {\n var _this = this;\n if (evt.type === 'keydown') {\n this.adapter_.registerInteractionHandler('keyup', this.deactivateHandler_);\n } else {\n POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter_.registerDocumentInteractionHandler(evtType, _this.deactivateHandler_);\n });\n }\n };\n MDCRippleFoundation.prototype.deregisterRootHandlers_ = function () {\n var _this = this;\n ACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter_.deregisterInteractionHandler(evtType, _this.activateHandler_);\n });\n this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_);\n this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_);\n if (this.adapter_.isUnbounded()) {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n }\n };\n MDCRippleFoundation.prototype.deregisterDeactivationHandlers_ = function () {\n var _this = this;\n this.adapter_.deregisterInteractionHandler('keyup', this.deactivateHandler_);\n POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter_.deregisterDocumentInteractionHandler(evtType, _this.deactivateHandler_);\n });\n };\n MDCRippleFoundation.prototype.removeCssVars_ = function () {\n var _this = this;\n var rippleStrings = MDCRippleFoundation.strings;\n var keys = Object.keys(rippleStrings);\n keys.forEach(function (key) {\n if (key.indexOf('VAR_') === 0) {\n _this.adapter_.updateCssVariable(rippleStrings[key], null);\n }\n });\n };\n MDCRippleFoundation.prototype.activate_ = function (evt) {\n var _this = this;\n if (this.adapter_.isSurfaceDisabled()) {\n return;\n }\n var activationState = this.activationState_;\n if (activationState.isActivated) {\n return;\n }\n // Avoid reacting to follow-on events fired by touch device after an already-processed user interaction\n var previousActivationEvent = this.previousActivationEvent_;\n var isSameInteraction = previousActivationEvent && evt !== undefined && previousActivationEvent.type !== evt.type;\n if (isSameInteraction) {\n return;\n }\n activationState.isActivated = true;\n activationState.isProgrammatic = evt === undefined;\n activationState.activationEvent = evt;\n activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : evt !== undefined && (evt.type === 'mousedown' || evt.type === 'touchstart' || evt.type === 'pointerdown');\n var hasActivatedChild = evt !== undefined && activatedTargets.length > 0 && activatedTargets.some(function (target) {\n return _this.adapter_.containsEventTarget(target);\n });\n if (hasActivatedChild) {\n // Immediately reset activation state, while preserving logic that prevents touch follow-on events\n this.resetActivationState_();\n return;\n }\n if (evt !== undefined) {\n activatedTargets.push(evt.target);\n this.registerDeactivationHandlers_(evt);\n }\n activationState.wasElementMadeActive = this.checkElementMadeActive_(evt);\n if (activationState.wasElementMadeActive) {\n this.animateActivation_();\n }\n requestAnimationFrame(function () {\n // Reset array on next frame after the current event has had a chance to bubble to prevent ancestor ripples\n activatedTargets = [];\n if (!activationState.wasElementMadeActive && evt !== undefined && (evt.key === ' ' || evt.keyCode === 32)) {\n // If space was pressed, try again within an rAF call to detect :active, because different UAs report\n // active states inconsistently when they're called within event handling code:\n // - https://bugs.chromium.org/p/chromium/issues/detail?id=635971\n // - https://bugzilla.mozilla.org/show_bug.cgi?id=1293741\n // We try first outside rAF to support Edge, which does not exhibit this problem, but will crash if a CSS\n // variable is set within a rAF callback for a submit button interaction (#2241).\n activationState.wasElementMadeActive = _this.checkElementMadeActive_(evt);\n if (activationState.wasElementMadeActive) {\n _this.animateActivation_();\n }\n }\n if (!activationState.wasElementMadeActive) {\n // Reset activation state immediately if element was not made active.\n _this.activationState_ = _this.defaultActivationState_();\n }\n });\n };\n MDCRippleFoundation.prototype.checkElementMadeActive_ = function (evt) {\n return evt !== undefined && evt.type === 'keydown' ? this.adapter_.isSurfaceActive() : true;\n };\n MDCRippleFoundation.prototype.animateActivation_ = function () {\n var _this = this;\n var _a = MDCRippleFoundation.strings,\n VAR_FG_TRANSLATE_START = _a.VAR_FG_TRANSLATE_START,\n VAR_FG_TRANSLATE_END = _a.VAR_FG_TRANSLATE_END;\n var _b = MDCRippleFoundation.cssClasses,\n FG_DEACTIVATION = _b.FG_DEACTIVATION,\n FG_ACTIVATION = _b.FG_ACTIVATION;\n var DEACTIVATION_TIMEOUT_MS = MDCRippleFoundation.numbers.DEACTIVATION_TIMEOUT_MS;\n this.layoutInternal_();\n var translateStart = '';\n var translateEnd = '';\n if (!this.adapter_.isUnbounded()) {\n var _c = this.getFgTranslationCoordinates_(),\n startPoint = _c.startPoint,\n endPoint = _c.endPoint;\n translateStart = startPoint.x + \"px, \" + startPoint.y + \"px\";\n translateEnd = endPoint.x + \"px, \" + endPoint.y + \"px\";\n }\n this.adapter_.updateCssVariable(VAR_FG_TRANSLATE_START, translateStart);\n this.adapter_.updateCssVariable(VAR_FG_TRANSLATE_END, translateEnd);\n // Cancel any ongoing activation/deactivation animations\n clearTimeout(this.activationTimer_);\n clearTimeout(this.fgDeactivationRemovalTimer_);\n this.rmBoundedActivationClasses_();\n this.adapter_.removeClass(FG_DEACTIVATION);\n // Force layout in order to re-trigger the animation.\n this.adapter_.computeBoundingRect();\n this.adapter_.addClass(FG_ACTIVATION);\n this.activationTimer_ = setTimeout(function () {\n return _this.activationTimerCallback_();\n }, DEACTIVATION_TIMEOUT_MS);\n };\n MDCRippleFoundation.prototype.getFgTranslationCoordinates_ = function () {\n var _a = this.activationState_,\n activationEvent = _a.activationEvent,\n wasActivatedByPointer = _a.wasActivatedByPointer;\n var startPoint;\n if (wasActivatedByPointer) {\n startPoint = util_1.getNormalizedEventCoords(activationEvent, this.adapter_.getWindowPageOffset(), this.adapter_.computeBoundingRect());\n } else {\n startPoint = {\n x: this.frame_.width / 2,\n y: this.frame_.height / 2\n };\n }\n // Center the element around the start point.\n startPoint = {\n x: startPoint.x - this.initialSize_ / 2,\n y: startPoint.y - this.initialSize_ / 2\n };\n var endPoint = {\n x: this.frame_.width / 2 - this.initialSize_ / 2,\n y: this.frame_.height / 2 - this.initialSize_ / 2\n };\n return { startPoint: startPoint, endPoint: endPoint };\n };\n MDCRippleFoundation.prototype.runDeactivationUXLogicIfReady_ = function () {\n var _this = this;\n // This method is called both when a pointing device is released, and when the activation animation ends.\n // The deactivation animation should only run after both of those occur.\n var FG_DEACTIVATION = MDCRippleFoundation.cssClasses.FG_DEACTIVATION;\n var _a = this.activationState_,\n hasDeactivationUXRun = _a.hasDeactivationUXRun,\n isActivated = _a.isActivated;\n var activationHasEnded = hasDeactivationUXRun || !isActivated;\n if (activationHasEnded && this.activationAnimationHasEnded_) {\n this.rmBoundedActivationClasses_();\n this.adapter_.addClass(FG_DEACTIVATION);\n this.fgDeactivationRemovalTimer_ = setTimeout(function () {\n _this.adapter_.removeClass(FG_DEACTIVATION);\n }, constants_1.numbers.FG_DEACTIVATION_MS);\n }\n };\n MDCRippleFoundation.prototype.rmBoundedActivationClasses_ = function () {\n var FG_ACTIVATION = MDCRippleFoundation.cssClasses.FG_ACTIVATION;\n this.adapter_.removeClass(FG_ACTIVATION);\n this.activationAnimationHasEnded_ = false;\n this.adapter_.computeBoundingRect();\n };\n MDCRippleFoundation.prototype.resetActivationState_ = function () {\n var _this = this;\n this.previousActivationEvent_ = this.activationState_.activationEvent;\n this.activationState_ = this.defaultActivationState_();\n // Touch devices may fire additional events for the same interaction within a short time.\n // Store the previous event until it's safe to assume that subsequent events are for new interactions.\n setTimeout(function () {\n return _this.previousActivationEvent_ = undefined;\n }, MDCRippleFoundation.numbers.TAP_DELAY_MS);\n };\n MDCRippleFoundation.prototype.deactivate_ = function () {\n var _this = this;\n var activationState = this.activationState_;\n // This can happen in scenarios such as when you have a keyup event that blurs the element.\n if (!activationState.isActivated) {\n return;\n }\n var state = __assign({}, activationState);\n if (activationState.isProgrammatic) {\n requestAnimationFrame(function () {\n return _this.animateDeactivation_(state);\n });\n this.resetActivationState_();\n } else {\n this.deregisterDeactivationHandlers_();\n requestAnimationFrame(function () {\n _this.activationState_.hasDeactivationUXRun = true;\n _this.animateDeactivation_(state);\n _this.resetActivationState_();\n });\n }\n };\n MDCRippleFoundation.prototype.animateDeactivation_ = function (_a) {\n var wasActivatedByPointer = _a.wasActivatedByPointer,\n wasElementMadeActive = _a.wasElementMadeActive;\n if (wasActivatedByPointer || wasElementMadeActive) {\n this.runDeactivationUXLogicIfReady_();\n }\n };\n MDCRippleFoundation.prototype.layoutInternal_ = function () {\n var _this = this;\n this.frame_ = this.adapter_.computeBoundingRect();\n var maxDim = Math.max(this.frame_.height, this.frame_.width);\n // Surface diameter is treated differently for unbounded vs. bounded ripples.\n // Unbounded ripple diameter is calculated smaller since the surface is expected to already be padded appropriately\n // to extend the hitbox, and the ripple is expected to meet the edges of the padded hitbox (which is typically\n // square). Bounded ripples, on the other hand, are fully expected to expand beyond the surface's longest diameter\n // (calculated based on the diagonal plus a constant padding), and are clipped at the surface's border via\n // `overflow: hidden`.\n var getBoundedRadius = function getBoundedRadius() {\n var hypotenuse = Math.sqrt(Math.pow(_this.frame_.width, 2) + Math.pow(_this.frame_.height, 2));\n return hypotenuse + MDCRippleFoundation.numbers.PADDING;\n };\n this.maxRadius_ = this.adapter_.isUnbounded() ? maxDim : getBoundedRadius();\n // Ripple is sized as a fraction of the largest dimension of the surface, then scales up using a CSS scale transform\n this.initialSize_ = Math.floor(maxDim * MDCRippleFoundation.numbers.INITIAL_ORIGIN_SCALE);\n this.fgScale_ = \"\" + this.maxRadius_ / this.initialSize_;\n this.updateLayoutCssVars_();\n };\n MDCRippleFoundation.prototype.updateLayoutCssVars_ = function () {\n var _a = MDCRippleFoundation.strings,\n VAR_FG_SIZE = _a.VAR_FG_SIZE,\n VAR_LEFT = _a.VAR_LEFT,\n VAR_TOP = _a.VAR_TOP,\n VAR_FG_SCALE = _a.VAR_FG_SCALE;\n this.adapter_.updateCssVariable(VAR_FG_SIZE, this.initialSize_ + \"px\");\n this.adapter_.updateCssVariable(VAR_FG_SCALE, this.fgScale_);\n if (this.adapter_.isUnbounded()) {\n this.unboundedCoords_ = {\n left: Math.round(this.frame_.width / 2 - this.initialSize_ / 2),\n top: Math.round(this.frame_.height / 2 - this.initialSize_ / 2)\n };\n this.adapter_.updateCssVariable(VAR_LEFT, this.unboundedCoords_.left + \"px\");\n this.adapter_.updateCssVariable(VAR_TOP, this.unboundedCoords_.top + \"px\");\n }\n };\n return MDCRippleFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCRippleFoundation = MDCRippleFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCRippleFoundation;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(103);\nvar MDCDismissibleDrawerFoundation = /** @class */function (_super) {\n __extends(MDCDismissibleDrawerFoundation, _super);\n function MDCDismissibleDrawerFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCDismissibleDrawerFoundation.defaultAdapter, adapter)) || this;\n _this.animationFrame_ = 0;\n _this.animationTimer_ = 0;\n return _this;\n }\n Object.defineProperty(MDCDismissibleDrawerFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDismissibleDrawerFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDismissibleDrawerFoundation, \"defaultAdapter\", {\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n hasClass: function hasClass() {\n return false;\n },\n elementHasClass: function elementHasClass() {\n return false;\n },\n notifyClose: function notifyClose() {\n return undefined;\n },\n notifyOpen: function notifyOpen() {\n return undefined;\n },\n saveFocus: function saveFocus() {\n return undefined;\n },\n restoreFocus: function restoreFocus() {\n return undefined;\n },\n focusActiveNavigationItem: function focusActiveNavigationItem() {\n return undefined;\n },\n trapFocus: function trapFocus() {\n return undefined;\n },\n releaseFocus: function releaseFocus() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCDismissibleDrawerFoundation.prototype.destroy = function () {\n if (this.animationFrame_) {\n cancelAnimationFrame(this.animationFrame_);\n }\n if (this.animationTimer_) {\n clearTimeout(this.animationTimer_);\n }\n };\n MDCDismissibleDrawerFoundation.prototype.open = function () {\n var _this = this;\n if (this.isOpen() || this.isOpening() || this.isClosing()) {\n return;\n }\n this.adapter_.addClass(constants_1.cssClasses.OPEN);\n this.adapter_.addClass(constants_1.cssClasses.ANIMATE);\n // Wait a frame once display is no longer \"none\", to establish basis for animation\n this.runNextAnimationFrame_(function () {\n _this.adapter_.addClass(constants_1.cssClasses.OPENING);\n });\n this.adapter_.saveFocus();\n };\n MDCDismissibleDrawerFoundation.prototype.close = function () {\n if (!this.isOpen() || this.isOpening() || this.isClosing()) {\n return;\n }\n this.adapter_.addClass(constants_1.cssClasses.CLOSING);\n };\n /**\n * @return true if drawer is in open state.\n */\n MDCDismissibleDrawerFoundation.prototype.isOpen = function () {\n return this.adapter_.hasClass(constants_1.cssClasses.OPEN);\n };\n /**\n * @return true if drawer is animating open.\n */\n MDCDismissibleDrawerFoundation.prototype.isOpening = function () {\n return this.adapter_.hasClass(constants_1.cssClasses.OPENING) || this.adapter_.hasClass(constants_1.cssClasses.ANIMATE);\n };\n /**\n * @return true if drawer is animating closed.\n */\n MDCDismissibleDrawerFoundation.prototype.isClosing = function () {\n return this.adapter_.hasClass(constants_1.cssClasses.CLOSING);\n };\n /**\n * Keydown handler to close drawer when key is escape.\n */\n MDCDismissibleDrawerFoundation.prototype.handleKeydown = function (evt) {\n var keyCode = evt.keyCode,\n key = evt.key;\n var isEscape = key === 'Escape' || keyCode === 27;\n if (isEscape) {\n this.close();\n }\n };\n /**\n * Handles a transition end event on the root element.\n */\n MDCDismissibleDrawerFoundation.prototype.handleTransitionEnd = function (evt) {\n var OPENING = constants_1.cssClasses.OPENING,\n CLOSING = constants_1.cssClasses.CLOSING,\n OPEN = constants_1.cssClasses.OPEN,\n ANIMATE = constants_1.cssClasses.ANIMATE,\n ROOT = constants_1.cssClasses.ROOT;\n // In Edge, transitionend on ripple pseudo-elements yields a target without classList, so check for Element first.\n var isRootElement = this.isElement_(evt.target) && this.adapter_.elementHasClass(evt.target, ROOT);\n if (!isRootElement) {\n return;\n }\n if (this.isClosing()) {\n this.adapter_.removeClass(OPEN);\n this.closed_();\n this.adapter_.restoreFocus();\n this.adapter_.notifyClose();\n } else {\n this.adapter_.focusActiveNavigationItem();\n this.opened_();\n this.adapter_.notifyOpen();\n }\n this.adapter_.removeClass(ANIMATE);\n this.adapter_.removeClass(OPENING);\n this.adapter_.removeClass(CLOSING);\n };\n /**\n * Extension point for when drawer finishes open animation.\n */\n MDCDismissibleDrawerFoundation.prototype.opened_ = function () {}; // tslint:disable-line:no-empty\n /**\n * Extension point for when drawer finishes close animation.\n */\n MDCDismissibleDrawerFoundation.prototype.closed_ = function () {}; // tslint:disable-line:no-empty\n /**\n * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.\n */\n MDCDismissibleDrawerFoundation.prototype.runNextAnimationFrame_ = function (callback) {\n var _this = this;\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = requestAnimationFrame(function () {\n _this.animationFrame_ = 0;\n clearTimeout(_this.animationTimer_);\n _this.animationTimer_ = setTimeout(callback, 0);\n });\n };\n MDCDismissibleDrawerFoundation.prototype.isElement_ = function (element) {\n // In Edge, transitionend on ripple pseudo-elements yields a target without classList.\n return Boolean(element.classList);\n };\n return MDCDismissibleDrawerFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCDismissibleDrawerFoundation = MDCDismissibleDrawerFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCDismissibleDrawerFoundation;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(104));\n__export(__webpack_require__(16));\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(105);\nvar MDCFloatingLabelFoundation = /** @class */function (_super) {\n __extends(MDCFloatingLabelFoundation, _super);\n function MDCFloatingLabelFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCFloatingLabelFoundation.defaultAdapter, adapter)) || this;\n _this.shakeAnimationEndHandler_ = function () {\n return _this.handleShakeAnimationEnd_();\n };\n return _this;\n }\n Object.defineProperty(MDCFloatingLabelFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCFloatingLabelFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCFloatingLabelAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n getWidth: function getWidth() {\n return 0;\n },\n registerInteractionHandler: function registerInteractionHandler() {\n return undefined;\n },\n deregisterInteractionHandler: function deregisterInteractionHandler() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCFloatingLabelFoundation.prototype.init = function () {\n this.adapter_.registerInteractionHandler('animationend', this.shakeAnimationEndHandler_);\n };\n MDCFloatingLabelFoundation.prototype.destroy = function () {\n this.adapter_.deregisterInteractionHandler('animationend', this.shakeAnimationEndHandler_);\n };\n /**\n * Returns the width of the label element.\n */\n MDCFloatingLabelFoundation.prototype.getWidth = function () {\n return this.adapter_.getWidth();\n };\n /**\n * Styles the label to produce a shake animation to indicate an error.\n * @param shouldShake If true, adds the shake CSS class; otherwise, removes shake class.\n */\n MDCFloatingLabelFoundation.prototype.shake = function (shouldShake) {\n var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE;\n if (shouldShake) {\n this.adapter_.addClass(LABEL_SHAKE);\n } else {\n this.adapter_.removeClass(LABEL_SHAKE);\n }\n };\n /**\n * Styles the label to float or dock.\n * @param shouldFloat If true, adds the float CSS class; otherwise, removes float and shake classes to dock the label.\n */\n MDCFloatingLabelFoundation.prototype.float = function (shouldFloat) {\n var _a = MDCFloatingLabelFoundation.cssClasses,\n LABEL_FLOAT_ABOVE = _a.LABEL_FLOAT_ABOVE,\n LABEL_SHAKE = _a.LABEL_SHAKE;\n if (shouldFloat) {\n this.adapter_.addClass(LABEL_FLOAT_ABOVE);\n } else {\n this.adapter_.removeClass(LABEL_FLOAT_ABOVE);\n this.adapter_.removeClass(LABEL_SHAKE);\n }\n };\n MDCFloatingLabelFoundation.prototype.handleShakeAnimationEnd_ = function () {\n var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE;\n this.adapter_.removeClass(LABEL_SHAKE);\n };\n return MDCFloatingLabelFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCFloatingLabelFoundation = MDCFloatingLabelFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCFloatingLabelFoundation;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(115));\n__export(__webpack_require__(39));\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n MENU_SELECTED_LIST_ITEM: 'mdc-menu-item--selected',\n MENU_SELECTION_GROUP: 'mdc-menu__selection-group',\n ROOT: 'mdc-menu'\n};\nexports.cssClasses = cssClasses;\nvar strings = {\n ARIA_SELECTED_ATTR: 'aria-selected',\n CHECKBOX_SELECTOR: 'input[type=\"checkbox\"]',\n LIST_SELECTOR: '.mdc-list',\n SELECTED_EVENT: 'MDCMenu:selected'\n};\nexports.strings = strings;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(122));\n__export(__webpack_require__(47));\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n CLOSING: 'mdc-snackbar--closing',\n OPEN: 'mdc-snackbar--open',\n OPENING: 'mdc-snackbar--opening'\n};\nexports.cssClasses = cssClasses;\nvar strings = {\n ACTION_SELECTOR: '.mdc-snackbar__action',\n ARIA_LIVE_LABEL_TEXT_ATTR: 'data-mdc-snackbar-label-text',\n CLOSED_EVENT: 'MDCSnackbar:closed',\n CLOSING_EVENT: 'MDCSnackbar:closing',\n DISMISS_SELECTOR: '.mdc-snackbar__dismiss',\n LABEL_SELECTOR: '.mdc-snackbar__label',\n OPENED_EVENT: 'MDCSnackbar:opened',\n OPENING_EVENT: 'MDCSnackbar:opening',\n REASON_ACTION: 'action',\n REASON_DISMISS: 'dismiss',\n SURFACE_SELECTOR: '.mdc-snackbar__surface'\n};\nexports.strings = strings;\nvar numbers = {\n DEFAULT_AUTO_DISMISS_TIMEOUT_MS: 5000,\n MAX_AUTO_DISMISS_TIMEOUT_MS: 10000,\n MIN_AUTO_DISMISS_TIMEOUT_MS: 4000,\n // These variables need to be kept in sync with the values in _variables.scss.\n SNACKBAR_ANIMATION_CLOSE_TIME_MS: 75,\n SNACKBAR_ANIMATION_OPEN_TIME_MS: 150,\n /**\n * Number of milliseconds to wait between temporarily clearing the label text\n * in the DOM and subsequently restoring it. This is necessary to force IE 11\n * to pick up the `aria-live` content change and announce it to the user.\n */\n ARIA_LIVE_DELAY_MS: 1000\n};\nexports.numbers = numbers;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MDCTabScrollerRTL = /** @class */function () {\n function MDCTabScrollerRTL(adapter) {\n this.adapter_ = adapter;\n }\n return MDCTabScrollerRTL;\n}();\nexports.MDCTabScrollerRTL = MDCTabScrollerRTL;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTabScrollerRTL;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = __webpack_require__(6);\nvar foundation_1 = __webpack_require__(23);\nvar INITIAL_VALUE = 0;\nvar MDCTopAppBarFoundation = /** @class */function (_super) {\n __extends(MDCTopAppBarFoundation, _super);\n /* istanbul ignore next: optional argument is not a branch statement */\n function MDCTopAppBarFoundation(adapter) {\n var _this = _super.call(this, adapter) || this;\n /**\n * Indicates if the top app bar was docked in the previous scroll handler iteration.\n */\n _this.wasDocked_ = true;\n /**\n * Indicates if the top app bar is docked in the fully shown position.\n */\n _this.isDockedShowing_ = true;\n /**\n * Variable for current scroll position of the top app bar\n */\n _this.currentAppBarOffsetTop_ = 0;\n /**\n * Used to prevent the top app bar from being scrolled out of view during resize events\n */\n _this.isCurrentlyBeingResized_ = false;\n /**\n * The timeout that's used to throttle the resize events\n */\n _this.resizeThrottleId_ = INITIAL_VALUE;\n /**\n * The timeout that's used to debounce toggling the isCurrentlyBeingResized_ variable after a resize\n */\n _this.resizeDebounceId_ = INITIAL_VALUE;\n _this.lastScrollPosition_ = _this.adapter_.getViewportScrollY();\n _this.topAppBarHeight_ = _this.adapter_.getTopAppBarHeight();\n _this.scrollHandler_ = function () {\n return _this.topAppBarScrollHandler_();\n };\n _this.resizeHandler_ = function () {\n return _this.topAppBarResizeHandler_();\n };\n return _this;\n }\n MDCTopAppBarFoundation.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.adapter_.setStyle('top', '');\n };\n /**\n * Function to determine if the DOM needs to update.\n */\n MDCTopAppBarFoundation.prototype.checkForUpdate_ = function () {\n var offscreenBoundaryTop = -this.topAppBarHeight_;\n var hasAnyPixelsOffscreen = this.currentAppBarOffsetTop_ < 0;\n var hasAnyPixelsOnscreen = this.currentAppBarOffsetTop_ > offscreenBoundaryTop;\n var partiallyShowing = hasAnyPixelsOffscreen && hasAnyPixelsOnscreen;\n // If it's partially showing, it can't be docked.\n if (partiallyShowing) {\n this.wasDocked_ = false;\n } else {\n // Not previously docked and not partially showing, it's now docked.\n if (!this.wasDocked_) {\n this.wasDocked_ = true;\n return true;\n } else if (this.isDockedShowing_ !== hasAnyPixelsOnscreen) {\n this.isDockedShowing_ = hasAnyPixelsOnscreen;\n return true;\n }\n }\n return partiallyShowing;\n };\n /**\n * Function to move the top app bar if needed.\n */\n MDCTopAppBarFoundation.prototype.moveTopAppBar_ = function () {\n if (this.checkForUpdate_()) {\n // Once the top app bar is fully hidden we use the max potential top app bar height as our offset\n // so the top app bar doesn't show if the window resizes and the new height > the old height.\n var offset = this.currentAppBarOffsetTop_;\n if (Math.abs(offset) >= this.topAppBarHeight_) {\n offset = -constants_1.numbers.MAX_TOP_APP_BAR_HEIGHT;\n }\n this.adapter_.setStyle('top', offset + 'px');\n }\n };\n /**\n * Scroll handler for the default scroll behavior of the top app bar.\n */\n MDCTopAppBarFoundation.prototype.topAppBarScrollHandler_ = function () {\n var currentScrollPosition = Math.max(this.adapter_.getViewportScrollY(), 0);\n var diff = currentScrollPosition - this.lastScrollPosition_;\n this.lastScrollPosition_ = currentScrollPosition;\n // If the window is being resized the lastScrollPosition_ needs to be updated but the\n // current scroll of the top app bar should stay in the same position.\n if (!this.isCurrentlyBeingResized_) {\n this.currentAppBarOffsetTop_ -= diff;\n if (this.currentAppBarOffsetTop_ > 0) {\n this.currentAppBarOffsetTop_ = 0;\n } else if (Math.abs(this.currentAppBarOffsetTop_) > this.topAppBarHeight_) {\n this.currentAppBarOffsetTop_ = -this.topAppBarHeight_;\n }\n this.moveTopAppBar_();\n }\n };\n /**\n * Top app bar resize handler that throttle/debounce functions that execute updates.\n */\n MDCTopAppBarFoundation.prototype.topAppBarResizeHandler_ = function () {\n var _this = this;\n // Throttle resize events 10 p/s\n if (!this.resizeThrottleId_) {\n this.resizeThrottleId_ = setTimeout(function () {\n _this.resizeThrottleId_ = INITIAL_VALUE;\n _this.throttledResizeHandler_();\n }, constants_1.numbers.DEBOUNCE_THROTTLE_RESIZE_TIME_MS);\n }\n this.isCurrentlyBeingResized_ = true;\n if (this.resizeDebounceId_) {\n clearTimeout(this.resizeDebounceId_);\n }\n this.resizeDebounceId_ = setTimeout(function () {\n _this.topAppBarScrollHandler_();\n _this.isCurrentlyBeingResized_ = false;\n _this.resizeDebounceId_ = INITIAL_VALUE;\n }, constants_1.numbers.DEBOUNCE_THROTTLE_RESIZE_TIME_MS);\n };\n /**\n * Throttled function that updates the top app bar scrolled values if the\n * top app bar height changes.\n */\n MDCTopAppBarFoundation.prototype.throttledResizeHandler_ = function () {\n var currentHeight = this.adapter_.getTopAppBarHeight();\n if (this.topAppBarHeight_ !== currentHeight) {\n this.wasDocked_ = false;\n // Since the top app bar has a different height depending on the screen width, this\n // will ensure that the top app bar remains in the correct location if\n // completely hidden and a resize makes the top app bar a different height.\n this.currentAppBarOffsetTop_ -= this.topAppBarHeight_ - currentHeight;\n this.topAppBarHeight_ = currentHeight;\n }\n this.topAppBarScrollHandler_();\n };\n return MDCTopAppBarFoundation;\n}(foundation_1.MDCTopAppBarBaseFoundation);\nexports.MDCTopAppBarFoundation = MDCTopAppBarFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTopAppBarFoundation;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(6);\nvar MDCTopAppBarBaseFoundation = /** @class */function (_super) {\n __extends(MDCTopAppBarBaseFoundation, _super);\n /* istanbul ignore next: optional argument is not a branch statement */\n function MDCTopAppBarBaseFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCTopAppBarBaseFoundation.defaultAdapter, adapter)) || this;\n _this.navClickHandler_ = function () {\n return _this.adapter_.notifyNavigationIconClicked();\n };\n return _this;\n }\n Object.defineProperty(MDCTopAppBarBaseFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTopAppBarBaseFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTopAppBarBaseFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTopAppBarBaseFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCTopAppBarAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n hasClass: function hasClass() {\n return false;\n },\n setStyle: function setStyle() {\n return undefined;\n },\n getTopAppBarHeight: function getTopAppBarHeight() {\n return 0;\n },\n registerNavigationIconInteractionHandler: function registerNavigationIconInteractionHandler() {\n return undefined;\n },\n deregisterNavigationIconInteractionHandler: function deregisterNavigationIconInteractionHandler() {\n return undefined;\n },\n notifyNavigationIconClicked: function notifyNavigationIconClicked() {\n return undefined;\n },\n registerScrollHandler: function registerScrollHandler() {\n return undefined;\n },\n deregisterScrollHandler: function deregisterScrollHandler() {\n return undefined;\n },\n registerResizeHandler: function registerResizeHandler() {\n return undefined;\n },\n deregisterResizeHandler: function deregisterResizeHandler() {\n return undefined;\n },\n getViewportScrollY: function getViewportScrollY() {\n return 0;\n },\n getTotalActionItems: function getTotalActionItems() {\n return 0;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCTopAppBarBaseFoundation.prototype.init = function () {\n this.initScrollHandler();\n this.initResizeHandler_();\n this.adapter_.registerNavigationIconInteractionHandler('click', this.navClickHandler_);\n };\n MDCTopAppBarBaseFoundation.prototype.destroy = function () {\n this.destroyScrollHandler();\n this.destroyResizeHandler_();\n this.adapter_.deregisterNavigationIconInteractionHandler('click', this.navClickHandler_);\n };\n MDCTopAppBarBaseFoundation.prototype.initScrollHandler = function () {\n if (this.scrollHandler_) {\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n }\n };\n MDCTopAppBarBaseFoundation.prototype.destroyScrollHandler = function () {\n if (this.scrollHandler_) {\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n }\n };\n MDCTopAppBarBaseFoundation.prototype.initResizeHandler_ = function () {\n if (this.resizeHandler_) {\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n }\n };\n MDCTopAppBarBaseFoundation.prototype.destroyResizeHandler_ = function () {\n if (this.resizeHandler_) {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n }\n };\n return MDCTopAppBarBaseFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCTopAppBarBaseFoundation = MDCTopAppBarBaseFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTopAppBarBaseFoundation;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(87);\nvar MDCCheckboxFoundation = /** @class */function (_super) {\n __extends(MDCCheckboxFoundation, _super);\n function MDCCheckboxFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCCheckboxFoundation.defaultAdapter, adapter)) || this;\n _this.currentCheckState_ = constants_1.strings.TRANSITION_STATE_INIT;\n _this.currentAnimationClass_ = '';\n _this.animEndLatchTimer_ = 0;\n _this.enableAnimationEndHandler_ = false;\n return _this;\n }\n Object.defineProperty(MDCCheckboxFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCCheckboxFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCCheckboxFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCCheckboxFoundation, \"defaultAdapter\", {\n get: function get() {\n return {\n addClass: function addClass() {\n return undefined;\n },\n forceLayout: function forceLayout() {\n return undefined;\n },\n hasNativeControl: function hasNativeControl() {\n return false;\n },\n isAttachedToDOM: function isAttachedToDOM() {\n return false;\n },\n isChecked: function isChecked() {\n return false;\n },\n isIndeterminate: function isIndeterminate() {\n return false;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n removeNativeControlAttr: function removeNativeControlAttr() {\n return undefined;\n },\n setNativeControlAttr: function setNativeControlAttr() {\n return undefined;\n },\n setNativeControlDisabled: function setNativeControlDisabled() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n MDCCheckboxFoundation.prototype.init = function () {\n this.currentCheckState_ = this.determineCheckState_();\n this.updateAriaChecked_();\n this.adapter_.addClass(constants_1.cssClasses.UPGRADED);\n };\n MDCCheckboxFoundation.prototype.destroy = function () {\n clearTimeout(this.animEndLatchTimer_);\n };\n MDCCheckboxFoundation.prototype.setDisabled = function (disabled) {\n this.adapter_.setNativeControlDisabled(disabled);\n if (disabled) {\n this.adapter_.addClass(constants_1.cssClasses.DISABLED);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.DISABLED);\n }\n };\n /**\n * Handles the animationend event for the checkbox\n */\n MDCCheckboxFoundation.prototype.handleAnimationEnd = function () {\n var _this = this;\n if (!this.enableAnimationEndHandler_) {\n return;\n }\n clearTimeout(this.animEndLatchTimer_);\n this.animEndLatchTimer_ = setTimeout(function () {\n _this.adapter_.removeClass(_this.currentAnimationClass_);\n _this.enableAnimationEndHandler_ = false;\n }, constants_1.numbers.ANIM_END_LATCH_MS);\n };\n /**\n * Handles the change event for the checkbox\n */\n MDCCheckboxFoundation.prototype.handleChange = function () {\n this.transitionCheckState_();\n };\n MDCCheckboxFoundation.prototype.transitionCheckState_ = function () {\n if (!this.adapter_.hasNativeControl()) {\n return;\n }\n var oldState = this.currentCheckState_;\n var newState = this.determineCheckState_();\n if (oldState === newState) {\n return;\n }\n this.updateAriaChecked_();\n // Check to ensure that there isn't a previously existing animation class, in case for example\n // the user interacted with the checkbox before the animation was finished.\n if (this.currentAnimationClass_.length > 0) {\n clearTimeout(this.animEndLatchTimer_);\n this.adapter_.forceLayout();\n this.adapter_.removeClass(this.currentAnimationClass_);\n }\n this.currentAnimationClass_ = this.getTransitionAnimationClass_(oldState, newState);\n this.currentCheckState_ = newState;\n // Check for parentNode so that animations are only run when the element is attached\n // to the DOM.\n if (this.adapter_.isAttachedToDOM() && this.currentAnimationClass_.length > 0) {\n this.adapter_.addClass(this.currentAnimationClass_);\n this.enableAnimationEndHandler_ = true;\n }\n };\n MDCCheckboxFoundation.prototype.determineCheckState_ = function () {\n var TRANSITION_STATE_INDETERMINATE = constants_1.strings.TRANSITION_STATE_INDETERMINATE,\n TRANSITION_STATE_CHECKED = constants_1.strings.TRANSITION_STATE_CHECKED,\n TRANSITION_STATE_UNCHECKED = constants_1.strings.TRANSITION_STATE_UNCHECKED;\n if (this.adapter_.isIndeterminate()) {\n return TRANSITION_STATE_INDETERMINATE;\n }\n return this.adapter_.isChecked() ? TRANSITION_STATE_CHECKED : TRANSITION_STATE_UNCHECKED;\n };\n MDCCheckboxFoundation.prototype.getTransitionAnimationClass_ = function (oldState, newState) {\n var TRANSITION_STATE_INIT = constants_1.strings.TRANSITION_STATE_INIT,\n TRANSITION_STATE_CHECKED = constants_1.strings.TRANSITION_STATE_CHECKED,\n TRANSITION_STATE_UNCHECKED = constants_1.strings.TRANSITION_STATE_UNCHECKED;\n var _a = MDCCheckboxFoundation.cssClasses,\n ANIM_UNCHECKED_CHECKED = _a.ANIM_UNCHECKED_CHECKED,\n ANIM_UNCHECKED_INDETERMINATE = _a.ANIM_UNCHECKED_INDETERMINATE,\n ANIM_CHECKED_UNCHECKED = _a.ANIM_CHECKED_UNCHECKED,\n ANIM_CHECKED_INDETERMINATE = _a.ANIM_CHECKED_INDETERMINATE,\n ANIM_INDETERMINATE_CHECKED = _a.ANIM_INDETERMINATE_CHECKED,\n ANIM_INDETERMINATE_UNCHECKED = _a.ANIM_INDETERMINATE_UNCHECKED;\n switch (oldState) {\n case TRANSITION_STATE_INIT:\n if (newState === TRANSITION_STATE_UNCHECKED) {\n return '';\n }\n return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;\n case TRANSITION_STATE_UNCHECKED:\n return newState === TRANSITION_STATE_CHECKED ? ANIM_UNCHECKED_CHECKED : ANIM_UNCHECKED_INDETERMINATE;\n case TRANSITION_STATE_CHECKED:\n return newState === TRANSITION_STATE_UNCHECKED ? ANIM_CHECKED_UNCHECKED : ANIM_CHECKED_INDETERMINATE;\n default:\n // TRANSITION_STATE_INDETERMINATE\n return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;\n }\n };\n MDCCheckboxFoundation.prototype.updateAriaChecked_ = function () {\n // Ensure aria-checked is set to mixed if checkbox is in indeterminate state.\n if (this.adapter_.isIndeterminate()) {\n this.adapter_.setNativeControlAttr(constants_1.strings.ARIA_CHECKED_ATTR, constants_1.strings.ARIA_CHECKED_INDETERMINATE_VALUE);\n } else {\n // The on/off state does not need to keep track of aria-checked, since\n // the screenreader uses the checked property on the checkbox element.\n this.adapter_.removeNativeControlAttr(constants_1.strings.ARIA_CHECKED_ATTR);\n }\n };\n return MDCCheckboxFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCCheckboxFoundation = MDCCheckboxFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCCheckboxFoundation;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(89));\n__export(__webpack_require__(27));\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.strings = {\n CHECKMARK_SELECTOR: '.mdc-chip__checkmark',\n ENTRY_ANIMATION_NAME: 'mdc-chip-entry',\n INTERACTION_EVENT: 'MDCChip:interaction',\n LEADING_ICON_SELECTOR: '.mdc-chip__icon--leading',\n REMOVAL_EVENT: 'MDCChip:removal',\n SELECTION_EVENT: 'MDCChip:selection',\n TRAILING_ICON_INTERACTION_EVENT: 'MDCChip:trailingIconInteraction',\n TRAILING_ICON_SELECTOR: '.mdc-chip__icon--trailing'\n};\nexports.cssClasses = {\n CHECKMARK: 'mdc-chip__checkmark',\n CHIP_EXIT: 'mdc-chip--exit',\n HIDDEN_LEADING_ICON: 'mdc-chip__icon--leading-hidden',\n LEADING_ICON: 'mdc-chip__icon--leading',\n SELECTED: 'mdc-chip--selected',\n TRAILING_ICON: 'mdc-chip__icon--trailing'\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(26);\nvar emptyClientRect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0\n};\nvar MDCChipFoundation = /** @class */function (_super) {\n __extends(MDCChipFoundation, _super);\n function MDCChipFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCChipFoundation.defaultAdapter, adapter)) || this;\n /**\n * Whether a trailing icon click should immediately trigger exit/removal of the chip.\n */\n _this.shouldRemoveOnTrailingIconClick_ = true;\n return _this;\n }\n Object.defineProperty(MDCChipFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChipFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChipFoundation, \"defaultAdapter\", {\n get: function get() {\n return {\n addClass: function addClass() {\n return undefined;\n },\n addClassToLeadingIcon: function addClassToLeadingIcon() {\n return undefined;\n },\n eventTargetHasClass: function eventTargetHasClass() {\n return false;\n },\n getCheckmarkBoundingClientRect: function getCheckmarkBoundingClientRect() {\n return emptyClientRect;\n },\n getComputedStyleValue: function getComputedStyleValue() {\n return '';\n },\n getRootBoundingClientRect: function getRootBoundingClientRect() {\n return emptyClientRect;\n },\n hasClass: function hasClass() {\n return false;\n },\n hasLeadingIcon: function hasLeadingIcon() {\n return false;\n },\n notifyInteraction: function notifyInteraction() {\n return undefined;\n },\n notifyRemoval: function notifyRemoval() {\n return undefined;\n },\n notifySelection: function notifySelection() {\n return undefined;\n },\n notifyTrailingIconInteraction: function notifyTrailingIconInteraction() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n removeClassFromLeadingIcon: function removeClassFromLeadingIcon() {\n return undefined;\n },\n setStyleProperty: function setStyleProperty() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n MDCChipFoundation.prototype.isSelected = function () {\n return this.adapter_.hasClass(constants_1.cssClasses.SELECTED);\n };\n MDCChipFoundation.prototype.setSelected = function (selected) {\n if (selected) {\n this.adapter_.addClass(constants_1.cssClasses.SELECTED);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.SELECTED);\n }\n this.adapter_.notifySelection(selected);\n };\n MDCChipFoundation.prototype.getShouldRemoveOnTrailingIconClick = function () {\n return this.shouldRemoveOnTrailingIconClick_;\n };\n MDCChipFoundation.prototype.setShouldRemoveOnTrailingIconClick = function (shouldRemove) {\n this.shouldRemoveOnTrailingIconClick_ = shouldRemove;\n };\n MDCChipFoundation.prototype.getDimensions = function () {\n var _this = this;\n var getRootRect = function getRootRect() {\n return _this.adapter_.getRootBoundingClientRect();\n };\n var getCheckmarkRect = function getCheckmarkRect() {\n return _this.adapter_.getCheckmarkBoundingClientRect();\n };\n // When a chip has a checkmark and not a leading icon, the bounding rect changes in size depending on the current\n // size of the checkmark.\n if (!this.adapter_.hasLeadingIcon()) {\n var checkmarkRect = getCheckmarkRect();\n if (checkmarkRect) {\n var rootRect = getRootRect();\n var height = rootRect.height;\n // Checkmark is a square, meaning the client rect's width and height are identical once the animation completes.\n // However, the checkbox is initially hidden by setting the width to 0.\n // To account for an initial width of 0, we use the checkbox's height instead (which equals the end-state width)\n // when adding it to the root client rect's width.\n var checkmarkWidth = checkmarkRect.height;\n var width = rootRect.width + checkmarkWidth;\n return __assign({}, rootRect, { width: width, height: height });\n }\n }\n return getRootRect();\n };\n /**\n * Begins the exit animation which leads to removal of the chip.\n */\n MDCChipFoundation.prototype.beginExit = function () {\n this.adapter_.addClass(constants_1.cssClasses.CHIP_EXIT);\n };\n /**\n * Handles an interaction event on the root element.\n */\n MDCChipFoundation.prototype.handleInteraction = function (evt) {\n var isEnter = evt.key === 'Enter' || evt.keyCode === 13;\n if (evt.type === 'click' || isEnter) {\n this.adapter_.notifyInteraction();\n }\n };\n /**\n * Handles a transition end event on the root element.\n */\n MDCChipFoundation.prototype.handleTransitionEnd = function (evt) {\n var _this = this;\n // Handle transition end event on the chip when it is about to be removed.\n if (this.adapter_.eventTargetHasClass(evt.target, constants_1.cssClasses.CHIP_EXIT)) {\n if (evt.propertyName === 'width') {\n this.adapter_.notifyRemoval();\n } else if (evt.propertyName === 'opacity') {\n // See: https://css-tricks.com/using-css-transitions-auto-dimensions/#article-header-id-5\n var chipWidth_1 = this.adapter_.getComputedStyleValue('width');\n // On the next frame (once we get the computed width), explicitly set the chip's width\n // to its current pixel width, so we aren't transitioning out of 'auto'.\n requestAnimationFrame(function () {\n _this.adapter_.setStyleProperty('width', chipWidth_1);\n // To mitigate jitter, start transitioning padding and margin before width.\n _this.adapter_.setStyleProperty('padding', '0');\n _this.adapter_.setStyleProperty('margin', '0');\n // On the next frame (once width is explicitly set), transition width to 0.\n requestAnimationFrame(function () {\n _this.adapter_.setStyleProperty('width', '0');\n });\n });\n }\n return;\n }\n // Handle a transition end event on the leading icon or checkmark, since the transition end event bubbles.\n if (evt.propertyName !== 'opacity') {\n return;\n }\n if (this.adapter_.eventTargetHasClass(evt.target, constants_1.cssClasses.LEADING_ICON) && this.adapter_.hasClass(constants_1.cssClasses.SELECTED)) {\n this.adapter_.addClassToLeadingIcon(constants_1.cssClasses.HIDDEN_LEADING_ICON);\n } else if (this.adapter_.eventTargetHasClass(evt.target, constants_1.cssClasses.CHECKMARK) && !this.adapter_.hasClass(constants_1.cssClasses.SELECTED)) {\n this.adapter_.removeClassFromLeadingIcon(constants_1.cssClasses.HIDDEN_LEADING_ICON);\n }\n };\n /**\n * Handles an interaction event on the trailing icon element. This is used to\n * prevent the ripple from activating on interaction with the trailing icon.\n */\n MDCChipFoundation.prototype.handleTrailingIconInteraction = function (evt) {\n var isEnter = evt.key === 'Enter' || evt.keyCode === 13;\n evt.stopPropagation();\n if (evt.type === 'click' || isEnter) {\n this.adapter_.notifyTrailingIconInteraction();\n if (this.shouldRemoveOnTrailingIconClick_) {\n this.beginExit();\n }\n }\n };\n return MDCChipFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCChipFoundation = MDCChipFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCChipFoundation;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(92);\nvar MDCChipSetFoundation = /** @class */function (_super) {\n __extends(MDCChipSetFoundation, _super);\n function MDCChipSetFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCChipSetFoundation.defaultAdapter, adapter)) || this;\n /**\n * The ids of the selected chips in the set. Only used for choice chip set or filter chip set.\n */\n _this.selectedChipIds_ = [];\n return _this;\n }\n Object.defineProperty(MDCChipSetFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChipSetFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChipSetFoundation, \"defaultAdapter\", {\n get: function get() {\n return {\n hasClass: function hasClass() {\n return false;\n },\n removeChip: function removeChip() {\n return undefined;\n },\n setSelected: function setSelected() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Returns an array of the IDs of all selected chips.\n */\n MDCChipSetFoundation.prototype.getSelectedChipIds = function () {\n return this.selectedChipIds_.slice();\n };\n /**\n * Selects the chip with the given id. Deselects all other chips if the chip set is of the choice variant.\n */\n MDCChipSetFoundation.prototype.select = function (chipId) {\n if (this.selectedChipIds_.indexOf(chipId) >= 0) {\n return;\n }\n if (this.adapter_.hasClass(constants_1.cssClasses.CHOICE) && this.selectedChipIds_.length > 0) {\n var previouslySelectedChip = this.selectedChipIds_[0];\n this.selectedChipIds_.length = 0;\n this.adapter_.setSelected(previouslySelectedChip, false);\n }\n this.selectedChipIds_.push(chipId);\n this.adapter_.setSelected(chipId, true);\n };\n /**\n * Handles a chip interaction event\n */\n MDCChipSetFoundation.prototype.handleChipInteraction = function (chipId) {\n if (this.adapter_.hasClass(constants_1.cssClasses.CHOICE) || this.adapter_.hasClass(constants_1.cssClasses.FILTER)) {\n this.toggleSelect_(chipId);\n }\n };\n /**\n * Handles a chip selection event, used to handle discrepancy when selection state is set directly on the Chip.\n */\n MDCChipSetFoundation.prototype.handleChipSelection = function (chipId, selected) {\n var chipIsSelected = this.selectedChipIds_.indexOf(chipId) >= 0;\n if (selected && !chipIsSelected) {\n this.select(chipId);\n } else if (!selected && chipIsSelected) {\n this.deselect_(chipId);\n }\n };\n /**\n * Handles the event when a chip is removed.\n */\n MDCChipSetFoundation.prototype.handleChipRemoval = function (chipId) {\n this.deselect_(chipId);\n this.adapter_.removeChip(chipId);\n };\n /**\n * Deselects the chip with the given id.\n */\n MDCChipSetFoundation.prototype.deselect_ = function (chipId) {\n var index = this.selectedChipIds_.indexOf(chipId);\n if (index >= 0) {\n this.selectedChipIds_.splice(index, 1);\n this.adapter_.setSelected(chipId, false);\n }\n };\n /**\n * Toggles selection of the chip with the given id.\n */\n MDCChipSetFoundation.prototype.toggleSelect_ = function (chipId) {\n if (this.selectedChipIds_.indexOf(chipId) >= 0) {\n this.deselect_(chipId);\n } else {\n this.select(chipId);\n }\n };\n return MDCChipSetFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCChipSetFoundation = MDCChipSetFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCChipSetFoundation;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar focus_trap_1 = __importDefault(__webpack_require__(94));\nfunction createFocusTrapInstance(surfaceEl, focusTrapFactory, initialFocusEl) {\n if (focusTrapFactory === void 0) {\n focusTrapFactory = focus_trap_1.default;\n }\n return focusTrapFactory(surfaceEl, {\n clickOutsideDeactivates: true,\n escapeDeactivates: false,\n initialFocus: initialFocusEl\n });\n}\nexports.createFocusTrapInstance = createFocusTrapInstance;\nfunction isScrollable(el) {\n return el ? el.scrollHeight > el.offsetHeight : false;\n}\nexports.isScrollable = isScrollable;\nfunction areTopsMisaligned(els) {\n var tops = new Set();\n [].forEach.call(els, function (el) {\n return tops.add(el.offsetTop);\n });\n return tops.size > 1;\n}\nexports.areTopsMisaligned = areTopsMisaligned;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(98);\nvar MDCDialogFoundation = /** @class */function (_super) {\n __extends(MDCDialogFoundation, _super);\n function MDCDialogFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCDialogFoundation.defaultAdapter, adapter)) || this;\n _this.isOpen_ = false;\n _this.animationFrame_ = 0;\n _this.animationTimer_ = 0;\n _this.layoutFrame_ = 0;\n _this.escapeKeyAction_ = constants_1.strings.CLOSE_ACTION;\n _this.scrimClickAction_ = constants_1.strings.CLOSE_ACTION;\n _this.autoStackButtons_ = true;\n _this.areButtonsStacked_ = false;\n return _this;\n }\n Object.defineProperty(MDCDialogFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDialogFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDialogFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDialogFoundation, \"defaultAdapter\", {\n get: function get() {\n return {\n addBodyClass: function addBodyClass() {\n return undefined;\n },\n addClass: function addClass() {\n return undefined;\n },\n areButtonsStacked: function areButtonsStacked() {\n return false;\n },\n clickDefaultButton: function clickDefaultButton() {\n return undefined;\n },\n eventTargetMatches: function eventTargetMatches() {\n return false;\n },\n getActionFromEvent: function getActionFromEvent() {\n return '';\n },\n hasClass: function hasClass() {\n return false;\n },\n isContentScrollable: function isContentScrollable() {\n return false;\n },\n notifyClosed: function notifyClosed() {\n return undefined;\n },\n notifyClosing: function notifyClosing() {\n return undefined;\n },\n notifyOpened: function notifyOpened() {\n return undefined;\n },\n notifyOpening: function notifyOpening() {\n return undefined;\n },\n releaseFocus: function releaseFocus() {\n return undefined;\n },\n removeBodyClass: function removeBodyClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n reverseButtons: function reverseButtons() {\n return undefined;\n },\n trapFocus: function trapFocus() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n MDCDialogFoundation.prototype.init = function () {\n if (this.adapter_.hasClass(constants_1.cssClasses.STACKED)) {\n this.setAutoStackButtons(false);\n }\n };\n MDCDialogFoundation.prototype.destroy = function () {\n if (this.isOpen_) {\n this.close(constants_1.strings.DESTROY_ACTION);\n }\n if (this.animationTimer_) {\n clearTimeout(this.animationTimer_);\n this.handleAnimationTimerEnd_();\n }\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n this.layoutFrame_ = 0;\n }\n };\n MDCDialogFoundation.prototype.open = function () {\n var _this = this;\n this.isOpen_ = true;\n this.adapter_.notifyOpening();\n this.adapter_.addClass(constants_1.cssClasses.OPENING);\n // Wait a frame once display is no longer \"none\", to establish basis for animation\n this.runNextAnimationFrame_(function () {\n _this.adapter_.addClass(constants_1.cssClasses.OPEN);\n _this.adapter_.addBodyClass(constants_1.cssClasses.SCROLL_LOCK);\n _this.layout();\n _this.animationTimer_ = setTimeout(function () {\n _this.handleAnimationTimerEnd_();\n _this.adapter_.trapFocus();\n _this.adapter_.notifyOpened();\n }, constants_1.numbers.DIALOG_ANIMATION_OPEN_TIME_MS);\n });\n };\n MDCDialogFoundation.prototype.close = function (action) {\n var _this = this;\n if (action === void 0) {\n action = '';\n }\n if (!this.isOpen_) {\n // Avoid redundant close calls (and events), e.g. from keydown on elements that inherently emit click\n return;\n }\n this.isOpen_ = false;\n this.adapter_.notifyClosing(action);\n this.adapter_.addClass(constants_1.cssClasses.CLOSING);\n this.adapter_.removeClass(constants_1.cssClasses.OPEN);\n this.adapter_.removeBodyClass(constants_1.cssClasses.SCROLL_LOCK);\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = 0;\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = setTimeout(function () {\n _this.adapter_.releaseFocus();\n _this.handleAnimationTimerEnd_();\n _this.adapter_.notifyClosed(action);\n }, constants_1.numbers.DIALOG_ANIMATION_CLOSE_TIME_MS);\n };\n MDCDialogFoundation.prototype.isOpen = function () {\n return this.isOpen_;\n };\n MDCDialogFoundation.prototype.getEscapeKeyAction = function () {\n return this.escapeKeyAction_;\n };\n MDCDialogFoundation.prototype.setEscapeKeyAction = function (action) {\n this.escapeKeyAction_ = action;\n };\n MDCDialogFoundation.prototype.getScrimClickAction = function () {\n return this.scrimClickAction_;\n };\n MDCDialogFoundation.prototype.setScrimClickAction = function (action) {\n this.scrimClickAction_ = action;\n };\n MDCDialogFoundation.prototype.getAutoStackButtons = function () {\n return this.autoStackButtons_;\n };\n MDCDialogFoundation.prototype.setAutoStackButtons = function (autoStack) {\n this.autoStackButtons_ = autoStack;\n };\n MDCDialogFoundation.prototype.layout = function () {\n var _this = this;\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n }\n this.layoutFrame_ = requestAnimationFrame(function () {\n _this.layoutInternal_();\n _this.layoutFrame_ = 0;\n });\n };\n MDCDialogFoundation.prototype.handleInteraction = function (evt) {\n var isClick = evt.type === 'click';\n var isEnter = evt.key === 'Enter' || evt.keyCode === 13;\n var isSpace = evt.key === 'Space' || evt.keyCode === 32;\n var isScrim = this.adapter_.eventTargetMatches(evt.target, constants_1.strings.SCRIM_SELECTOR);\n var isDefault = !this.adapter_.eventTargetMatches(evt.target, constants_1.strings.SUPPRESS_DEFAULT_PRESS_SELECTOR);\n // Check for scrim click first since it doesn't require querying ancestors\n if (isClick && isScrim && this.scrimClickAction_ !== '') {\n this.close(this.scrimClickAction_);\n } else if (isClick || isSpace || isEnter) {\n var action = this.adapter_.getActionFromEvent(evt);\n if (action) {\n this.close(action);\n } else if (isEnter && isDefault) {\n this.adapter_.clickDefaultButton();\n }\n }\n };\n MDCDialogFoundation.prototype.handleDocumentKeydown = function (evt) {\n var isEscape = evt.key === 'Escape' || evt.keyCode === 27;\n if (isEscape && this.escapeKeyAction_ !== '') {\n this.close(this.escapeKeyAction_);\n }\n };\n MDCDialogFoundation.prototype.layoutInternal_ = function () {\n if (this.autoStackButtons_) {\n this.detectStackedButtons_();\n }\n this.detectScrollableContent_();\n };\n MDCDialogFoundation.prototype.handleAnimationTimerEnd_ = function () {\n this.animationTimer_ = 0;\n this.adapter_.removeClass(constants_1.cssClasses.OPENING);\n this.adapter_.removeClass(constants_1.cssClasses.CLOSING);\n };\n /**\n * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.\n */\n MDCDialogFoundation.prototype.runNextAnimationFrame_ = function (callback) {\n var _this = this;\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = requestAnimationFrame(function () {\n _this.animationFrame_ = 0;\n clearTimeout(_this.animationTimer_);\n _this.animationTimer_ = setTimeout(callback, 0);\n });\n };\n MDCDialogFoundation.prototype.detectStackedButtons_ = function () {\n // Remove the class first to let us measure the buttons' natural positions.\n this.adapter_.removeClass(constants_1.cssClasses.STACKED);\n var areButtonsStacked = this.adapter_.areButtonsStacked();\n if (areButtonsStacked) {\n this.adapter_.addClass(constants_1.cssClasses.STACKED);\n }\n if (areButtonsStacked !== this.areButtonsStacked_) {\n this.adapter_.reverseButtons();\n this.areButtonsStacked_ = areButtonsStacked;\n }\n };\n MDCDialogFoundation.prototype.detectScrollableContent_ = function () {\n // Remove the class first to let us measure the natural height of the content.\n this.adapter_.removeClass(constants_1.cssClasses.SCROLLABLE);\n if (this.adapter_.isContentScrollable()) {\n this.adapter_.addClass(constants_1.cssClasses.SCROLLABLE);\n }\n };\n return MDCDialogFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCDialogFoundation = MDCDialogFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCDialogFoundation;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar focus_trap_1 = __importDefault(__webpack_require__(32));\nfunction createFocusTrapInstance(surfaceEl, focusTrapFactory) {\n if (focusTrapFactory === void 0) {\n focusTrapFactory = focus_trap_1.default;\n }\n return focusTrapFactory(surfaceEl, {\n clickOutsideDeactivates: true,\n escapeDeactivates: false,\n initialFocus: undefined,\n returnFocusOnDeactivate: false\n });\n}\nexports.createFocusTrapInstance = createFocusTrapInstance;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar tabbable = __webpack_require__(100);\nvar xtend = __webpack_require__(101);\n\nvar activeFocusTraps = (function() {\n var trapQueue = [];\n return {\n activateTrap: function(trap) {\n if (trapQueue.length > 0) {\n var activeTrap = trapQueue[trapQueue.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex === -1) {\n trapQueue.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapQueue.splice(trapIndex, 1);\n trapQueue.push(trap);\n }\n },\n\n deactivateTrap: function(trap) {\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex !== -1) {\n trapQueue.splice(trapIndex, 1);\n }\n\n if (trapQueue.length > 0) {\n trapQueue[trapQueue.length - 1].unpause();\n }\n }\n };\n})();\n\nfunction focusTrap(element, userOptions) {\n var doc = document;\n var container =\n typeof element === 'string' ? doc.querySelector(element) : element;\n\n var config = xtend(\n {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true\n },\n userOptions\n );\n\n var state = {\n firstTabbableNode: null,\n lastTabbableNode: null,\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false\n };\n\n var trap = {\n activate: activate,\n deactivate: deactivate,\n pause: pause,\n unpause: unpause\n };\n\n return trap;\n\n function activate(activateOptions) {\n if (state.active) return;\n\n updateTabbableNodes();\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n var onActivate =\n activateOptions && activateOptions.onActivate\n ? activateOptions.onActivate\n : config.onActivate;\n if (onActivate) {\n onActivate();\n }\n\n addListeners();\n return trap;\n }\n\n function deactivate(deactivateOptions) {\n if (!state.active) return;\n\n removeListeners();\n state.active = false;\n state.paused = false;\n\n activeFocusTraps.deactivateTrap(trap);\n\n var onDeactivate =\n deactivateOptions && deactivateOptions.onDeactivate !== undefined\n ? deactivateOptions.onDeactivate\n : config.onDeactivate;\n if (onDeactivate) {\n onDeactivate();\n }\n\n var returnFocus =\n deactivateOptions && deactivateOptions.returnFocus !== undefined\n ? deactivateOptions.returnFocus\n : config.returnFocusOnDeactivate;\n if (returnFocus) {\n delay(function() {\n tryFocus(state.nodeFocusedBeforeActivation);\n });\n }\n\n return trap;\n }\n\n function pause() {\n if (state.paused || !state.active) return;\n state.paused = true;\n removeListeners();\n }\n\n function unpause() {\n if (!state.paused || !state.active) return;\n state.paused = false;\n addListeners();\n }\n\n function addListeners() {\n if (!state.active) return;\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trap);\n\n updateTabbableNodes();\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n delay(function() {\n tryFocus(getInitialFocusNode());\n });\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, true);\n doc.addEventListener('touchstart', checkPointerDown, true);\n doc.addEventListener('click', checkClick, true);\n doc.addEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function removeListeners() {\n if (!state.active) return;\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n var node = optionValue;\n if (!optionValue) {\n return null;\n }\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue);\n if (!node) {\n throw new Error('`' + optionName + '` refers to no known node');\n }\n }\n if (typeof optionValue === 'function') {\n node = optionValue();\n if (!node) {\n throw new Error('`' + optionName + '` did not return a node');\n }\n }\n return node;\n }\n\n function getInitialFocusNode() {\n var node;\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (container.contains(doc.activeElement)) {\n node = doc.activeElement;\n } else {\n node = state.firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error(\n \"You can't have a focus-trap without at least one focusable element\"\n );\n }\n\n return node;\n }\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n function checkPointerDown(e) {\n if (container.contains(e.target)) return;\n if (config.clickOutsideDeactivates) {\n deactivate({\n returnFocus: !tabbable.isFocusable(e.target)\n });\n } else {\n e.preventDefault();\n }\n }\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n function checkFocusIn(e) {\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (container.contains(e.target) || e.target instanceof Document) {\n return;\n }\n e.stopImmediatePropagation();\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n\n function checkKey(e) {\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n e.preventDefault();\n deactivate();\n return;\n }\n if (isTabEvent(e)) {\n checkTab(e);\n return;\n }\n }\n\n // Hijack Tab events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n function checkTab(e) {\n updateTabbableNodes();\n if (e.shiftKey && e.target === state.firstTabbableNode) {\n e.preventDefault();\n tryFocus(state.lastTabbableNode);\n return;\n }\n if (!e.shiftKey && e.target === state.lastTabbableNode) {\n e.preventDefault();\n tryFocus(state.firstTabbableNode);\n return;\n }\n }\n\n function checkClick(e) {\n if (config.clickOutsideDeactivates) return;\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n function updateTabbableNodes() {\n var tabbableNodes = tabbable(container);\n state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();\n state.lastTabbableNode =\n tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();\n }\n\n function tryFocus(node) {\n if (node === doc.activeElement) return;\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus();\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n }\n}\n\nfunction isSelectableInput(node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n}\n\nfunction isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction isTabEvent(e) {\n return e.key === 'Tab' || e.keyCode === 9;\n}\n\nfunction delay(fn) {\n return setTimeout(fn, 0);\n}\n\nmodule.exports = focusTrap;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar index_1 = __webpack_require__(2);\nvar constants_1 = __webpack_require__(34);\nvar foundation_1 = __webpack_require__(7);\nvar MDCList = /** @class */function (_super) {\n __extends(MDCList, _super);\n function MDCList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(MDCList.prototype, \"vertical\", {\n set: function set(value) {\n this.foundation_.setVerticalOrientation(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCList.prototype, \"listElements\", {\n get: function get() {\n return [].slice.call(this.root_.querySelectorAll(constants_1.strings.ENABLED_ITEMS_SELECTOR));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCList.prototype, \"wrapFocus\", {\n set: function set(value) {\n this.foundation_.setWrapFocus(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCList.prototype, \"singleSelection\", {\n set: function set(isSingleSelectionList) {\n this.foundation_.setSingleSelection(isSingleSelectionList);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCList.prototype, \"selectedIndex\", {\n get: function get() {\n return this.foundation_.getSelectedIndex();\n },\n set: function set(index) {\n this.foundation_.setSelectedIndex(index);\n },\n enumerable: true,\n configurable: true\n });\n MDCList.attachTo = function (root) {\n return new MDCList(root);\n };\n MDCList.prototype.initialSyncWithDOM = function () {\n this.handleClick_ = this.handleClickEvent_.bind(this);\n this.handleKeydown_ = this.handleKeydownEvent_.bind(this);\n this.focusInEventListener_ = this.handleFocusInEvent_.bind(this);\n this.focusOutEventListener_ = this.handleFocusOutEvent_.bind(this);\n this.listen('keydown', this.handleKeydown_);\n this.listen('click', this.handleClick_);\n this.listen('focusin', this.focusInEventListener_);\n this.listen('focusout', this.focusOutEventListener_);\n this.layout();\n this.initializeListType();\n };\n MDCList.prototype.destroy = function () {\n this.unlisten('keydown', this.handleKeydown_);\n this.unlisten('click', this.handleClick_);\n this.unlisten('focusin', this.focusInEventListener_);\n this.unlisten('focusout', this.focusOutEventListener_);\n };\n MDCList.prototype.layout = function () {\n var direction = this.root_.getAttribute(constants_1.strings.ARIA_ORIENTATION);\n this.vertical = direction !== constants_1.strings.ARIA_ORIENTATION_HORIZONTAL;\n // List items need to have at least tabindex=-1 to be focusable.\n [].slice.call(this.root_.querySelectorAll('.mdc-list-item:not([tabindex])')).forEach(function (el) {\n el.setAttribute('tabindex', '-1');\n });\n // Child button/a elements are not tabbable until the list item is focused.\n [].slice.call(this.root_.querySelectorAll(constants_1.strings.FOCUSABLE_CHILD_ELEMENTS)).forEach(function (el) {\n return el.setAttribute('tabindex', '-1');\n });\n this.foundation_.layout();\n };\n /**\n * Initialize selectedIndex value based on pre-selected checkbox list items, single selection or radio.\n */\n MDCList.prototype.initializeListType = function () {\n var _this = this;\n var checkboxListItems = this.root_.querySelectorAll(constants_1.strings.ARIA_ROLE_CHECKBOX_SELECTOR);\n var singleSelectedListItem = this.root_.querySelector(\"\\n .\" + constants_1.cssClasses.LIST_ITEM_ACTIVATED_CLASS + \",\\n .\" + constants_1.cssClasses.LIST_ITEM_SELECTED_CLASS + \"\\n \");\n var radioSelectedListItem = this.root_.querySelector(constants_1.strings.ARIA_CHECKED_RADIO_SELECTOR);\n if (checkboxListItems.length) {\n var preselectedItems = this.root_.querySelectorAll(constants_1.strings.ARIA_CHECKED_CHECKBOX_SELECTOR);\n this.selectedIndex = [].map.call(preselectedItems, function (listItem) {\n return _this.listElements.indexOf(listItem);\n });\n } else if (singleSelectedListItem) {\n if (singleSelectedListItem.classList.contains(constants_1.cssClasses.LIST_ITEM_ACTIVATED_CLASS)) {\n this.foundation_.setUseActivatedClass(true);\n }\n this.singleSelection = true;\n this.selectedIndex = this.listElements.indexOf(singleSelectedListItem);\n } else if (radioSelectedListItem) {\n this.selectedIndex = this.listElements.indexOf(radioSelectedListItem);\n }\n };\n MDCList.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addClassForElementIndex: function addClassForElementIndex(index, className) {\n var element = _this.listElements[index];\n if (element) {\n element.classList.add(className);\n }\n },\n focusItemAtIndex: function focusItemAtIndex(index) {\n var element = _this.listElements[index];\n if (element) {\n element.focus();\n }\n },\n getFocusedElementIndex: function getFocusedElementIndex() {\n return _this.listElements.indexOf(document.activeElement);\n },\n getListItemCount: function getListItemCount() {\n return _this.listElements.length;\n },\n hasCheckboxAtIndex: function hasCheckboxAtIndex(index) {\n var listItem = _this.listElements[index];\n return !!listItem.querySelector(constants_1.strings.CHECKBOX_SELECTOR);\n },\n hasRadioAtIndex: function hasRadioAtIndex(index) {\n var listItem = _this.listElements[index];\n return !!listItem.querySelector(constants_1.strings.RADIO_SELECTOR);\n },\n isCheckboxCheckedAtIndex: function isCheckboxCheckedAtIndex(index) {\n var listItem = _this.listElements[index];\n var toggleEl = listItem.querySelector(constants_1.strings.CHECKBOX_SELECTOR);\n return toggleEl.checked;\n },\n isFocusInsideList: function isFocusInsideList() {\n return _this.root_.contains(document.activeElement);\n },\n notifyAction: function notifyAction(index) {\n _this.emit(constants_1.strings.ACTION_EVENT, { index: index }, /** shouldBubble */true);\n },\n removeClassForElementIndex: function removeClassForElementIndex(index, className) {\n var element = _this.listElements[index];\n if (element) {\n element.classList.remove(className);\n }\n },\n setAttributeForElementIndex: function setAttributeForElementIndex(index, attr, value) {\n var element = _this.listElements[index];\n if (element) {\n element.setAttribute(attr, value);\n }\n },\n setCheckedCheckboxOrRadioAtIndex: function setCheckedCheckboxOrRadioAtIndex(index, isChecked) {\n var listItem = _this.listElements[index];\n var toggleEl = listItem.querySelector(constants_1.strings.CHECKBOX_RADIO_SELECTOR);\n toggleEl.checked = isChecked;\n var event = document.createEvent('Event');\n event.initEvent('change', true, true);\n toggleEl.dispatchEvent(event);\n },\n setTabIndexForListItemChildren: function setTabIndexForListItemChildren(listItemIndex, tabIndexValue) {\n var element = _this.listElements[listItemIndex];\n var listItemChildren = [].slice.call(element.querySelectorAll(constants_1.strings.CHILD_ELEMENTS_TO_TOGGLE_TABINDEX));\n listItemChildren.forEach(function (el) {\n return el.setAttribute('tabindex', tabIndexValue);\n });\n }\n };\n return new foundation_1.MDCListFoundation(adapter);\n };\n /**\n * Used to figure out which list item this event is targetting. Or returns -1 if\n * there is no list item\n */\n MDCList.prototype.getListItemIndex_ = function (evt) {\n var eventTarget = evt.target;\n var nearestParent = index_1.ponyfill.closest(eventTarget, \".\" + constants_1.cssClasses.LIST_ITEM_CLASS + \", .\" + constants_1.cssClasses.ROOT);\n // Get the index of the element if it is a list item.\n if (nearestParent && index_1.ponyfill.matches(nearestParent, \".\" + constants_1.cssClasses.LIST_ITEM_CLASS)) {\n return this.listElements.indexOf(nearestParent);\n }\n return -1;\n };\n /**\n * Used to figure out which element was clicked before sending the event to the foundation.\n */\n MDCList.prototype.handleFocusInEvent_ = function (evt) {\n var index = this.getListItemIndex_(evt);\n this.foundation_.handleFocusIn(evt, index);\n };\n /**\n * Used to figure out which element was clicked before sending the event to the foundation.\n */\n MDCList.prototype.handleFocusOutEvent_ = function (evt) {\n var index = this.getListItemIndex_(evt);\n this.foundation_.handleFocusOut(evt, index);\n };\n /**\n * Used to figure out which element was focused when keydown event occurred before sending the event to the\n * foundation.\n */\n MDCList.prototype.handleKeydownEvent_ = function (evt) {\n var index = this.getListItemIndex_(evt);\n var target = evt.target;\n if (index >= 0) {\n this.foundation_.handleKeydown(evt, target.classList.contains(constants_1.cssClasses.LIST_ITEM_CLASS), index);\n }\n };\n /**\n * Used to figure out which element was clicked before sending the event to the foundation.\n */\n MDCList.prototype.handleClickEvent_ = function (evt) {\n var index = this.getListItemIndex_(evt);\n var target = evt.target;\n // Toggle the checkbox only if it's not the target of the event, or the checkbox will have 2 change events.\n var toggleCheckbox = !index_1.ponyfill.matches(target, constants_1.strings.CHECKBOX_RADIO_SELECTOR);\n this.foundation_.handleClick(index, toggleCheckbox);\n };\n return MDCList;\n}(component_1.MDCComponent);\nexports.MDCList = MDCList;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n LIST_ITEM_ACTIVATED_CLASS: 'mdc-list-item--activated',\n LIST_ITEM_CLASS: 'mdc-list-item',\n LIST_ITEM_SELECTED_CLASS: 'mdc-list-item--selected',\n ROOT: 'mdc-list'\n};\nexports.cssClasses = cssClasses;\nvar strings = {\n ACTION_EVENT: 'MDCList:action',\n ARIA_CHECKED: 'aria-checked',\n ARIA_CHECKED_CHECKBOX_SELECTOR: '[role=\"checkbox\"][aria-checked=\"true\"]',\n ARIA_CHECKED_RADIO_SELECTOR: '[role=\"radio\"][aria-checked=\"true\"]',\n ARIA_ORIENTATION: 'aria-orientation',\n ARIA_ORIENTATION_HORIZONTAL: 'horizontal',\n ARIA_ROLE_CHECKBOX_SELECTOR: '[role=\"checkbox\"]',\n ARIA_SELECTED: 'aria-selected',\n CHECKBOX_RADIO_SELECTOR: 'input[type=\"checkbox\"]:not(:disabled), input[type=\"radio\"]:not(:disabled)',\n CHECKBOX_SELECTOR: 'input[type=\"checkbox\"]:not(:disabled)',\n CHILD_ELEMENTS_TO_TOGGLE_TABINDEX: \"\\n .\" + cssClasses.LIST_ITEM_CLASS + \" button:not(:disabled),\\n .\" + cssClasses.LIST_ITEM_CLASS + \" a\\n \",\n ENABLED_ITEMS_SELECTOR: '.mdc-list-item:not(.mdc-list-item--disabled)',\n FOCUSABLE_CHILD_ELEMENTS: \"\\n .\" + cssClasses.LIST_ITEM_CLASS + \" button:not(:disabled),\\n .\" + cssClasses.LIST_ITEM_CLASS + \" a,\\n .\" + cssClasses.LIST_ITEM_CLASS + \" input[type=\\\"radio\\\"]:not(:disabled),\\n .\" + cssClasses.LIST_ITEM_CLASS + \" input[type=\\\"checkbox\\\"]:not(:disabled)\\n \",\n RADIO_SELECTOR: 'input[type=\"radio\"]:not(:disabled)'\n};\nexports.strings = strings;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(14);\n/* istanbul ignore next: subclass is not a branch statement */\nvar MDCModalDrawerFoundation = /** @class */function (_super) {\n __extends(MDCModalDrawerFoundation, _super);\n function MDCModalDrawerFoundation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Handles click event on scrim.\n */\n MDCModalDrawerFoundation.prototype.handleScrimClick = function () {\n this.close();\n };\n /**\n * Called when drawer finishes open animation.\n */\n MDCModalDrawerFoundation.prototype.opened_ = function () {\n this.adapter_.trapFocus();\n };\n /**\n * Called when drawer finishes close animation.\n */\n MDCModalDrawerFoundation.prototype.closed_ = function () {\n this.adapter_.releaseFocus();\n };\n return MDCModalDrawerFoundation;\n}(foundation_1.MDCDismissibleDrawerFoundation);\nexports.MDCModalDrawerFoundation = MDCModalDrawerFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCModalDrawerFoundation;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(108);\nvar MDCFormFieldFoundation = /** @class */function (_super) {\n __extends(MDCFormFieldFoundation, _super);\n function MDCFormFieldFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCFormFieldFoundation.defaultAdapter, adapter)) || this;\n _this.clickHandler_ = function () {\n return _this.handleClick_();\n };\n return _this;\n }\n Object.defineProperty(MDCFormFieldFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCFormFieldFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCFormFieldFoundation, \"defaultAdapter\", {\n get: function get() {\n return {\n activateInputRipple: function activateInputRipple() {\n return undefined;\n },\n deactivateInputRipple: function deactivateInputRipple() {\n return undefined;\n },\n deregisterInteractionHandler: function deregisterInteractionHandler() {\n return undefined;\n },\n registerInteractionHandler: function registerInteractionHandler() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n MDCFormFieldFoundation.prototype.init = function () {\n this.adapter_.registerInteractionHandler('click', this.clickHandler_);\n };\n MDCFormFieldFoundation.prototype.destroy = function () {\n this.adapter_.deregisterInteractionHandler('click', this.clickHandler_);\n };\n MDCFormFieldFoundation.prototype.handleClick_ = function () {\n var _this = this;\n this.adapter_.activateInputRipple();\n requestAnimationFrame(function () {\n return _this.adapter_.deactivateInputRipple();\n });\n };\n return MDCFormFieldFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCFormFieldFoundation = MDCFormFieldFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCFormFieldFoundation;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(111);\nvar MDCGridListFoundation = /** @class */function (_super) {\n __extends(MDCGridListFoundation, _super);\n /* istanbul ignore next: optional argument is not a branch statement */\n function MDCGridListFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCGridListFoundation.defaultAdapter, adapter)) || this;\n _this.resizeFrame_ = 0;\n _this.resizeHandler_ = _this.alignCenter.bind(_this);\n return _this;\n }\n Object.defineProperty(MDCGridListFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCGridListFoundation, \"defaultAdapter\", {\n get: function get() {\n return {\n deregisterResizeHandler: function deregisterResizeHandler() {\n return undefined;\n },\n getNumberOfTiles: function getNumberOfTiles() {\n return 0;\n },\n getOffsetWidth: function getOffsetWidth() {\n return 0;\n },\n getOffsetWidthForTileAtIndex: function getOffsetWidthForTileAtIndex() {\n return 0;\n },\n registerResizeHandler: function registerResizeHandler() {\n return undefined;\n },\n setStyleForTilesElement: function setStyleForTilesElement() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n MDCGridListFoundation.prototype.init = function () {\n this.alignCenter();\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n };\n MDCGridListFoundation.prototype.destroy = function () {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n };\n MDCGridListFoundation.prototype.alignCenter = function () {\n var _this = this;\n cancelAnimationFrame(this.resizeFrame_);\n this.resizeFrame_ = requestAnimationFrame(function () {\n _this.alignCenter_();\n _this.resizeFrame_ = 0;\n });\n };\n MDCGridListFoundation.prototype.alignCenter_ = function () {\n if (this.adapter_.getNumberOfTiles() === 0) {\n return;\n }\n var gridWidth = this.adapter_.getOffsetWidth();\n var itemWidth = this.adapter_.getOffsetWidthForTileAtIndex(0);\n var tilesWidth = itemWidth * Math.floor(gridWidth / itemWidth);\n this.adapter_.setStyleForTilesElement('width', tilesWidth + \"px\");\n };\n return MDCGridListFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCGridListFoundation = MDCGridListFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCGridListFoundation;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(114);\nvar MDCIconButtonToggleFoundation = /** @class */function (_super) {\n __extends(MDCIconButtonToggleFoundation, _super);\n function MDCIconButtonToggleFoundation(adapter) {\n return _super.call(this, __assign({}, MDCIconButtonToggleFoundation.defaultAdapter, adapter)) || this;\n }\n Object.defineProperty(MDCIconButtonToggleFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCIconButtonToggleFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCIconButtonToggleFoundation, \"defaultAdapter\", {\n get: function get() {\n return {\n addClass: function addClass() {\n return undefined;\n },\n hasClass: function hasClass() {\n return false;\n },\n notifyChange: function notifyChange() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n setAttr: function setAttr() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n MDCIconButtonToggleFoundation.prototype.init = function () {\n this.adapter_.setAttr(constants_1.strings.ARIA_PRESSED, \"\" + this.isOn());\n };\n MDCIconButtonToggleFoundation.prototype.handleClick = function () {\n this.toggle();\n this.adapter_.notifyChange({ isOn: this.isOn() });\n };\n MDCIconButtonToggleFoundation.prototype.isOn = function () {\n return this.adapter_.hasClass(constants_1.cssClasses.ICON_BUTTON_ON);\n };\n MDCIconButtonToggleFoundation.prototype.toggle = function (isOn) {\n if (isOn === void 0) {\n isOn = !this.isOn();\n }\n if (isOn) {\n this.adapter_.addClass(constants_1.cssClasses.ICON_BUTTON_ON);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.ICON_BUTTON_ON);\n }\n this.adapter_.setAttr(constants_1.strings.ARIA_PRESSED, \"\" + isOn);\n };\n return MDCIconButtonToggleFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCIconButtonToggleFoundation = MDCIconButtonToggleFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCIconButtonToggleFoundation;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(116);\nvar MDCLineRippleFoundation = /** @class */function (_super) {\n __extends(MDCLineRippleFoundation, _super);\n function MDCLineRippleFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCLineRippleFoundation.defaultAdapter, adapter)) || this;\n _this.transitionEndHandler_ = function (evt) {\n return _this.handleTransitionEnd(evt);\n };\n return _this;\n }\n Object.defineProperty(MDCLineRippleFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCLineRippleFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCLineRippleAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n hasClass: function hasClass() {\n return false;\n },\n setStyle: function setStyle() {\n return undefined;\n },\n registerEventHandler: function registerEventHandler() {\n return undefined;\n },\n deregisterEventHandler: function deregisterEventHandler() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCLineRippleFoundation.prototype.init = function () {\n this.adapter_.registerEventHandler('transitionend', this.transitionEndHandler_);\n };\n MDCLineRippleFoundation.prototype.destroy = function () {\n this.adapter_.deregisterEventHandler('transitionend', this.transitionEndHandler_);\n };\n MDCLineRippleFoundation.prototype.activate = function () {\n this.adapter_.removeClass(constants_1.cssClasses.LINE_RIPPLE_DEACTIVATING);\n this.adapter_.addClass(constants_1.cssClasses.LINE_RIPPLE_ACTIVE);\n };\n MDCLineRippleFoundation.prototype.setRippleCenter = function (xCoordinate) {\n this.adapter_.setStyle('transform-origin', xCoordinate + \"px center\");\n };\n MDCLineRippleFoundation.prototype.deactivate = function () {\n this.adapter_.addClass(constants_1.cssClasses.LINE_RIPPLE_DEACTIVATING);\n };\n MDCLineRippleFoundation.prototype.handleTransitionEnd = function (evt) {\n // Wait for the line ripple to be either transparent or opaque\n // before emitting the animation end event\n var isDeactivating = this.adapter_.hasClass(constants_1.cssClasses.LINE_RIPPLE_DEACTIVATING);\n if (evt.propertyName === 'opacity') {\n if (isDeactivating) {\n this.adapter_.removeClass(constants_1.cssClasses.LINE_RIPPLE_ACTIVE);\n this.adapter_.removeClass(constants_1.cssClasses.LINE_RIPPLE_DEACTIVATING);\n }\n }\n };\n return MDCLineRippleFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCLineRippleFoundation = MDCLineRippleFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCLineRippleFoundation;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(10);\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(119);\nvar MDCLinearProgressFoundation = /** @class */function (_super) {\n __extends(MDCLinearProgressFoundation, _super);\n function MDCLinearProgressFoundation(adapter) {\n return _super.call(this, __assign({}, MDCLinearProgressFoundation.defaultAdapter, adapter)) || this;\n }\n Object.defineProperty(MDCLinearProgressFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCLinearProgressFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCLinearProgressFoundation, \"defaultAdapter\", {\n get: function get() {\n return {\n addClass: function addClass() {\n return undefined;\n },\n getBuffer: function getBuffer() {\n return null;\n },\n getPrimaryBar: function getPrimaryBar() {\n return null;\n },\n hasClass: function hasClass() {\n return false;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n setStyle: function setStyle() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n MDCLinearProgressFoundation.prototype.init = function () {\n this.isDeterminate_ = !this.adapter_.hasClass(constants_1.cssClasses.INDETERMINATE_CLASS);\n this.isReversed_ = this.adapter_.hasClass(constants_1.cssClasses.REVERSED_CLASS);\n this.progress_ = 0;\n };\n MDCLinearProgressFoundation.prototype.setDeterminate = function (isDeterminate) {\n this.isDeterminate_ = isDeterminate;\n if (this.isDeterminate_) {\n this.adapter_.removeClass(constants_1.cssClasses.INDETERMINATE_CLASS);\n this.setScale_(this.adapter_.getPrimaryBar(), this.progress_);\n } else {\n this.adapter_.addClass(constants_1.cssClasses.INDETERMINATE_CLASS);\n this.setScale_(this.adapter_.getPrimaryBar(), 1);\n this.setScale_(this.adapter_.getBuffer(), 1);\n }\n };\n MDCLinearProgressFoundation.prototype.setProgress = function (value) {\n this.progress_ = value;\n if (this.isDeterminate_) {\n this.setScale_(this.adapter_.getPrimaryBar(), value);\n }\n };\n MDCLinearProgressFoundation.prototype.setBuffer = function (value) {\n if (this.isDeterminate_) {\n this.setScale_(this.adapter_.getBuffer(), value);\n }\n };\n MDCLinearProgressFoundation.prototype.setReverse = function (isReversed) {\n this.isReversed_ = isReversed;\n if (this.isReversed_) {\n this.adapter_.addClass(constants_1.cssClasses.REVERSED_CLASS);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.REVERSED_CLASS);\n }\n };\n MDCLinearProgressFoundation.prototype.open = function () {\n this.adapter_.removeClass(constants_1.cssClasses.CLOSED_CLASS);\n };\n MDCLinearProgressFoundation.prototype.close = function () {\n this.adapter_.addClass(constants_1.cssClasses.CLOSED_CLASS);\n };\n MDCLinearProgressFoundation.prototype.setScale_ = function (el, scaleValue) {\n if (!el) {\n return;\n }\n var value = \"scaleX(\" + scaleValue + \")\";\n this.adapter_.setStyle(el, util_1.getCorrectPropertyName(window, 'transform'), value);\n };\n return MDCLinearProgressFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCLinearProgressFoundation = MDCLinearProgressFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCLinearProgressFoundation;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(33));\n__export(__webpack_require__(7));\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util = __importStar(__webpack_require__(43));\nexports.util = util;\nvar constants_1 = __webpack_require__(5);\nexports.Corner = constants_1.Corner;\nexports.CornerBit = constants_1.CornerBit;\n__export(__webpack_require__(120));\n__export(__webpack_require__(8));\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cachedCssTransformPropertyName_;\n/**\n * Returns the name of the correct transform property to use on the current browser.\n */\nfunction getTransformPropertyName(globalObj, forceRefresh) {\n if (forceRefresh === void 0) {\n forceRefresh = false;\n }\n if (cachedCssTransformPropertyName_ === undefined || forceRefresh) {\n var el = globalObj.document.createElement('div');\n cachedCssTransformPropertyName_ = 'transform' in el.style ? 'transform' : 'webkitTransform';\n }\n return cachedCssTransformPropertyName_;\n}\nexports.getTransformPropertyName = getTransformPropertyName;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = __webpack_require__(5); // for backward compatibility\nexports.Corner = constants_1.Corner;\n__export(__webpack_require__(121));\n__export(__webpack_require__(45));\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar foundation_2 = __webpack_require__(7);\nvar foundation_3 = __webpack_require__(8);\nvar constants_1 = __webpack_require__(18);\nvar MDCMenuFoundation = /** @class */function (_super) {\n __extends(MDCMenuFoundation, _super);\n function MDCMenuFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCMenuFoundation.defaultAdapter, adapter)) || this;\n _this.closeAnimationEndTimerId_ = 0;\n return _this;\n }\n Object.defineProperty(MDCMenuFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCMenuFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCMenuFoundation, \"defaultAdapter\", {\n /**\n * @see {@link MDCMenuAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClassToElementAtIndex: function addClassToElementAtIndex() {\n return undefined;\n },\n removeClassFromElementAtIndex: function removeClassFromElementAtIndex() {\n return undefined;\n },\n addAttributeToElementAtIndex: function addAttributeToElementAtIndex() {\n return undefined;\n },\n removeAttributeFromElementAtIndex: function removeAttributeFromElementAtIndex() {\n return undefined;\n },\n elementContainsClass: function elementContainsClass() {\n return false;\n },\n closeSurface: function closeSurface() {\n return undefined;\n },\n getElementIndex: function getElementIndex() {\n return -1;\n },\n getParentElement: function getParentElement() {\n return null;\n },\n getSelectedElementIndex: function getSelectedElementIndex() {\n return -1;\n },\n notifySelected: function notifySelected() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCMenuFoundation.prototype.destroy = function () {\n if (this.closeAnimationEndTimerId_) {\n clearTimeout(this.closeAnimationEndTimerId_);\n }\n this.adapter_.closeSurface();\n };\n MDCMenuFoundation.prototype.handleKeydown = function (evt) {\n var key = evt.key,\n keyCode = evt.keyCode;\n var isTab = key === 'Tab' || keyCode === 9;\n if (isTab) {\n this.adapter_.closeSurface();\n }\n };\n MDCMenuFoundation.prototype.handleItemAction = function (listItem) {\n var _this = this;\n var index = this.adapter_.getElementIndex(listItem);\n if (index < 0) {\n return;\n }\n this.adapter_.notifySelected({ index: index });\n this.adapter_.closeSurface();\n // Wait for the menu to close before adding/removing classes that affect styles.\n this.closeAnimationEndTimerId_ = setTimeout(function () {\n var selectionGroup = _this.getSelectionGroup_(listItem);\n if (selectionGroup) {\n _this.handleSelectionGroup_(selectionGroup, index);\n }\n }, foundation_3.MDCMenuSurfaceFoundation.numbers.TRANSITION_CLOSE_DURATION);\n };\n /**\n * Handles toggling the selected classes in a selection group when a selection is made.\n */\n MDCMenuFoundation.prototype.handleSelectionGroup_ = function (selectionGroup, index) {\n // De-select the previous selection in this group.\n var selectedIndex = this.adapter_.getSelectedElementIndex(selectionGroup);\n if (selectedIndex >= 0) {\n this.adapter_.removeAttributeFromElementAtIndex(selectedIndex, constants_1.strings.ARIA_SELECTED_ATTR);\n this.adapter_.removeClassFromElementAtIndex(selectedIndex, constants_1.cssClasses.MENU_SELECTED_LIST_ITEM);\n }\n // Select the new list item in this group.\n this.adapter_.addClassToElementAtIndex(index, constants_1.cssClasses.MENU_SELECTED_LIST_ITEM);\n this.adapter_.addAttributeToElementAtIndex(index, constants_1.strings.ARIA_SELECTED_ATTR, 'true');\n };\n /**\n * Returns the parent selection group of an element if one exists.\n */\n MDCMenuFoundation.prototype.getSelectionGroup_ = function (listItem) {\n var parent = this.adapter_.getParentElement(listItem);\n if (!parent) {\n return null;\n }\n var isGroup = this.adapter_.elementContainsClass(parent, constants_1.cssClasses.MENU_SELECTION_GROUP);\n // Iterate through ancestors until we find the group or get to the list.\n while (!isGroup && parent && !this.adapter_.elementContainsClass(parent, foundation_2.MDCListFoundation.cssClasses.ROOT)) {\n parent = this.adapter_.getParentElement(parent);\n isGroup = parent ? this.adapter_.elementContainsClass(parent, constants_1.cssClasses.MENU_SELECTION_GROUP) : false;\n }\n if (isGroup) {\n return parent;\n } else {\n return null;\n }\n };\n return MDCMenuFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCMenuFoundation = MDCMenuFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCMenuFoundation;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar strings = {\n NOTCH_ELEMENT_SELECTOR: '.mdc-notched-outline__notch'\n};\nexports.strings = strings;\nvar numbers = {\n // This should stay in sync with $mdc-notched-outline-padding * 2.\n NOTCH_ELEMENT_PADDING: 8\n};\nexports.numbers = numbers;\nvar cssClasses = {\n NO_LABEL: 'mdc-notched-outline--no-label',\n OUTLINE_NOTCHED: 'mdc-notched-outline--notched',\n OUTLINE_UPGRADED: 'mdc-notched-outline--upgraded'\n};\nexports.cssClasses = cssClasses;\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(46);\nvar MDCNotchedOutlineFoundation = /** @class */function (_super) {\n __extends(MDCNotchedOutlineFoundation, _super);\n function MDCNotchedOutlineFoundation(adapter) {\n return _super.call(this, __assign({}, MDCNotchedOutlineFoundation.defaultAdapter, adapter)) || this;\n }\n Object.defineProperty(MDCNotchedOutlineFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCNotchedOutlineFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCNotchedOutlineFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCNotchedOutlineFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCNotchedOutlineAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n setNotchWidthProperty: function setNotchWidthProperty() {\n return undefined;\n },\n removeNotchWidthProperty: function removeNotchWidthProperty() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Adds the outline notched selector and updates the notch width calculated based off of notchWidth.\n */\n MDCNotchedOutlineFoundation.prototype.notch = function (notchWidth) {\n var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED;\n if (notchWidth > 0) {\n notchWidth += constants_1.numbers.NOTCH_ELEMENT_PADDING; // Add padding from left/right.\n }\n this.adapter_.setNotchWidthProperty(notchWidth);\n this.adapter_.addClass(OUTLINE_NOTCHED);\n };\n /**\n * Removes notched outline selector to close the notch in the outline.\n */\n MDCNotchedOutlineFoundation.prototype.closeNotch = function () {\n var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED;\n this.adapter_.removeClass(OUTLINE_NOTCHED);\n this.adapter_.removeNotchWidthProperty();\n };\n return MDCNotchedOutlineFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCNotchedOutlineFoundation = MDCNotchedOutlineFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCNotchedOutlineFoundation;\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(125);\nvar MDCRadioFoundation = /** @class */function (_super) {\n __extends(MDCRadioFoundation, _super);\n function MDCRadioFoundation(adapter) {\n return _super.call(this, __assign({}, MDCRadioFoundation.defaultAdapter, adapter)) || this;\n }\n Object.defineProperty(MDCRadioFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRadioFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRadioFoundation, \"defaultAdapter\", {\n get: function get() {\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n setNativeControlDisabled: function setNativeControlDisabled() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n MDCRadioFoundation.prototype.setDisabled = function (disabled) {\n var DISABLED = MDCRadioFoundation.cssClasses.DISABLED;\n this.adapter_.setNativeControlDisabled(disabled);\n if (disabled) {\n this.adapter_.addClass(DISABLED);\n } else {\n this.adapter_.removeClass(DISABLED);\n }\n };\n return MDCRadioFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCRadioFoundation = MDCRadioFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCRadioFoundation;\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n DISABLED: 'mdc-select--disabled',\n FOCUSED: 'mdc-select--focused',\n INVALID: 'mdc-select--invalid',\n OUTLINED: 'mdc-select--outlined',\n REQUIRED: 'mdc-select--required',\n ROOT: 'mdc-select',\n SELECTED_ITEM_CLASS: 'mdc-list-item--selected',\n WITH_LEADING_ICON: 'mdc-select--with-leading-icon'\n};\nexports.cssClasses = cssClasses;\nvar strings = {\n ARIA_CONTROLS: 'aria-controls',\n ARIA_SELECTED_ATTR: 'aria-selected',\n CHANGE_EVENT: 'MDCSelect:change',\n ENHANCED_VALUE_ATTR: 'data-value',\n HIDDEN_INPUT_SELECTOR: 'input[type=\"hidden\"]',\n LABEL_SELECTOR: '.mdc-floating-label',\n LEADING_ICON_SELECTOR: '.mdc-select__icon',\n LINE_RIPPLE_SELECTOR: '.mdc-line-ripple',\n MENU_SELECTOR: '.mdc-select__menu',\n NATIVE_CONTROL_SELECTOR: '.mdc-select__native-control',\n OUTLINE_SELECTOR: '.mdc-notched-outline',\n SELECTED_ITEM_SELECTOR: \".\" + cssClasses.SELECTED_ITEM_CLASS,\n SELECTED_TEXT_SELECTOR: '.mdc-select__selected-text'\n};\nexports.strings = strings;\nvar numbers = {\n LABEL_SCALE: 0.75\n};\nexports.numbers = numbers;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(49);\nvar MDCSelectFoundation = /** @class */function (_super) {\n __extends(MDCSelectFoundation, _super);\n /* istanbul ignore next: optional argument is not a branch statement */\n /**\n * @param adapter\n * @param foundationMap Map from subcomponent names to their subfoundations.\n */\n function MDCSelectFoundation(adapter, foundationMap) {\n if (foundationMap === void 0) {\n foundationMap = {};\n }\n var _this = _super.call(this, __assign({}, MDCSelectFoundation.defaultAdapter, adapter)) || this;\n _this.leadingIcon_ = foundationMap.leadingIcon;\n _this.helperText_ = foundationMap.helperText;\n return _this;\n }\n Object.defineProperty(MDCSelectFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSelectFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSelectFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSelectFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCSelectAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n hasClass: function hasClass() {\n return false;\n },\n activateBottomLine: function activateBottomLine() {\n return undefined;\n },\n deactivateBottomLine: function deactivateBottomLine() {\n return undefined;\n },\n setValue: function setValue() {\n return undefined;\n },\n getValue: function getValue() {\n return '';\n },\n floatLabel: function floatLabel() {\n return undefined;\n },\n getLabelWidth: function getLabelWidth() {\n return 0;\n },\n hasOutline: function hasOutline() {\n return false;\n },\n notchOutline: function notchOutline() {\n return undefined;\n },\n closeOutline: function closeOutline() {\n return undefined;\n },\n openMenu: function openMenu() {\n return undefined;\n },\n closeMenu: function closeMenu() {\n return undefined;\n },\n isMenuOpen: function isMenuOpen() {\n return false;\n },\n setSelectedIndex: function setSelectedIndex() {\n return undefined;\n },\n setDisabled: function setDisabled() {\n return undefined;\n },\n setRippleCenter: function setRippleCenter() {\n return undefined;\n },\n notifyChange: function notifyChange() {\n return undefined;\n },\n checkValidity: function checkValidity() {\n return false;\n },\n setValid: function setValid() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCSelectFoundation.prototype.setSelectedIndex = function (index) {\n this.adapter_.setSelectedIndex(index);\n this.adapter_.closeMenu();\n var didChange = true;\n this.handleChange(didChange);\n };\n MDCSelectFoundation.prototype.setValue = function (value) {\n this.adapter_.setValue(value);\n var didChange = true;\n this.handleChange(didChange);\n };\n MDCSelectFoundation.prototype.getValue = function () {\n return this.adapter_.getValue();\n };\n MDCSelectFoundation.prototype.setDisabled = function (isDisabled) {\n if (isDisabled) {\n this.adapter_.addClass(constants_1.cssClasses.DISABLED);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.DISABLED);\n }\n this.adapter_.setDisabled(isDisabled);\n this.adapter_.closeMenu();\n if (this.leadingIcon_) {\n this.leadingIcon_.setDisabled(isDisabled);\n }\n };\n /**\n * @param content Sets the content of the helper text.\n */\n MDCSelectFoundation.prototype.setHelperTextContent = function (content) {\n if (this.helperText_) {\n this.helperText_.setContent(content);\n }\n };\n MDCSelectFoundation.prototype.layout = function () {\n var openNotch = this.getValue().length > 0;\n this.notchOutline(openNotch);\n };\n /**\n * Handles value changes, via change event or programmatic updates.\n */\n MDCSelectFoundation.prototype.handleChange = function (didChange) {\n if (didChange === void 0) {\n didChange = true;\n }\n var value = this.getValue();\n var optionHasValue = value.length > 0;\n var isRequired = this.adapter_.hasClass(constants_1.cssClasses.REQUIRED);\n this.notchOutline(optionHasValue);\n if (!this.adapter_.hasClass(constants_1.cssClasses.FOCUSED)) {\n this.adapter_.floatLabel(optionHasValue);\n }\n if (didChange) {\n this.adapter_.notifyChange(value);\n if (isRequired) {\n this.setValid(this.isValid());\n if (this.helperText_) {\n this.helperText_.setValidity(this.isValid());\n }\n }\n }\n };\n /**\n * Handles focus events from select element.\n */\n MDCSelectFoundation.prototype.handleFocus = function () {\n this.adapter_.addClass(constants_1.cssClasses.FOCUSED);\n this.adapter_.floatLabel(true);\n this.notchOutline(true);\n this.adapter_.activateBottomLine();\n if (this.helperText_) {\n this.helperText_.showToScreenReader();\n }\n };\n /**\n * Handles blur events from select element.\n */\n MDCSelectFoundation.prototype.handleBlur = function () {\n if (this.adapter_.isMenuOpen()) {\n return;\n }\n this.adapter_.removeClass(constants_1.cssClasses.FOCUSED);\n this.handleChange(false);\n this.adapter_.deactivateBottomLine();\n var isRequired = this.adapter_.hasClass(constants_1.cssClasses.REQUIRED);\n if (isRequired) {\n this.setValid(this.isValid());\n if (this.helperText_) {\n this.helperText_.setValidity(this.isValid());\n }\n }\n };\n MDCSelectFoundation.prototype.handleClick = function (normalizedX) {\n if (this.adapter_.isMenuOpen()) {\n return;\n }\n this.adapter_.setRippleCenter(normalizedX);\n this.adapter_.openMenu();\n };\n MDCSelectFoundation.prototype.handleKeydown = function (event) {\n if (this.adapter_.isMenuOpen()) {\n return;\n }\n var isEnter = event.key === 'Enter' || event.keyCode === 13;\n var isSpace = event.key === 'Space' || event.keyCode === 32;\n var arrowUp = event.key === 'ArrowUp' || event.keyCode === 38;\n var arrowDown = event.key === 'ArrowDown' || event.keyCode === 40;\n if (this.adapter_.hasClass(constants_1.cssClasses.FOCUSED) && (isEnter || isSpace || arrowUp || arrowDown)) {\n this.adapter_.openMenu();\n event.preventDefault();\n }\n };\n /**\n * Opens/closes the notched outline.\n */\n MDCSelectFoundation.prototype.notchOutline = function (openNotch) {\n if (!this.adapter_.hasOutline()) {\n return;\n }\n var isFocused = this.adapter_.hasClass(constants_1.cssClasses.FOCUSED);\n if (openNotch) {\n var labelScale = constants_1.numbers.LABEL_SCALE;\n var labelWidth = this.adapter_.getLabelWidth() * labelScale;\n this.adapter_.notchOutline(labelWidth);\n } else if (!isFocused) {\n this.adapter_.closeOutline();\n }\n };\n /**\n * Sets the aria label of the leading icon.\n */\n MDCSelectFoundation.prototype.setLeadingIconAriaLabel = function (label) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setAriaLabel(label);\n }\n };\n /**\n * Sets the text content of the leading icon.\n */\n MDCSelectFoundation.prototype.setLeadingIconContent = function (content) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setContent(content);\n }\n };\n MDCSelectFoundation.prototype.setValid = function (isValid) {\n this.adapter_.setValid(isValid);\n };\n MDCSelectFoundation.prototype.isValid = function () {\n return this.adapter_.checkValidity();\n };\n return MDCSelectFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCSelectFoundation = MDCSelectFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCSelectFoundation;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(128));\n__export(__webpack_require__(52));\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(129);\nvar MDCSelectHelperTextFoundation = /** @class */function (_super) {\n __extends(MDCSelectHelperTextFoundation, _super);\n function MDCSelectHelperTextFoundation(adapter) {\n return _super.call(this, __assign({}, MDCSelectHelperTextFoundation.defaultAdapter, adapter)) || this;\n }\n Object.defineProperty(MDCSelectHelperTextFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSelectHelperTextFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSelectHelperTextFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCSelectHelperTextAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n hasClass: function hasClass() {\n return false;\n },\n setAttr: function setAttr() {\n return undefined;\n },\n removeAttr: function removeAttr() {\n return undefined;\n },\n setContent: function setContent() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the content of the helper text field.\n */\n MDCSelectHelperTextFoundation.prototype.setContent = function (content) {\n this.adapter_.setContent(content);\n };\n /**\n * Sets the persistency of the helper text.\n */\n MDCSelectHelperTextFoundation.prototype.setPersistent = function (isPersistent) {\n if (isPersistent) {\n this.adapter_.addClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT);\n }\n };\n /**\n * @param isValidation True to make the helper text act as an error validation message.\n */\n MDCSelectHelperTextFoundation.prototype.setValidation = function (isValidation) {\n if (isValidation) {\n this.adapter_.addClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG);\n }\n };\n /**\n * Makes the helper text visible to screen readers.\n */\n MDCSelectHelperTextFoundation.prototype.showToScreenReader = function () {\n this.adapter_.removeAttr(constants_1.strings.ARIA_HIDDEN);\n };\n /**\n * Sets the validity of the helper text based on the select validity.\n */\n MDCSelectHelperTextFoundation.prototype.setValidity = function (selectIsValid) {\n var helperTextIsPersistent = this.adapter_.hasClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT);\n var helperTextIsValidationMsg = this.adapter_.hasClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG);\n var validationMsgNeedsDisplay = helperTextIsValidationMsg && !selectIsValid;\n if (validationMsgNeedsDisplay) {\n this.adapter_.setAttr(constants_1.strings.ROLE, 'alert');\n } else {\n this.adapter_.removeAttr(constants_1.strings.ROLE);\n }\n if (!helperTextIsPersistent && !validationMsgNeedsDisplay) {\n this.hide_();\n }\n };\n /**\n * Hides the help text from screen readers.\n */\n MDCSelectHelperTextFoundation.prototype.hide_ = function () {\n this.adapter_.setAttr(constants_1.strings.ARIA_HIDDEN, 'true');\n };\n return MDCSelectHelperTextFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCSelectHelperTextFoundation = MDCSelectHelperTextFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCSelectHelperTextFoundation;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(130));\n__export(__webpack_require__(54));\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(131);\nvar INTERACTION_EVENTS = ['click', 'keydown'];\nvar MDCSelectIconFoundation = /** @class */function (_super) {\n __extends(MDCSelectIconFoundation, _super);\n function MDCSelectIconFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCSelectIconFoundation.defaultAdapter, adapter)) || this;\n _this.savedTabIndex_ = null;\n _this.interactionHandler_ = function (evt) {\n return _this.handleInteraction(evt);\n };\n return _this;\n }\n Object.defineProperty(MDCSelectIconFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSelectIconFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCSelectIconAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n getAttr: function getAttr() {\n return null;\n },\n setAttr: function setAttr() {\n return undefined;\n },\n removeAttr: function removeAttr() {\n return undefined;\n },\n setContent: function setContent() {\n return undefined;\n },\n registerInteractionHandler: function registerInteractionHandler() {\n return undefined;\n },\n deregisterInteractionHandler: function deregisterInteractionHandler() {\n return undefined;\n },\n notifyIconAction: function notifyIconAction() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCSelectIconFoundation.prototype.init = function () {\n var _this = this;\n this.savedTabIndex_ = this.adapter_.getAttr('tabindex');\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.adapter_.registerInteractionHandler(evtType, _this.interactionHandler_);\n });\n };\n MDCSelectIconFoundation.prototype.destroy = function () {\n var _this = this;\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.adapter_.deregisterInteractionHandler(evtType, _this.interactionHandler_);\n });\n };\n MDCSelectIconFoundation.prototype.setDisabled = function (disabled) {\n if (!this.savedTabIndex_) {\n return;\n }\n if (disabled) {\n this.adapter_.setAttr('tabindex', '-1');\n this.adapter_.removeAttr('role');\n } else {\n this.adapter_.setAttr('tabindex', this.savedTabIndex_);\n this.adapter_.setAttr('role', constants_1.strings.ICON_ROLE);\n }\n };\n MDCSelectIconFoundation.prototype.setAriaLabel = function (label) {\n this.adapter_.setAttr('aria-label', label);\n };\n MDCSelectIconFoundation.prototype.setContent = function (content) {\n this.adapter_.setContent(content);\n };\n MDCSelectIconFoundation.prototype.handleInteraction = function (evt) {\n var isEnterKey = evt.key === 'Enter' || evt.keyCode === 13;\n if (evt.type === 'click' || isEnterKey) {\n this.adapter_.notifyIconAction();\n }\n };\n return MDCSelectIconFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCSelectIconFoundation = MDCSelectIconFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCSelectIconFoundation;\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n ACTIVE: 'mdc-slider--active',\n DISABLED: 'mdc-slider--disabled',\n DISCRETE: 'mdc-slider--discrete',\n FOCUS: 'mdc-slider--focus',\n HAS_TRACK_MARKER: 'mdc-slider--display-markers',\n IN_TRANSIT: 'mdc-slider--in-transit',\n IS_DISCRETE: 'mdc-slider--discrete'\n};\nexports.cssClasses = cssClasses;\nvar strings = {\n ARIA_DISABLED: 'aria-disabled',\n ARIA_VALUEMAX: 'aria-valuemax',\n ARIA_VALUEMIN: 'aria-valuemin',\n ARIA_VALUENOW: 'aria-valuenow',\n CHANGE_EVENT: 'MDCSlider:change',\n INPUT_EVENT: 'MDCSlider:input',\n LAST_TRACK_MARKER_SELECTOR: '.mdc-slider__track-marker:last-child',\n PIN_VALUE_MARKER_SELECTOR: '.mdc-slider__pin-value-marker',\n STEP_DATA_ATTR: 'data-step',\n THUMB_CONTAINER_SELECTOR: '.mdc-slider__thumb-container',\n TRACK_MARKER_CONTAINER_SELECTOR: '.mdc-slider__track-marker-container',\n TRACK_SELECTOR: '.mdc-slider__track'\n};\nexports.strings = strings;\nvar numbers = {\n PAGE_FACTOR: 4\n};\nexports.numbers = numbers;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(10);\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(55);\nvar DOWN_EVENTS = ['mousedown', 'pointerdown', 'touchstart'];\nvar UP_EVENTS = ['mouseup', 'pointerup', 'touchend'];\nvar MOVE_EVENT_MAP = {\n mousedown: 'mousemove',\n pointerdown: 'pointermove',\n touchstart: 'touchmove'\n};\nvar KEY_IDS = {\n ARROW_DOWN: 'ArrowDown',\n ARROW_LEFT: 'ArrowLeft',\n ARROW_RIGHT: 'ArrowRight',\n ARROW_UP: 'ArrowUp',\n END: 'End',\n HOME: 'Home',\n PAGE_DOWN: 'PageDown',\n PAGE_UP: 'PageUp'\n};\nvar MDCSliderFoundation = /** @class */function (_super) {\n __extends(MDCSliderFoundation, _super);\n function MDCSliderFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCSliderFoundation.defaultAdapter, adapter)) || this;\n /**\n * We set this to NaN since we want it to be a number, but we can't use '0' or '-1'\n * because those could be valid tabindices set by the client code.\n */\n _this.savedTabIndex_ = NaN;\n _this.active_ = false;\n _this.inTransit_ = false;\n _this.isDiscrete_ = false;\n _this.hasTrackMarker_ = false;\n _this.handlingThumbTargetEvt_ = false;\n _this.min_ = 0;\n _this.max_ = 100;\n _this.step_ = 0;\n _this.value_ = 0;\n _this.disabled_ = false;\n _this.preventFocusState_ = false;\n _this.thumbContainerPointerHandler_ = function () {\n return _this.handlingThumbTargetEvt_ = true;\n };\n _this.interactionStartHandler_ = function (evt) {\n return _this.handleDown_(evt);\n };\n _this.keydownHandler_ = function (evt) {\n return _this.handleKeydown_(evt);\n };\n _this.focusHandler_ = function () {\n return _this.handleFocus_();\n };\n _this.blurHandler_ = function () {\n return _this.handleBlur_();\n };\n _this.resizeHandler_ = function () {\n return _this.layout();\n };\n return _this;\n }\n Object.defineProperty(MDCSliderFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSliderFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSliderFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSliderFoundation, \"defaultAdapter\", {\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n hasClass: function hasClass() {\n return false;\n },\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n getAttribute: function getAttribute() {\n return null;\n },\n setAttribute: function setAttribute() {\n return undefined;\n },\n removeAttribute: function removeAttribute() {\n return undefined;\n },\n computeBoundingRect: function computeBoundingRect() {\n return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };\n },\n getTabIndex: function getTabIndex() {\n return 0;\n },\n registerInteractionHandler: function registerInteractionHandler() {\n return undefined;\n },\n deregisterInteractionHandler: function deregisterInteractionHandler() {\n return undefined;\n },\n registerThumbContainerInteractionHandler: function registerThumbContainerInteractionHandler() {\n return undefined;\n },\n deregisterThumbContainerInteractionHandler: function deregisterThumbContainerInteractionHandler() {\n return undefined;\n },\n registerBodyInteractionHandler: function registerBodyInteractionHandler() {\n return undefined;\n },\n deregisterBodyInteractionHandler: function deregisterBodyInteractionHandler() {\n return undefined;\n },\n registerResizeHandler: function registerResizeHandler() {\n return undefined;\n },\n deregisterResizeHandler: function deregisterResizeHandler() {\n return undefined;\n },\n notifyInput: function notifyInput() {\n return undefined;\n },\n notifyChange: function notifyChange() {\n return undefined;\n },\n setThumbContainerStyleProperty: function setThumbContainerStyleProperty() {\n return undefined;\n },\n setTrackStyleProperty: function setTrackStyleProperty() {\n return undefined;\n },\n setMarkerValue: function setMarkerValue() {\n return undefined;\n },\n appendTrackMarkers: function appendTrackMarkers() {\n return undefined;\n },\n removeTrackMarkers: function removeTrackMarkers() {\n return undefined;\n },\n setLastTrackMarkersStyleProperty: function setLastTrackMarkersStyleProperty() {\n return undefined;\n },\n isRTL: function isRTL() {\n return false;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCSliderFoundation.prototype.init = function () {\n var _this = this;\n this.isDiscrete_ = this.adapter_.hasClass(constants_1.cssClasses.IS_DISCRETE);\n this.hasTrackMarker_ = this.adapter_.hasClass(constants_1.cssClasses.HAS_TRACK_MARKER);\n DOWN_EVENTS.forEach(function (evtName) {\n _this.adapter_.registerInteractionHandler(evtName, _this.interactionStartHandler_);\n _this.adapter_.registerThumbContainerInteractionHandler(evtName, _this.thumbContainerPointerHandler_);\n });\n this.adapter_.registerInteractionHandler('keydown', this.keydownHandler_);\n this.adapter_.registerInteractionHandler('focus', this.focusHandler_);\n this.adapter_.registerInteractionHandler('blur', this.blurHandler_);\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n this.layout();\n // At last step, provide a reasonable default value to discrete slider\n if (this.isDiscrete_ && this.getStep() === 0) {\n this.step_ = 1;\n }\n };\n MDCSliderFoundation.prototype.destroy = function () {\n var _this = this;\n DOWN_EVENTS.forEach(function (evtName) {\n _this.adapter_.deregisterInteractionHandler(evtName, _this.interactionStartHandler_);\n _this.adapter_.deregisterThumbContainerInteractionHandler(evtName, _this.thumbContainerPointerHandler_);\n });\n this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_);\n this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_);\n this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_);\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n };\n MDCSliderFoundation.prototype.setupTrackMarker = function () {\n if (this.isDiscrete_ && this.hasTrackMarker_ && this.getStep() !== 0) {\n var min = this.getMin();\n var max = this.getMax();\n var step = this.getStep();\n var numMarkers = (max - min) / step;\n // In case distance between max & min is indivisible to step,\n // we place the secondary to last marker proportionally at where thumb\n // could reach and place the last marker at max value\n var indivisible = Math.ceil(numMarkers) !== numMarkers;\n if (indivisible) {\n numMarkers = Math.ceil(numMarkers);\n }\n this.adapter_.removeTrackMarkers();\n this.adapter_.appendTrackMarkers(numMarkers);\n if (indivisible) {\n var lastStepRatio = (max - numMarkers * step) / step + 1;\n this.adapter_.setLastTrackMarkersStyleProperty('flex-grow', String(lastStepRatio));\n }\n }\n };\n MDCSliderFoundation.prototype.layout = function () {\n this.rect_ = this.adapter_.computeBoundingRect();\n this.updateUIForCurrentValue_();\n };\n MDCSliderFoundation.prototype.getValue = function () {\n return this.value_;\n };\n MDCSliderFoundation.prototype.setValue = function (value) {\n this.setValue_(value, false);\n };\n MDCSliderFoundation.prototype.getMax = function () {\n return this.max_;\n };\n MDCSliderFoundation.prototype.setMax = function (max) {\n if (max < this.min_) {\n throw new Error('Cannot set max to be less than the slider\\'s minimum value');\n }\n this.max_ = max;\n this.setValue_(this.value_, false, true);\n this.adapter_.setAttribute(constants_1.strings.ARIA_VALUEMAX, String(this.max_));\n this.setupTrackMarker();\n };\n MDCSliderFoundation.prototype.getMin = function () {\n return this.min_;\n };\n MDCSliderFoundation.prototype.setMin = function (min) {\n if (min > this.max_) {\n throw new Error('Cannot set min to be greater than the slider\\'s maximum value');\n }\n this.min_ = min;\n this.setValue_(this.value_, false, true);\n this.adapter_.setAttribute(constants_1.strings.ARIA_VALUEMIN, String(this.min_));\n this.setupTrackMarker();\n };\n MDCSliderFoundation.prototype.getStep = function () {\n return this.step_;\n };\n MDCSliderFoundation.prototype.setStep = function (step) {\n if (step < 0) {\n throw new Error('Step cannot be set to a negative number');\n }\n if (this.isDiscrete_ && (typeof step !== 'number' || step < 1)) {\n step = 1;\n }\n this.step_ = step;\n this.setValue_(this.value_, false, true);\n this.setupTrackMarker();\n };\n MDCSliderFoundation.prototype.isDisabled = function () {\n return this.disabled_;\n };\n MDCSliderFoundation.prototype.setDisabled = function (disabled) {\n this.disabled_ = disabled;\n this.toggleClass_(constants_1.cssClasses.DISABLED, this.disabled_);\n if (this.disabled_) {\n this.savedTabIndex_ = this.adapter_.getTabIndex();\n this.adapter_.setAttribute(constants_1.strings.ARIA_DISABLED, 'true');\n this.adapter_.removeAttribute('tabindex');\n } else {\n this.adapter_.removeAttribute(constants_1.strings.ARIA_DISABLED);\n if (!isNaN(this.savedTabIndex_)) {\n this.adapter_.setAttribute('tabindex', String(this.savedTabIndex_));\n }\n }\n };\n /**\n * Called when the user starts interacting with the slider\n */\n MDCSliderFoundation.prototype.handleDown_ = function (downEvent) {\n var _this = this;\n if (this.disabled_) {\n return;\n }\n this.preventFocusState_ = true;\n this.setInTransit_(!this.handlingThumbTargetEvt_);\n this.handlingThumbTargetEvt_ = false;\n this.setActive_(true);\n var moveHandler = function moveHandler(moveEvent) {\n _this.handleMove_(moveEvent);\n };\n var moveEventType = MOVE_EVENT_MAP[downEvent.type];\n // Note: upHandler is [de]registered on ALL potential pointer-related release event types, since some browsers\n // do not always fire these consistently in pairs.\n // (See https://github.com/material-components/material-components-web/issues/1192)\n var upHandler = function upHandler() {\n _this.handleUp_();\n _this.adapter_.deregisterBodyInteractionHandler(moveEventType, moveHandler);\n UP_EVENTS.forEach(function (evtName) {\n return _this.adapter_.deregisterBodyInteractionHandler(evtName, upHandler);\n });\n };\n this.adapter_.registerBodyInteractionHandler(moveEventType, moveHandler);\n UP_EVENTS.forEach(function (evtName) {\n return _this.adapter_.registerBodyInteractionHandler(evtName, upHandler);\n });\n this.setValueFromEvt_(downEvent);\n };\n /**\n * Called when the user moves the slider\n */\n MDCSliderFoundation.prototype.handleMove_ = function (evt) {\n evt.preventDefault();\n this.setValueFromEvt_(evt);\n };\n /**\n * Called when the user's interaction with the slider ends\n */\n MDCSliderFoundation.prototype.handleUp_ = function () {\n this.setActive_(false);\n this.adapter_.notifyChange();\n };\n /**\n * Returns the pageX of the event\n */\n MDCSliderFoundation.prototype.getPageX_ = function (evt) {\n if (evt.targetTouches && evt.targetTouches.length > 0) {\n return evt.targetTouches[0].pageX;\n }\n return evt.pageX;\n };\n /**\n * Sets the slider value from an event\n */\n MDCSliderFoundation.prototype.setValueFromEvt_ = function (evt) {\n var pageX = this.getPageX_(evt);\n var value = this.computeValueFromPageX_(pageX);\n this.setValue_(value, true);\n };\n /**\n * Computes the new value from the pageX position\n */\n MDCSliderFoundation.prototype.computeValueFromPageX_ = function (pageX) {\n var _a = this,\n max = _a.max_,\n min = _a.min_;\n var xPos = pageX - this.rect_.left;\n var pctComplete = xPos / this.rect_.width;\n if (this.adapter_.isRTL()) {\n pctComplete = 1 - pctComplete;\n }\n // Fit the percentage complete between the range [min,max]\n // by remapping from [0, 1] to [min, min+(max-min)].\n return min + pctComplete * (max - min);\n };\n /**\n * Handles keydown events\n */\n MDCSliderFoundation.prototype.handleKeydown_ = function (evt) {\n var keyId = this.getKeyId_(evt);\n var value = this.getValueForKeyId_(keyId);\n if (isNaN(value)) {\n return;\n }\n // Prevent page from scrolling due to key presses that would normally scroll the page\n evt.preventDefault();\n this.adapter_.addClass(constants_1.cssClasses.FOCUS);\n this.setValue_(value, true);\n this.adapter_.notifyChange();\n };\n /**\n * Returns the computed name of the event\n */\n MDCSliderFoundation.prototype.getKeyId_ = function (kbdEvt) {\n if (kbdEvt.key === KEY_IDS.ARROW_LEFT || kbdEvt.keyCode === 37) {\n return KEY_IDS.ARROW_LEFT;\n }\n if (kbdEvt.key === KEY_IDS.ARROW_RIGHT || kbdEvt.keyCode === 39) {\n return KEY_IDS.ARROW_RIGHT;\n }\n if (kbdEvt.key === KEY_IDS.ARROW_UP || kbdEvt.keyCode === 38) {\n return KEY_IDS.ARROW_UP;\n }\n if (kbdEvt.key === KEY_IDS.ARROW_DOWN || kbdEvt.keyCode === 40) {\n return KEY_IDS.ARROW_DOWN;\n }\n if (kbdEvt.key === KEY_IDS.HOME || kbdEvt.keyCode === 36) {\n return KEY_IDS.HOME;\n }\n if (kbdEvt.key === KEY_IDS.END || kbdEvt.keyCode === 35) {\n return KEY_IDS.END;\n }\n if (kbdEvt.key === KEY_IDS.PAGE_UP || kbdEvt.keyCode === 33) {\n return KEY_IDS.PAGE_UP;\n }\n if (kbdEvt.key === KEY_IDS.PAGE_DOWN || kbdEvt.keyCode === 34) {\n return KEY_IDS.PAGE_DOWN;\n }\n return '';\n };\n /**\n * Computes the value given a keyboard key ID\n */\n MDCSliderFoundation.prototype.getValueForKeyId_ = function (keyId) {\n var _a = this,\n max = _a.max_,\n min = _a.min_,\n step = _a.step_;\n var delta = step || (max - min) / 100;\n var valueNeedsToBeFlipped = this.adapter_.isRTL() && (keyId === KEY_IDS.ARROW_LEFT || keyId === KEY_IDS.ARROW_RIGHT);\n if (valueNeedsToBeFlipped) {\n delta = -delta;\n }\n switch (keyId) {\n case KEY_IDS.ARROW_LEFT:\n case KEY_IDS.ARROW_DOWN:\n return this.value_ - delta;\n case KEY_IDS.ARROW_RIGHT:\n case KEY_IDS.ARROW_UP:\n return this.value_ + delta;\n case KEY_IDS.HOME:\n return this.min_;\n case KEY_IDS.END:\n return this.max_;\n case KEY_IDS.PAGE_UP:\n return this.value_ + delta * constants_1.numbers.PAGE_FACTOR;\n case KEY_IDS.PAGE_DOWN:\n return this.value_ - delta * constants_1.numbers.PAGE_FACTOR;\n default:\n return NaN;\n }\n };\n MDCSliderFoundation.prototype.handleFocus_ = function () {\n if (this.preventFocusState_) {\n return;\n }\n this.adapter_.addClass(constants_1.cssClasses.FOCUS);\n };\n MDCSliderFoundation.prototype.handleBlur_ = function () {\n this.preventFocusState_ = false;\n this.adapter_.removeClass(constants_1.cssClasses.FOCUS);\n };\n /**\n * Sets the value of the slider\n */\n MDCSliderFoundation.prototype.setValue_ = function (value, shouldFireInput, force) {\n if (force === void 0) {\n force = false;\n }\n if (value === this.value_ && !force) {\n return;\n }\n var _a = this,\n min = _a.min_,\n max = _a.max_;\n var valueSetToBoundary = value === min || value === max;\n if (this.step_ && !valueSetToBoundary) {\n value = this.quantize_(value);\n }\n if (value < min) {\n value = min;\n } else if (value > max) {\n value = max;\n }\n this.value_ = value;\n this.adapter_.setAttribute(constants_1.strings.ARIA_VALUENOW, String(this.value_));\n this.updateUIForCurrentValue_();\n if (shouldFireInput) {\n this.adapter_.notifyInput();\n if (this.isDiscrete_) {\n this.adapter_.setMarkerValue(value);\n }\n }\n };\n /**\n * Calculates the quantized value\n */\n MDCSliderFoundation.prototype.quantize_ = function (value) {\n var numSteps = Math.round(value / this.step_);\n return numSteps * this.step_;\n };\n MDCSliderFoundation.prototype.updateUIForCurrentValue_ = function () {\n var _this = this;\n var _a = this,\n max = _a.max_,\n min = _a.min_,\n value = _a.value_;\n var pctComplete = (value - min) / (max - min);\n var translatePx = pctComplete * this.rect_.width;\n if (this.adapter_.isRTL()) {\n translatePx = this.rect_.width - translatePx;\n }\n var transformProp = util_1.getCorrectPropertyName(window, 'transform');\n var transitionendEvtName = util_1.getCorrectEventName(window, 'transitionend');\n if (this.inTransit_) {\n var onTransitionEnd_1 = function onTransitionEnd_1() {\n _this.setInTransit_(false);\n _this.adapter_.deregisterThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd_1);\n };\n this.adapter_.registerThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd_1);\n }\n requestAnimationFrame(function () {\n // NOTE(traviskaufman): It would be nice to use calc() here,\n // but IE cannot handle calcs in transforms correctly.\n // See: https://goo.gl/NC2itk\n // Also note that the -50% offset is used to center the slider thumb.\n _this.adapter_.setThumbContainerStyleProperty(transformProp, \"translateX(\" + translatePx + \"px) translateX(-50%)\");\n _this.adapter_.setTrackStyleProperty(transformProp, \"scaleX(\" + pctComplete + \")\");\n });\n };\n /**\n * Toggles the active state of the slider\n */\n MDCSliderFoundation.prototype.setActive_ = function (active) {\n this.active_ = active;\n this.toggleClass_(constants_1.cssClasses.ACTIVE, this.active_);\n };\n /**\n * Toggles the inTransit state of the slider\n */\n MDCSliderFoundation.prototype.setInTransit_ = function (inTransit) {\n this.inTransit_ = inTransit;\n this.toggleClass_(constants_1.cssClasses.IN_TRANSIT, this.inTransit_);\n };\n /**\n * Conditionally adds or removes a class based on shouldBePresent\n */\n MDCSliderFoundation.prototype.toggleClass_ = function (className, shouldBePresent) {\n if (shouldBePresent) {\n this.adapter_.addClass(className);\n } else {\n this.adapter_.removeClass(className);\n }\n };\n return MDCSliderFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCSliderFoundation = MDCSliderFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCSliderFoundation;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = __webpack_require__(20);\nvar ARIA_LIVE_DELAY_MS = constants_1.numbers.ARIA_LIVE_DELAY_MS;\nvar ARIA_LIVE_LABEL_TEXT_ATTR = constants_1.strings.ARIA_LIVE_LABEL_TEXT_ATTR;\nfunction announce(ariaEl, labelEl) {\n if (labelEl === void 0) {\n labelEl = ariaEl;\n }\n var priority = ariaEl.getAttribute('aria-live');\n // Trim text to ignore ` ` (see below).\n // textContent is only null if the node is a document, DOCTYPE, or notation.\n var labelText = labelEl.textContent.trim();\n if (!labelText || !priority) {\n return;\n }\n // Temporarily disable `aria-live` to prevent JAWS+Firefox from announcing the message twice.\n ariaEl.setAttribute('aria-live', 'off');\n // Temporarily clear `textContent` to force a DOM mutation event that will be detected by screen readers.\n // `aria-live` elements are only announced when the element's `textContent` *changes*, so snackbars\n // sent to the browser in the initial HTML response won't be read unless we clear the element's `textContent` first.\n // Similarly, displaying the same snackbar message twice in a row doesn't trigger a DOM mutation event,\n // so screen readers won't announce the second message unless we first clear `textContent`.\n //\n // We have to clear the label text two different ways to make it work in all browsers and screen readers:\n //\n // 1. `textContent = ''` is required for IE11 + JAWS\n // 2. `innerHTML = ' '` is required for Chrome + JAWS and NVDA\n //\n // All other browser/screen reader combinations support both methods.\n //\n // The wrapper `` visually hides the space character so that it doesn't cause jank when added/removed.\n // N.B.: Setting `position: absolute`, `opacity: 0`, or `height: 0` prevents Chrome from detecting the DOM change.\n //\n // This technique has been tested in:\n //\n // * JAWS 2019:\n // - Chrome 70\n // - Firefox 60 (ESR)\n // - IE 11\n // * NVDA 2018:\n // - Chrome 70\n // - Firefox 60 (ESR)\n // - IE 11\n // * ChromeVox 53\n labelEl.textContent = '';\n labelEl.innerHTML = ' ';\n // Prevent visual jank by temporarily displaying the label text in the ::before pseudo-element.\n // CSS generated content is normally announced by screen readers\n // (except in IE 11; see https://tink.uk/accessibility-support-for-css-generated-content/);\n // however, `aria-live` is turned off, so this DOM update will be ignored by screen readers.\n labelEl.setAttribute(ARIA_LIVE_LABEL_TEXT_ATTR, labelText);\n setTimeout(function () {\n // Allow screen readers to announce changes to the DOM again.\n ariaEl.setAttribute('aria-live', priority);\n // Remove the message from the ::before pseudo-element.\n labelEl.removeAttribute(ARIA_LIVE_LABEL_TEXT_ATTR);\n // Restore the original label text, which will be announced by screen readers.\n labelEl.textContent = labelText;\n }, ARIA_LIVE_DELAY_MS);\n}\nexports.announce = announce;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(20);\nvar OPENING = constants_1.cssClasses.OPENING,\n OPEN = constants_1.cssClasses.OPEN,\n CLOSING = constants_1.cssClasses.CLOSING;\nvar REASON_ACTION = constants_1.strings.REASON_ACTION,\n REASON_DISMISS = constants_1.strings.REASON_DISMISS;\nvar MDCSnackbarFoundation = /** @class */function (_super) {\n __extends(MDCSnackbarFoundation, _super);\n function MDCSnackbarFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCSnackbarFoundation.defaultAdapter, adapter)) || this;\n _this.isOpen_ = false;\n _this.animationFrame_ = 0;\n _this.animationTimer_ = 0;\n _this.autoDismissTimer_ = 0;\n _this.autoDismissTimeoutMs_ = constants_1.numbers.DEFAULT_AUTO_DISMISS_TIMEOUT_MS;\n _this.closeOnEscape_ = true;\n return _this;\n }\n Object.defineProperty(MDCSnackbarFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"defaultAdapter\", {\n get: function get() {\n return {\n addClass: function addClass() {\n return undefined;\n },\n announce: function announce() {\n return undefined;\n },\n notifyClosed: function notifyClosed() {\n return undefined;\n },\n notifyClosing: function notifyClosing() {\n return undefined;\n },\n notifyOpened: function notifyOpened() {\n return undefined;\n },\n notifyOpening: function notifyOpening() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n MDCSnackbarFoundation.prototype.destroy = function () {\n this.clearAutoDismissTimer_();\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = 0;\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = 0;\n this.adapter_.removeClass(OPENING);\n this.adapter_.removeClass(OPEN);\n this.adapter_.removeClass(CLOSING);\n };\n MDCSnackbarFoundation.prototype.open = function () {\n var _this = this;\n this.clearAutoDismissTimer_();\n this.isOpen_ = true;\n this.adapter_.notifyOpening();\n this.adapter_.removeClass(CLOSING);\n this.adapter_.addClass(OPENING);\n this.adapter_.announce();\n // Wait a frame once display is no longer \"none\", to establish basis for animation\n this.runNextAnimationFrame_(function () {\n _this.adapter_.addClass(OPEN);\n _this.animationTimer_ = setTimeout(function () {\n _this.handleAnimationTimerEnd_();\n _this.adapter_.notifyOpened();\n _this.autoDismissTimer_ = setTimeout(function () {\n _this.close(REASON_DISMISS);\n }, _this.getTimeoutMs());\n }, constants_1.numbers.SNACKBAR_ANIMATION_OPEN_TIME_MS);\n });\n };\n /**\n * @param reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the\n * `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom\n * client-specific values may also be used if desired.\n */\n MDCSnackbarFoundation.prototype.close = function (reason) {\n var _this = this;\n if (reason === void 0) {\n reason = '';\n }\n if (!this.isOpen_) {\n // Avoid redundant close calls (and events), e.g. repeated interactions as the snackbar is animating closed\n return;\n }\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = 0;\n this.clearAutoDismissTimer_();\n this.isOpen_ = false;\n this.adapter_.notifyClosing(reason);\n this.adapter_.addClass(constants_1.cssClasses.CLOSING);\n this.adapter_.removeClass(constants_1.cssClasses.OPEN);\n this.adapter_.removeClass(constants_1.cssClasses.OPENING);\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = setTimeout(function () {\n _this.handleAnimationTimerEnd_();\n _this.adapter_.notifyClosed(reason);\n }, constants_1.numbers.SNACKBAR_ANIMATION_CLOSE_TIME_MS);\n };\n MDCSnackbarFoundation.prototype.isOpen = function () {\n return this.isOpen_;\n };\n MDCSnackbarFoundation.prototype.getTimeoutMs = function () {\n return this.autoDismissTimeoutMs_;\n };\n MDCSnackbarFoundation.prototype.setTimeoutMs = function (timeoutMs) {\n // Use shorter variable names to make the code more readable\n var minValue = constants_1.numbers.MIN_AUTO_DISMISS_TIMEOUT_MS;\n var maxValue = constants_1.numbers.MAX_AUTO_DISMISS_TIMEOUT_MS;\n if (timeoutMs <= maxValue && timeoutMs >= minValue) {\n this.autoDismissTimeoutMs_ = timeoutMs;\n } else {\n throw new Error(\"timeoutMs must be an integer in the range \" + minValue + \"\\u2013\" + maxValue + \", but got '\" + timeoutMs + \"'\");\n }\n };\n MDCSnackbarFoundation.prototype.getCloseOnEscape = function () {\n return this.closeOnEscape_;\n };\n MDCSnackbarFoundation.prototype.setCloseOnEscape = function (closeOnEscape) {\n this.closeOnEscape_ = closeOnEscape;\n };\n MDCSnackbarFoundation.prototype.handleKeyDown = function (evt) {\n var isEscapeKey = evt.key === 'Escape' || evt.keyCode === 27;\n if (isEscapeKey && this.getCloseOnEscape()) {\n this.close(REASON_DISMISS);\n }\n };\n MDCSnackbarFoundation.prototype.handleActionButtonClick = function (_evt) {\n this.close(REASON_ACTION);\n };\n MDCSnackbarFoundation.prototype.handleActionIconClick = function (_evt) {\n this.close(REASON_DISMISS);\n };\n MDCSnackbarFoundation.prototype.clearAutoDismissTimer_ = function () {\n clearTimeout(this.autoDismissTimer_);\n this.autoDismissTimer_ = 0;\n };\n MDCSnackbarFoundation.prototype.handleAnimationTimerEnd_ = function () {\n this.animationTimer_ = 0;\n this.adapter_.removeClass(constants_1.cssClasses.OPENING);\n this.adapter_.removeClass(constants_1.cssClasses.CLOSING);\n };\n /**\n * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.\n */\n MDCSnackbarFoundation.prototype.runNextAnimationFrame_ = function (callback) {\n var _this = this;\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = requestAnimationFrame(function () {\n _this.animationFrame_ = 0;\n clearTimeout(_this.animationTimer_);\n _this.animationTimer_ = setTimeout(callback, 0);\n });\n };\n return MDCSnackbarFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCSnackbarFoundation = MDCSnackbarFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCSnackbarFoundation;\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(138);\nvar MDCSwitchFoundation = /** @class */function (_super) {\n __extends(MDCSwitchFoundation, _super);\n function MDCSwitchFoundation(adapter) {\n return _super.call(this, __assign({}, MDCSwitchFoundation.defaultAdapter, adapter)) || this;\n }\n Object.defineProperty(MDCSwitchFoundation, \"strings\", {\n /** The string constants used by the switch. */\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSwitchFoundation, \"cssClasses\", {\n /** The CSS classes used by the switch. */\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSwitchFoundation, \"defaultAdapter\", {\n /** The default Adapter for the switch. */\n get: function get() {\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n setNativeControlChecked: function setNativeControlChecked() {\n return undefined;\n },\n setNativeControlDisabled: function setNativeControlDisabled() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n /** Sets the checked state of the switch. */\n MDCSwitchFoundation.prototype.setChecked = function (checked) {\n this.adapter_.setNativeControlChecked(checked);\n this.updateCheckedStyling_(checked);\n };\n /** Sets the disabled state of the switch. */\n MDCSwitchFoundation.prototype.setDisabled = function (disabled) {\n this.adapter_.setNativeControlDisabled(disabled);\n if (disabled) {\n this.adapter_.addClass(constants_1.cssClasses.DISABLED);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.DISABLED);\n }\n };\n /** Handles the change event for the switch native control. */\n MDCSwitchFoundation.prototype.handleChange = function (evt) {\n var nativeControl = evt.target;\n this.updateCheckedStyling_(nativeControl.checked);\n };\n /** Updates the styling of the switch based on its checked state. */\n MDCSwitchFoundation.prototype.updateCheckedStyling_ = function (checked) {\n if (checked) {\n this.adapter_.addClass(constants_1.cssClasses.CHECKED);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.CHECKED);\n }\n };\n return MDCSwitchFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCSwitchFoundation = MDCSwitchFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCSwitchFoundation;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util = __importStar(__webpack_require__(61));\nexports.util = util;\n__export(__webpack_require__(141));\n__export(__webpack_require__(63));\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = __webpack_require__(62);\n/**\n * Stores result from computeHorizontalScrollbarHeight to avoid redundant processing.\n */\nvar horizontalScrollbarHeight_;\n/**\n * Computes the height of browser-rendered horizontal scrollbars using a self-created test element.\n * May return 0 (e.g. on OS X browsers under default configuration).\n */\nfunction computeHorizontalScrollbarHeight(documentObj, shouldCacheResult) {\n if (shouldCacheResult === void 0) {\n shouldCacheResult = true;\n }\n if (shouldCacheResult && typeof horizontalScrollbarHeight_ !== 'undefined') {\n return horizontalScrollbarHeight_;\n }\n var el = documentObj.createElement('div');\n el.classList.add(constants_1.cssClasses.SCROLL_TEST);\n documentObj.body.appendChild(el);\n var horizontalScrollbarHeight = el.offsetHeight - el.clientHeight;\n documentObj.body.removeChild(el);\n if (shouldCacheResult) {\n horizontalScrollbarHeight_ = horizontalScrollbarHeight;\n }\n return horizontalScrollbarHeight;\n}\nexports.computeHorizontalScrollbarHeight = computeHorizontalScrollbarHeight;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n ANIMATING: 'mdc-tab-scroller--animating',\n SCROLL_AREA_SCROLL: 'mdc-tab-scroller__scroll-area--scroll',\n SCROLL_TEST: 'mdc-tab-scroller__test'\n};\nexports.cssClasses = cssClasses;\nvar strings = {\n AREA_SELECTOR: '.mdc-tab-scroller__scroll-area',\n CONTENT_SELECTOR: '.mdc-tab-scroller__scroll-content'\n};\nexports.strings = strings;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(62);\nvar rtl_default_scroller_1 = __webpack_require__(142);\nvar rtl_negative_scroller_1 = __webpack_require__(143);\nvar rtl_reverse_scroller_1 = __webpack_require__(144);\nvar MDCTabScrollerFoundation = /** @class */function (_super) {\n __extends(MDCTabScrollerFoundation, _super);\n function MDCTabScrollerFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCTabScrollerFoundation.defaultAdapter, adapter)) || this;\n /**\n * Controls whether we should handle the transitionend and interaction events during the animation.\n */\n _this.isAnimating_ = false;\n return _this;\n }\n Object.defineProperty(MDCTabScrollerFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabScrollerFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabScrollerFoundation, \"defaultAdapter\", {\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n eventTargetMatchesSelector: function eventTargetMatchesSelector() {\n return false;\n },\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n addScrollAreaClass: function addScrollAreaClass() {\n return undefined;\n },\n setScrollAreaStyleProperty: function setScrollAreaStyleProperty() {\n return undefined;\n },\n setScrollContentStyleProperty: function setScrollContentStyleProperty() {\n return undefined;\n },\n getScrollContentStyleValue: function getScrollContentStyleValue() {\n return '';\n },\n setScrollAreaScrollLeft: function setScrollAreaScrollLeft() {\n return undefined;\n },\n getScrollAreaScrollLeft: function getScrollAreaScrollLeft() {\n return 0;\n },\n getScrollContentOffsetWidth: function getScrollContentOffsetWidth() {\n return 0;\n },\n getScrollAreaOffsetWidth: function getScrollAreaOffsetWidth() {\n return 0;\n },\n computeScrollAreaClientRect: function computeScrollAreaClientRect() {\n return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };\n },\n computeScrollContentClientRect: function computeScrollContentClientRect() {\n return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };\n },\n computeHorizontalScrollbarHeight: function computeHorizontalScrollbarHeight() {\n return 0;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCTabScrollerFoundation.prototype.init = function () {\n // Compute horizontal scrollbar height on scroller with overflow initially hidden, then update overflow to scroll\n // and immediately adjust bottom margin to avoid the scrollbar initially appearing before JS runs.\n var horizontalScrollbarHeight = this.adapter_.computeHorizontalScrollbarHeight();\n this.adapter_.setScrollAreaStyleProperty('margin-bottom', -horizontalScrollbarHeight + 'px');\n this.adapter_.addScrollAreaClass(MDCTabScrollerFoundation.cssClasses.SCROLL_AREA_SCROLL);\n };\n /**\n * Computes the current visual scroll position\n */\n MDCTabScrollerFoundation.prototype.getScrollPosition = function () {\n if (this.isRTL_()) {\n return this.computeCurrentScrollPositionRTL_();\n }\n var currentTranslateX = this.calculateCurrentTranslateX_();\n var scrollLeft = this.adapter_.getScrollAreaScrollLeft();\n return scrollLeft - currentTranslateX;\n };\n /**\n * Handles interaction events that occur during transition\n */\n MDCTabScrollerFoundation.prototype.handleInteraction = function () {\n // Early exit if we aren't animating\n if (!this.isAnimating_) {\n return;\n }\n // Prevent other event listeners from handling this event\n this.stopScrollAnimation_();\n };\n /**\n * Handles the transitionend event\n */\n MDCTabScrollerFoundation.prototype.handleTransitionEnd = function (evt) {\n // Early exit if we aren't animating or the event was triggered by a different element.\n var evtTarget = evt.target;\n if (!this.isAnimating_ || !this.adapter_.eventTargetMatchesSelector(evtTarget, MDCTabScrollerFoundation.strings.CONTENT_SELECTOR)) {\n return;\n }\n this.isAnimating_ = false;\n this.adapter_.removeClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);\n };\n /**\n * Increment the scroll value by the scrollXIncrement\n * @param scrollXIncrement The value by which to increment the scroll position\n */\n MDCTabScrollerFoundation.prototype.incrementScroll = function (scrollXIncrement) {\n // Early exit for non-operational increment values\n if (scrollXIncrement === 0) {\n return;\n }\n if (this.isRTL_()) {\n return this.incrementScrollRTL_(scrollXIncrement);\n }\n this.incrementScroll_(scrollXIncrement);\n };\n /**\n * Scrolls to the given scrollX value\n */\n MDCTabScrollerFoundation.prototype.scrollTo = function (scrollX) {\n if (this.isRTL_()) {\n return this.scrollToRTL_(scrollX);\n }\n this.scrollTo_(scrollX);\n };\n /**\n * @return Browser-specific {@link MDCTabScrollerRTL} instance.\n */\n MDCTabScrollerFoundation.prototype.getRTLScroller = function () {\n if (!this.rtlScrollerInstance_) {\n this.rtlScrollerInstance_ = this.rtlScrollerFactory_();\n }\n return this.rtlScrollerInstance_;\n };\n /**\n * @return translateX value from a CSS matrix transform function string.\n */\n MDCTabScrollerFoundation.prototype.calculateCurrentTranslateX_ = function () {\n var transformValue = this.adapter_.getScrollContentStyleValue('transform');\n // Early exit if no transform is present\n if (transformValue === 'none') {\n return 0;\n }\n // The transform value comes back as a matrix transformation in the form\n // of `matrix(a, b, c, d, tx, ty)`. We only care about tx (translateX) so\n // we're going to grab all the parenthesized values, strip out tx, and\n // parse it.\n var match = /\\((.+?)\\)/.exec(transformValue);\n if (!match) {\n return 0;\n }\n var matrixParams = match[1];\n // tslint:disable-next-line:ban-ts-ignore \"Unused vars\" should be a linter warning, not a compiler error.\n // @ts-ignore These unused variables should retain their semantic names for clarity.\n var _a = __read(matrixParams.split(','), 6),\n a = _a[0],\n b = _a[1],\n c = _a[2],\n d = _a[3],\n tx = _a[4],\n ty = _a[5];\n return parseFloat(tx); // tslint:disable-line:ban\n };\n /**\n * Calculates a safe scroll value that is > 0 and < the max scroll value\n * @param scrollX The distance to scroll\n */\n MDCTabScrollerFoundation.prototype.clampScrollValue_ = function (scrollX) {\n var edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.left, scrollX), edges.right);\n };\n MDCTabScrollerFoundation.prototype.computeCurrentScrollPositionRTL_ = function () {\n var translateX = this.calculateCurrentTranslateX_();\n return this.getRTLScroller().getScrollPositionRTL(translateX);\n };\n MDCTabScrollerFoundation.prototype.calculateScrollEdges_ = function () {\n var contentWidth = this.adapter_.getScrollContentOffsetWidth();\n var rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return {\n left: 0,\n right: contentWidth - rootWidth\n };\n };\n /**\n * Internal scroll method\n * @param scrollX The new scroll position\n */\n MDCTabScrollerFoundation.prototype.scrollTo_ = function (scrollX) {\n var currentScrollX = this.getScrollPosition();\n var safeScrollX = this.clampScrollValue_(scrollX);\n var scrollDelta = safeScrollX - currentScrollX;\n this.animate_({\n finalScrollPosition: safeScrollX,\n scrollDelta: scrollDelta\n });\n };\n /**\n * Internal RTL scroll method\n * @param scrollX The new scroll position\n */\n MDCTabScrollerFoundation.prototype.scrollToRTL_ = function (scrollX) {\n var animation = this.getRTLScroller().scrollToRTL(scrollX);\n this.animate_(animation);\n };\n /**\n * Internal increment scroll method\n * @param scrollX The new scroll position increment\n */\n MDCTabScrollerFoundation.prototype.incrementScroll_ = function (scrollX) {\n var currentScrollX = this.getScrollPosition();\n var targetScrollX = scrollX + currentScrollX;\n var safeScrollX = this.clampScrollValue_(targetScrollX);\n var scrollDelta = safeScrollX - currentScrollX;\n this.animate_({\n finalScrollPosition: safeScrollX,\n scrollDelta: scrollDelta\n });\n };\n /**\n * Internal increment scroll RTL method\n * @param scrollX The new scroll position RTL increment\n */\n MDCTabScrollerFoundation.prototype.incrementScrollRTL_ = function (scrollX) {\n var animation = this.getRTLScroller().incrementScrollRTL(scrollX);\n this.animate_(animation);\n };\n /**\n * Animates the tab scrolling\n * @param animation The animation to apply\n */\n MDCTabScrollerFoundation.prototype.animate_ = function (animation) {\n var _this = this;\n // Early exit if translateX is 0, which means there's no animation to perform\n if (animation.scrollDelta === 0) {\n return;\n }\n this.stopScrollAnimation_();\n // This animation uses the FLIP approach.\n // Read more here: https://aerotwist.com/blog/flip-your-animations/\n this.adapter_.setScrollAreaScrollLeft(animation.finalScrollPosition);\n this.adapter_.setScrollContentStyleProperty('transform', \"translateX(\" + animation.scrollDelta + \"px)\");\n // Force repaint\n this.adapter_.computeScrollAreaClientRect();\n requestAnimationFrame(function () {\n _this.adapter_.addClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);\n _this.adapter_.setScrollContentStyleProperty('transform', 'none');\n });\n this.isAnimating_ = true;\n };\n /**\n * Stops scroll animation\n */\n MDCTabScrollerFoundation.prototype.stopScrollAnimation_ = function () {\n this.isAnimating_ = false;\n var currentScrollPosition = this.getAnimatingScrollPosition_();\n this.adapter_.removeClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);\n this.adapter_.setScrollContentStyleProperty('transform', 'translateX(0px)');\n this.adapter_.setScrollAreaScrollLeft(currentScrollPosition);\n };\n /**\n * Gets the current scroll position during animation\n */\n MDCTabScrollerFoundation.prototype.getAnimatingScrollPosition_ = function () {\n var currentTranslateX = this.calculateCurrentTranslateX_();\n var scrollLeft = this.adapter_.getScrollAreaScrollLeft();\n if (this.isRTL_()) {\n return this.getRTLScroller().getAnimatingScrollPosition(scrollLeft, currentTranslateX);\n }\n return scrollLeft - currentTranslateX;\n };\n /**\n * Determines the RTL Scroller to use\n */\n MDCTabScrollerFoundation.prototype.rtlScrollerFactory_ = function () {\n // Browsers have three different implementations of scrollLeft in RTL mode,\n // dependent on the browser. The behavior is based off the max LTR\n // scrollLeft value and 0.\n //\n // * Default scrolling in RTL *\n // - Left-most value: 0\n // - Right-most value: Max LTR scrollLeft value\n //\n // * Negative scrolling in RTL *\n // - Left-most value: Negated max LTR scrollLeft value\n // - Right-most value: 0\n //\n // * Reverse scrolling in RTL *\n // - Left-most value: Max LTR scrollLeft value\n // - Right-most value: 0\n //\n // We use those principles below to determine which RTL scrollLeft\n // behavior is implemented in the current browser.\n var initialScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n this.adapter_.setScrollAreaScrollLeft(initialScrollLeft - 1);\n var newScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n // If the newScrollLeft value is negative,then we know that the browser has\n // implemented negative RTL scrolling, since all other implementations have\n // only positive values.\n if (newScrollLeft < 0) {\n // Undo the scrollLeft test check\n this.adapter_.setScrollAreaScrollLeft(initialScrollLeft);\n return new rtl_negative_scroller_1.MDCTabScrollerRTLNegative(this.adapter_);\n }\n var rootClientRect = this.adapter_.computeScrollAreaClientRect();\n var contentClientRect = this.adapter_.computeScrollContentClientRect();\n var rightEdgeDelta = Math.round(contentClientRect.right - rootClientRect.right);\n // Undo the scrollLeft test check\n this.adapter_.setScrollAreaScrollLeft(initialScrollLeft);\n // By calculating the clientRect of the root element and the clientRect of\n // the content element, we can determine how much the scroll value changed\n // when we performed the scrollLeft subtraction above.\n if (rightEdgeDelta === newScrollLeft) {\n return new rtl_reverse_scroller_1.MDCTabScrollerRTLReverse(this.adapter_);\n }\n return new rtl_default_scroller_1.MDCTabScrollerRTLDefault(this.adapter_);\n };\n MDCTabScrollerFoundation.prototype.isRTL_ = function () {\n return this.adapter_.getScrollContentStyleValue('direction') === 'rtl';\n };\n return MDCTabScrollerFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCTabScrollerFoundation = MDCTabScrollerFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTabScrollerFoundation;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(145));\n__export(__webpack_require__(68));\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(146));\n__export(__webpack_require__(9));\n__export(__webpack_require__(66));\n__export(__webpack_require__(67));\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(9);\n/* istanbul ignore next: subclass is not a branch statement */\nvar MDCFadingTabIndicatorFoundation = /** @class */function (_super) {\n __extends(MDCFadingTabIndicatorFoundation, _super);\n function MDCFadingTabIndicatorFoundation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCFadingTabIndicatorFoundation.prototype.activate = function () {\n this.adapter_.addClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE);\n };\n MDCFadingTabIndicatorFoundation.prototype.deactivate = function () {\n this.adapter_.removeClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE);\n };\n return MDCFadingTabIndicatorFoundation;\n}(foundation_1.MDCTabIndicatorFoundation);\nexports.MDCFadingTabIndicatorFoundation = MDCFadingTabIndicatorFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCFadingTabIndicatorFoundation;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(9);\n/* istanbul ignore next: subclass is not a branch statement */\nvar MDCSlidingTabIndicatorFoundation = /** @class */function (_super) {\n __extends(MDCSlidingTabIndicatorFoundation, _super);\n function MDCSlidingTabIndicatorFoundation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCSlidingTabIndicatorFoundation.prototype.activate = function (previousIndicatorClientRect) {\n // Early exit if no indicator is present to handle cases where an indicator\n // may be activated without a prior indicator state\n if (!previousIndicatorClientRect) {\n this.adapter_.addClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE);\n return;\n }\n // This animation uses the FLIP approach. You can read more about it at the link below:\n // https://aerotwist.com/blog/flip-your-animations/\n // Calculate the dimensions based on the dimensions of the previous indicator\n var currentClientRect = this.computeContentClientRect();\n var widthDelta = previousIndicatorClientRect.width / currentClientRect.width;\n var xPosition = previousIndicatorClientRect.left - currentClientRect.left;\n this.adapter_.addClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.NO_TRANSITION);\n this.adapter_.setContentStyleProperty('transform', \"translateX(\" + xPosition + \"px) scaleX(\" + widthDelta + \")\");\n // Force repaint before updating classes and transform to ensure the transform properly takes effect\n this.computeContentClientRect();\n this.adapter_.removeClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.NO_TRANSITION);\n this.adapter_.addClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE);\n this.adapter_.setContentStyleProperty('transform', '');\n };\n MDCSlidingTabIndicatorFoundation.prototype.deactivate = function () {\n this.adapter_.removeClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE);\n };\n return MDCSlidingTabIndicatorFoundation;\n}(foundation_1.MDCTabIndicatorFoundation);\nexports.MDCSlidingTabIndicatorFoundation = MDCSlidingTabIndicatorFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCSlidingTabIndicatorFoundation;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(148);\nvar MDCTabFoundation = /** @class */function (_super) {\n __extends(MDCTabFoundation, _super);\n function MDCTabFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCTabFoundation.defaultAdapter, adapter)) || this;\n _this.focusOnActivate_ = true;\n return _this;\n }\n Object.defineProperty(MDCTabFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabFoundation, \"defaultAdapter\", {\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n hasClass: function hasClass() {\n return false;\n },\n setAttr: function setAttr() {\n return undefined;\n },\n activateIndicator: function activateIndicator() {\n return undefined;\n },\n deactivateIndicator: function deactivateIndicator() {\n return undefined;\n },\n notifyInteracted: function notifyInteracted() {\n return undefined;\n },\n getOffsetLeft: function getOffsetLeft() {\n return 0;\n },\n getOffsetWidth: function getOffsetWidth() {\n return 0;\n },\n getContentOffsetLeft: function getContentOffsetLeft() {\n return 0;\n },\n getContentOffsetWidth: function getContentOffsetWidth() {\n return 0;\n },\n focus: function focus() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCTabFoundation.prototype.handleClick = function () {\n // It's up to the parent component to keep track of the active Tab and\n // ensure we don't activate a Tab that's already active.\n this.adapter_.notifyInteracted();\n };\n MDCTabFoundation.prototype.isActive = function () {\n return this.adapter_.hasClass(constants_1.cssClasses.ACTIVE);\n };\n /**\n * Sets whether the tab should focus itself when activated\n */\n MDCTabFoundation.prototype.setFocusOnActivate = function (focusOnActivate) {\n this.focusOnActivate_ = focusOnActivate;\n };\n /**\n * Activates the Tab\n */\n MDCTabFoundation.prototype.activate = function (previousIndicatorClientRect) {\n this.adapter_.addClass(constants_1.cssClasses.ACTIVE);\n this.adapter_.setAttr(constants_1.strings.ARIA_SELECTED, 'true');\n this.adapter_.setAttr(constants_1.strings.TABINDEX, '0');\n this.adapter_.activateIndicator(previousIndicatorClientRect);\n if (this.focusOnActivate_) {\n this.adapter_.focus();\n }\n };\n /**\n * Deactivates the Tab\n */\n MDCTabFoundation.prototype.deactivate = function () {\n // Early exit\n if (!this.isActive()) {\n return;\n }\n this.adapter_.removeClass(constants_1.cssClasses.ACTIVE);\n this.adapter_.setAttr(constants_1.strings.ARIA_SELECTED, 'false');\n this.adapter_.setAttr(constants_1.strings.TABINDEX, '-1');\n this.adapter_.deactivateIndicator();\n };\n /**\n * Returns the dimensions of the Tab\n */\n MDCTabFoundation.prototype.computeDimensions = function () {\n var rootWidth = this.adapter_.getOffsetWidth();\n var rootLeft = this.adapter_.getOffsetLeft();\n var contentWidth = this.adapter_.getContentOffsetWidth();\n var contentLeft = this.adapter_.getContentOffsetLeft();\n return {\n contentLeft: rootLeft + contentLeft,\n contentRight: rootLeft + contentLeft + contentWidth,\n rootLeft: rootLeft,\n rootRight: rootLeft + rootWidth\n };\n };\n return MDCTabFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCTabFoundation = MDCTabFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTabFoundation;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(149);\nvar ACCEPTABLE_KEYS = new Set();\n// IE11 has no support for new Set with iterable so we need to initialize this by hand\nACCEPTABLE_KEYS.add(constants_1.strings.ARROW_LEFT_KEY);\nACCEPTABLE_KEYS.add(constants_1.strings.ARROW_RIGHT_KEY);\nACCEPTABLE_KEYS.add(constants_1.strings.END_KEY);\nACCEPTABLE_KEYS.add(constants_1.strings.HOME_KEY);\nACCEPTABLE_KEYS.add(constants_1.strings.ENTER_KEY);\nACCEPTABLE_KEYS.add(constants_1.strings.SPACE_KEY);\nvar KEYCODE_MAP = new Map();\n// IE11 has no support for new Map with iterable so we need to initialize this by hand\nKEYCODE_MAP.set(constants_1.numbers.ARROW_LEFT_KEYCODE, constants_1.strings.ARROW_LEFT_KEY);\nKEYCODE_MAP.set(constants_1.numbers.ARROW_RIGHT_KEYCODE, constants_1.strings.ARROW_RIGHT_KEY);\nKEYCODE_MAP.set(constants_1.numbers.END_KEYCODE, constants_1.strings.END_KEY);\nKEYCODE_MAP.set(constants_1.numbers.HOME_KEYCODE, constants_1.strings.HOME_KEY);\nKEYCODE_MAP.set(constants_1.numbers.ENTER_KEYCODE, constants_1.strings.ENTER_KEY);\nKEYCODE_MAP.set(constants_1.numbers.SPACE_KEYCODE, constants_1.strings.SPACE_KEY);\nvar MDCTabBarFoundation = /** @class */function (_super) {\n __extends(MDCTabBarFoundation, _super);\n function MDCTabBarFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCTabBarFoundation.defaultAdapter, adapter)) || this;\n _this.useAutomaticActivation_ = false;\n return _this;\n }\n Object.defineProperty(MDCTabBarFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabBarFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabBarFoundation, \"defaultAdapter\", {\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n scrollTo: function scrollTo() {\n return undefined;\n },\n incrementScroll: function incrementScroll() {\n return undefined;\n },\n getScrollPosition: function getScrollPosition() {\n return 0;\n },\n getScrollContentWidth: function getScrollContentWidth() {\n return 0;\n },\n getOffsetWidth: function getOffsetWidth() {\n return 0;\n },\n isRTL: function isRTL() {\n return false;\n },\n setActiveTab: function setActiveTab() {\n return undefined;\n },\n activateTabAtIndex: function activateTabAtIndex() {\n return undefined;\n },\n deactivateTabAtIndex: function deactivateTabAtIndex() {\n return undefined;\n },\n focusTabAtIndex: function focusTabAtIndex() {\n return undefined;\n },\n getTabIndicatorClientRectAtIndex: function getTabIndicatorClientRectAtIndex() {\n return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };\n },\n getTabDimensionsAtIndex: function getTabDimensionsAtIndex() {\n return { rootLeft: 0, rootRight: 0, contentLeft: 0, contentRight: 0 };\n },\n getPreviousActiveTabIndex: function getPreviousActiveTabIndex() {\n return -1;\n },\n getFocusedTabIndex: function getFocusedTabIndex() {\n return -1;\n },\n getIndexOfTabById: function getIndexOfTabById() {\n return -1;\n },\n getTabListLength: function getTabListLength() {\n return 0;\n },\n notifyTabActivated: function notifyTabActivated() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Switches between automatic and manual activation modes.\n * See https://www.w3.org/TR/wai-aria-practices/#tabpanel for examples.\n */\n MDCTabBarFoundation.prototype.setUseAutomaticActivation = function (useAutomaticActivation) {\n this.useAutomaticActivation_ = useAutomaticActivation;\n };\n MDCTabBarFoundation.prototype.activateTab = function (index) {\n var previousActiveIndex = this.adapter_.getPreviousActiveTabIndex();\n if (!this.indexIsInRange_(index) || index === previousActiveIndex) {\n return;\n }\n this.adapter_.deactivateTabAtIndex(previousActiveIndex);\n this.adapter_.activateTabAtIndex(index, this.adapter_.getTabIndicatorClientRectAtIndex(previousActiveIndex));\n this.scrollIntoView(index);\n this.adapter_.notifyTabActivated(index);\n };\n MDCTabBarFoundation.prototype.handleKeyDown = function (evt) {\n // Get the key from the event\n var key = this.getKeyFromEvent_(evt);\n // Early exit if the event key isn't one of the keyboard navigation keys\n if (key === undefined) {\n return;\n }\n // Prevent default behavior for movement keys, but not for activation keys, since :active is used to apply ripple\n if (!this.isActivationKey_(key)) {\n evt.preventDefault();\n }\n if (this.useAutomaticActivation_) {\n if (this.isActivationKey_(key)) {\n return;\n }\n var index = this.determineTargetFromKey_(this.adapter_.getPreviousActiveTabIndex(), key);\n this.adapter_.setActiveTab(index);\n this.scrollIntoView(index);\n } else {\n var focusedTabIndex = this.adapter_.getFocusedTabIndex();\n if (this.isActivationKey_(key)) {\n this.adapter_.setActiveTab(focusedTabIndex);\n } else {\n var index = this.determineTargetFromKey_(focusedTabIndex, key);\n this.adapter_.focusTabAtIndex(index);\n this.scrollIntoView(index);\n }\n }\n };\n /**\n * Handles the MDCTab:interacted event\n */\n MDCTabBarFoundation.prototype.handleTabInteraction = function (evt) {\n this.adapter_.setActiveTab(this.adapter_.getIndexOfTabById(evt.detail.tabId));\n };\n /**\n * Scrolls the tab at the given index into view\n * @param index The tab index to make visible\n */\n MDCTabBarFoundation.prototype.scrollIntoView = function (index) {\n // Early exit if the index is out of range\n if (!this.indexIsInRange_(index)) {\n return;\n }\n // Always scroll to 0 if scrolling to the 0th index\n if (index === 0) {\n return this.adapter_.scrollTo(0);\n }\n // Always scroll to the max value if scrolling to the Nth index\n // MDCTabScroller.scrollTo() will never scroll past the max possible value\n if (index === this.adapter_.getTabListLength() - 1) {\n return this.adapter_.scrollTo(this.adapter_.getScrollContentWidth());\n }\n if (this.isRTL_()) {\n return this.scrollIntoViewRTL_(index);\n }\n this.scrollIntoView_(index);\n };\n /**\n * Private method for determining the index of the destination tab based on what key was pressed\n * @param origin The original index from which to determine the destination\n * @param key The name of the key\n */\n MDCTabBarFoundation.prototype.determineTargetFromKey_ = function (origin, key) {\n var isRTL = this.isRTL_();\n var maxIndex = this.adapter_.getTabListLength() - 1;\n var shouldGoToEnd = key === constants_1.strings.END_KEY;\n var shouldDecrement = key === constants_1.strings.ARROW_LEFT_KEY && !isRTL || key === constants_1.strings.ARROW_RIGHT_KEY && isRTL;\n var shouldIncrement = key === constants_1.strings.ARROW_RIGHT_KEY && !isRTL || key === constants_1.strings.ARROW_LEFT_KEY && isRTL;\n var index = origin;\n if (shouldGoToEnd) {\n index = maxIndex;\n } else if (shouldDecrement) {\n index -= 1;\n } else if (shouldIncrement) {\n index += 1;\n } else {\n index = 0;\n }\n if (index < 0) {\n index = maxIndex;\n } else if (index > maxIndex) {\n index = 0;\n }\n return index;\n };\n /**\n * Calculates the scroll increment that will make the tab at the given index visible\n * @param index The index of the tab\n * @param nextIndex The index of the next tab\n * @param scrollPosition The current scroll position\n * @param barWidth The width of the Tab Bar\n */\n MDCTabBarFoundation.prototype.calculateScrollIncrement_ = function (index, nextIndex, scrollPosition, barWidth) {\n var nextTabDimensions = this.adapter_.getTabDimensionsAtIndex(nextIndex);\n var relativeContentLeft = nextTabDimensions.contentLeft - scrollPosition - barWidth;\n var relativeContentRight = nextTabDimensions.contentRight - scrollPosition;\n var leftIncrement = relativeContentRight - constants_1.numbers.EXTRA_SCROLL_AMOUNT;\n var rightIncrement = relativeContentLeft + constants_1.numbers.EXTRA_SCROLL_AMOUNT;\n if (nextIndex < index) {\n return Math.min(leftIncrement, 0);\n }\n return Math.max(rightIncrement, 0);\n };\n /**\n * Calculates the scroll increment that will make the tab at the given index visible in RTL\n * @param index The index of the tab\n * @param nextIndex The index of the next tab\n * @param scrollPosition The current scroll position\n * @param barWidth The width of the Tab Bar\n * @param scrollContentWidth The width of the scroll content\n */\n MDCTabBarFoundation.prototype.calculateScrollIncrementRTL_ = function (index, nextIndex, scrollPosition, barWidth, scrollContentWidth) {\n var nextTabDimensions = this.adapter_.getTabDimensionsAtIndex(nextIndex);\n var relativeContentLeft = scrollContentWidth - nextTabDimensions.contentLeft - scrollPosition;\n var relativeContentRight = scrollContentWidth - nextTabDimensions.contentRight - scrollPosition - barWidth;\n var leftIncrement = relativeContentRight + constants_1.numbers.EXTRA_SCROLL_AMOUNT;\n var rightIncrement = relativeContentLeft - constants_1.numbers.EXTRA_SCROLL_AMOUNT;\n if (nextIndex > index) {\n return Math.max(leftIncrement, 0);\n }\n return Math.min(rightIncrement, 0);\n };\n /**\n * Determines the index of the adjacent tab closest to either edge of the Tab Bar\n * @param index The index of the tab\n * @param tabDimensions The dimensions of the tab\n * @param scrollPosition The current scroll position\n * @param barWidth The width of the tab bar\n */\n MDCTabBarFoundation.prototype.findAdjacentTabIndexClosestToEdge_ = function (index, tabDimensions, scrollPosition, barWidth) {\n /**\n * Tabs are laid out in the Tab Scroller like this:\n *\n * Scroll Position\n * +---+\n * | | Bar Width\n * | +-----------------------------------+\n * | | |\n * | V V\n * | +-----------------------------------+\n * V | Tab Scroller |\n * +------------+--------------+-------------------+\n * | Tab | Tab | Tab |\n * +------------+--------------+-------------------+\n * | |\n * +-----------------------------------+\n *\n * To determine the next adjacent index, we look at the Tab root left and\n * Tab root right, both relative to the scroll position. If the Tab root\n * left is less than 0, then we know it's out of view to the left. If the\n * Tab root right minus the bar width is greater than 0, we know the Tab is\n * out of view to the right. From there, we either increment or decrement\n * the index.\n */\n var relativeRootLeft = tabDimensions.rootLeft - scrollPosition;\n var relativeRootRight = tabDimensions.rootRight - scrollPosition - barWidth;\n var relativeRootDelta = relativeRootLeft + relativeRootRight;\n var leftEdgeIsCloser = relativeRootLeft < 0 || relativeRootDelta < 0;\n var rightEdgeIsCloser = relativeRootRight > 0 || relativeRootDelta > 0;\n if (leftEdgeIsCloser) {\n return index - 1;\n }\n if (rightEdgeIsCloser) {\n return index + 1;\n }\n return -1;\n };\n /**\n * Determines the index of the adjacent tab closest to either edge of the Tab Bar in RTL\n * @param index The index of the tab\n * @param tabDimensions The dimensions of the tab\n * @param scrollPosition The current scroll position\n * @param barWidth The width of the tab bar\n * @param scrollContentWidth The width of the scroller content\n */\n MDCTabBarFoundation.prototype.findAdjacentTabIndexClosestToEdgeRTL_ = function (index, tabDimensions, scrollPosition, barWidth, scrollContentWidth) {\n var rootLeft = scrollContentWidth - tabDimensions.rootLeft - barWidth - scrollPosition;\n var rootRight = scrollContentWidth - tabDimensions.rootRight - scrollPosition;\n var rootDelta = rootLeft + rootRight;\n var leftEdgeIsCloser = rootLeft > 0 || rootDelta > 0;\n var rightEdgeIsCloser = rootRight < 0 || rootDelta < 0;\n if (leftEdgeIsCloser) {\n return index + 1;\n }\n if (rightEdgeIsCloser) {\n return index - 1;\n }\n return -1;\n };\n /**\n * Returns the key associated with a keydown event\n * @param evt The keydown event\n */\n MDCTabBarFoundation.prototype.getKeyFromEvent_ = function (evt) {\n if (ACCEPTABLE_KEYS.has(evt.key)) {\n return evt.key;\n }\n return KEYCODE_MAP.get(evt.keyCode);\n };\n MDCTabBarFoundation.prototype.isActivationKey_ = function (key) {\n return key === constants_1.strings.SPACE_KEY || key === constants_1.strings.ENTER_KEY;\n };\n /**\n * Returns whether a given index is inclusively between the ends\n * @param index The index to test\n */\n MDCTabBarFoundation.prototype.indexIsInRange_ = function (index) {\n return index >= 0 && index < this.adapter_.getTabListLength();\n };\n /**\n * Returns the view's RTL property\n */\n MDCTabBarFoundation.prototype.isRTL_ = function () {\n return this.adapter_.isRTL();\n };\n /**\n * Scrolls the tab at the given index into view for left-to-right user agents.\n * @param index The index of the tab to scroll into view\n */\n MDCTabBarFoundation.prototype.scrollIntoView_ = function (index) {\n var scrollPosition = this.adapter_.getScrollPosition();\n var barWidth = this.adapter_.getOffsetWidth();\n var tabDimensions = this.adapter_.getTabDimensionsAtIndex(index);\n var nextIndex = this.findAdjacentTabIndexClosestToEdge_(index, tabDimensions, scrollPosition, barWidth);\n if (!this.indexIsInRange_(nextIndex)) {\n return;\n }\n var scrollIncrement = this.calculateScrollIncrement_(index, nextIndex, scrollPosition, barWidth);\n this.adapter_.incrementScroll(scrollIncrement);\n };\n /**\n * Scrolls the tab at the given index into view in RTL\n * @param index The tab index to make visible\n */\n MDCTabBarFoundation.prototype.scrollIntoViewRTL_ = function (index) {\n var scrollPosition = this.adapter_.getScrollPosition();\n var barWidth = this.adapter_.getOffsetWidth();\n var tabDimensions = this.adapter_.getTabDimensionsAtIndex(index);\n var scrollWidth = this.adapter_.getScrollContentWidth();\n var nextIndex = this.findAdjacentTabIndexClosestToEdgeRTL_(index, tabDimensions, scrollPosition, barWidth, scrollWidth);\n if (!this.indexIsInRange_(nextIndex)) {\n return;\n }\n var scrollIncrement = this.calculateScrollIncrementRTL_(index, nextIndex, scrollPosition, barWidth, scrollWidth);\n this.adapter_.incrementScroll(scrollIncrement);\n };\n return MDCTabBarFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCTabBarFoundation = MDCTabBarFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTabBarFoundation;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(152));\n__export(__webpack_require__(71));\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(153);\nvar MDCTextFieldCharacterCounterFoundation = /** @class */function (_super) {\n __extends(MDCTextFieldCharacterCounterFoundation, _super);\n function MDCTextFieldCharacterCounterFoundation(adapter) {\n return _super.call(this, __assign({}, MDCTextFieldCharacterCounterFoundation.defaultAdapter, adapter)) || this;\n }\n Object.defineProperty(MDCTextFieldCharacterCounterFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldCharacterCounterFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldCharacterCounterFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCTextFieldCharacterCounterAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n return {\n setContent: function setContent() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n MDCTextFieldCharacterCounterFoundation.prototype.setCounterValue = function (currentLength, maxLength) {\n currentLength = Math.min(currentLength, maxLength);\n this.adapter_.setContent(currentLength + \" / \" + maxLength);\n };\n return MDCTextFieldCharacterCounterFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCTextFieldCharacterCounterFoundation = MDCTextFieldCharacterCounterFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTextFieldCharacterCounterFoundation;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar strings = {\n ARIA_CONTROLS: 'aria-controls',\n ICON_SELECTOR: '.mdc-text-field__icon',\n INPUT_SELECTOR: '.mdc-text-field__input',\n LABEL_SELECTOR: '.mdc-floating-label',\n LINE_RIPPLE_SELECTOR: '.mdc-line-ripple',\n OUTLINE_SELECTOR: '.mdc-notched-outline'\n};\nexports.strings = strings;\nvar cssClasses = {\n DENSE: 'mdc-text-field--dense',\n DISABLED: 'mdc-text-field--disabled',\n FOCUSED: 'mdc-text-field--focused',\n HELPER_LINE: 'mdc-text-field-helper-line',\n INVALID: 'mdc-text-field--invalid',\n OUTLINED: 'mdc-text-field--outlined',\n ROOT: 'mdc-text-field',\n TEXTAREA: 'mdc-text-field--textarea',\n WITH_LEADING_ICON: 'mdc-text-field--with-leading-icon'\n};\nexports.cssClasses = cssClasses;\nvar numbers = {\n DENSE_LABEL_SCALE: 0.923,\n LABEL_SCALE: 0.75\n};\nexports.numbers = numbers;\n/**\n * Whitelist based off of https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation\n * under the \"Validation-related attributes\" section.\n */\nvar VALIDATION_ATTR_WHITELIST = ['pattern', 'min', 'max', 'required', 'step', 'minlength', 'maxlength'];\nexports.VALIDATION_ATTR_WHITELIST = VALIDATION_ATTR_WHITELIST;\n/**\n * Label should always float for these types as they show some UI even if value is empty.\n */\nvar ALWAYS_FLOAT_TYPES = ['color', 'date', 'datetime-local', 'month', 'range', 'time', 'week'];\nexports.ALWAYS_FLOAT_TYPES = ALWAYS_FLOAT_TYPES;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(72);\nvar POINTERDOWN_EVENTS = ['mousedown', 'touchstart'];\nvar INTERACTION_EVENTS = ['click', 'keydown'];\nvar MDCTextFieldFoundation = /** @class */function (_super) {\n __extends(MDCTextFieldFoundation, _super);\n /**\n * @param adapter\n * @param foundationMap Map from subcomponent names to their subfoundations.\n */\n function MDCTextFieldFoundation(adapter, foundationMap) {\n if (foundationMap === void 0) {\n foundationMap = {};\n }\n var _this = _super.call(this, __assign({}, MDCTextFieldFoundation.defaultAdapter, adapter)) || this;\n _this.isFocused_ = false;\n _this.receivedUserInput_ = false;\n _this.isValid_ = true;\n _this.useNativeValidation_ = true;\n _this.helperText_ = foundationMap.helperText;\n _this.characterCounter_ = foundationMap.characterCounter;\n _this.leadingIcon_ = foundationMap.leadingIcon;\n _this.trailingIcon_ = foundationMap.trailingIcon;\n _this.inputFocusHandler_ = function () {\n return _this.activateFocus();\n };\n _this.inputBlurHandler_ = function () {\n return _this.deactivateFocus();\n };\n _this.inputInputHandler_ = function () {\n return _this.handleInput();\n };\n _this.setPointerXOffset_ = function (evt) {\n return _this.setTransformOrigin(evt);\n };\n _this.textFieldInteractionHandler_ = function () {\n return _this.handleTextFieldInteraction();\n };\n _this.validationAttributeChangeHandler_ = function (attributesList) {\n return _this.handleValidationAttributeChange(attributesList);\n };\n return _this;\n }\n Object.defineProperty(MDCTextFieldFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation.prototype, \"shouldAlwaysFloat_\", {\n get: function get() {\n var type = this.getNativeInput_().type;\n return constants_1.ALWAYS_FLOAT_TYPES.indexOf(type) >= 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation.prototype, \"shouldFloat\", {\n get: function get() {\n return this.shouldAlwaysFloat_ || this.isFocused_ || Boolean(this.getValue()) || this.isBadInput_();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation.prototype, \"shouldShake\", {\n get: function get() {\n return !this.isFocused_ && !this.isValid() && Boolean(this.getValue());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCTextFieldAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n hasClass: function hasClass() {\n return true;\n },\n registerTextFieldInteractionHandler: function registerTextFieldInteractionHandler() {\n return undefined;\n },\n deregisterTextFieldInteractionHandler: function deregisterTextFieldInteractionHandler() {\n return undefined;\n },\n registerInputInteractionHandler: function registerInputInteractionHandler() {\n return undefined;\n },\n deregisterInputInteractionHandler: function deregisterInputInteractionHandler() {\n return undefined;\n },\n registerValidationAttributeChangeHandler: function registerValidationAttributeChangeHandler() {\n return new MutationObserver(function () {\n return undefined;\n });\n },\n deregisterValidationAttributeChangeHandler: function deregisterValidationAttributeChangeHandler() {\n return undefined;\n },\n getNativeInput: function getNativeInput() {\n return null;\n },\n isFocused: function isFocused() {\n return false;\n },\n activateLineRipple: function activateLineRipple() {\n return undefined;\n },\n deactivateLineRipple: function deactivateLineRipple() {\n return undefined;\n },\n setLineRippleTransformOrigin: function setLineRippleTransformOrigin() {\n return undefined;\n },\n shakeLabel: function shakeLabel() {\n return undefined;\n },\n floatLabel: function floatLabel() {\n return undefined;\n },\n hasLabel: function hasLabel() {\n return false;\n },\n getLabelWidth: function getLabelWidth() {\n return 0;\n },\n hasOutline: function hasOutline() {\n return false;\n },\n notchOutline: function notchOutline() {\n return undefined;\n },\n closeOutline: function closeOutline() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCTextFieldFoundation.prototype.init = function () {\n var _this = this;\n if (this.adapter_.isFocused()) {\n this.inputFocusHandler_();\n } else if (this.adapter_.hasLabel() && this.shouldFloat) {\n this.notchOutline(true);\n this.adapter_.floatLabel(true);\n }\n this.adapter_.registerInputInteractionHandler('focus', this.inputFocusHandler_);\n this.adapter_.registerInputInteractionHandler('blur', this.inputBlurHandler_);\n this.adapter_.registerInputInteractionHandler('input', this.inputInputHandler_);\n POINTERDOWN_EVENTS.forEach(function (evtType) {\n _this.adapter_.registerInputInteractionHandler(evtType, _this.setPointerXOffset_);\n });\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.adapter_.registerTextFieldInteractionHandler(evtType, _this.textFieldInteractionHandler_);\n });\n this.validationObserver_ = this.adapter_.registerValidationAttributeChangeHandler(this.validationAttributeChangeHandler_);\n this.setCharacterCounter_(this.getValue().length);\n };\n MDCTextFieldFoundation.prototype.destroy = function () {\n var _this = this;\n this.adapter_.deregisterInputInteractionHandler('focus', this.inputFocusHandler_);\n this.adapter_.deregisterInputInteractionHandler('blur', this.inputBlurHandler_);\n this.adapter_.deregisterInputInteractionHandler('input', this.inputInputHandler_);\n POINTERDOWN_EVENTS.forEach(function (evtType) {\n _this.adapter_.deregisterInputInteractionHandler(evtType, _this.setPointerXOffset_);\n });\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.adapter_.deregisterTextFieldInteractionHandler(evtType, _this.textFieldInteractionHandler_);\n });\n this.adapter_.deregisterValidationAttributeChangeHandler(this.validationObserver_);\n };\n /**\n * Handles user interactions with the Text Field.\n */\n MDCTextFieldFoundation.prototype.handleTextFieldInteraction = function () {\n var nativeInput = this.adapter_.getNativeInput();\n if (nativeInput && nativeInput.disabled) {\n return;\n }\n this.receivedUserInput_ = true;\n };\n /**\n * Handles validation attribute changes\n */\n MDCTextFieldFoundation.prototype.handleValidationAttributeChange = function (attributesList) {\n var _this = this;\n attributesList.some(function (attributeName) {\n if (constants_1.VALIDATION_ATTR_WHITELIST.indexOf(attributeName) > -1) {\n _this.styleValidity_(true);\n return true;\n }\n return false;\n });\n if (attributesList.indexOf('maxlength') > -1) {\n this.setCharacterCounter_(this.getValue().length);\n }\n };\n /**\n * Opens/closes the notched outline.\n */\n MDCTextFieldFoundation.prototype.notchOutline = function (openNotch) {\n if (!this.adapter_.hasOutline()) {\n return;\n }\n if (openNotch) {\n var isDense = this.adapter_.hasClass(constants_1.cssClasses.DENSE);\n var labelScale = isDense ? constants_1.numbers.DENSE_LABEL_SCALE : constants_1.numbers.LABEL_SCALE;\n var labelWidth = this.adapter_.getLabelWidth() * labelScale;\n this.adapter_.notchOutline(labelWidth);\n } else {\n this.adapter_.closeOutline();\n }\n };\n /**\n * Activates the text field focus state.\n */\n MDCTextFieldFoundation.prototype.activateFocus = function () {\n this.isFocused_ = true;\n this.styleFocused_(this.isFocused_);\n this.adapter_.activateLineRipple();\n if (this.adapter_.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter_.floatLabel(this.shouldFloat);\n this.adapter_.shakeLabel(this.shouldShake);\n }\n if (this.helperText_) {\n this.helperText_.showToScreenReader();\n }\n };\n /**\n * Sets the line ripple's transform origin, so that the line ripple activate\n * animation will animate out from the user's click location.\n */\n MDCTextFieldFoundation.prototype.setTransformOrigin = function (evt) {\n var touches = evt.touches;\n var targetEvent = touches ? touches[0] : evt;\n var targetClientRect = targetEvent.target.getBoundingClientRect();\n var normalizedX = targetEvent.clientX - targetClientRect.left;\n this.adapter_.setLineRippleTransformOrigin(normalizedX);\n };\n /**\n * Handles input change of text input and text area.\n */\n MDCTextFieldFoundation.prototype.handleInput = function () {\n this.autoCompleteFocus();\n this.setCharacterCounter_(this.getValue().length);\n };\n /**\n * Activates the Text Field's focus state in cases when the input value\n * changes without user input (e.g. programmatically).\n */\n MDCTextFieldFoundation.prototype.autoCompleteFocus = function () {\n if (!this.receivedUserInput_) {\n this.activateFocus();\n }\n };\n /**\n * Deactivates the Text Field's focus state.\n */\n MDCTextFieldFoundation.prototype.deactivateFocus = function () {\n this.isFocused_ = false;\n this.adapter_.deactivateLineRipple();\n var isValid = this.isValid();\n this.styleValidity_(isValid);\n this.styleFocused_(this.isFocused_);\n if (this.adapter_.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter_.floatLabel(this.shouldFloat);\n this.adapter_.shakeLabel(this.shouldShake);\n }\n if (!this.shouldFloat) {\n this.receivedUserInput_ = false;\n }\n };\n MDCTextFieldFoundation.prototype.getValue = function () {\n return this.getNativeInput_().value;\n };\n /**\n * @param value The value to set on the input Element.\n */\n MDCTextFieldFoundation.prototype.setValue = function (value) {\n // Prevent Safari from moving the caret to the end of the input when the value has not changed.\n if (this.getValue() !== value) {\n this.getNativeInput_().value = value;\n }\n var isValid = this.isValid();\n this.styleValidity_(isValid);\n if (this.adapter_.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter_.floatLabel(this.shouldFloat);\n this.adapter_.shakeLabel(this.shouldShake);\n }\n };\n /**\n * @return The custom validity state, if set; otherwise, the result of a native validity check.\n */\n MDCTextFieldFoundation.prototype.isValid = function () {\n return this.useNativeValidation_ ? this.isNativeInputValid_() : this.isValid_;\n };\n /**\n * @param isValid Sets the custom validity state of the Text Field.\n */\n MDCTextFieldFoundation.prototype.setValid = function (isValid) {\n this.isValid_ = isValid;\n this.styleValidity_(isValid);\n var shouldShake = !isValid && !this.isFocused_;\n if (this.adapter_.hasLabel()) {\n this.adapter_.shakeLabel(shouldShake);\n }\n };\n /**\n * Enables or disables the use of native validation. Use this for custom validation.\n * @param useNativeValidation Set this to false to ignore native input validation.\n */\n MDCTextFieldFoundation.prototype.setUseNativeValidation = function (useNativeValidation) {\n this.useNativeValidation_ = useNativeValidation;\n };\n MDCTextFieldFoundation.prototype.isDisabled = function () {\n return this.getNativeInput_().disabled;\n };\n /**\n * @param disabled Sets the text-field disabled or enabled.\n */\n MDCTextFieldFoundation.prototype.setDisabled = function (disabled) {\n this.getNativeInput_().disabled = disabled;\n this.styleDisabled_(disabled);\n };\n /**\n * @param content Sets the content of the helper text.\n */\n MDCTextFieldFoundation.prototype.setHelperTextContent = function (content) {\n if (this.helperText_) {\n this.helperText_.setContent(content);\n }\n };\n /**\n * Sets the aria label of the leading icon.\n */\n MDCTextFieldFoundation.prototype.setLeadingIconAriaLabel = function (label) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setAriaLabel(label);\n }\n };\n /**\n * Sets the text content of the leading icon.\n */\n MDCTextFieldFoundation.prototype.setLeadingIconContent = function (content) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setContent(content);\n }\n };\n /**\n * Sets the aria label of the trailing icon.\n */\n MDCTextFieldFoundation.prototype.setTrailingIconAriaLabel = function (label) {\n if (this.trailingIcon_) {\n this.trailingIcon_.setAriaLabel(label);\n }\n };\n /**\n * Sets the text content of the trailing icon.\n */\n MDCTextFieldFoundation.prototype.setTrailingIconContent = function (content) {\n if (this.trailingIcon_) {\n this.trailingIcon_.setContent(content);\n }\n };\n /**\n * Sets character counter values that shows characters used and the total character limit.\n */\n MDCTextFieldFoundation.prototype.setCharacterCounter_ = function (currentLength) {\n if (!this.characterCounter_) {\n return;\n }\n var maxLength = this.getNativeInput_().maxLength;\n if (maxLength === -1) {\n throw new Error('MDCTextFieldFoundation: Expected maxlength html property on text input or textarea.');\n }\n this.characterCounter_.setCounterValue(currentLength, maxLength);\n };\n /**\n * @return True if the Text Field input fails in converting the user-supplied value.\n */\n MDCTextFieldFoundation.prototype.isBadInput_ = function () {\n // The badInput property is not supported in IE 11 💩.\n return this.getNativeInput_().validity.badInput || false;\n };\n /**\n * @return The result of native validity checking (ValidityState.valid).\n */\n MDCTextFieldFoundation.prototype.isNativeInputValid_ = function () {\n return this.getNativeInput_().validity.valid;\n };\n /**\n * Styles the component based on the validity state.\n */\n MDCTextFieldFoundation.prototype.styleValidity_ = function (isValid) {\n var INVALID = MDCTextFieldFoundation.cssClasses.INVALID;\n if (isValid) {\n this.adapter_.removeClass(INVALID);\n } else {\n this.adapter_.addClass(INVALID);\n }\n if (this.helperText_) {\n this.helperText_.setValidity(isValid);\n }\n };\n /**\n * Styles the component based on the focused state.\n */\n MDCTextFieldFoundation.prototype.styleFocused_ = function (isFocused) {\n var FOCUSED = MDCTextFieldFoundation.cssClasses.FOCUSED;\n if (isFocused) {\n this.adapter_.addClass(FOCUSED);\n } else {\n this.adapter_.removeClass(FOCUSED);\n }\n };\n /**\n * Styles the component based on the disabled state.\n */\n MDCTextFieldFoundation.prototype.styleDisabled_ = function (isDisabled) {\n var _a = MDCTextFieldFoundation.cssClasses,\n DISABLED = _a.DISABLED,\n INVALID = _a.INVALID;\n if (isDisabled) {\n this.adapter_.addClass(DISABLED);\n this.adapter_.removeClass(INVALID);\n } else {\n this.adapter_.removeClass(DISABLED);\n }\n if (this.leadingIcon_) {\n this.leadingIcon_.setDisabled(isDisabled);\n }\n if (this.trailingIcon_) {\n this.trailingIcon_.setDisabled(isDisabled);\n }\n };\n /**\n * @return The native text input element from the host environment, or an object with the same shape for unit tests.\n */\n MDCTextFieldFoundation.prototype.getNativeInput_ = function () {\n // this.adapter_ may be undefined in foundation unit tests. This happens when testdouble is creating a mock object\n // and invokes the shouldShake/shouldFloat getters (which in turn call getValue(), which calls this method) before\n // init() has been called from the MDCTextField constructor. To work around that issue, we return a dummy object.\n var nativeInput = this.adapter_ ? this.adapter_.getNativeInput() : null;\n return nativeInput || {\n disabled: false,\n maxLength: -1,\n type: 'input',\n validity: {\n badInput: false,\n valid: true\n },\n value: ''\n };\n };\n return MDCTextFieldFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCTextFieldFoundation = MDCTextFieldFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTextFieldFoundation;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(154));\n__export(__webpack_require__(75));\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(155);\nvar MDCTextFieldHelperTextFoundation = /** @class */function (_super) {\n __extends(MDCTextFieldHelperTextFoundation, _super);\n function MDCTextFieldHelperTextFoundation(adapter) {\n return _super.call(this, __assign({}, MDCTextFieldHelperTextFoundation.defaultAdapter, adapter)) || this;\n }\n Object.defineProperty(MDCTextFieldHelperTextFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldHelperTextFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldHelperTextFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCTextFieldHelperTextAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n hasClass: function hasClass() {\n return false;\n },\n setAttr: function setAttr() {\n return undefined;\n },\n removeAttr: function removeAttr() {\n return undefined;\n },\n setContent: function setContent() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the content of the helper text field.\n */\n MDCTextFieldHelperTextFoundation.prototype.setContent = function (content) {\n this.adapter_.setContent(content);\n };\n /**\n * @param isPersistent Sets the persistency of the helper text.\n */\n MDCTextFieldHelperTextFoundation.prototype.setPersistent = function (isPersistent) {\n if (isPersistent) {\n this.adapter_.addClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT);\n }\n };\n /**\n * @param isValidation True to make the helper text act as an error validation message.\n */\n MDCTextFieldHelperTextFoundation.prototype.setValidation = function (isValidation) {\n if (isValidation) {\n this.adapter_.addClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG);\n }\n };\n /**\n * Makes the helper text visible to the screen reader.\n */\n MDCTextFieldHelperTextFoundation.prototype.showToScreenReader = function () {\n this.adapter_.removeAttr(constants_1.strings.ARIA_HIDDEN);\n };\n /**\n * Sets the validity of the helper text based on the input validity.\n */\n MDCTextFieldHelperTextFoundation.prototype.setValidity = function (inputIsValid) {\n var helperTextIsPersistent = this.adapter_.hasClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT);\n var helperTextIsValidationMsg = this.adapter_.hasClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG);\n var validationMsgNeedsDisplay = helperTextIsValidationMsg && !inputIsValid;\n if (validationMsgNeedsDisplay) {\n this.adapter_.setAttr(constants_1.strings.ROLE, 'alert');\n } else {\n this.adapter_.removeAttr(constants_1.strings.ROLE);\n }\n if (!helperTextIsPersistent && !validationMsgNeedsDisplay) {\n this.hide_();\n }\n };\n /**\n * Hides the help text from screen readers.\n */\n MDCTextFieldHelperTextFoundation.prototype.hide_ = function () {\n this.adapter_.setAttr(constants_1.strings.ARIA_HIDDEN, 'true');\n };\n return MDCTextFieldHelperTextFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCTextFieldHelperTextFoundation = MDCTextFieldHelperTextFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTextFieldHelperTextFoundation;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(156));\n__export(__webpack_require__(77));\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(157);\nvar INTERACTION_EVENTS = ['click', 'keydown'];\nvar MDCTextFieldIconFoundation = /** @class */function (_super) {\n __extends(MDCTextFieldIconFoundation, _super);\n function MDCTextFieldIconFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCTextFieldIconFoundation.defaultAdapter, adapter)) || this;\n _this.savedTabIndex_ = null;\n _this.interactionHandler_ = function (evt) {\n return _this.handleInteraction(evt);\n };\n return _this;\n }\n Object.defineProperty(MDCTextFieldIconFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldIconFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCTextFieldIconAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n getAttr: function getAttr() {\n return null;\n },\n setAttr: function setAttr() {\n return undefined;\n },\n removeAttr: function removeAttr() {\n return undefined;\n },\n setContent: function setContent() {\n return undefined;\n },\n registerInteractionHandler: function registerInteractionHandler() {\n return undefined;\n },\n deregisterInteractionHandler: function deregisterInteractionHandler() {\n return undefined;\n },\n notifyIconAction: function notifyIconAction() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCTextFieldIconFoundation.prototype.init = function () {\n var _this = this;\n this.savedTabIndex_ = this.adapter_.getAttr('tabindex');\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.adapter_.registerInteractionHandler(evtType, _this.interactionHandler_);\n });\n };\n MDCTextFieldIconFoundation.prototype.destroy = function () {\n var _this = this;\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.adapter_.deregisterInteractionHandler(evtType, _this.interactionHandler_);\n });\n };\n MDCTextFieldIconFoundation.prototype.setDisabled = function (disabled) {\n if (!this.savedTabIndex_) {\n return;\n }\n if (disabled) {\n this.adapter_.setAttr('tabindex', '-1');\n this.adapter_.removeAttr('role');\n } else {\n this.adapter_.setAttr('tabindex', this.savedTabIndex_);\n this.adapter_.setAttr('role', constants_1.strings.ICON_ROLE);\n }\n };\n MDCTextFieldIconFoundation.prototype.setAriaLabel = function (label) {\n this.adapter_.setAttr('aria-label', label);\n };\n MDCTextFieldIconFoundation.prototype.setContent = function (content) {\n this.adapter_.setContent(content);\n };\n MDCTextFieldIconFoundation.prototype.handleInteraction = function (evt) {\n var isEnterKey = evt.key === 'Enter' || evt.keyCode === 13;\n if (evt.type === 'click' || isEnterKey) {\n this.adapter_.notifyIconAction();\n }\n };\n return MDCTextFieldIconFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCTextFieldIconFoundation = MDCTextFieldIconFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTextFieldIconFoundation;\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(160);\nvar MDCToolbarFoundation = /** @class */function (_super) {\n __extends(MDCToolbarFoundation, _super);\n function MDCToolbarFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCToolbarFoundation.defaultAdapter, adapter)) || this;\n _this.checkRowHeightFrame_ = 0;\n _this.scrollFrame_ = 0;\n _this.executedLastChange_ = false;\n _this.isFixed_ = false;\n _this.isFixedLastRow_ = false;\n _this.hasFlexibleFirstRow_ = false;\n _this.useFlexDefaultBehavior_ = false;\n _this.calculations_ = {\n flexibleExpansionHeight: 0,\n flexibleExpansionRatio: 0,\n maxTranslateYDistance: 0,\n maxTranslateYRatio: 0,\n scrollThreshold: 0,\n scrollThresholdRatio: 0,\n toolbarHeight: 0,\n toolbarRatio: 0,\n toolbarRowHeight: 0\n };\n return _this;\n }\n Object.defineProperty(MDCToolbarFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCToolbarFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCToolbarFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCToolbarFoundation, \"defaultAdapter\", {\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n hasClass: function hasClass() {\n return false;\n },\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n registerScrollHandler: function registerScrollHandler() {\n return undefined;\n },\n deregisterScrollHandler: function deregisterScrollHandler() {\n return undefined;\n },\n registerResizeHandler: function registerResizeHandler() {\n return undefined;\n },\n deregisterResizeHandler: function deregisterResizeHandler() {\n return undefined;\n },\n getViewportWidth: function getViewportWidth() {\n return 0;\n },\n getViewportScrollY: function getViewportScrollY() {\n return 0;\n },\n getOffsetHeight: function getOffsetHeight() {\n return 0;\n },\n getFirstRowElementOffsetHeight: function getFirstRowElementOffsetHeight() {\n return 0;\n },\n notifyChange: function notifyChange() {\n return undefined;\n },\n setStyle: function setStyle() {\n return undefined;\n },\n setStyleForTitleElement: function setStyleForTitleElement() {\n return undefined;\n },\n setStyleForFlexibleRowElement: function setStyleForFlexibleRowElement() {\n return undefined;\n },\n setStyleForFixedAdjustElement: function setStyleForFixedAdjustElement() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCToolbarFoundation.prototype.init = function () {\n var _this = this;\n this.isFixed_ = this.adapter_.hasClass(constants_1.cssClasses.FIXED);\n this.isFixedLastRow_ = this.adapter_.hasClass(constants_1.cssClasses.FIXED_LASTROW) && this.isFixed_;\n this.hasFlexibleFirstRow_ = this.adapter_.hasClass(constants_1.cssClasses.TOOLBAR_ROW_FLEXIBLE);\n if (this.hasFlexibleFirstRow_) {\n this.useFlexDefaultBehavior_ = this.adapter_.hasClass(constants_1.cssClasses.FLEXIBLE_DEFAULT_BEHAVIOR);\n }\n this.resizeHandler_ = function () {\n return _this.checkRowHeight_();\n };\n this.scrollHandler_ = function () {\n return _this.updateToolbarStyles_();\n };\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n this.initKeyRatio_();\n this.setKeyHeights_();\n };\n MDCToolbarFoundation.prototype.destroy = function () {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n };\n MDCToolbarFoundation.prototype.updateAdjustElementStyles = function () {\n if (this.isFixed_) {\n this.adapter_.setStyleForFixedAdjustElement('margin-top', this.calculations_.toolbarHeight + \"px\");\n }\n };\n MDCToolbarFoundation.prototype.getFlexibleExpansionRatio_ = function (scrollTop) {\n // To prevent division by zero when there is no flexibleExpansionHeight\n var delta = 0.0001;\n return Math.max(0, 1 - scrollTop / (this.calculations_.flexibleExpansionHeight + delta));\n };\n MDCToolbarFoundation.prototype.checkRowHeight_ = function () {\n var _this = this;\n cancelAnimationFrame(this.checkRowHeightFrame_);\n this.checkRowHeightFrame_ = requestAnimationFrame(function () {\n return _this.setKeyHeights_();\n });\n };\n MDCToolbarFoundation.prototype.setKeyHeights_ = function () {\n var newToolbarRowHeight = this.getRowHeight_();\n if (newToolbarRowHeight !== this.calculations_.toolbarRowHeight) {\n this.calculations_.toolbarRowHeight = newToolbarRowHeight;\n this.calculations_.toolbarHeight = this.calculations_.toolbarRatio * this.calculations_.toolbarRowHeight;\n this.calculations_.flexibleExpansionHeight = this.calculations_.flexibleExpansionRatio * this.calculations_.toolbarRowHeight;\n this.calculations_.maxTranslateYDistance = this.calculations_.maxTranslateYRatio * this.calculations_.toolbarRowHeight;\n this.calculations_.scrollThreshold = this.calculations_.scrollThresholdRatio * this.calculations_.toolbarRowHeight;\n this.updateAdjustElementStyles();\n this.updateToolbarStyles_();\n }\n };\n MDCToolbarFoundation.prototype.updateToolbarStyles_ = function () {\n var _this = this;\n cancelAnimationFrame(this.scrollFrame_);\n this.scrollFrame_ = requestAnimationFrame(function () {\n var scrollTop = _this.adapter_.getViewportScrollY();\n var hasScrolledOutOfThreshold = _this.scrolledOutOfThreshold_(scrollTop);\n if (hasScrolledOutOfThreshold && _this.executedLastChange_) {\n return;\n }\n var flexibleExpansionRatio = _this.getFlexibleExpansionRatio_(scrollTop);\n _this.updateToolbarFlexibleState_(flexibleExpansionRatio);\n if (_this.isFixedLastRow_) {\n _this.updateToolbarFixedState_(scrollTop);\n }\n if (_this.hasFlexibleFirstRow_) {\n _this.updateFlexibleRowElementStyles_(flexibleExpansionRatio);\n }\n _this.executedLastChange_ = hasScrolledOutOfThreshold;\n _this.adapter_.notifyChange({ flexibleExpansionRatio: flexibleExpansionRatio });\n });\n };\n MDCToolbarFoundation.prototype.scrolledOutOfThreshold_ = function (scrollTop) {\n return scrollTop > this.calculations_.scrollThreshold;\n };\n MDCToolbarFoundation.prototype.initKeyRatio_ = function () {\n var toolbarRowHeight = this.getRowHeight_();\n var firstRowMaxRatio = this.adapter_.getFirstRowElementOffsetHeight() / toolbarRowHeight;\n this.calculations_.toolbarRatio = this.adapter_.getOffsetHeight() / toolbarRowHeight;\n this.calculations_.flexibleExpansionRatio = firstRowMaxRatio - 1;\n this.calculations_.maxTranslateYRatio = this.isFixedLastRow_ ? this.calculations_.toolbarRatio - firstRowMaxRatio : 0;\n this.calculations_.scrollThresholdRatio = (this.isFixedLastRow_ ? this.calculations_.toolbarRatio : firstRowMaxRatio) - 1;\n };\n MDCToolbarFoundation.prototype.getRowHeight_ = function () {\n var breakpoint = constants_1.numbers.TOOLBAR_MOBILE_BREAKPOINT;\n return this.adapter_.getViewportWidth() < breakpoint ? constants_1.numbers.TOOLBAR_ROW_MOBILE_HEIGHT : constants_1.numbers.TOOLBAR_ROW_HEIGHT;\n };\n MDCToolbarFoundation.prototype.updateToolbarFlexibleState_ = function (flexibleExpansionRatio) {\n this.adapter_.removeClass(constants_1.cssClasses.FLEXIBLE_MAX);\n this.adapter_.removeClass(constants_1.cssClasses.FLEXIBLE_MIN);\n if (flexibleExpansionRatio === 1) {\n this.adapter_.addClass(constants_1.cssClasses.FLEXIBLE_MAX);\n } else if (flexibleExpansionRatio === 0) {\n this.adapter_.addClass(constants_1.cssClasses.FLEXIBLE_MIN);\n }\n };\n MDCToolbarFoundation.prototype.updateToolbarFixedState_ = function (scrollTop) {\n var translateDistance = Math.max(0, Math.min(scrollTop - this.calculations_.flexibleExpansionHeight, this.calculations_.maxTranslateYDistance));\n this.adapter_.setStyle('transform', \"translateY(\" + -translateDistance + \"px)\");\n if (translateDistance === this.calculations_.maxTranslateYDistance) {\n this.adapter_.addClass(constants_1.cssClasses.FIXED_AT_LAST_ROW);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.FIXED_AT_LAST_ROW);\n }\n };\n MDCToolbarFoundation.prototype.updateFlexibleRowElementStyles_ = function (flexibleExpansionRatio) {\n if (this.isFixed_) {\n var height = this.calculations_.flexibleExpansionHeight * flexibleExpansionRatio;\n this.adapter_.setStyleForFlexibleRowElement('height', height + this.calculations_.toolbarRowHeight + \"px\");\n }\n if (this.useFlexDefaultBehavior_) {\n this.updateElementStylesDefaultBehavior_(flexibleExpansionRatio);\n }\n };\n MDCToolbarFoundation.prototype.updateElementStylesDefaultBehavior_ = function (flexibleExpansionRatio) {\n var maxTitleSize = constants_1.numbers.MAX_TITLE_SIZE;\n var minTitleSize = constants_1.numbers.MIN_TITLE_SIZE;\n var currentTitleSize = (maxTitleSize - minTitleSize) * flexibleExpansionRatio + minTitleSize;\n this.adapter_.setStyleForTitleElement('font-size', currentTitleSize + \"rem\");\n };\n return MDCToolbarFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCToolbarFoundation = MDCToolbarFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCToolbarFoundation;\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = __webpack_require__(6);\nvar foundation_1 = __webpack_require__(22);\nvar MDCFixedTopAppBarFoundation = /** @class */function (_super) {\n __extends(MDCFixedTopAppBarFoundation, _super);\n /* istanbul ignore next: optional argument is not a branch statement */\n function MDCFixedTopAppBarFoundation(adapter) {\n var _this = _super.call(this, adapter) || this;\n /**\n * State variable for the previous scroll iteration top app bar state\n */\n _this.wasScrolled_ = false;\n _this.scrollHandler_ = function () {\n return _this.fixedScrollHandler_();\n };\n return _this;\n }\n /**\n * Scroll handler for applying/removing the modifier class on the fixed top app bar.\n */\n MDCFixedTopAppBarFoundation.prototype.fixedScrollHandler_ = function () {\n var currentScroll = this.adapter_.getViewportScrollY();\n if (currentScroll <= 0) {\n if (this.wasScrolled_) {\n this.adapter_.removeClass(constants_1.cssClasses.FIXED_SCROLLED_CLASS);\n this.wasScrolled_ = false;\n }\n } else {\n if (!this.wasScrolled_) {\n this.adapter_.addClass(constants_1.cssClasses.FIXED_SCROLLED_CLASS);\n this.wasScrolled_ = true;\n }\n }\n };\n return MDCFixedTopAppBarFoundation;\n}(foundation_1.MDCTopAppBarFoundation);\nexports.MDCFixedTopAppBarFoundation = MDCFixedTopAppBarFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCFixedTopAppBarFoundation;\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = __webpack_require__(6);\nvar foundation_1 = __webpack_require__(23);\nvar MDCShortTopAppBarFoundation = /** @class */function (_super) {\n __extends(MDCShortTopAppBarFoundation, _super);\n /* istanbul ignore next: optional argument is not a branch statement */\n function MDCShortTopAppBarFoundation(adapter) {\n var _this = _super.call(this, adapter) || this;\n _this.isCollapsed_ = false;\n return _this;\n }\n Object.defineProperty(MDCShortTopAppBarFoundation.prototype, \"isCollapsed\", {\n // Public visibility for backward compatibility.\n get: function get() {\n return this.isCollapsed_;\n },\n enumerable: true,\n configurable: true\n });\n MDCShortTopAppBarFoundation.prototype.init = function () {\n var _this = this;\n _super.prototype.init.call(this);\n if (this.adapter_.getTotalActionItems() > 0) {\n this.adapter_.addClass(constants_1.cssClasses.SHORT_HAS_ACTION_ITEM_CLASS);\n }\n if (!this.adapter_.hasClass(constants_1.cssClasses.SHORT_COLLAPSED_CLASS)) {\n this.scrollHandler_ = function () {\n return _this.shortAppBarScrollHandler_();\n };\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n this.shortAppBarScrollHandler_();\n }\n };\n MDCShortTopAppBarFoundation.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n /**\n * Scroll handler for applying/removing the collapsed modifier class on the short top app bar.\n */\n MDCShortTopAppBarFoundation.prototype.shortAppBarScrollHandler_ = function () {\n var currentScroll = this.adapter_.getViewportScrollY();\n if (currentScroll <= 0) {\n if (this.isCollapsed_) {\n this.adapter_.removeClass(constants_1.cssClasses.SHORT_COLLAPSED_CLASS);\n this.isCollapsed_ = false;\n }\n } else {\n if (!this.isCollapsed_) {\n this.adapter_.addClass(constants_1.cssClasses.SHORT_COLLAPSED_CLASS);\n this.isCollapsed_ = true;\n }\n }\n };\n return MDCShortTopAppBarFoundation;\n}(foundation_1.MDCTopAppBarBaseFoundation);\nexports.MDCShortTopAppBarFoundation = MDCShortTopAppBarFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCShortTopAppBarFoundation;\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n};\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar index_1 = __importDefault(__webpack_require__(82));\nexports.autoInit = index_1.default;\nvar base = __importStar(__webpack_require__(83));\nexports.base = base;\nvar checkbox = __importStar(__webpack_require__(84));\nexports.checkbox = checkbox;\nvar chips = __importStar(__webpack_require__(88));\nexports.chips = chips;\nvar dialog = __importStar(__webpack_require__(93));\nexports.dialog = dialog;\nvar dom = __importStar(__webpack_require__(2));\nexports.dom = dom;\nvar drawer = __importStar(__webpack_require__(99));\nexports.drawer = drawer;\nvar floatingLabel = __importStar(__webpack_require__(15));\nexports.floatingLabel = floatingLabel;\nvar formField = __importStar(__webpack_require__(106));\nexports.formField = formField;\nvar gridList = __importStar(__webpack_require__(109));\nexports.gridList = gridList;\nvar iconButton = __importStar(__webpack_require__(112));\nexports.iconButton = iconButton;\nvar lineRipple = __importStar(__webpack_require__(17));\nexports.lineRipple = lineRipple;\nvar linearProgress = __importStar(__webpack_require__(117));\nexports.linearProgress = linearProgress;\nvar list = __importStar(__webpack_require__(41));\nexports.list = list;\nvar menuSurface = __importStar(__webpack_require__(42));\nexports.menuSurface = menuSurface;\nvar menu = __importStar(__webpack_require__(44));\nexports.menu = menu;\nvar notchedOutline = __importStar(__webpack_require__(19));\nexports.notchedOutline = notchedOutline;\nvar radio = __importStar(__webpack_require__(123));\nexports.radio = radio;\nvar ripple = __importStar(__webpack_require__(3));\nexports.ripple = ripple;\nvar select = __importStar(__webpack_require__(126));\nexports.select = select;\nvar slider = __importStar(__webpack_require__(132));\nexports.slider = slider;\nvar snackbar = __importStar(__webpack_require__(134));\nexports.snackbar = snackbar;\nvar switchControl = __importStar(__webpack_require__(136));\nexports.switchControl = switchControl;\nvar tabBar = __importStar(__webpack_require__(139));\nexports.tabBar = tabBar;\nvar tabIndicator = __importStar(__webpack_require__(65));\nexports.tabIndicator = tabIndicator;\nvar tabScroller = __importStar(__webpack_require__(60));\nexports.tabScroller = tabScroller;\nvar tab = __importStar(__webpack_require__(64));\nexports.tab = tab;\nvar textField = __importStar(__webpack_require__(150));\nexports.textField = textField;\nvar toolbar = __importStar(__webpack_require__(158));\nexports.toolbar = toolbar;\nvar topAppBar = __importStar(__webpack_require__(161));\nexports.topAppBar = topAppBar;\n// Register all components\nindex_1.default.register('MDCCheckbox', checkbox.MDCCheckbox);\nindex_1.default.register('MDCChip', chips.MDCChip);\nindex_1.default.register('MDCChipSet', chips.MDCChipSet);\nindex_1.default.register('MDCDialog', dialog.MDCDialog);\nindex_1.default.register('MDCDrawer', drawer.MDCDrawer);\nindex_1.default.register('MDCFloatingLabel', floatingLabel.MDCFloatingLabel);\nindex_1.default.register('MDCFormField', formField.MDCFormField);\nindex_1.default.register('MDCGridList', gridList.MDCGridList);\nindex_1.default.register('MDCIconButtonToggle', iconButton.MDCIconButtonToggle);\nindex_1.default.register('MDCLineRipple', lineRipple.MDCLineRipple);\nindex_1.default.register('MDCLinearProgress', linearProgress.MDCLinearProgress);\nindex_1.default.register('MDCList', list.MDCList);\nindex_1.default.register('MDCMenu', menu.MDCMenu);\nindex_1.default.register('MDCMenuSurface', menuSurface.MDCMenuSurface);\nindex_1.default.register('MDCNotchedOutline', notchedOutline.MDCNotchedOutline);\nindex_1.default.register('MDCRadio', radio.MDCRadio);\nindex_1.default.register('MDCRipple', ripple.MDCRipple);\nindex_1.default.register('MDCSelect', select.MDCSelect);\nindex_1.default.register('MDCSlider', slider.MDCSlider);\nindex_1.default.register('MDCSnackbar', snackbar.MDCSnackbar);\nindex_1.default.register('MDCSwitch', switchControl.MDCSwitch);\nindex_1.default.register('MDCTabBar', tabBar.MDCTabBar);\nindex_1.default.register('MDCTextField', textField.MDCTextField);\nindex_1.default.register('MDCToolbar', toolbar.MDCToolbar);\nindex_1.default.register('MDCTopAppBar', topAppBar.MDCTopAppBar);\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __values = this && this.__values || function (o) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator],\n i = 0;\n if (m) return m.call(o);\n return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar registry = {};\nvar CONSOLE_WARN = console.warn.bind(console); // tslint:disable-line:no-console\nfunction emit(evtType, evtData, shouldBubble) {\n if (shouldBubble === void 0) {\n shouldBubble = false;\n }\n var evt;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent(evtType, {\n bubbles: shouldBubble,\n detail: evtData\n });\n } else {\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(evtType, shouldBubble, false, evtData);\n }\n document.dispatchEvent(evt);\n}\n/* istanbul ignore next: optional argument is not a branch statement */\n/**\n * Auto-initializes all MDC components on a page.\n */\nfunction mdcAutoInit(root, warn) {\n if (root === void 0) {\n root = document;\n }\n if (warn === void 0) {\n warn = CONSOLE_WARN;\n }\n var e_1, _a;\n var components = [];\n var nodes = [].slice.call(root.querySelectorAll('[data-mdc-auto-init]'));\n try {\n for (var nodes_1 = __values(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {\n var node = nodes_1_1.value;\n var ctorName = node.getAttribute('data-mdc-auto-init');\n if (!ctorName) {\n throw new Error('(mdc-auto-init) Constructor name must be given.');\n }\n var Constructor = registry[ctorName]; // tslint:disable-line:variable-name\n if (typeof Constructor !== 'function') {\n throw new Error(\"(mdc-auto-init) Could not find constructor in registry for \" + ctorName);\n }\n if (Object.getOwnPropertyDescriptor(node, ctorName)) {\n warn(\"(mdc-auto-init) Component already initialized for \" + node + \". Skipping...\");\n continue;\n }\n // TODO: Should we make an eslint rule for an attachTo() static method?\n // See https://github.com/Microsoft/TypeScript/issues/14600 for discussion of static interface support in TS\n var component = Constructor.attachTo(node);\n Object.defineProperty(node, ctorName, {\n configurable: true,\n enumerable: false,\n value: component,\n writable: false\n });\n components.push(component);\n }\n } catch (e_1_1) {\n e_1 = { error: e_1_1 };\n } finally {\n try {\n if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n emit('MDCAutoInit:End', {});\n return components;\n}\nexports.mdcAutoInit = mdcAutoInit;\n// Constructor is PascalCased because it is a direct reference to a class, rather than an instance of a class.\n// tslint:disable-next-line:variable-name\nmdcAutoInit.register = function (componentName, Constructor, warn) {\n if (warn === void 0) {\n warn = CONSOLE_WARN;\n }\n if (typeof Constructor !== 'function') {\n throw new Error(\"(mdc-auto-init) Invalid Constructor value: \" + Constructor + \". Expected function.\");\n }\n var registryValue = registry[componentName];\n if (registryValue) {\n warn(\"(mdc-auto-init) Overriding registration for \" + componentName + \" with \" + Constructor + \". Was: \" + registryValue);\n }\n registry[componentName] = Constructor;\n};\nmdcAutoInit.deregister = function (componentName) {\n delete registry[componentName];\n};\nmdcAutoInit.deregisterAll = function () {\n var keys = Object.keys(registry);\n keys.forEach(this.deregister, this);\n};\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = mdcAutoInit;\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(1));\n__export(__webpack_require__(0));\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(85));\n__export(__webpack_require__(24));\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(10);\nvar component_1 = __webpack_require__(1);\nvar index_1 = __webpack_require__(2);\nvar index_2 = __webpack_require__(3);\nvar foundation_1 = __webpack_require__(24);\nvar CB_PROTO_PROPS = ['checked', 'indeterminate'];\nvar MDCCheckbox = /** @class */function (_super) {\n __extends(MDCCheckbox, _super);\n function MDCCheckbox() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ripple_ = _this.createRipple_();\n return _this;\n }\n MDCCheckbox.attachTo = function (root) {\n return new MDCCheckbox(root);\n };\n Object.defineProperty(MDCCheckbox.prototype, \"ripple\", {\n get: function get() {\n return this.ripple_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCCheckbox.prototype, \"checked\", {\n get: function get() {\n return this.nativeControl_.checked;\n },\n set: function set(checked) {\n this.nativeControl_.checked = checked;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCCheckbox.prototype, \"indeterminate\", {\n get: function get() {\n return this.nativeControl_.indeterminate;\n },\n set: function set(indeterminate) {\n this.nativeControl_.indeterminate = indeterminate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCCheckbox.prototype, \"disabled\", {\n get: function get() {\n return this.nativeControl_.disabled;\n },\n set: function set(disabled) {\n this.foundation_.setDisabled(disabled);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCCheckbox.prototype, \"value\", {\n get: function get() {\n return this.nativeControl_.value;\n },\n set: function set(value) {\n this.nativeControl_.value = value;\n },\n enumerable: true,\n configurable: true\n });\n MDCCheckbox.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.handleChange_ = function () {\n return _this.foundation_.handleChange();\n };\n this.handleAnimationEnd_ = function () {\n return _this.foundation_.handleAnimationEnd();\n };\n this.nativeControl_.addEventListener('change', this.handleChange_);\n this.listen(util_1.getCorrectEventName(window, 'animationend'), this.handleAnimationEnd_);\n this.installPropertyChangeHooks_();\n };\n MDCCheckbox.prototype.destroy = function () {\n this.ripple_.destroy();\n this.nativeControl_.removeEventListener('change', this.handleChange_);\n this.unlisten(util_1.getCorrectEventName(window, 'animationend'), this.handleAnimationEnd_);\n this.uninstallPropertyChangeHooks_();\n _super.prototype.destroy.call(this);\n };\n MDCCheckbox.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n forceLayout: function forceLayout() {\n return _this.root_.offsetWidth;\n },\n hasNativeControl: function hasNativeControl() {\n return !!_this.nativeControl_;\n },\n isAttachedToDOM: function isAttachedToDOM() {\n return Boolean(_this.root_.parentNode);\n },\n isChecked: function isChecked() {\n return _this.checked;\n },\n isIndeterminate: function isIndeterminate() {\n return _this.indeterminate;\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n removeNativeControlAttr: function removeNativeControlAttr(attr) {\n return _this.nativeControl_.removeAttribute(attr);\n },\n setNativeControlAttr: function setNativeControlAttr(attr, value) {\n return _this.nativeControl_.setAttribute(attr, value);\n },\n setNativeControlDisabled: function setNativeControlDisabled(disabled) {\n return _this.nativeControl_.disabled = disabled;\n }\n };\n return new foundation_1.MDCCheckboxFoundation(adapter);\n };\n MDCCheckbox.prototype.createRipple_ = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = __assign({}, index_2.MDCRipple.createAdapter(this), { deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return _this.nativeControl_.removeEventListener(evtType, handler);\n }, isSurfaceActive: function isSurfaceActive() {\n return index_1.ponyfill.matches(_this.nativeControl_, ':active');\n }, isUnbounded: function isUnbounded() {\n return true;\n }, registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return _this.nativeControl_.addEventListener(evtType, handler);\n } });\n return new index_2.MDCRipple(this.root_, new index_2.MDCRippleFoundation(adapter));\n };\n MDCCheckbox.prototype.installPropertyChangeHooks_ = function () {\n var _this = this;\n var nativeCb = this.nativeControl_;\n var cbProto = Object.getPrototypeOf(nativeCb);\n CB_PROTO_PROPS.forEach(function (controlState) {\n var desc = Object.getOwnPropertyDescriptor(cbProto, controlState);\n // We have to check for this descriptor, since some browsers (Safari) don't support its return.\n // See: https://bugs.webkit.org/show_bug.cgi?id=49739\n if (!validDescriptor(desc)) {\n return;\n }\n // Type cast is needed for compatibility with Closure Compiler.\n var nativeGetter = desc.get;\n var nativeCbDesc = {\n configurable: desc.configurable,\n enumerable: desc.enumerable,\n get: nativeGetter,\n set: function set(state) {\n desc.set.call(nativeCb, state);\n _this.foundation_.handleChange();\n }\n };\n Object.defineProperty(nativeCb, controlState, nativeCbDesc);\n });\n };\n MDCCheckbox.prototype.uninstallPropertyChangeHooks_ = function () {\n var nativeCb = this.nativeControl_;\n var cbProto = Object.getPrototypeOf(nativeCb);\n CB_PROTO_PROPS.forEach(function (controlState) {\n var desc = Object.getOwnPropertyDescriptor(cbProto, controlState);\n if (!validDescriptor(desc)) {\n return;\n }\n Object.defineProperty(nativeCb, controlState, desc);\n });\n };\n Object.defineProperty(MDCCheckbox.prototype, \"nativeControl_\", {\n get: function get() {\n var NATIVE_CONTROL_SELECTOR = foundation_1.MDCCheckboxFoundation.strings.NATIVE_CONTROL_SELECTOR;\n var el = this.root_.querySelector(NATIVE_CONTROL_SELECTOR);\n if (!el) {\n throw new Error(\"Checkbox component requires a \" + NATIVE_CONTROL_SELECTOR + \" element\");\n }\n return el;\n },\n enumerable: true,\n configurable: true\n });\n return MDCCheckbox;\n}(component_1.MDCComponent);\nexports.MDCCheckbox = MDCCheckbox;\nfunction validDescriptor(inputPropDesc) {\n return !!inputPropDesc && typeof inputPropDesc.set === 'function';\n}\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cssClasses = {\n // Ripple is a special case where the \"root\" component is really a \"mixin\" of sorts,\n // given that it's an 'upgrade' to an existing component. That being said it is the root\n // CSS class that all other CSS classes derive from.\n BG_FOCUSED: 'mdc-ripple-upgraded--background-focused',\n FG_ACTIVATION: 'mdc-ripple-upgraded--foreground-activation',\n FG_DEACTIVATION: 'mdc-ripple-upgraded--foreground-deactivation',\n ROOT: 'mdc-ripple-upgraded',\n UNBOUNDED: 'mdc-ripple-upgraded--unbounded'\n};\nexports.strings = {\n VAR_FG_SCALE: '--mdc-ripple-fg-scale',\n VAR_FG_SIZE: '--mdc-ripple-fg-size',\n VAR_FG_TRANSLATE_END: '--mdc-ripple-fg-translate-end',\n VAR_FG_TRANSLATE_START: '--mdc-ripple-fg-translate-start',\n VAR_LEFT: '--mdc-ripple-left',\n VAR_TOP: '--mdc-ripple-top'\n};\nexports.numbers = {\n DEACTIVATION_TIMEOUT_MS: 225,\n FG_DEACTIVATION_MS: 150,\n INITIAL_ORIGIN_SCALE: 0.6,\n PADDING: 10,\n TAP_DELAY_MS: 300\n};\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cssClasses = {\n ANIM_CHECKED_INDETERMINATE: 'mdc-checkbox--anim-checked-indeterminate',\n ANIM_CHECKED_UNCHECKED: 'mdc-checkbox--anim-checked-unchecked',\n ANIM_INDETERMINATE_CHECKED: 'mdc-checkbox--anim-indeterminate-checked',\n ANIM_INDETERMINATE_UNCHECKED: 'mdc-checkbox--anim-indeterminate-unchecked',\n ANIM_UNCHECKED_CHECKED: 'mdc-checkbox--anim-unchecked-checked',\n ANIM_UNCHECKED_INDETERMINATE: 'mdc-checkbox--anim-unchecked-indeterminate',\n CHECKED: 'mdc-checkbox--checked',\n DISABLED: 'mdc-checkbox--disabled',\n INDETERMINATE: 'mdc-checkbox--indeterminate',\n UPGRADED: 'mdc-checkbox--upgraded'\n};\nexports.strings = {\n ARIA_CHECKED_ATTR: 'aria-checked',\n ARIA_CHECKED_INDETERMINATE_VALUE: 'mixed',\n NATIVE_CONTROL_SELECTOR: '.mdc-checkbox__native-control',\n TRANSITION_STATE_CHECKED: 'checked',\n TRANSITION_STATE_INDETERMINATE: 'indeterminate',\n TRANSITION_STATE_INIT: 'init',\n TRANSITION_STATE_UNCHECKED: 'unchecked'\n};\nexports.numbers = {\n ANIM_END_LATCH_MS: 250\n};\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(25));\n__export(__webpack_require__(90));\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar index_1 = __webpack_require__(3);\nvar constants_1 = __webpack_require__(26);\nvar foundation_1 = __webpack_require__(27);\nvar INTERACTION_EVENTS = ['click', 'keydown'];\nvar MDCChip = /** @class */function (_super) {\n __extends(MDCChip, _super);\n function MDCChip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(MDCChip.prototype, \"selected\", {\n /**\n * @return Whether the chip is selected.\n */\n get: function get() {\n return this.foundation_.isSelected();\n },\n /**\n * Sets selected state on the chip.\n */\n set: function set(selected) {\n this.foundation_.setSelected(selected);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChip.prototype, \"shouldRemoveOnTrailingIconClick\", {\n /**\n * @return Whether a trailing icon click should trigger exit/removal of the chip.\n */\n get: function get() {\n return this.foundation_.getShouldRemoveOnTrailingIconClick();\n },\n /**\n * Sets whether a trailing icon click should trigger exit/removal of the chip.\n */\n set: function set(shouldRemove) {\n this.foundation_.setShouldRemoveOnTrailingIconClick(shouldRemove);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChip.prototype, \"ripple\", {\n get: function get() {\n return this.ripple_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChip.prototype, \"id\", {\n get: function get() {\n return this.root_.id;\n },\n enumerable: true,\n configurable: true\n });\n MDCChip.attachTo = function (root) {\n return new MDCChip(root);\n };\n MDCChip.prototype.initialize = function (rippleFactory) {\n var _this = this;\n if (rippleFactory === void 0) {\n rippleFactory = function rippleFactory(el, foundation) {\n return new index_1.MDCRipple(el, foundation);\n };\n }\n this.leadingIcon_ = this.root_.querySelector(constants_1.strings.LEADING_ICON_SELECTOR);\n this.trailingIcon_ = this.root_.querySelector(constants_1.strings.TRAILING_ICON_SELECTOR);\n this.checkmark_ = this.root_.querySelector(constants_1.strings.CHECKMARK_SELECTOR);\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var rippleAdapter = __assign({}, index_1.MDCRipple.createAdapter(this), { computeBoundingRect: function computeBoundingRect() {\n return _this.foundation_.getDimensions();\n } });\n this.ripple_ = rippleFactory(this.root_, new index_1.MDCRippleFoundation(rippleAdapter));\n };\n MDCChip.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.handleInteraction_ = function (evt) {\n return _this.foundation_.handleInteraction(evt);\n };\n this.handleTransitionEnd_ = function (evt) {\n return _this.foundation_.handleTransitionEnd(evt);\n };\n this.handleTrailingIconInteraction_ = function (evt) {\n return _this.foundation_.handleTrailingIconInteraction(evt);\n };\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.listen(evtType, _this.handleInteraction_);\n });\n this.listen('transitionend', this.handleTransitionEnd_);\n if (this.trailingIcon_) {\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.trailingIcon_.addEventListener(evtType, _this.handleTrailingIconInteraction_);\n });\n }\n };\n MDCChip.prototype.destroy = function () {\n var _this = this;\n this.ripple_.destroy();\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.unlisten(evtType, _this.handleInteraction_);\n });\n this.unlisten('transitionend', this.handleTransitionEnd_);\n if (this.trailingIcon_) {\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.trailingIcon_.removeEventListener(evtType, _this.handleTrailingIconInteraction_);\n });\n }\n _super.prototype.destroy.call(this);\n };\n /**\n * Begins the exit animation which leads to removal of the chip.\n */\n MDCChip.prototype.beginExit = function () {\n this.foundation_.beginExit();\n };\n MDCChip.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n addClassToLeadingIcon: function addClassToLeadingIcon(className) {\n if (_this.leadingIcon_) {\n _this.leadingIcon_.classList.add(className);\n }\n },\n eventTargetHasClass: function eventTargetHasClass(target, className) {\n return target ? target.classList.contains(className) : false;\n },\n getCheckmarkBoundingClientRect: function getCheckmarkBoundingClientRect() {\n return _this.checkmark_ ? _this.checkmark_.getBoundingClientRect() : null;\n },\n getComputedStyleValue: function getComputedStyleValue(propertyName) {\n return window.getComputedStyle(_this.root_).getPropertyValue(propertyName);\n },\n getRootBoundingClientRect: function getRootBoundingClientRect() {\n return _this.root_.getBoundingClientRect();\n },\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n hasLeadingIcon: function hasLeadingIcon() {\n return !!_this.leadingIcon_;\n },\n notifyInteraction: function notifyInteraction() {\n return _this.emit(constants_1.strings.INTERACTION_EVENT, { chipId: _this.id }, true /* shouldBubble */);\n },\n notifyRemoval: function notifyRemoval() {\n return _this.emit(constants_1.strings.REMOVAL_EVENT, { chipId: _this.id, root: _this.root_ }, true /* shouldBubble */);\n },\n notifySelection: function notifySelection(selected) {\n return _this.emit(constants_1.strings.SELECTION_EVENT, { chipId: _this.id, selected: selected }, true /* shouldBubble */);\n },\n notifyTrailingIconInteraction: function notifyTrailingIconInteraction() {\n return _this.emit(constants_1.strings.TRAILING_ICON_INTERACTION_EVENT, { chipId: _this.id }, true /* shouldBubble */);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n removeClassFromLeadingIcon: function removeClassFromLeadingIcon(className) {\n if (_this.leadingIcon_) {\n _this.leadingIcon_.classList.remove(className);\n }\n },\n setStyleProperty: function setStyleProperty(propertyName, value) {\n return _this.root_.style.setProperty(propertyName, value);\n }\n };\n return new foundation_1.MDCChipFoundation(adapter);\n };\n return MDCChip;\n}(component_1.MDCComponent);\nexports.MDCChip = MDCChip;\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(91));\n__export(__webpack_require__(28));\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar index_1 = __webpack_require__(25);\nvar foundation_1 = __webpack_require__(28);\nvar _a = index_1.MDCChipFoundation.strings,\n INTERACTION_EVENT = _a.INTERACTION_EVENT,\n SELECTION_EVENT = _a.SELECTION_EVENT,\n REMOVAL_EVENT = _a.REMOVAL_EVENT;\nvar CHIP_SELECTOR = foundation_1.MDCChipSetFoundation.strings.CHIP_SELECTOR;\nvar idCounter = 0;\nvar MDCChipSet = /** @class */function (_super) {\n __extends(MDCChipSet, _super);\n function MDCChipSet() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCChipSet.attachTo = function (root) {\n return new MDCChipSet(root);\n };\n Object.defineProperty(MDCChipSet.prototype, \"chips\", {\n get: function get() {\n return this.chips_.slice();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChipSet.prototype, \"selectedChipIds\", {\n /**\n * @return An array of the IDs of all selected chips.\n */\n get: function get() {\n return this.foundation_.getSelectedChipIds();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param chipFactory A function which creates a new MDCChip.\n */\n MDCChipSet.prototype.initialize = function (chipFactory) {\n if (chipFactory === void 0) {\n chipFactory = function chipFactory(el) {\n return new index_1.MDCChip(el);\n };\n }\n this.chipFactory_ = chipFactory;\n this.chips_ = this.instantiateChips_(this.chipFactory_);\n };\n MDCChipSet.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.chips_.forEach(function (chip) {\n if (chip.id && chip.selected) {\n _this.foundation_.select(chip.id);\n }\n });\n this.handleChipInteraction_ = function (evt) {\n return _this.foundation_.handleChipInteraction(evt.detail.chipId);\n };\n this.handleChipSelection_ = function (evt) {\n return _this.foundation_.handleChipSelection(evt.detail.chipId, evt.detail.selected);\n };\n this.handleChipRemoval_ = function (evt) {\n return _this.foundation_.handleChipRemoval(evt.detail.chipId);\n };\n this.listen(INTERACTION_EVENT, this.handleChipInteraction_);\n this.listen(SELECTION_EVENT, this.handleChipSelection_);\n this.listen(REMOVAL_EVENT, this.handleChipRemoval_);\n };\n MDCChipSet.prototype.destroy = function () {\n this.chips_.forEach(function (chip) {\n chip.destroy();\n });\n this.unlisten(INTERACTION_EVENT, this.handleChipInteraction_);\n this.unlisten(SELECTION_EVENT, this.handleChipSelection_);\n this.unlisten(REMOVAL_EVENT, this.handleChipRemoval_);\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds a new chip object to the chip set from the given chip element.\n */\n MDCChipSet.prototype.addChip = function (chipEl) {\n chipEl.id = chipEl.id || \"mdc-chip-\" + ++idCounter;\n this.chips_.push(this.chipFactory_(chipEl));\n };\n MDCChipSet.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n removeChip: function removeChip(chipId) {\n var index = _this.findChipIndex_(chipId);\n if (index >= 0) {\n _this.chips_[index].destroy();\n _this.chips_.splice(index, 1);\n }\n },\n setSelected: function setSelected(chipId, selected) {\n var index = _this.findChipIndex_(chipId);\n if (index >= 0) {\n _this.chips_[index].selected = selected;\n }\n }\n };\n return new foundation_1.MDCChipSetFoundation(adapter);\n };\n /**\n * Instantiates chip components on all of the chip set's child chip elements.\n */\n MDCChipSet.prototype.instantiateChips_ = function (chipFactory) {\n var chipElements = [].slice.call(this.root_.querySelectorAll(CHIP_SELECTOR));\n return chipElements.map(function (el) {\n el.id = el.id || \"mdc-chip-\" + ++idCounter;\n return chipFactory(el);\n });\n };\n /**\n * Returns the index of the chip with the given id, or -1 if the chip does not exist.\n */\n MDCChipSet.prototype.findChipIndex_ = function (chipId) {\n for (var i = 0; i < this.chips_.length; i++) {\n if (this.chips_[i].id === chipId) {\n return i;\n }\n }\n return -1;\n };\n return MDCChipSet;\n}(component_1.MDCComponent);\nexports.MDCChipSet = MDCChipSet;\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.strings = {\n CHIP_SELECTOR: '.mdc-chip'\n};\nexports.cssClasses = {\n CHOICE: 'mdc-chip-set--choice',\n FILTER: 'mdc-chip-set--filter'\n};\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util = __importStar(__webpack_require__(29));\nexports.util = util;\n__export(__webpack_require__(97));\n__export(__webpack_require__(30));\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar tabbable = __webpack_require__(95);\nvar xtend = __webpack_require__(96);\n\nvar activeFocusTraps = (function() {\n var trapQueue = [];\n return {\n activateTrap: function(trap) {\n if (trapQueue.length > 0) {\n var activeTrap = trapQueue[trapQueue.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex === -1) {\n trapQueue.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapQueue.splice(trapIndex, 1);\n trapQueue.push(trap);\n }\n },\n\n deactivateTrap: function(trap) {\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex !== -1) {\n trapQueue.splice(trapIndex, 1);\n }\n\n if (trapQueue.length > 0) {\n trapQueue[trapQueue.length - 1].unpause();\n }\n }\n };\n})();\n\nfunction focusTrap(element, userOptions) {\n var doc = document;\n var container =\n typeof element === 'string' ? doc.querySelector(element) : element;\n\n var config = xtend(\n {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true\n },\n userOptions\n );\n\n var state = {\n firstTabbableNode: null,\n lastTabbableNode: null,\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false\n };\n\n var trap = {\n activate: activate,\n deactivate: deactivate,\n pause: pause,\n unpause: unpause\n };\n\n return trap;\n\n function activate(activateOptions) {\n if (state.active) return;\n\n updateTabbableNodes();\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n var onActivate =\n activateOptions && activateOptions.onActivate\n ? activateOptions.onActivate\n : config.onActivate;\n if (onActivate) {\n onActivate();\n }\n\n addListeners();\n return trap;\n }\n\n function deactivate(deactivateOptions) {\n if (!state.active) return;\n\n removeListeners();\n state.active = false;\n state.paused = false;\n\n activeFocusTraps.deactivateTrap(trap);\n\n var onDeactivate =\n deactivateOptions && deactivateOptions.onDeactivate !== undefined\n ? deactivateOptions.onDeactivate\n : config.onDeactivate;\n if (onDeactivate) {\n onDeactivate();\n }\n\n var returnFocus =\n deactivateOptions && deactivateOptions.returnFocus !== undefined\n ? deactivateOptions.returnFocus\n : config.returnFocusOnDeactivate;\n if (returnFocus) {\n delay(function() {\n tryFocus(state.nodeFocusedBeforeActivation);\n });\n }\n\n return trap;\n }\n\n function pause() {\n if (state.paused || !state.active) return;\n state.paused = true;\n removeListeners();\n }\n\n function unpause() {\n if (!state.paused || !state.active) return;\n state.paused = false;\n addListeners();\n }\n\n function addListeners() {\n if (!state.active) return;\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trap);\n\n updateTabbableNodes();\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n delay(function() {\n tryFocus(getInitialFocusNode());\n });\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, true);\n doc.addEventListener('touchstart', checkPointerDown, true);\n doc.addEventListener('click', checkClick, true);\n doc.addEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function removeListeners() {\n if (!state.active) return;\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n var node = optionValue;\n if (!optionValue) {\n return null;\n }\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue);\n if (!node) {\n throw new Error('`' + optionName + '` refers to no known node');\n }\n }\n if (typeof optionValue === 'function') {\n node = optionValue();\n if (!node) {\n throw new Error('`' + optionName + '` did not return a node');\n }\n }\n return node;\n }\n\n function getInitialFocusNode() {\n var node;\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (container.contains(doc.activeElement)) {\n node = doc.activeElement;\n } else {\n node = state.firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error(\n \"You can't have a focus-trap without at least one focusable element\"\n );\n }\n\n return node;\n }\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n function checkPointerDown(e) {\n if (container.contains(e.target)) return;\n if (config.clickOutsideDeactivates) {\n deactivate({\n returnFocus: !tabbable.isFocusable(e.target)\n });\n } else {\n e.preventDefault();\n }\n }\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n function checkFocusIn(e) {\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (container.contains(e.target) || e.target instanceof Document) {\n return;\n }\n e.stopImmediatePropagation();\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n\n function checkKey(e) {\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n e.preventDefault();\n deactivate();\n return;\n }\n if (isTabEvent(e)) {\n checkTab(e);\n return;\n }\n }\n\n // Hijack Tab events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n function checkTab(e) {\n updateTabbableNodes();\n if (e.shiftKey && e.target === state.firstTabbableNode) {\n e.preventDefault();\n tryFocus(state.lastTabbableNode);\n return;\n }\n if (!e.shiftKey && e.target === state.lastTabbableNode) {\n e.preventDefault();\n tryFocus(state.firstTabbableNode);\n return;\n }\n }\n\n function checkClick(e) {\n if (config.clickOutsideDeactivates) return;\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n function updateTabbableNodes() {\n var tabbableNodes = tabbable(container);\n state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();\n state.lastTabbableNode =\n tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();\n }\n\n function tryFocus(node) {\n if (node === doc.activeElement) return;\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus();\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n }\n}\n\nfunction isSelectableInput(node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n}\n\nfunction isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction isTabEvent(e) {\n return e.key === 'Tab' || e.keyCode === 9;\n}\n\nfunction delay(fn) {\n return setTimeout(fn, 0);\n}\n\nmodule.exports = focusTrap;\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nvar candidateSelectors = [\n 'input',\n 'select',\n 'textarea',\n 'a[href]',\n 'button',\n '[tabindex]',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n];\nvar candidateSelector = candidateSelectors.join(',');\n\nvar matches = typeof Element === 'undefined'\n ? function () {}\n : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nfunction tabbable(el, options) {\n options = options || {};\n\n var elementDocument = el.ownerDocument || el;\n var regularTabbables = [];\n var orderedTabbables = [];\n\n var untouchabilityChecker = new UntouchabilityChecker(elementDocument);\n var candidates = el.querySelectorAll(candidateSelector);\n\n if (options.includeContainer) {\n if (matches.call(el, candidateSelector)) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var i, candidate, candidateTabindex;\n for (i = 0; i < candidates.length; i++) {\n candidate = candidates[i];\n\n if (!isNodeMatchingSelectorTabbable(candidate, untouchabilityChecker)) continue;\n\n candidateTabindex = getTabindex(candidate);\n if (candidateTabindex === 0) {\n regularTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n node: candidate,\n });\n }\n }\n\n var tabbableNodes = orderedTabbables\n .sort(sortOrderedTabbables)\n .map(function(a) { return a.node })\n .concat(regularTabbables);\n\n return tabbableNodes;\n}\n\ntabbable.isTabbable = isTabbable;\ntabbable.isFocusable = isFocusable;\n\nfunction isNodeMatchingSelectorTabbable(node, untouchabilityChecker) {\n if (\n !isNodeMatchingSelectorFocusable(node, untouchabilityChecker)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);\n}\n\nfunction isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {\n untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);\n if (\n node.disabled\n || isHiddenInput(node)\n || untouchabilityChecker.isUntouchable(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);\n}\n\nfunction getTabindex(node) {\n var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n if (!isNaN(tabindexAttr)) return tabindexAttr;\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if (isContentEditable(node)) return 0;\n return node.tabIndex;\n}\n\nfunction sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n}\n\n// Array.prototype.find not available in IE.\nfunction find(list, predicate) {\n for (var i = 0, length = list.length; i < length; i++) {\n if (predicate(list[i])) return list[i];\n }\n}\n\nfunction isContentEditable(node) {\n return node.contentEditable === 'true';\n}\n\nfunction isInput(node) {\n return node.tagName === 'INPUT';\n}\n\nfunction isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n}\n\nfunction isRadio(node) {\n return isInput(node) && node.type === 'radio';\n}\n\nfunction isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n}\n\nfunction getCheckedRadio(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked) {\n return nodes[i];\n }\n }\n}\n\nfunction isTabbableRadio(node) {\n if (!node.name) return true;\n // This won't account for the edge case where you have radio groups with the same\n // in separate forms on the same page.\n var radioSet = node.ownerDocument.querySelectorAll('input[type=\"radio\"][name=\"' + node.name + '\"]');\n var checked = getCheckedRadio(radioSet);\n return !checked || checked === node;\n}\n\n// An element is \"untouchable\" if *it or one of its ancestors* has\n// `visibility: hidden` or `display: none`.\nfunction UntouchabilityChecker(elementDocument) {\n this.doc = elementDocument;\n // Node cache must be refreshed on every check, in case\n // the content of the element has changed. The cache contains tuples\n // mapping nodes to their boolean result.\n this.cache = [];\n}\n\n// getComputedStyle accurately reflects `visibility: hidden` of ancestors\n// but not `display: none`, so we need to recursively check parents.\nUntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {\n if (node.nodeType !== Node.ELEMENT_NODE) return false;\n\n // Search for a cached result.\n var cached = find(this.cache, function(item) {\n return item === node;\n });\n if (cached) return cached[1];\n\n nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);\n\n var result = false;\n\n if (nodeComputedStyle.display === 'none') {\n result = true;\n } else if (node.parentNode) {\n result = this.hasDisplayNone(node.parentNode);\n }\n\n this.cache.push([node, result]);\n\n return result;\n}\n\nUntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {\n if (node === this.doc.documentElement) return false;\n var computedStyle = this.doc.defaultView.getComputedStyle(node);\n if (this.hasDisplayNone(node, computedStyle)) return true;\n return computedStyle.visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __values = this && this.__values || function (o) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator],\n i = 0;\n if (m) return m.call(o);\n return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n};\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar ponyfill_1 = __webpack_require__(11);\nvar component_2 = __webpack_require__(4);\nvar foundation_1 = __webpack_require__(30);\nvar util = __importStar(__webpack_require__(29));\nvar strings = foundation_1.MDCDialogFoundation.strings;\nvar MDCDialog = /** @class */function (_super) {\n __extends(MDCDialog, _super);\n function MDCDialog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(MDCDialog.prototype, \"isOpen\", {\n get: function get() {\n return this.foundation_.isOpen();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDialog.prototype, \"escapeKeyAction\", {\n get: function get() {\n return this.foundation_.getEscapeKeyAction();\n },\n set: function set(action) {\n this.foundation_.setEscapeKeyAction(action);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDialog.prototype, \"scrimClickAction\", {\n get: function get() {\n return this.foundation_.getScrimClickAction();\n },\n set: function set(action) {\n this.foundation_.setScrimClickAction(action);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDialog.prototype, \"autoStackButtons\", {\n get: function get() {\n return this.foundation_.getAutoStackButtons();\n },\n set: function set(autoStack) {\n this.foundation_.setAutoStackButtons(autoStack);\n },\n enumerable: true,\n configurable: true\n });\n MDCDialog.attachTo = function (root) {\n return new MDCDialog(root);\n };\n MDCDialog.prototype.initialize = function (focusTrapFactory, initialFocusEl) {\n var e_1, _a;\n var container = this.root_.querySelector(strings.CONTAINER_SELECTOR);\n if (!container) {\n throw new Error(\"Dialog component requires a \" + strings.CONTAINER_SELECTOR + \" container element\");\n }\n this.container_ = container;\n this.content_ = this.root_.querySelector(strings.CONTENT_SELECTOR);\n this.buttons_ = [].slice.call(this.root_.querySelectorAll(strings.BUTTON_SELECTOR));\n this.defaultButton_ = this.root_.querySelector(strings.DEFAULT_BUTTON_SELECTOR);\n this.focusTrapFactory_ = focusTrapFactory;\n this.initialFocusEl_ = initialFocusEl;\n this.buttonRipples_ = [];\n try {\n for (var _b = __values(this.buttons_), _c = _b.next(); !_c.done; _c = _b.next()) {\n var buttonEl = _c.value;\n this.buttonRipples_.push(new component_2.MDCRipple(buttonEl));\n }\n } catch (e_1_1) {\n e_1 = { error: e_1_1 };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n };\n MDCDialog.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.focusTrap_ = util.createFocusTrapInstance(this.container_, this.focusTrapFactory_, this.initialFocusEl_);\n this.handleInteraction_ = this.foundation_.handleInteraction.bind(this.foundation_);\n this.handleDocumentKeydown_ = this.foundation_.handleDocumentKeydown.bind(this.foundation_);\n this.handleLayout_ = this.layout.bind(this);\n var LAYOUT_EVENTS = ['resize', 'orientationchange'];\n this.handleOpening_ = function () {\n LAYOUT_EVENTS.forEach(function (evtType) {\n return window.addEventListener(evtType, _this.handleLayout_);\n });\n document.addEventListener('keydown', _this.handleDocumentKeydown_);\n };\n this.handleClosing_ = function () {\n LAYOUT_EVENTS.forEach(function (evtType) {\n return window.removeEventListener(evtType, _this.handleLayout_);\n });\n document.removeEventListener('keydown', _this.handleDocumentKeydown_);\n };\n this.listen('click', this.handleInteraction_);\n this.listen('keydown', this.handleInteraction_);\n this.listen(strings.OPENING_EVENT, this.handleOpening_);\n this.listen(strings.CLOSING_EVENT, this.handleClosing_);\n };\n MDCDialog.prototype.destroy = function () {\n this.unlisten('click', this.handleInteraction_);\n this.unlisten('keydown', this.handleInteraction_);\n this.unlisten(strings.OPENING_EVENT, this.handleOpening_);\n this.unlisten(strings.CLOSING_EVENT, this.handleClosing_);\n this.handleClosing_();\n this.buttonRipples_.forEach(function (ripple) {\n return ripple.destroy();\n });\n _super.prototype.destroy.call(this);\n };\n MDCDialog.prototype.layout = function () {\n this.foundation_.layout();\n };\n MDCDialog.prototype.open = function () {\n this.foundation_.open();\n };\n MDCDialog.prototype.close = function (action) {\n if (action === void 0) {\n action = '';\n }\n this.foundation_.close(action);\n };\n MDCDialog.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addBodyClass: function addBodyClass(className) {\n return document.body.classList.add(className);\n },\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n areButtonsStacked: function areButtonsStacked() {\n return util.areTopsMisaligned(_this.buttons_);\n },\n clickDefaultButton: function clickDefaultButton() {\n return _this.defaultButton_ && _this.defaultButton_.click();\n },\n eventTargetMatches: function eventTargetMatches(target, selector) {\n return target ? ponyfill_1.matches(target, selector) : false;\n },\n getActionFromEvent: function getActionFromEvent(evt) {\n if (!evt.target) {\n return '';\n }\n var element = ponyfill_1.closest(evt.target, \"[\" + strings.ACTION_ATTRIBUTE + \"]\");\n return element && element.getAttribute(strings.ACTION_ATTRIBUTE);\n },\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n isContentScrollable: function isContentScrollable() {\n return util.isScrollable(_this.content_);\n },\n notifyClosed: function notifyClosed(action) {\n return _this.emit(strings.CLOSED_EVENT, action ? { action: action } : {});\n },\n notifyClosing: function notifyClosing(action) {\n return _this.emit(strings.CLOSING_EVENT, action ? { action: action } : {});\n },\n notifyOpened: function notifyOpened() {\n return _this.emit(strings.OPENED_EVENT, {});\n },\n notifyOpening: function notifyOpening() {\n return _this.emit(strings.OPENING_EVENT, {});\n },\n releaseFocus: function releaseFocus() {\n return _this.focusTrap_.deactivate();\n },\n removeBodyClass: function removeBodyClass(className) {\n return document.body.classList.remove(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n reverseButtons: function reverseButtons() {\n _this.buttons_.reverse();\n _this.buttons_.forEach(function (button) {\n button.parentElement.appendChild(button);\n });\n },\n trapFocus: function trapFocus() {\n return _this.focusTrap_.activate();\n }\n };\n return new foundation_1.MDCDialogFoundation(adapter);\n };\n return MDCDialog;\n}(component_1.MDCComponent);\nexports.MDCDialog = MDCDialog;\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cssClasses = {\n CLOSING: 'mdc-dialog--closing',\n OPEN: 'mdc-dialog--open',\n OPENING: 'mdc-dialog--opening',\n SCROLLABLE: 'mdc-dialog--scrollable',\n SCROLL_LOCK: 'mdc-dialog-scroll-lock',\n STACKED: 'mdc-dialog--stacked'\n};\nexports.strings = {\n ACTION_ATTRIBUTE: 'data-mdc-dialog-action',\n BUTTON_SELECTOR: '.mdc-dialog__button',\n CLOSED_EVENT: 'MDCDialog:closed',\n CLOSE_ACTION: 'close',\n CLOSING_EVENT: 'MDCDialog:closing',\n CONTAINER_SELECTOR: '.mdc-dialog__container',\n CONTENT_SELECTOR: '.mdc-dialog__content',\n DEFAULT_BUTTON_SELECTOR: '.mdc-dialog__button--default',\n DESTROY_ACTION: 'destroy',\n OPENED_EVENT: 'MDCDialog:opened',\n OPENING_EVENT: 'MDCDialog:opening',\n SCRIM_SELECTOR: '.mdc-dialog__scrim',\n SUPPRESS_DEFAULT_PRESS_SELECTOR: ['textarea', '.mdc-menu .mdc-list-item'].join(', '),\n SURFACE_SELECTOR: '.mdc-dialog__surface'\n};\nexports.numbers = {\n DIALOG_ANIMATION_CLOSE_TIME_MS: 75,\n DIALOG_ANIMATION_OPEN_TIME_MS: 150\n};\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util = __importStar(__webpack_require__(31));\nexports.util = util;\n__export(__webpack_require__(102));\n__export(__webpack_require__(14));\n__export(__webpack_require__(35));\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nvar candidateSelectors = [\n 'input',\n 'select',\n 'textarea',\n 'a[href]',\n 'button',\n '[tabindex]',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n];\nvar candidateSelector = candidateSelectors.join(',');\n\nvar matches = typeof Element === 'undefined'\n ? function () {}\n : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nfunction tabbable(el, options) {\n options = options || {};\n\n var elementDocument = el.ownerDocument || el;\n var regularTabbables = [];\n var orderedTabbables = [];\n\n var untouchabilityChecker = new UntouchabilityChecker(elementDocument);\n var candidates = el.querySelectorAll(candidateSelector);\n\n if (options.includeContainer) {\n if (matches.call(el, candidateSelector)) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var i, candidate, candidateTabindex;\n for (i = 0; i < candidates.length; i++) {\n candidate = candidates[i];\n\n if (!isNodeMatchingSelectorTabbable(candidate, untouchabilityChecker)) continue;\n\n candidateTabindex = getTabindex(candidate);\n if (candidateTabindex === 0) {\n regularTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n node: candidate,\n });\n }\n }\n\n var tabbableNodes = orderedTabbables\n .sort(sortOrderedTabbables)\n .map(function(a) { return a.node })\n .concat(regularTabbables);\n\n return tabbableNodes;\n}\n\ntabbable.isTabbable = isTabbable;\ntabbable.isFocusable = isFocusable;\n\nfunction isNodeMatchingSelectorTabbable(node, untouchabilityChecker) {\n if (\n !isNodeMatchingSelectorFocusable(node, untouchabilityChecker)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);\n}\n\nfunction isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {\n untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);\n if (\n node.disabled\n || isHiddenInput(node)\n || untouchabilityChecker.isUntouchable(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);\n}\n\nfunction getTabindex(node) {\n var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n if (!isNaN(tabindexAttr)) return tabindexAttr;\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if (isContentEditable(node)) return 0;\n return node.tabIndex;\n}\n\nfunction sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n}\n\n// Array.prototype.find not available in IE.\nfunction find(list, predicate) {\n for (var i = 0, length = list.length; i < length; i++) {\n if (predicate(list[i])) return list[i];\n }\n}\n\nfunction isContentEditable(node) {\n return node.contentEditable === 'true';\n}\n\nfunction isInput(node) {\n return node.tagName === 'INPUT';\n}\n\nfunction isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n}\n\nfunction isRadio(node) {\n return isInput(node) && node.type === 'radio';\n}\n\nfunction isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n}\n\nfunction getCheckedRadio(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked) {\n return nodes[i];\n }\n }\n}\n\nfunction isTabbableRadio(node) {\n if (!node.name) return true;\n // This won't account for the edge case where you have radio groups with the same\n // in separate forms on the same page.\n var radioSet = node.ownerDocument.querySelectorAll('input[type=\"radio\"][name=\"' + node.name + '\"]');\n var checked = getCheckedRadio(radioSet);\n return !checked || checked === node;\n}\n\n// An element is \"untouchable\" if *it or one of its ancestors* has\n// `visibility: hidden` or `display: none`.\nfunction UntouchabilityChecker(elementDocument) {\n this.doc = elementDocument;\n // Node cache must be refreshed on every check, in case\n // the content of the element has changed. The cache contains tuples\n // mapping nodes to their boolean result.\n this.cache = [];\n}\n\n// getComputedStyle accurately reflects `visibility: hidden` of ancestors\n// but not `display: none`, so we need to recursively check parents.\nUntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {\n if (node.nodeType !== Node.ELEMENT_NODE) return false;\n\n // Search for a cached result.\n var cached = find(this.cache, function(item) {\n return item === node;\n });\n if (cached) return cached[1];\n\n nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);\n\n var result = false;\n\n if (nodeComputedStyle.display === 'none') {\n result = true;\n } else if (node.parentNode) {\n result = this.hasDisplayNone(node.parentNode);\n }\n\n this.cache.push([node, result]);\n\n return result;\n}\n\nUntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {\n if (node === this.doc.documentElement) return false;\n var computedStyle = this.doc.defaultView.getComputedStyle(node);\n if (this.hasDisplayNone(node, computedStyle)) return true;\n return computedStyle.visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n};\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar component_2 = __webpack_require__(33);\nvar foundation_1 = __webpack_require__(7);\nvar focus_trap_1 = __importDefault(__webpack_require__(32));\nvar foundation_2 = __webpack_require__(14);\nvar foundation_3 = __webpack_require__(35);\nvar util = __importStar(__webpack_require__(31));\nvar cssClasses = foundation_2.MDCDismissibleDrawerFoundation.cssClasses,\n strings = foundation_2.MDCDismissibleDrawerFoundation.strings;\nvar MDCDrawer = /** @class */function (_super) {\n __extends(MDCDrawer, _super);\n function MDCDrawer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCDrawer.attachTo = function (root) {\n return new MDCDrawer(root);\n };\n Object.defineProperty(MDCDrawer.prototype, \"open\", {\n /**\n * Returns true if drawer is in the open position.\n */\n get: function get() {\n return this.foundation_.isOpen();\n },\n /**\n * Toggles the drawer open and closed.\n */\n set: function set(isOpen) {\n if (isOpen) {\n this.foundation_.open();\n } else {\n this.foundation_.close();\n }\n },\n enumerable: true,\n configurable: true\n });\n MDCDrawer.prototype.initialize = function (focusTrapFactory, listFactory) {\n if (focusTrapFactory === void 0) {\n focusTrapFactory = focus_trap_1.default;\n }\n if (listFactory === void 0) {\n listFactory = function listFactory(el) {\n return new component_2.MDCList(el);\n };\n }\n var listEl = this.root_.querySelector(\".\" + foundation_1.MDCListFoundation.cssClasses.ROOT);\n if (listEl) {\n this.list_ = listFactory(listEl);\n this.list_.wrapFocus = true;\n }\n this.focusTrapFactory_ = focusTrapFactory;\n };\n MDCDrawer.prototype.initialSyncWithDOM = function () {\n var _this = this;\n var MODAL = cssClasses.MODAL;\n var SCRIM_SELECTOR = strings.SCRIM_SELECTOR;\n this.scrim_ = this.root_.parentNode.querySelector(SCRIM_SELECTOR);\n if (this.scrim_ && this.root_.classList.contains(MODAL)) {\n this.handleScrimClick_ = function () {\n return _this.foundation_.handleScrimClick();\n };\n this.scrim_.addEventListener('click', this.handleScrimClick_);\n this.focusTrap_ = util.createFocusTrapInstance(this.root_, this.focusTrapFactory_);\n }\n this.handleKeydown_ = function (evt) {\n return _this.foundation_.handleKeydown(evt);\n };\n this.handleTransitionEnd_ = function (evt) {\n return _this.foundation_.handleTransitionEnd(evt);\n };\n this.listen('keydown', this.handleKeydown_);\n this.listen('transitionend', this.handleTransitionEnd_);\n };\n MDCDrawer.prototype.destroy = function () {\n this.unlisten('keydown', this.handleKeydown_);\n this.unlisten('transitionend', this.handleTransitionEnd_);\n if (this.list_) {\n this.list_.destroy();\n }\n var MODAL = cssClasses.MODAL;\n if (this.scrim_ && this.handleScrimClick_ && this.root_.classList.contains(MODAL)) {\n this.scrim_.removeEventListener('click', this.handleScrimClick_);\n // Ensure drawer is closed to hide scrim and release focus\n this.open = false;\n }\n };\n MDCDrawer.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n elementHasClass: function elementHasClass(element, className) {\n return element.classList.contains(className);\n },\n saveFocus: function saveFocus() {\n return _this.previousFocus_ = document.activeElement;\n },\n restoreFocus: function restoreFocus() {\n var previousFocus = _this.previousFocus_;\n if (previousFocus && previousFocus.focus && _this.root_.contains(document.activeElement)) {\n previousFocus.focus();\n }\n },\n focusActiveNavigationItem: function focusActiveNavigationItem() {\n var activeNavItemEl = _this.root_.querySelector(\".\" + foundation_1.MDCListFoundation.cssClasses.LIST_ITEM_ACTIVATED_CLASS);\n if (activeNavItemEl) {\n activeNavItemEl.focus();\n }\n },\n notifyClose: function notifyClose() {\n return _this.emit(strings.CLOSE_EVENT, {}, true /* shouldBubble */);\n },\n notifyOpen: function notifyOpen() {\n return _this.emit(strings.OPEN_EVENT, {}, true /* shouldBubble */);\n },\n trapFocus: function trapFocus() {\n return _this.focusTrap_.activate();\n },\n releaseFocus: function releaseFocus() {\n return _this.focusTrap_.deactivate();\n }\n };\n // tslint:enable:object-literal-sort-keys\n var DISMISSIBLE = cssClasses.DISMISSIBLE,\n MODAL = cssClasses.MODAL;\n if (this.root_.classList.contains(DISMISSIBLE)) {\n return new foundation_2.MDCDismissibleDrawerFoundation(adapter);\n } else if (this.root_.classList.contains(MODAL)) {\n return new foundation_3.MDCModalDrawerFoundation(adapter);\n } else {\n throw new Error(\"MDCDrawer: Failed to instantiate component. Supported variants are \" + DISMISSIBLE + \" and \" + MODAL + \".\");\n }\n };\n return MDCDrawer;\n}(component_1.MDCComponent);\nexports.MDCDrawer = MDCDrawer;\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n ANIMATE: 'mdc-drawer--animate',\n CLOSING: 'mdc-drawer--closing',\n DISMISSIBLE: 'mdc-drawer--dismissible',\n MODAL: 'mdc-drawer--modal',\n OPEN: 'mdc-drawer--open',\n OPENING: 'mdc-drawer--opening',\n ROOT: 'mdc-drawer'\n};\nexports.cssClasses = cssClasses;\nvar strings = {\n APP_CONTENT_SELECTOR: '.mdc-drawer-app-content',\n CLOSE_EVENT: 'MDCDrawer:closed',\n OPEN_EVENT: 'MDCDrawer:opened',\n SCRIM_SELECTOR: '.mdc-drawer-scrim'\n};\nexports.strings = strings;\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar foundation_1 = __webpack_require__(16);\nvar MDCFloatingLabel = /** @class */function (_super) {\n __extends(MDCFloatingLabel, _super);\n function MDCFloatingLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCFloatingLabel.attachTo = function (root) {\n return new MDCFloatingLabel(root);\n };\n /**\n * Styles the label to produce the label shake for errors.\n * @param shouldShake If true, shakes the label by adding a CSS class; otherwise, stops shaking by removing the class.\n */\n MDCFloatingLabel.prototype.shake = function (shouldShake) {\n this.foundation_.shake(shouldShake);\n };\n /**\n * Styles the label to float/dock.\n * @param shouldFloat If true, floats the label by adding a CSS class; otherwise, docks it by removing the class.\n */\n MDCFloatingLabel.prototype.float = function (shouldFloat) {\n this.foundation_.float(shouldFloat);\n };\n MDCFloatingLabel.prototype.getWidth = function () {\n return this.foundation_.getWidth();\n };\n MDCFloatingLabel.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n getWidth: function getWidth() {\n return _this.root_.scrollWidth;\n },\n registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return _this.listen(evtType, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return _this.unlisten(evtType, handler);\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCFloatingLabelFoundation(adapter);\n };\n return MDCFloatingLabel;\n}(component_1.MDCComponent);\nexports.MDCFloatingLabel = MDCFloatingLabel;\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cssClasses = {\n LABEL_FLOAT_ABOVE: 'mdc-floating-label--float-above',\n LABEL_SHAKE: 'mdc-floating-label--shake',\n ROOT: 'mdc-floating-label'\n};\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(107));\n__export(__webpack_require__(36));\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar foundation_1 = __webpack_require__(36);\nvar MDCFormField = /** @class */function (_super) {\n __extends(MDCFormField, _super);\n function MDCFormField() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCFormField.attachTo = function (root) {\n return new MDCFormField(root);\n };\n Object.defineProperty(MDCFormField.prototype, \"input\", {\n get: function get() {\n return this.input_;\n },\n set: function set(input) {\n this.input_ = input;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCFormField.prototype, \"label_\", {\n get: function get() {\n var LABEL_SELECTOR = foundation_1.MDCFormFieldFoundation.strings.LABEL_SELECTOR;\n return this.root_.querySelector(LABEL_SELECTOR);\n },\n enumerable: true,\n configurable: true\n });\n MDCFormField.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n activateInputRipple: function activateInputRipple() {\n if (_this.input_ && _this.input_.ripple) {\n _this.input_.ripple.activate();\n }\n },\n deactivateInputRipple: function deactivateInputRipple() {\n if (_this.input_ && _this.input_.ripple) {\n _this.input_.ripple.deactivate();\n }\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n if (_this.label_) {\n _this.label_.removeEventListener(evtType, handler);\n }\n },\n registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n if (_this.label_) {\n _this.label_.addEventListener(evtType, handler);\n }\n }\n };\n return new foundation_1.MDCFormFieldFoundation(adapter);\n };\n return MDCFormField;\n}(component_1.MDCComponent);\nexports.MDCFormField = MDCFormField;\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cssClasses = {\n ROOT: 'mdc-form-field'\n};\nexports.strings = {\n LABEL_SELECTOR: '.mdc-form-field > label'\n};\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(110));\n__export(__webpack_require__(37));\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar foundation_1 = __webpack_require__(37);\nvar MDCGridList = /** @class */function (_super) {\n __extends(MDCGridList, _super);\n function MDCGridList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCGridList.attachTo = function (root) {\n return new MDCGridList(root);\n };\n MDCGridList.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n deregisterResizeHandler: function deregisterResizeHandler(handler) {\n return window.removeEventListener('resize', handler);\n },\n getNumberOfTiles: function getNumberOfTiles() {\n return _this.root_.querySelectorAll(foundation_1.MDCGridListFoundation.strings.TILE_SELECTOR).length;\n },\n getOffsetWidth: function getOffsetWidth() {\n return _this.root_.offsetWidth;\n },\n getOffsetWidthForTileAtIndex: function getOffsetWidthForTileAtIndex(index) {\n var tileEl = _this.root_.querySelectorAll(foundation_1.MDCGridListFoundation.strings.TILE_SELECTOR)[index];\n return tileEl.offsetWidth;\n },\n registerResizeHandler: function registerResizeHandler(handler) {\n return window.addEventListener('resize', handler);\n },\n setStyleForTilesElement: function setStyleForTilesElement(property, value) {\n var tilesEl = _this.root_.querySelector(foundation_1.MDCGridListFoundation.strings.TILES_SELECTOR);\n tilesEl.style[property] = value;\n }\n };\n return new foundation_1.MDCGridListFoundation(adapter);\n };\n return MDCGridList;\n}(component_1.MDCComponent);\nexports.MDCGridList = MDCGridList;\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.strings = {\n TILES_SELECTOR: '.mdc-grid-list__tiles',\n TILE_SELECTOR: '.mdc-grid-tile'\n};\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(113));\n__export(__webpack_require__(38));\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar component_2 = __webpack_require__(4);\nvar foundation_1 = __webpack_require__(38);\nvar strings = foundation_1.MDCIconButtonToggleFoundation.strings;\nvar MDCIconButtonToggle = /** @class */function (_super) {\n __extends(MDCIconButtonToggle, _super);\n function MDCIconButtonToggle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ripple_ = _this.createRipple_();\n return _this;\n }\n MDCIconButtonToggle.attachTo = function (root) {\n return new MDCIconButtonToggle(root);\n };\n MDCIconButtonToggle.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.handleClick_ = function () {\n return _this.foundation_.handleClick();\n };\n this.listen('click', this.handleClick_);\n };\n MDCIconButtonToggle.prototype.destroy = function () {\n this.unlisten('click', this.handleClick_);\n this.ripple_.destroy();\n _super.prototype.destroy.call(this);\n };\n MDCIconButtonToggle.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n notifyChange: function notifyChange(evtData) {\n return _this.emit(strings.CHANGE_EVENT, evtData);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n setAttr: function setAttr(attrName, attrValue) {\n return _this.root_.setAttribute(attrName, attrValue);\n }\n };\n return new foundation_1.MDCIconButtonToggleFoundation(adapter);\n };\n Object.defineProperty(MDCIconButtonToggle.prototype, \"ripple\", {\n get: function get() {\n return this.ripple_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCIconButtonToggle.prototype, \"on\", {\n get: function get() {\n return this.foundation_.isOn();\n },\n set: function set(isOn) {\n this.foundation_.toggle(isOn);\n },\n enumerable: true,\n configurable: true\n });\n MDCIconButtonToggle.prototype.createRipple_ = function () {\n var ripple = new component_2.MDCRipple(this.root_);\n ripple.unbounded = true;\n return ripple;\n };\n return MDCIconButtonToggle;\n}(component_1.MDCComponent);\nexports.MDCIconButtonToggle = MDCIconButtonToggle;\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cssClasses = {\n ICON_BUTTON_ON: 'mdc-icon-button--on',\n ROOT: 'mdc-icon-button'\n};\nexports.strings = {\n ARIA_PRESSED: 'aria-pressed',\n CHANGE_EVENT: 'MDCIconButtonToggle:change'\n};\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar foundation_1 = __webpack_require__(39);\nvar MDCLineRipple = /** @class */function (_super) {\n __extends(MDCLineRipple, _super);\n function MDCLineRipple() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCLineRipple.attachTo = function (root) {\n return new MDCLineRipple(root);\n };\n /**\n * Activates the line ripple\n */\n MDCLineRipple.prototype.activate = function () {\n this.foundation_.activate();\n };\n /**\n * Deactivates the line ripple\n */\n MDCLineRipple.prototype.deactivate = function () {\n this.foundation_.deactivate();\n };\n /**\n * Sets the transform origin given a user's click location.\n * The `rippleCenter` is the x-coordinate of the middle of the ripple.\n */\n MDCLineRipple.prototype.setRippleCenter = function (xCoordinate) {\n this.foundation_.setRippleCenter(xCoordinate);\n };\n MDCLineRipple.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n setStyle: function setStyle(propertyName, value) {\n return _this.root_.style.setProperty(propertyName, value);\n },\n registerEventHandler: function registerEventHandler(evtType, handler) {\n return _this.listen(evtType, handler);\n },\n deregisterEventHandler: function deregisterEventHandler(evtType, handler) {\n return _this.unlisten(evtType, handler);\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCLineRippleFoundation(adapter);\n };\n return MDCLineRipple;\n}(component_1.MDCComponent);\nexports.MDCLineRipple = MDCLineRipple;\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n LINE_RIPPLE_ACTIVE: 'mdc-line-ripple--active',\n LINE_RIPPLE_DEACTIVATING: 'mdc-line-ripple--deactivating'\n};\nexports.cssClasses = cssClasses;\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(118));\n__export(__webpack_require__(40));\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar foundation_1 = __webpack_require__(40);\nvar MDCLinearProgress = /** @class */function (_super) {\n __extends(MDCLinearProgress, _super);\n function MDCLinearProgress() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCLinearProgress.attachTo = function (root) {\n return new MDCLinearProgress(root);\n };\n Object.defineProperty(MDCLinearProgress.prototype, \"determinate\", {\n set: function set(value) {\n this.foundation_.setDeterminate(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCLinearProgress.prototype, \"progress\", {\n set: function set(value) {\n this.foundation_.setProgress(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCLinearProgress.prototype, \"buffer\", {\n set: function set(value) {\n this.foundation_.setBuffer(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCLinearProgress.prototype, \"reverse\", {\n set: function set(value) {\n this.foundation_.setReverse(value);\n },\n enumerable: true,\n configurable: true\n });\n MDCLinearProgress.prototype.open = function () {\n this.foundation_.open();\n };\n MDCLinearProgress.prototype.close = function () {\n this.foundation_.close();\n };\n MDCLinearProgress.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n getBuffer: function getBuffer() {\n return _this.root_.querySelector(foundation_1.MDCLinearProgressFoundation.strings.BUFFER_SELECTOR);\n },\n getPrimaryBar: function getPrimaryBar() {\n return _this.root_.querySelector(foundation_1.MDCLinearProgressFoundation.strings.PRIMARY_BAR_SELECTOR);\n },\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n setStyle: function setStyle(el, styleProperty, value) {\n return el.style.setProperty(styleProperty, value);\n }\n };\n return new foundation_1.MDCLinearProgressFoundation(adapter);\n };\n return MDCLinearProgress;\n}(component_1.MDCComponent);\nexports.MDCLinearProgress = MDCLinearProgress;\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cssClasses = {\n CLOSED_CLASS: 'mdc-linear-progress--closed',\n INDETERMINATE_CLASS: 'mdc-linear-progress--indeterminate',\n REVERSED_CLASS: 'mdc-linear-progress--reversed'\n};\nexports.strings = {\n BUFFER_SELECTOR: '.mdc-linear-progress__buffer',\n PRIMARY_BAR_SELECTOR: '.mdc-linear-progress__primary-bar'\n};\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar constants_1 = __webpack_require__(5);\nvar foundation_1 = __webpack_require__(8);\nvar util = __importStar(__webpack_require__(43));\nvar MDCMenuSurface = /** @class */function (_super) {\n __extends(MDCMenuSurface, _super);\n function MDCMenuSurface() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCMenuSurface.attachTo = function (root) {\n return new MDCMenuSurface(root);\n };\n MDCMenuSurface.prototype.initialSyncWithDOM = function () {\n var _this = this;\n var parentEl = this.root_.parentElement;\n this.anchorElement = parentEl && parentEl.classList.contains(constants_1.cssClasses.ANCHOR) ? parentEl : null;\n if (this.root_.classList.contains(constants_1.cssClasses.FIXED)) {\n this.setFixedPosition(true);\n }\n this.handleKeydown_ = function (evt) {\n return _this.foundation_.handleKeydown(evt);\n };\n this.handleBodyClick_ = function (evt) {\n return _this.foundation_.handleBodyClick(evt);\n };\n this.registerBodyClickListener_ = function () {\n return document.body.addEventListener('click', _this.handleBodyClick_);\n };\n this.deregisterBodyClickListener_ = function () {\n return document.body.removeEventListener('click', _this.handleBodyClick_);\n };\n this.listen('keydown', this.handleKeydown_);\n this.listen(constants_1.strings.OPENED_EVENT, this.registerBodyClickListener_);\n this.listen(constants_1.strings.CLOSED_EVENT, this.deregisterBodyClickListener_);\n };\n MDCMenuSurface.prototype.destroy = function () {\n this.unlisten('keydown', this.handleKeydown_);\n this.unlisten(constants_1.strings.OPENED_EVENT, this.registerBodyClickListener_);\n this.unlisten(constants_1.strings.CLOSED_EVENT, this.deregisterBodyClickListener_);\n _super.prototype.destroy.call(this);\n };\n Object.defineProperty(MDCMenuSurface.prototype, \"open\", {\n get: function get() {\n return this.foundation_.isOpen();\n },\n set: function set(value) {\n if (value) {\n var focusableElements = this.root_.querySelectorAll(constants_1.strings.FOCUSABLE_ELEMENTS);\n this.firstFocusableElement_ = focusableElements[0];\n this.lastFocusableElement_ = focusableElements[focusableElements.length - 1];\n this.foundation_.open();\n } else {\n this.foundation_.close();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCMenuSurface.prototype, \"quickOpen\", {\n set: function set(quickOpen) {\n this.foundation_.setQuickOpen(quickOpen);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Removes the menu-surface from it's current location and appends it to the\n * body to overcome any overflow:hidden issues.\n */\n MDCMenuSurface.prototype.hoistMenuToBody = function () {\n document.body.appendChild(this.root_);\n this.setIsHoisted(true);\n };\n /** Sets the foundation to use page offsets for an positioning when the menu is hoisted to the body. */\n MDCMenuSurface.prototype.setIsHoisted = function (isHoisted) {\n this.foundation_.setIsHoisted(isHoisted);\n };\n /** Sets the element that the menu-surface is anchored to. */\n MDCMenuSurface.prototype.setMenuSurfaceAnchorElement = function (element) {\n this.anchorElement = element;\n };\n /** Sets the menu-surface to position: fixed. */\n MDCMenuSurface.prototype.setFixedPosition = function (isFixed) {\n if (isFixed) {\n this.root_.classList.add(constants_1.cssClasses.FIXED);\n } else {\n this.root_.classList.remove(constants_1.cssClasses.FIXED);\n }\n this.foundation_.setFixedPosition(isFixed);\n };\n /** Sets the absolute x/y position to position based on. Requires the menu to be hoisted. */\n MDCMenuSurface.prototype.setAbsolutePosition = function (x, y) {\n this.foundation_.setAbsolutePosition(x, y);\n this.setIsHoisted(true);\n };\n /**\n * @param corner Default anchor corner alignment of top-left surface corner.\n */\n MDCMenuSurface.prototype.setAnchorCorner = function (corner) {\n this.foundation_.setAnchorCorner(corner);\n };\n MDCMenuSurface.prototype.setAnchorMargin = function (margin) {\n this.foundation_.setAnchorMargin(margin);\n };\n MDCMenuSurface.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n hasAnchor: function hasAnchor() {\n return !!_this.anchorElement;\n },\n notifyClose: function notifyClose() {\n return _this.emit(foundation_1.MDCMenuSurfaceFoundation.strings.CLOSED_EVENT, {});\n },\n notifyOpen: function notifyOpen() {\n return _this.emit(foundation_1.MDCMenuSurfaceFoundation.strings.OPENED_EVENT, {});\n },\n isElementInContainer: function isElementInContainer(el) {\n return _this.root_.contains(el);\n },\n isRtl: function isRtl() {\n return getComputedStyle(_this.root_).getPropertyValue('direction') === 'rtl';\n },\n setTransformOrigin: function setTransformOrigin(origin) {\n var propertyName = util.getTransformPropertyName(window) + \"-origin\";\n _this.root_.style.setProperty(propertyName, origin);\n },\n isFocused: function isFocused() {\n return document.activeElement === _this.root_;\n },\n saveFocus: function saveFocus() {\n _this.previousFocus_ = document.activeElement;\n },\n restoreFocus: function restoreFocus() {\n if (_this.root_.contains(document.activeElement)) {\n if (_this.previousFocus_ && _this.previousFocus_.focus) {\n _this.previousFocus_.focus();\n }\n }\n },\n isFirstElementFocused: function isFirstElementFocused() {\n return _this.firstFocusableElement_ ? _this.firstFocusableElement_ === document.activeElement : false;\n },\n isLastElementFocused: function isLastElementFocused() {\n return _this.lastFocusableElement_ ? _this.lastFocusableElement_ === document.activeElement : false;\n },\n focusFirstElement: function focusFirstElement() {\n return _this.firstFocusableElement_ && _this.firstFocusableElement_.focus && _this.firstFocusableElement_.focus();\n },\n focusLastElement: function focusLastElement() {\n return _this.lastFocusableElement_ && _this.lastFocusableElement_.focus && _this.lastFocusableElement_.focus();\n },\n getInnerDimensions: function getInnerDimensions() {\n return { width: _this.root_.offsetWidth, height: _this.root_.offsetHeight };\n },\n getAnchorDimensions: function getAnchorDimensions() {\n return _this.anchorElement ? _this.anchorElement.getBoundingClientRect() : null;\n },\n getWindowDimensions: function getWindowDimensions() {\n return { width: window.innerWidth, height: window.innerHeight };\n },\n getBodyDimensions: function getBodyDimensions() {\n return { width: document.body.clientWidth, height: document.body.clientHeight };\n },\n getWindowScroll: function getWindowScroll() {\n return { x: window.pageXOffset, y: window.pageYOffset };\n },\n setPosition: function setPosition(position) {\n _this.root_.style.left = 'left' in position ? position.left + \"px\" : '';\n _this.root_.style.right = 'right' in position ? position.right + \"px\" : '';\n _this.root_.style.top = 'top' in position ? position.top + \"px\" : '';\n _this.root_.style.bottom = 'bottom' in position ? position.bottom + \"px\" : '';\n },\n setMaxHeight: function setMaxHeight(height) {\n _this.root_.style.maxHeight = height;\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCMenuSurfaceFoundation(adapter);\n };\n return MDCMenuSurface;\n}(component_1.MDCComponent);\nexports.MDCMenuSurface = MDCMenuSurface;\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar index_1 = __webpack_require__(41);\nvar foundation_1 = __webpack_require__(8);\nvar index_2 = __webpack_require__(42);\nvar constants_1 = __webpack_require__(18);\nvar foundation_2 = __webpack_require__(45);\nvar MDCMenu = /** @class */function (_super) {\n __extends(MDCMenu, _super);\n function MDCMenu() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCMenu.attachTo = function (root) {\n return new MDCMenu(root);\n };\n MDCMenu.prototype.initialize = function (menuSurfaceFactory, listFactory) {\n if (menuSurfaceFactory === void 0) {\n menuSurfaceFactory = function menuSurfaceFactory(el) {\n return new index_2.MDCMenuSurface(el);\n };\n }\n if (listFactory === void 0) {\n listFactory = function listFactory(el) {\n return new index_1.MDCList(el);\n };\n }\n this.menuSurfaceFactory_ = menuSurfaceFactory;\n this.listFactory_ = listFactory;\n };\n MDCMenu.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.menuSurface_ = this.menuSurfaceFactory_(this.root_);\n var list = this.root_.querySelector(constants_1.strings.LIST_SELECTOR);\n if (list) {\n this.list_ = this.listFactory_(list);\n this.list_.wrapFocus = true;\n } else {\n this.list_ = null;\n }\n this.handleKeydown_ = function (evt) {\n return _this.foundation_.handleKeydown(evt);\n };\n this.handleItemAction_ = function (evt) {\n return _this.foundation_.handleItemAction(_this.items[evt.detail.index]);\n };\n this.afterOpenedCallback_ = function () {\n return _this.handleAfterOpened_();\n };\n this.menuSurface_.listen(foundation_1.MDCMenuSurfaceFoundation.strings.OPENED_EVENT, this.afterOpenedCallback_);\n this.listen('keydown', this.handleKeydown_);\n this.listen(index_1.MDCListFoundation.strings.ACTION_EVENT, this.handleItemAction_);\n };\n MDCMenu.prototype.destroy = function () {\n if (this.list_) {\n this.list_.destroy();\n }\n this.menuSurface_.destroy();\n this.menuSurface_.unlisten(foundation_1.MDCMenuSurfaceFoundation.strings.OPENED_EVENT, this.afterOpenedCallback_);\n this.unlisten('keydown', this.handleKeydown_);\n this.unlisten(index_1.MDCListFoundation.strings.ACTION_EVENT, this.handleItemAction_);\n _super.prototype.destroy.call(this);\n };\n Object.defineProperty(MDCMenu.prototype, \"open\", {\n get: function get() {\n return this.menuSurface_.open;\n },\n set: function set(value) {\n this.menuSurface_.open = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCMenu.prototype, \"wrapFocus\", {\n get: function get() {\n return this.list_ ? this.list_.wrapFocus : false;\n },\n set: function set(value) {\n if (this.list_) {\n this.list_.wrapFocus = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCMenu.prototype, \"items\", {\n /**\n * Return the items within the menu. Note that this only contains the set of elements within\n * the items container that are proper list items, and not supplemental / presentational DOM\n * elements.\n */\n get: function get() {\n return this.list_ ? this.list_.listElements : [];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCMenu.prototype, \"quickOpen\", {\n set: function set(quickOpen) {\n this.menuSurface_.quickOpen = quickOpen;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param corner Default anchor corner alignment of top-left menu corner.\n */\n MDCMenu.prototype.setAnchorCorner = function (corner) {\n this.menuSurface_.setAnchorCorner(corner);\n };\n MDCMenu.prototype.setAnchorMargin = function (margin) {\n this.menuSurface_.setAnchorMargin(margin);\n };\n /**\n * @return The item within the menu at the index specified.\n */\n MDCMenu.prototype.getOptionByIndex = function (index) {\n var items = this.items;\n if (index < items.length) {\n return this.items[index];\n } else {\n return null;\n }\n };\n MDCMenu.prototype.setFixedPosition = function (isFixed) {\n this.menuSurface_.setFixedPosition(isFixed);\n };\n MDCMenu.prototype.hoistMenuToBody = function () {\n this.menuSurface_.hoistMenuToBody();\n };\n MDCMenu.prototype.setIsHoisted = function (isHoisted) {\n this.menuSurface_.setIsHoisted(isHoisted);\n };\n MDCMenu.prototype.setAbsolutePosition = function (x, y) {\n this.menuSurface_.setAbsolutePosition(x, y);\n };\n /**\n * Sets the element that the menu-surface is anchored to.\n */\n MDCMenu.prototype.setAnchorElement = function (element) {\n this.menuSurface_.anchorElement = element;\n };\n MDCMenu.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClassToElementAtIndex: function addClassToElementAtIndex(index, className) {\n var list = _this.items;\n list[index].classList.add(className);\n },\n removeClassFromElementAtIndex: function removeClassFromElementAtIndex(index, className) {\n var list = _this.items;\n list[index].classList.remove(className);\n },\n addAttributeToElementAtIndex: function addAttributeToElementAtIndex(index, attr, value) {\n var list = _this.items;\n list[index].setAttribute(attr, value);\n },\n removeAttributeFromElementAtIndex: function removeAttributeFromElementAtIndex(index, attr) {\n var list = _this.items;\n list[index].removeAttribute(attr);\n },\n elementContainsClass: function elementContainsClass(element, className) {\n return element.classList.contains(className);\n },\n closeSurface: function closeSurface() {\n return _this.open = false;\n },\n getElementIndex: function getElementIndex(element) {\n return _this.items.indexOf(element);\n },\n getParentElement: function getParentElement(element) {\n return element.parentElement;\n },\n getSelectedElementIndex: function getSelectedElementIndex(selectionGroup) {\n var selectedListItem = selectionGroup.querySelector(\".\" + constants_1.cssClasses.MENU_SELECTED_LIST_ITEM);\n return selectedListItem ? _this.items.indexOf(selectedListItem) : -1;\n },\n notifySelected: function notifySelected(evtData) {\n return _this.emit(constants_1.strings.SELECTED_EVENT, {\n index: evtData.index,\n item: _this.items[evtData.index]\n });\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_2.MDCMenuFoundation(adapter);\n };\n MDCMenu.prototype.handleAfterOpened_ = function () {\n var list = this.items;\n if (list.length > 0) {\n list[0].focus();\n }\n };\n return MDCMenu;\n}(component_1.MDCComponent);\nexports.MDCMenu = MDCMenu;\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar foundation_1 = __webpack_require__(16);\nvar constants_1 = __webpack_require__(46);\nvar foundation_2 = __webpack_require__(47);\nvar MDCNotchedOutline = /** @class */function (_super) {\n __extends(MDCNotchedOutline, _super);\n function MDCNotchedOutline() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCNotchedOutline.attachTo = function (root) {\n return new MDCNotchedOutline(root);\n };\n MDCNotchedOutline.prototype.initialSyncWithDOM = function () {\n this.notchElement_ = this.root_.querySelector(constants_1.strings.NOTCH_ELEMENT_SELECTOR);\n var label = this.root_.querySelector('.' + foundation_1.MDCFloatingLabelFoundation.cssClasses.ROOT);\n if (label) {\n label.style.transitionDuration = '0s';\n this.root_.classList.add(constants_1.cssClasses.OUTLINE_UPGRADED);\n requestAnimationFrame(function () {\n label.style.transitionDuration = '';\n });\n } else {\n this.root_.classList.add(constants_1.cssClasses.NO_LABEL);\n }\n };\n /**\n * Updates classes and styles to open the notch to the specified width.\n * @param notchWidth The notch width in the outline.\n */\n MDCNotchedOutline.prototype.notch = function (notchWidth) {\n this.foundation_.notch(notchWidth);\n };\n /**\n * Updates classes and styles to close the notch.\n */\n MDCNotchedOutline.prototype.closeNotch = function () {\n this.foundation_.closeNotch();\n };\n MDCNotchedOutline.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n setNotchWidthProperty: function setNotchWidthProperty(width) {\n return _this.notchElement_.style.setProperty('width', width + 'px');\n },\n removeNotchWidthProperty: function removeNotchWidthProperty() {\n return _this.notchElement_.style.removeProperty('width');\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_2.MDCNotchedOutlineFoundation(adapter);\n };\n return MDCNotchedOutline;\n}(component_1.MDCComponent);\nexports.MDCNotchedOutline = MDCNotchedOutline;\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(124));\n__export(__webpack_require__(48));\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar index_1 = __webpack_require__(3);\nvar foundation_1 = __webpack_require__(48);\nvar MDCRadio = /** @class */function (_super) {\n __extends(MDCRadio, _super);\n function MDCRadio() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ripple_ = _this.createRipple_();\n return _this;\n }\n MDCRadio.attachTo = function (root) {\n return new MDCRadio(root);\n };\n Object.defineProperty(MDCRadio.prototype, \"checked\", {\n get: function get() {\n return this.nativeControl_.checked;\n },\n set: function set(checked) {\n this.nativeControl_.checked = checked;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRadio.prototype, \"disabled\", {\n get: function get() {\n return this.nativeControl_.disabled;\n },\n set: function set(disabled) {\n this.foundation_.setDisabled(disabled);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRadio.prototype, \"value\", {\n get: function get() {\n return this.nativeControl_.value;\n },\n set: function set(value) {\n this.nativeControl_.value = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRadio.prototype, \"ripple\", {\n get: function get() {\n return this.ripple_;\n },\n enumerable: true,\n configurable: true\n });\n MDCRadio.prototype.destroy = function () {\n this.ripple_.destroy();\n _super.prototype.destroy.call(this);\n };\n MDCRadio.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n setNativeControlDisabled: function setNativeControlDisabled(disabled) {\n return _this.nativeControl_.disabled = disabled;\n }\n };\n return new foundation_1.MDCRadioFoundation(adapter);\n };\n MDCRadio.prototype.createRipple_ = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = __assign({}, index_1.MDCRipple.createAdapter(this), { registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return _this.nativeControl_.addEventListener(evtType, handler);\n }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return _this.nativeControl_.removeEventListener(evtType, handler);\n },\n // Radio buttons technically go \"active\" whenever there is *any* keyboard interaction.\n // This is not the UI we desire.\n isSurfaceActive: function isSurfaceActive() {\n return false;\n }, isUnbounded: function isUnbounded() {\n return true;\n } });\n // tslint:enable:object-literal-sort-keys\n return new index_1.MDCRipple(this.root_, new index_1.MDCRippleFoundation(adapter));\n };\n Object.defineProperty(MDCRadio.prototype, \"nativeControl_\", {\n get: function get() {\n var NATIVE_CONTROL_SELECTOR = foundation_1.MDCRadioFoundation.strings.NATIVE_CONTROL_SELECTOR;\n var el = this.root_.querySelector(NATIVE_CONTROL_SELECTOR);\n if (!el) {\n throw new Error(\"Radio component requires a \" + NATIVE_CONTROL_SELECTOR + \" element\");\n }\n return el;\n },\n enumerable: true,\n configurable: true\n });\n return MDCRadio;\n}(component_1.MDCComponent);\nexports.MDCRadio = MDCRadio;\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar strings = {\n NATIVE_CONTROL_SELECTOR: '.mdc-radio__native-control'\n};\nexports.strings = strings;\nvar cssClasses = {\n DISABLED: 'mdc-radio--disabled',\n ROOT: 'mdc-radio'\n};\nexports.cssClasses = cssClasses;\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(127));\n__export(__webpack_require__(50));\n__export(__webpack_require__(51));\n__export(__webpack_require__(53));\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar index_1 = __webpack_require__(15);\nvar index_2 = __webpack_require__(17);\nvar menuSurfaceConstants = __importStar(__webpack_require__(5));\nvar menuConstants = __importStar(__webpack_require__(18));\nvar index_3 = __webpack_require__(44);\nvar index_4 = __webpack_require__(19);\nvar index_5 = __webpack_require__(3);\nvar constants_1 = __webpack_require__(49);\nvar foundation_1 = __webpack_require__(50);\nvar index_6 = __webpack_require__(51);\nvar index_7 = __webpack_require__(53);\nvar POINTER_EVENTS = ['mousedown', 'touchstart'];\nvar VALIDATION_ATTR_WHITELIST = ['required', 'aria-required'];\nvar MDCSelect = /** @class */function (_super) {\n __extends(MDCSelect, _super);\n function MDCSelect() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCSelect.attachTo = function (root) {\n return new MDCSelect(root);\n };\n MDCSelect.prototype.initialize = function (labelFactory, lineRippleFactory, outlineFactory, menuFactory, iconFactory, helperTextFactory) {\n if (labelFactory === void 0) {\n labelFactory = function labelFactory(el) {\n return new index_1.MDCFloatingLabel(el);\n };\n }\n if (lineRippleFactory === void 0) {\n lineRippleFactory = function lineRippleFactory(el) {\n return new index_2.MDCLineRipple(el);\n };\n }\n if (outlineFactory === void 0) {\n outlineFactory = function outlineFactory(el) {\n return new index_4.MDCNotchedOutline(el);\n };\n }\n if (menuFactory === void 0) {\n menuFactory = function menuFactory(el) {\n return new index_3.MDCMenu(el);\n };\n }\n if (iconFactory === void 0) {\n iconFactory = function iconFactory(el) {\n return new index_7.MDCSelectIcon(el);\n };\n }\n if (helperTextFactory === void 0) {\n helperTextFactory = function helperTextFactory(el) {\n return new index_6.MDCSelectHelperText(el);\n };\n }\n this.isMenuOpen_ = false;\n this.nativeControl_ = this.root_.querySelector(constants_1.strings.NATIVE_CONTROL_SELECTOR);\n this.selectedText_ = this.root_.querySelector(constants_1.strings.SELECTED_TEXT_SELECTOR);\n var targetElement = this.nativeControl_ || this.selectedText_;\n if (!targetElement) {\n throw new Error('MDCSelect: Missing required element: Exactly one of the following selectors must be present: ' + (\"'\" + constants_1.strings.NATIVE_CONTROL_SELECTOR + \"' or '\" + constants_1.strings.SELECTED_TEXT_SELECTOR + \"'\"));\n }\n this.targetElement_ = targetElement;\n if (this.targetElement_.hasAttribute(constants_1.strings.ARIA_CONTROLS)) {\n var helperTextElement = document.getElementById(this.targetElement_.getAttribute(constants_1.strings.ARIA_CONTROLS));\n if (helperTextElement) {\n this.helperText_ = helperTextFactory(helperTextElement);\n }\n }\n if (this.selectedText_) {\n this.enhancedSelectSetup_(menuFactory);\n }\n var labelElement = this.root_.querySelector(constants_1.strings.LABEL_SELECTOR);\n this.label_ = labelElement ? labelFactory(labelElement) : null;\n var lineRippleElement = this.root_.querySelector(constants_1.strings.LINE_RIPPLE_SELECTOR);\n this.lineRipple_ = lineRippleElement ? lineRippleFactory(lineRippleElement) : null;\n var outlineElement = this.root_.querySelector(constants_1.strings.OUTLINE_SELECTOR);\n this.outline_ = outlineElement ? outlineFactory(outlineElement) : null;\n var leadingIcon = this.root_.querySelector(constants_1.strings.LEADING_ICON_SELECTOR);\n if (leadingIcon) {\n this.root_.classList.add(constants_1.cssClasses.WITH_LEADING_ICON);\n this.leadingIcon_ = iconFactory(leadingIcon);\n if (this.menuElement_) {\n this.menuElement_.classList.add(constants_1.cssClasses.WITH_LEADING_ICON);\n }\n }\n if (!this.root_.classList.contains(constants_1.cssClasses.OUTLINED)) {\n this.ripple = this.createRipple_();\n }\n // The required state needs to be sync'd before the mutation observer is added.\n this.initialSyncRequiredState_();\n this.addMutationObserverForRequired_();\n };\n /**\n * Initializes the select's event listeners and internal state based\n * on the environment's state.\n */\n MDCSelect.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.handleChange_ = function () {\n return _this.foundation_.handleChange( /* didChange */true);\n };\n this.handleFocus_ = function () {\n return _this.foundation_.handleFocus();\n };\n this.handleBlur_ = function () {\n return _this.foundation_.handleBlur();\n };\n this.handleClick_ = function (evt) {\n if (_this.selectedText_) {\n _this.selectedText_.focus();\n }\n _this.foundation_.handleClick(_this.getNormalizedXCoordinate_(evt));\n };\n this.handleKeydown_ = function (evt) {\n return _this.foundation_.handleKeydown(evt);\n };\n this.handleMenuSelected_ = function (evtData) {\n return _this.selectedIndex = evtData.detail.index;\n };\n this.handleMenuOpened_ = function () {\n // Menu should open to the last selected element.\n if (_this.selectedIndex >= 0) {\n var selectedItemEl = _this.menu_.items[_this.selectedIndex];\n selectedItemEl.focus();\n }\n };\n this.handleMenuClosed_ = function () {\n // isMenuOpen_ is used to track the state of the menu opening or closing since the menu.open function\n // will return false if the menu is still closing and this method listens to the closed event which\n // occurs after the menu is already closed.\n _this.isMenuOpen_ = false;\n _this.selectedText_.removeAttribute('aria-expanded');\n if (document.activeElement !== _this.selectedText_) {\n _this.foundation_.handleBlur();\n }\n };\n this.targetElement_.addEventListener('change', this.handleChange_);\n this.targetElement_.addEventListener('focus', this.handleFocus_);\n this.targetElement_.addEventListener('blur', this.handleBlur_);\n POINTER_EVENTS.forEach(function (evtType) {\n _this.targetElement_.addEventListener(evtType, _this.handleClick_);\n });\n if (this.menuElement_) {\n this.selectedText_.addEventListener('keydown', this.handleKeydown_);\n this.menu_.listen(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);\n this.menu_.listen(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);\n this.menu_.listen(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);\n if (this.hiddenInput_ && this.hiddenInput_.value) {\n // If the hidden input already has a value, use it to restore the select's value.\n // This can happen e.g. if the user goes back or (in some browsers) refreshes the page.\n var enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();\n enhancedAdapterMethods.setValue(this.hiddenInput_.value);\n } else if (this.menuElement_.querySelector(constants_1.strings.SELECTED_ITEM_SELECTOR)) {\n // If an element is selected, the select should set the initial selected text.\n var enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();\n enhancedAdapterMethods.setValue(enhancedAdapterMethods.getValue());\n }\n }\n // Initially sync floating label\n this.foundation_.handleChange( /* didChange */false);\n if (this.root_.classList.contains(constants_1.cssClasses.DISABLED) || this.nativeControl_ && this.nativeControl_.disabled) {\n this.disabled = true;\n }\n };\n MDCSelect.prototype.destroy = function () {\n var _this = this;\n this.targetElement_.removeEventListener('change', this.handleChange_);\n this.targetElement_.removeEventListener('focus', this.handleFocus_);\n this.targetElement_.removeEventListener('blur', this.handleBlur_);\n this.targetElement_.removeEventListener('keydown', this.handleKeydown_);\n POINTER_EVENTS.forEach(function (evtType) {\n _this.targetElement_.removeEventListener(evtType, _this.handleClick_);\n });\n if (this.menu_) {\n this.menu_.unlisten(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);\n this.menu_.unlisten(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);\n this.menu_.unlisten(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);\n this.menu_.destroy();\n }\n if (this.ripple) {\n this.ripple.destroy();\n }\n if (this.outline_) {\n this.outline_.destroy();\n }\n if (this.leadingIcon_) {\n this.leadingIcon_.destroy();\n }\n if (this.helperText_) {\n this.helperText_.destroy();\n }\n if (this.validationObserver_) {\n this.validationObserver_.disconnect();\n }\n _super.prototype.destroy.call(this);\n };\n Object.defineProperty(MDCSelect.prototype, \"value\", {\n get: function get() {\n return this.foundation_.getValue();\n },\n set: function set(value) {\n this.foundation_.setValue(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSelect.prototype, \"selectedIndex\", {\n get: function get() {\n var selectedIndex = -1;\n if (this.menuElement_ && this.menu_) {\n var selectedEl = this.menuElement_.querySelector(constants_1.strings.SELECTED_ITEM_SELECTOR);\n selectedIndex = this.menu_.items.indexOf(selectedEl);\n } else if (this.nativeControl_) {\n selectedIndex = this.nativeControl_.selectedIndex;\n }\n return selectedIndex;\n },\n set: function set(selectedIndex) {\n this.foundation_.setSelectedIndex(selectedIndex);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSelect.prototype, \"disabled\", {\n get: function get() {\n return this.root_.classList.contains(constants_1.cssClasses.DISABLED) || (this.nativeControl_ ? this.nativeControl_.disabled : false);\n },\n set: function set(disabled) {\n this.foundation_.setDisabled(disabled);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSelect.prototype, \"leadingIconAriaLabel\", {\n set: function set(label) {\n this.foundation_.setLeadingIconAriaLabel(label);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSelect.prototype, \"leadingIconContent\", {\n /**\n * Sets the text content of the leading icon.\n */\n set: function set(content) {\n this.foundation_.setLeadingIconContent(content);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSelect.prototype, \"helperTextContent\", {\n /**\n * Sets the text content of the helper text.\n */\n set: function set(content) {\n this.foundation_.setHelperTextContent(content);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSelect.prototype, \"valid\", {\n /**\n * Checks if the select is in a valid state.\n */\n get: function get() {\n return this.foundation_.isValid();\n },\n /**\n * Sets the current invalid state of the select.\n */\n set: function set(isValid) {\n this.foundation_.setValid(isValid);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSelect.prototype, \"required\", {\n /**\n * Returns whether the select is required.\n */\n get: function get() {\n if (this.nativeControl_) {\n return this.nativeControl_.required;\n } else {\n return this.selectedText_.getAttribute('aria-required') === 'true';\n }\n },\n /**\n * Sets the control to the required state.\n */\n set: function set(isRequired) {\n if (this.nativeControl_) {\n this.nativeControl_.required = isRequired;\n } else {\n if (isRequired) {\n this.selectedText_.setAttribute('aria-required', isRequired.toString());\n } else {\n this.selectedText_.removeAttribute('aria-required');\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Recomputes the outline SVG path for the outline element.\n */\n MDCSelect.prototype.layout = function () {\n this.foundation_.layout();\n };\n MDCSelect.prototype.getDefaultFoundation = function () {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = __assign({}, this.nativeControl_ ? this.getNativeSelectAdapterMethods_() : this.getEnhancedSelectAdapterMethods_(), this.getCommonAdapterMethods_(), this.getOutlineAdapterMethods_(), this.getLabelAdapterMethods_());\n return new foundation_1.MDCSelectFoundation(adapter, this.getFoundationMap_());\n };\n /**\n * Handles setup for the enhanced menu.\n */\n MDCSelect.prototype.enhancedSelectSetup_ = function (menuFactory) {\n var isDisabled = this.root_.classList.contains(constants_1.cssClasses.DISABLED);\n this.selectedText_.setAttribute('tabindex', isDisabled ? '-1' : '0');\n this.hiddenInput_ = this.root_.querySelector(constants_1.strings.HIDDEN_INPUT_SELECTOR);\n this.menuElement_ = this.root_.querySelector(constants_1.strings.MENU_SELECTOR);\n this.menu_ = menuFactory(this.menuElement_);\n this.menu_.hoistMenuToBody();\n this.menu_.setAnchorElement(this.root_);\n this.menu_.setAnchorCorner(menuSurfaceConstants.Corner.BOTTOM_START);\n this.menu_.wrapFocus = false;\n };\n MDCSelect.prototype.createRipple_ = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = __assign({}, index_5.MDCRipple.createAdapter(this), { registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return _this.targetElement_.addEventListener(evtType, handler);\n }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return _this.targetElement_.removeEventListener(evtType, handler);\n } });\n // tslint:enable:object-literal-sort-keys\n return new index_5.MDCRipple(this.root_, new index_5.MDCRippleFoundation(adapter));\n };\n MDCSelect.prototype.getNativeSelectAdapterMethods_ = function () {\n var _this = this;\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n getValue: function getValue() {\n return _this.nativeControl_.value;\n },\n setValue: function setValue(value) {\n _this.nativeControl_.value = value;\n },\n openMenu: function openMenu() {\n return undefined;\n },\n closeMenu: function closeMenu() {\n return undefined;\n },\n isMenuOpen: function isMenuOpen() {\n return false;\n },\n setSelectedIndex: function setSelectedIndex(index) {\n _this.nativeControl_.selectedIndex = index;\n },\n setDisabled: function setDisabled(isDisabled) {\n _this.nativeControl_.disabled = isDisabled;\n },\n setValid: function setValid(isValid) {\n if (isValid) {\n _this.root_.classList.remove(constants_1.cssClasses.INVALID);\n } else {\n _this.root_.classList.add(constants_1.cssClasses.INVALID);\n }\n },\n checkValidity: function checkValidity() {\n return _this.nativeControl_.checkValidity();\n }\n };\n // tslint:enable:object-literal-sort-keys\n };\n MDCSelect.prototype.getEnhancedSelectAdapterMethods_ = function () {\n var _this = this;\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n getValue: function getValue() {\n var listItem = _this.menuElement_.querySelector(constants_1.strings.SELECTED_ITEM_SELECTOR);\n if (listItem && listItem.hasAttribute(constants_1.strings.ENHANCED_VALUE_ATTR)) {\n return listItem.getAttribute(constants_1.strings.ENHANCED_VALUE_ATTR) || '';\n }\n return '';\n },\n setValue: function setValue(value) {\n var element = _this.menuElement_.querySelector(\"[\" + constants_1.strings.ENHANCED_VALUE_ATTR + \"=\\\"\" + value + \"\\\"]\");\n _this.setEnhancedSelectedIndex_(element ? _this.menu_.items.indexOf(element) : -1);\n },\n openMenu: function openMenu() {\n if (_this.menu_ && !_this.menu_.open) {\n _this.menu_.open = true;\n _this.isMenuOpen_ = true;\n _this.selectedText_.setAttribute('aria-expanded', 'true');\n }\n },\n closeMenu: function closeMenu() {\n if (_this.menu_ && _this.menu_.open) {\n _this.menu_.open = false;\n }\n },\n isMenuOpen: function isMenuOpen() {\n return Boolean(_this.menu_) && _this.isMenuOpen_;\n },\n setSelectedIndex: function setSelectedIndex(index) {\n return _this.setEnhancedSelectedIndex_(index);\n },\n setDisabled: function setDisabled(isDisabled) {\n _this.selectedText_.setAttribute('tabindex', isDisabled ? '-1' : '0');\n _this.selectedText_.setAttribute('aria-disabled', isDisabled.toString());\n if (_this.hiddenInput_) {\n _this.hiddenInput_.disabled = isDisabled;\n }\n },\n checkValidity: function checkValidity() {\n var classList = _this.root_.classList;\n if (classList.contains(constants_1.cssClasses.REQUIRED) && !classList.contains(constants_1.cssClasses.DISABLED)) {\n // See notes for required attribute under https://www.w3.org/TR/html52/sec-forms.html#the-select-element\n // TL;DR: Invalid if no index is selected, or if the first index is selected and has an empty value.\n return _this.selectedIndex !== -1 && (_this.selectedIndex !== 0 || Boolean(_this.value));\n } else {\n return true;\n }\n },\n setValid: function setValid(isValid) {\n _this.selectedText_.setAttribute('aria-invalid', (!isValid).toString());\n if (isValid) {\n _this.root_.classList.remove(constants_1.cssClasses.INVALID);\n } else {\n _this.root_.classList.add(constants_1.cssClasses.INVALID);\n }\n }\n };\n // tslint:enable:object-literal-sort-keys\n };\n MDCSelect.prototype.getCommonAdapterMethods_ = function () {\n var _this = this;\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n setRippleCenter: function setRippleCenter(normalizedX) {\n return _this.lineRipple_ && _this.lineRipple_.setRippleCenter(normalizedX);\n },\n activateBottomLine: function activateBottomLine() {\n return _this.lineRipple_ && _this.lineRipple_.activate();\n },\n deactivateBottomLine: function deactivateBottomLine() {\n return _this.lineRipple_ && _this.lineRipple_.deactivate();\n },\n notifyChange: function notifyChange(value) {\n var index = _this.selectedIndex;\n _this.emit(constants_1.strings.CHANGE_EVENT, { value: value, index: index }, true /* shouldBubble */);\n }\n };\n // tslint:enable:object-literal-sort-keys\n };\n MDCSelect.prototype.getOutlineAdapterMethods_ = function () {\n var _this = this;\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n hasOutline: function hasOutline() {\n return Boolean(_this.outline_);\n },\n notchOutline: function notchOutline(labelWidth) {\n return _this.outline_ && _this.outline_.notch(labelWidth);\n },\n closeOutline: function closeOutline() {\n return _this.outline_ && _this.outline_.closeNotch();\n }\n };\n // tslint:enable:object-literal-sort-keys\n };\n MDCSelect.prototype.getLabelAdapterMethods_ = function () {\n var _this = this;\n return {\n floatLabel: function floatLabel(shouldFloat) {\n return _this.label_ && _this.label_.float(shouldFloat);\n },\n getLabelWidth: function getLabelWidth() {\n return _this.label_ ? _this.label_.getWidth() : 0;\n }\n };\n };\n /**\n * Calculates where the line ripple should start based on the x coordinate within the component.\n */\n MDCSelect.prototype.getNormalizedXCoordinate_ = function (evt) {\n var targetClientRect = evt.target.getBoundingClientRect();\n var xCoordinate = this.isTouchEvent_(evt) ? evt.touches[0].clientX : evt.clientX;\n return xCoordinate - targetClientRect.left;\n };\n MDCSelect.prototype.isTouchEvent_ = function (evt) {\n return Boolean(evt.touches);\n };\n /**\n * Returns a map of all subcomponents to subfoundations.\n */\n MDCSelect.prototype.getFoundationMap_ = function () {\n return {\n helperText: this.helperText_ ? this.helperText_.foundation : undefined,\n leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined\n };\n };\n MDCSelect.prototype.setEnhancedSelectedIndex_ = function (index) {\n var selectedItem = this.menu_.items[index];\n this.selectedText_.textContent = selectedItem ? selectedItem.textContent.trim() : '';\n var previouslySelected = this.menuElement_.querySelector(constants_1.strings.SELECTED_ITEM_SELECTOR);\n if (previouslySelected) {\n previouslySelected.classList.remove(constants_1.cssClasses.SELECTED_ITEM_CLASS);\n previouslySelected.removeAttribute(constants_1.strings.ARIA_SELECTED_ATTR);\n }\n if (selectedItem) {\n selectedItem.classList.add(constants_1.cssClasses.SELECTED_ITEM_CLASS);\n selectedItem.setAttribute(constants_1.strings.ARIA_SELECTED_ATTR, 'true');\n }\n // Synchronize hidden input's value with data-value attribute of selected item.\n // This code path is also followed when setting value directly, so this covers all cases.\n if (this.hiddenInput_) {\n this.hiddenInput_.value = selectedItem ? selectedItem.getAttribute(constants_1.strings.ENHANCED_VALUE_ATTR) || '' : '';\n }\n this.layout();\n };\n MDCSelect.prototype.initialSyncRequiredState_ = function () {\n var isRequired = this.targetElement_.required || this.targetElement_.getAttribute('aria-required') === 'true' || this.root_.classList.contains(constants_1.cssClasses.REQUIRED);\n if (isRequired) {\n if (this.nativeControl_) {\n this.nativeControl_.required = true;\n } else {\n this.selectedText_.setAttribute('aria-required', 'true');\n }\n this.root_.classList.add(constants_1.cssClasses.REQUIRED);\n }\n };\n MDCSelect.prototype.addMutationObserverForRequired_ = function () {\n var _this = this;\n var observerHandler = function observerHandler(attributesList) {\n attributesList.some(function (attributeName) {\n if (VALIDATION_ATTR_WHITELIST.indexOf(attributeName) === -1) {\n return false;\n }\n if (_this.selectedText_) {\n if (_this.selectedText_.getAttribute('aria-required') === 'true') {\n _this.root_.classList.add(constants_1.cssClasses.REQUIRED);\n } else {\n _this.root_.classList.remove(constants_1.cssClasses.REQUIRED);\n }\n } else {\n if (_this.nativeControl_.required) {\n _this.root_.classList.add(constants_1.cssClasses.REQUIRED);\n } else {\n _this.root_.classList.remove(constants_1.cssClasses.REQUIRED);\n }\n }\n return true;\n });\n };\n var getAttributesList = function getAttributesList(mutationsList) {\n return mutationsList.map(function (mutation) {\n return mutation.attributeName;\n }).filter(function (attributeName) {\n return attributeName;\n });\n };\n var observer = new MutationObserver(function (mutationsList) {\n return observerHandler(getAttributesList(mutationsList));\n });\n observer.observe(this.targetElement_, { attributes: true });\n this.validationObserver_ = observer;\n };\n return MDCSelect;\n}(component_1.MDCComponent);\nexports.MDCSelect = MDCSelect;\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar foundation_1 = __webpack_require__(52);\nvar MDCSelectHelperText = /** @class */function (_super) {\n __extends(MDCSelectHelperText, _super);\n function MDCSelectHelperText() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCSelectHelperText.attachTo = function (root) {\n return new MDCSelectHelperText(root);\n };\n Object.defineProperty(MDCSelectHelperText.prototype, \"foundation\", {\n get: function get() {\n return this.foundation_;\n },\n enumerable: true,\n configurable: true\n });\n MDCSelectHelperText.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n setAttr: function setAttr(attr, value) {\n return _this.root_.setAttribute(attr, value);\n },\n removeAttr: function removeAttr(attr) {\n return _this.root_.removeAttribute(attr);\n },\n setContent: function setContent(content) {\n _this.root_.textContent = content;\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCSelectHelperTextFoundation(adapter);\n };\n return MDCSelectHelperText;\n}(component_1.MDCComponent);\nexports.MDCSelectHelperText = MDCSelectHelperText;\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar strings = {\n ARIA_HIDDEN: 'aria-hidden',\n ROLE: 'role'\n};\nexports.strings = strings;\nvar cssClasses = {\n HELPER_TEXT_PERSISTENT: 'mdc-select-helper-text--persistent',\n HELPER_TEXT_VALIDATION_MSG: 'mdc-select-helper-text--validation-msg'\n};\nexports.cssClasses = cssClasses;\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar foundation_1 = __webpack_require__(54);\nvar MDCSelectIcon = /** @class */function (_super) {\n __extends(MDCSelectIcon, _super);\n function MDCSelectIcon() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCSelectIcon.attachTo = function (root) {\n return new MDCSelectIcon(root);\n };\n Object.defineProperty(MDCSelectIcon.prototype, \"foundation\", {\n get: function get() {\n return this.foundation_;\n },\n enumerable: true,\n configurable: true\n });\n MDCSelectIcon.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n getAttr: function getAttr(attr) {\n return _this.root_.getAttribute(attr);\n },\n setAttr: function setAttr(attr, value) {\n return _this.root_.setAttribute(attr, value);\n },\n removeAttr: function removeAttr(attr) {\n return _this.root_.removeAttribute(attr);\n },\n setContent: function setContent(content) {\n _this.root_.textContent = content;\n },\n registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return _this.listen(evtType, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return _this.unlisten(evtType, handler);\n },\n notifyIconAction: function notifyIconAction() {\n return _this.emit(foundation_1.MDCSelectIconFoundation.strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */);\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCSelectIconFoundation(adapter);\n };\n return MDCSelectIcon;\n}(component_1.MDCComponent);\nexports.MDCSelectIcon = MDCSelectIcon;\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar strings = {\n ICON_EVENT: 'MDCSelect:icon',\n ICON_ROLE: 'button'\n};\nexports.strings = strings;\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(133));\n__export(__webpack_require__(56));\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar constants_1 = __webpack_require__(55);\nvar foundation_1 = __webpack_require__(56);\nvar MDCSlider = /** @class */function (_super) {\n __extends(MDCSlider, _super);\n function MDCSlider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCSlider.attachTo = function (root) {\n return new MDCSlider(root);\n };\n Object.defineProperty(MDCSlider.prototype, \"value\", {\n get: function get() {\n return this.foundation_.getValue();\n },\n set: function set(value) {\n this.foundation_.setValue(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSlider.prototype, \"min\", {\n get: function get() {\n return this.foundation_.getMin();\n },\n set: function set(min) {\n this.foundation_.setMin(min);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSlider.prototype, \"max\", {\n get: function get() {\n return this.foundation_.getMax();\n },\n set: function set(max) {\n this.foundation_.setMax(max);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSlider.prototype, \"step\", {\n get: function get() {\n return this.foundation_.getStep();\n },\n set: function set(step) {\n this.foundation_.setStep(step);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSlider.prototype, \"disabled\", {\n get: function get() {\n return this.foundation_.isDisabled();\n },\n set: function set(disabled) {\n this.foundation_.setDisabled(disabled);\n },\n enumerable: true,\n configurable: true\n });\n MDCSlider.prototype.initialize = function () {\n this.thumbContainer_ = this.root_.querySelector(constants_1.strings.THUMB_CONTAINER_SELECTOR);\n this.track_ = this.root_.querySelector(constants_1.strings.TRACK_SELECTOR);\n this.pinValueMarker_ = this.root_.querySelector(constants_1.strings.PIN_VALUE_MARKER_SELECTOR);\n this.trackMarkerContainer_ = this.root_.querySelector(constants_1.strings.TRACK_MARKER_CONTAINER_SELECTOR);\n };\n MDCSlider.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n getAttribute: function getAttribute(name) {\n return _this.root_.getAttribute(name);\n },\n setAttribute: function setAttribute(name, value) {\n return _this.root_.setAttribute(name, value);\n },\n removeAttribute: function removeAttribute(name) {\n return _this.root_.removeAttribute(name);\n },\n computeBoundingRect: function computeBoundingRect() {\n return _this.root_.getBoundingClientRect();\n },\n getTabIndex: function getTabIndex() {\n return _this.root_.tabIndex;\n },\n registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return _this.listen(evtType, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return _this.unlisten(evtType, handler);\n },\n registerThumbContainerInteractionHandler: function registerThumbContainerInteractionHandler(evtType, handler) {\n _this.thumbContainer_.addEventListener(evtType, handler);\n },\n deregisterThumbContainerInteractionHandler: function deregisterThumbContainerInteractionHandler(evtType, handler) {\n _this.thumbContainer_.removeEventListener(evtType, handler);\n },\n registerBodyInteractionHandler: function registerBodyInteractionHandler(evtType, handler) {\n return document.body.addEventListener(evtType, handler);\n },\n deregisterBodyInteractionHandler: function deregisterBodyInteractionHandler(evtType, handler) {\n return document.body.removeEventListener(evtType, handler);\n },\n registerResizeHandler: function registerResizeHandler(handler) {\n return window.addEventListener('resize', handler);\n },\n deregisterResizeHandler: function deregisterResizeHandler(handler) {\n return window.removeEventListener('resize', handler);\n },\n notifyInput: function notifyInput() {\n return _this.emit(constants_1.strings.INPUT_EVENT, _this);\n },\n notifyChange: function notifyChange() {\n return _this.emit(constants_1.strings.CHANGE_EVENT, _this);\n },\n setThumbContainerStyleProperty: function setThumbContainerStyleProperty(propertyName, value) {\n _this.thumbContainer_.style.setProperty(propertyName, value);\n },\n setTrackStyleProperty: function setTrackStyleProperty(propertyName, value) {\n return _this.track_.style.setProperty(propertyName, value);\n },\n setMarkerValue: function setMarkerValue(value) {\n return _this.pinValueMarker_.innerText = value.toLocaleString();\n },\n appendTrackMarkers: function appendTrackMarkers(numMarkers) {\n var frag = document.createDocumentFragment();\n for (var i = 0; i < numMarkers; i++) {\n var marker = document.createElement('div');\n marker.classList.add('mdc-slider__track-marker');\n frag.appendChild(marker);\n }\n _this.trackMarkerContainer_.appendChild(frag);\n },\n removeTrackMarkers: function removeTrackMarkers() {\n while (_this.trackMarkerContainer_.firstChild) {\n _this.trackMarkerContainer_.removeChild(_this.trackMarkerContainer_.firstChild);\n }\n },\n setLastTrackMarkersStyleProperty: function setLastTrackMarkersStyleProperty(propertyName, value) {\n // We remove and append new nodes, thus, the last track marker must be dynamically found.\n var lastTrackMarker = _this.root_.querySelector(constants_1.strings.LAST_TRACK_MARKER_SELECTOR);\n lastTrackMarker.style.setProperty(propertyName, value);\n },\n isRTL: function isRTL() {\n return getComputedStyle(_this.root_).direction === 'rtl';\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCSliderFoundation(adapter);\n };\n MDCSlider.prototype.initialSyncWithDOM = function () {\n var origValueNow = this.parseFloat_(this.root_.getAttribute(constants_1.strings.ARIA_VALUENOW), this.value);\n var min = this.parseFloat_(this.root_.getAttribute(constants_1.strings.ARIA_VALUEMIN), this.min);\n var max = this.parseFloat_(this.root_.getAttribute(constants_1.strings.ARIA_VALUEMAX), this.max);\n // min and max need to be set in the right order to avoid throwing an error\n // when the new min is greater than the default max.\n if (min >= this.max) {\n this.max = max;\n this.min = min;\n } else {\n this.min = min;\n this.max = max;\n }\n this.step = this.parseFloat_(this.root_.getAttribute(constants_1.strings.STEP_DATA_ATTR), this.step);\n this.value = origValueNow;\n this.disabled = this.root_.hasAttribute(constants_1.strings.ARIA_DISABLED) && this.root_.getAttribute(constants_1.strings.ARIA_DISABLED) !== 'false';\n this.foundation_.setupTrackMarker();\n };\n MDCSlider.prototype.layout = function () {\n this.foundation_.layout();\n };\n MDCSlider.prototype.stepUp = function (amount) {\n if (amount === void 0) {\n amount = this.step || 1;\n }\n this.value += amount;\n };\n MDCSlider.prototype.stepDown = function (amount) {\n if (amount === void 0) {\n amount = this.step || 1;\n }\n this.value -= amount;\n };\n MDCSlider.prototype.parseFloat_ = function (str, defaultValue) {\n var num = parseFloat(str); // tslint:disable-line:ban\n var isNumeric = typeof num === 'number' && isFinite(num);\n return isNumeric ? num : defaultValue;\n };\n return MDCSlider;\n}(component_1.MDCComponent);\nexports.MDCSlider = MDCSlider;\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util = __importStar(__webpack_require__(57));\nexports.util = util;\n__export(__webpack_require__(135));\n__export(__webpack_require__(58));\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar index_1 = __webpack_require__(2);\nvar constants_1 = __webpack_require__(20);\nvar foundation_1 = __webpack_require__(58);\nvar util = __importStar(__webpack_require__(57));\nvar SURFACE_SELECTOR = constants_1.strings.SURFACE_SELECTOR,\n LABEL_SELECTOR = constants_1.strings.LABEL_SELECTOR,\n ACTION_SELECTOR = constants_1.strings.ACTION_SELECTOR,\n DISMISS_SELECTOR = constants_1.strings.DISMISS_SELECTOR,\n OPENING_EVENT = constants_1.strings.OPENING_EVENT,\n OPENED_EVENT = constants_1.strings.OPENED_EVENT,\n CLOSING_EVENT = constants_1.strings.CLOSING_EVENT,\n CLOSED_EVENT = constants_1.strings.CLOSED_EVENT;\nvar MDCSnackbar = /** @class */function (_super) {\n __extends(MDCSnackbar, _super);\n function MDCSnackbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCSnackbar.attachTo = function (root) {\n return new MDCSnackbar(root);\n };\n MDCSnackbar.prototype.initialize = function (announcerFactory) {\n if (announcerFactory === void 0) {\n announcerFactory = function announcerFactory() {\n return util.announce;\n };\n }\n this.announce_ = announcerFactory();\n };\n MDCSnackbar.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.surfaceEl_ = this.root_.querySelector(SURFACE_SELECTOR);\n this.labelEl_ = this.root_.querySelector(LABEL_SELECTOR);\n this.actionEl_ = this.root_.querySelector(ACTION_SELECTOR);\n this.handleKeyDown_ = function (evt) {\n return _this.foundation_.handleKeyDown(evt);\n };\n this.handleSurfaceClick_ = function (evt) {\n var target = evt.target;\n if (_this.isActionButton_(target)) {\n _this.foundation_.handleActionButtonClick(evt);\n } else if (_this.isActionIcon_(target)) {\n _this.foundation_.handleActionIconClick(evt);\n }\n };\n this.registerKeyDownHandler_(this.handleKeyDown_);\n this.registerSurfaceClickHandler_(this.handleSurfaceClick_);\n };\n MDCSnackbar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.deregisterKeyDownHandler_(this.handleKeyDown_);\n this.deregisterSurfaceClickHandler_(this.handleSurfaceClick_);\n };\n MDCSnackbar.prototype.open = function () {\n this.foundation_.open();\n };\n /**\n * @param reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the\n * `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom\n * client-specific values may also be used if desired.\n */\n MDCSnackbar.prototype.close = function (reason) {\n if (reason === void 0) {\n reason = '';\n }\n this.foundation_.close(reason);\n };\n MDCSnackbar.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n announce: function announce() {\n return _this.announce_(_this.labelEl_);\n },\n notifyClosed: function notifyClosed(reason) {\n return _this.emit(CLOSED_EVENT, reason ? { reason: reason } : {});\n },\n notifyClosing: function notifyClosing(reason) {\n return _this.emit(CLOSING_EVENT, reason ? { reason: reason } : {});\n },\n notifyOpened: function notifyOpened() {\n return _this.emit(OPENED_EVENT, {});\n },\n notifyOpening: function notifyOpening() {\n return _this.emit(OPENING_EVENT, {});\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n }\n };\n return new foundation_1.MDCSnackbarFoundation(adapter);\n };\n Object.defineProperty(MDCSnackbar.prototype, \"timeoutMs\", {\n get: function get() {\n return this.foundation_.getTimeoutMs();\n },\n set: function set(timeoutMs) {\n this.foundation_.setTimeoutMs(timeoutMs);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"closeOnEscape\", {\n get: function get() {\n return this.foundation_.getCloseOnEscape();\n },\n set: function set(closeOnEscape) {\n this.foundation_.setCloseOnEscape(closeOnEscape);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"isOpen\", {\n get: function get() {\n return this.foundation_.isOpen();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"labelText\", {\n get: function get() {\n // This property only returns null if the node is a document, DOCTYPE, or notation.\n // On Element nodes, it always returns a string.\n return this.labelEl_.textContent;\n },\n set: function set(labelText) {\n this.labelEl_.textContent = labelText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"actionButtonText\", {\n get: function get() {\n return this.actionEl_.textContent;\n },\n set: function set(actionButtonText) {\n this.actionEl_.textContent = actionButtonText;\n },\n enumerable: true,\n configurable: true\n });\n MDCSnackbar.prototype.registerKeyDownHandler_ = function (handler) {\n this.listen('keydown', handler);\n };\n MDCSnackbar.prototype.deregisterKeyDownHandler_ = function (handler) {\n this.unlisten('keydown', handler);\n };\n MDCSnackbar.prototype.registerSurfaceClickHandler_ = function (handler) {\n this.surfaceEl_.addEventListener('click', handler);\n };\n MDCSnackbar.prototype.deregisterSurfaceClickHandler_ = function (handler) {\n this.surfaceEl_.removeEventListener('click', handler);\n };\n MDCSnackbar.prototype.isActionButton_ = function (target) {\n return Boolean(index_1.ponyfill.closest(target, ACTION_SELECTOR));\n };\n MDCSnackbar.prototype.isActionIcon_ = function (target) {\n return Boolean(index_1.ponyfill.closest(target, DISMISS_SELECTOR));\n };\n return MDCSnackbar;\n}(component_1.MDCComponent);\nexports.MDCSnackbar = MDCSnackbar;\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(137));\n__export(__webpack_require__(59));\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar index_1 = __webpack_require__(2);\nvar index_2 = __webpack_require__(3);\nvar foundation_1 = __webpack_require__(59);\nvar MDCSwitch = /** @class */function (_super) {\n __extends(MDCSwitch, _super);\n function MDCSwitch() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ripple_ = _this.createRipple_();\n return _this;\n }\n MDCSwitch.attachTo = function (root) {\n return new MDCSwitch(root);\n };\n MDCSwitch.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.ripple_.destroy();\n this.nativeControl_.removeEventListener('change', this.changeHandler_);\n };\n MDCSwitch.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.changeHandler_ = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a;\n return (_a = _this.foundation_).handleChange.apply(_a, __spread(args));\n };\n this.nativeControl_.addEventListener('change', this.changeHandler_);\n // Sometimes the checked state of the input element is saved in the history.\n // The switch styling should match the checked state of the input element.\n // Do an initial sync between the native control and the foundation.\n this.checked = this.checked;\n };\n MDCSwitch.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n setNativeControlChecked: function setNativeControlChecked(checked) {\n return _this.nativeControl_.checked = checked;\n },\n setNativeControlDisabled: function setNativeControlDisabled(disabled) {\n return _this.nativeControl_.disabled = disabled;\n }\n };\n return new foundation_1.MDCSwitchFoundation(adapter);\n };\n Object.defineProperty(MDCSwitch.prototype, \"ripple\", {\n get: function get() {\n return this.ripple_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSwitch.prototype, \"checked\", {\n get: function get() {\n return this.nativeControl_.checked;\n },\n set: function set(checked) {\n this.foundation_.setChecked(checked);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSwitch.prototype, \"disabled\", {\n get: function get() {\n return this.nativeControl_.disabled;\n },\n set: function set(disabled) {\n this.foundation_.setDisabled(disabled);\n },\n enumerable: true,\n configurable: true\n });\n MDCSwitch.prototype.createRipple_ = function () {\n var _this = this;\n var RIPPLE_SURFACE_SELECTOR = foundation_1.MDCSwitchFoundation.strings.RIPPLE_SURFACE_SELECTOR;\n var rippleSurface = this.root_.querySelector(RIPPLE_SURFACE_SELECTOR);\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = __assign({}, index_2.MDCRipple.createAdapter(this), { addClass: function addClass(className) {\n return rippleSurface.classList.add(className);\n }, computeBoundingRect: function computeBoundingRect() {\n return rippleSurface.getBoundingClientRect();\n }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n _this.nativeControl_.removeEventListener(evtType, handler);\n }, isSurfaceActive: function isSurfaceActive() {\n return index_1.ponyfill.matches(_this.nativeControl_, ':active');\n }, isUnbounded: function isUnbounded() {\n return true;\n }, registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n _this.nativeControl_.addEventListener(evtType, handler);\n }, removeClass: function removeClass(className) {\n return rippleSurface.classList.remove(className);\n }, updateCssVariable: function updateCssVariable(varName, value) {\n rippleSurface.style.setProperty(varName, value);\n } });\n return new index_2.MDCRipple(this.root_, new index_2.MDCRippleFoundation(adapter));\n };\n Object.defineProperty(MDCSwitch.prototype, \"nativeControl_\", {\n get: function get() {\n var NATIVE_CONTROL_SELECTOR = foundation_1.MDCSwitchFoundation.strings.NATIVE_CONTROL_SELECTOR;\n return this.root_.querySelector(NATIVE_CONTROL_SELECTOR);\n },\n enumerable: true,\n configurable: true\n });\n return MDCSwitch;\n}(component_1.MDCComponent);\nexports.MDCSwitch = MDCSwitch;\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** CSS classes used by the switch. */\nvar cssClasses = {\n /** Class used for a switch that is in the \"checked\" (on) position. */\n CHECKED: 'mdc-switch--checked',\n /** Class used for a switch that is disabled. */\n DISABLED: 'mdc-switch--disabled'\n};\nexports.cssClasses = cssClasses;\n/** String constants used by the switch. */\nvar strings = {\n /** A CSS selector used to locate the native HTML control for the switch. */\n NATIVE_CONTROL_SELECTOR: '.mdc-switch__native-control',\n /** A CSS selector used to locate the ripple surface element for the switch. */\n RIPPLE_SURFACE_SELECTOR: '.mdc-switch__thumb-underlay'\n};\nexports.strings = strings;\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(140));\n__export(__webpack_require__(69));\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar index_1 = __webpack_require__(60);\nvar index_2 = __webpack_require__(64);\nvar foundation_1 = __webpack_require__(69);\nvar strings = foundation_1.MDCTabBarFoundation.strings;\nvar tabIdCounter = 0;\nvar MDCTabBar = /** @class */function (_super) {\n __extends(MDCTabBar, _super);\n function MDCTabBar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTabBar.attachTo = function (root) {\n return new MDCTabBar(root);\n };\n Object.defineProperty(MDCTabBar.prototype, \"focusOnActivate\", {\n set: function set(focusOnActivate) {\n this.tabList_.forEach(function (tab) {\n return tab.focusOnActivate = focusOnActivate;\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabBar.prototype, \"useAutomaticActivation\", {\n set: function set(useAutomaticActivation) {\n this.foundation_.setUseAutomaticActivation(useAutomaticActivation);\n },\n enumerable: true,\n configurable: true\n });\n MDCTabBar.prototype.initialize = function (tabFactory, tabScrollerFactory) {\n if (tabFactory === void 0) {\n tabFactory = function tabFactory(el) {\n return new index_2.MDCTab(el);\n };\n }\n if (tabScrollerFactory === void 0) {\n tabScrollerFactory = function tabScrollerFactory(el) {\n return new index_1.MDCTabScroller(el);\n };\n }\n this.tabList_ = this.instantiateTabs_(tabFactory);\n this.tabScroller_ = this.instantiateTabScroller_(tabScrollerFactory);\n };\n MDCTabBar.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.handleTabInteraction_ = function (evt) {\n return _this.foundation_.handleTabInteraction(evt);\n };\n this.handleKeyDown_ = function (evt) {\n return _this.foundation_.handleKeyDown(evt);\n };\n this.listen(index_2.MDCTabFoundation.strings.INTERACTED_EVENT, this.handleTabInteraction_);\n this.listen('keydown', this.handleKeyDown_);\n for (var i = 0; i < this.tabList_.length; i++) {\n if (this.tabList_[i].active) {\n this.scrollIntoView(i);\n break;\n }\n }\n };\n MDCTabBar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unlisten(index_2.MDCTabFoundation.strings.INTERACTED_EVENT, this.handleTabInteraction_);\n this.unlisten('keydown', this.handleKeyDown_);\n this.tabList_.forEach(function (tab) {\n return tab.destroy();\n });\n if (this.tabScroller_) {\n this.tabScroller_.destroy();\n }\n };\n MDCTabBar.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n scrollTo: function scrollTo(scrollX) {\n return _this.tabScroller_.scrollTo(scrollX);\n },\n incrementScroll: function incrementScroll(scrollXIncrement) {\n return _this.tabScroller_.incrementScroll(scrollXIncrement);\n },\n getScrollPosition: function getScrollPosition() {\n return _this.tabScroller_.getScrollPosition();\n },\n getScrollContentWidth: function getScrollContentWidth() {\n return _this.tabScroller_.getScrollContentWidth();\n },\n getOffsetWidth: function getOffsetWidth() {\n return _this.root_.offsetWidth;\n },\n isRTL: function isRTL() {\n return window.getComputedStyle(_this.root_).getPropertyValue('direction') === 'rtl';\n },\n setActiveTab: function setActiveTab(index) {\n return _this.foundation_.activateTab(index);\n },\n activateTabAtIndex: function activateTabAtIndex(index, clientRect) {\n return _this.tabList_[index].activate(clientRect);\n },\n deactivateTabAtIndex: function deactivateTabAtIndex(index) {\n return _this.tabList_[index].deactivate();\n },\n focusTabAtIndex: function focusTabAtIndex(index) {\n return _this.tabList_[index].focus();\n },\n getTabIndicatorClientRectAtIndex: function getTabIndicatorClientRectAtIndex(index) {\n return _this.tabList_[index].computeIndicatorClientRect();\n },\n getTabDimensionsAtIndex: function getTabDimensionsAtIndex(index) {\n return _this.tabList_[index].computeDimensions();\n },\n getPreviousActiveTabIndex: function getPreviousActiveTabIndex() {\n for (var i = 0; i < _this.tabList_.length; i++) {\n if (_this.tabList_[i].active) {\n return i;\n }\n }\n return -1;\n },\n getFocusedTabIndex: function getFocusedTabIndex() {\n var tabElements = _this.getTabElements_();\n var activeElement = document.activeElement;\n return tabElements.indexOf(activeElement);\n },\n getIndexOfTabById: function getIndexOfTabById(id) {\n for (var i = 0; i < _this.tabList_.length; i++) {\n if (_this.tabList_[i].id === id) {\n return i;\n }\n }\n return -1;\n },\n getTabListLength: function getTabListLength() {\n return _this.tabList_.length;\n },\n notifyTabActivated: function notifyTabActivated(index) {\n return _this.emit(strings.TAB_ACTIVATED_EVENT, { index: index }, true);\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCTabBarFoundation(adapter);\n };\n /**\n * Activates the tab at the given index\n * @param index The index of the tab\n */\n MDCTabBar.prototype.activateTab = function (index) {\n this.foundation_.activateTab(index);\n };\n /**\n * Scrolls the tab at the given index into view\n * @param index THe index of the tab\n */\n MDCTabBar.prototype.scrollIntoView = function (index) {\n this.foundation_.scrollIntoView(index);\n };\n /**\n * Returns all the tab elements in a nice clean array\n */\n MDCTabBar.prototype.getTabElements_ = function () {\n return [].slice.call(this.root_.querySelectorAll(strings.TAB_SELECTOR));\n };\n /**\n * Instantiates tab components on all child tab elements\n */\n MDCTabBar.prototype.instantiateTabs_ = function (tabFactory) {\n return this.getTabElements_().map(function (el) {\n el.id = el.id || \"mdc-tab-\" + ++tabIdCounter;\n return tabFactory(el);\n });\n };\n /**\n * Instantiates tab scroller component on the child tab scroller element\n */\n MDCTabBar.prototype.instantiateTabScroller_ = function (tabScrollerFactory) {\n var tabScrollerElement = this.root_.querySelector(strings.TAB_SCROLLER_SELECTOR);\n if (tabScrollerElement) {\n return tabScrollerFactory(tabScrollerElement);\n }\n return null;\n };\n return MDCTabBar;\n}(component_1.MDCComponent);\nexports.MDCTabBar = MDCTabBar;\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar index_1 = __webpack_require__(2);\nvar foundation_1 = __webpack_require__(63);\nvar util = __importStar(__webpack_require__(61));\nvar MDCTabScroller = /** @class */function (_super) {\n __extends(MDCTabScroller, _super);\n function MDCTabScroller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTabScroller.attachTo = function (root) {\n return new MDCTabScroller(root);\n };\n MDCTabScroller.prototype.initialize = function () {\n this.area_ = this.root_.querySelector(foundation_1.MDCTabScrollerFoundation.strings.AREA_SELECTOR);\n this.content_ = this.root_.querySelector(foundation_1.MDCTabScrollerFoundation.strings.CONTENT_SELECTOR);\n };\n MDCTabScroller.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.handleInteraction_ = function () {\n return _this.foundation_.handleInteraction();\n };\n this.handleTransitionEnd_ = function (evt) {\n return _this.foundation_.handleTransitionEnd(evt);\n };\n this.area_.addEventListener('wheel', this.handleInteraction_);\n this.area_.addEventListener('touchstart', this.handleInteraction_);\n this.area_.addEventListener('pointerdown', this.handleInteraction_);\n this.area_.addEventListener('mousedown', this.handleInteraction_);\n this.area_.addEventListener('keydown', this.handleInteraction_);\n this.content_.addEventListener('transitionend', this.handleTransitionEnd_);\n };\n MDCTabScroller.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.area_.removeEventListener('wheel', this.handleInteraction_);\n this.area_.removeEventListener('touchstart', this.handleInteraction_);\n this.area_.removeEventListener('pointerdown', this.handleInteraction_);\n this.area_.removeEventListener('mousedown', this.handleInteraction_);\n this.area_.removeEventListener('keydown', this.handleInteraction_);\n this.content_.removeEventListener('transitionend', this.handleTransitionEnd_);\n };\n MDCTabScroller.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n eventTargetMatchesSelector: function eventTargetMatchesSelector(evtTarget, selector) {\n return index_1.ponyfill.matches(evtTarget, selector);\n },\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n addScrollAreaClass: function addScrollAreaClass(className) {\n return _this.area_.classList.add(className);\n },\n setScrollAreaStyleProperty: function setScrollAreaStyleProperty(prop, value) {\n return _this.area_.style.setProperty(prop, value);\n },\n setScrollContentStyleProperty: function setScrollContentStyleProperty(prop, value) {\n return _this.content_.style.setProperty(prop, value);\n },\n getScrollContentStyleValue: function getScrollContentStyleValue(propName) {\n return window.getComputedStyle(_this.content_).getPropertyValue(propName);\n },\n setScrollAreaScrollLeft: function setScrollAreaScrollLeft(scrollX) {\n return _this.area_.scrollLeft = scrollX;\n },\n getScrollAreaScrollLeft: function getScrollAreaScrollLeft() {\n return _this.area_.scrollLeft;\n },\n getScrollContentOffsetWidth: function getScrollContentOffsetWidth() {\n return _this.content_.offsetWidth;\n },\n getScrollAreaOffsetWidth: function getScrollAreaOffsetWidth() {\n return _this.area_.offsetWidth;\n },\n computeScrollAreaClientRect: function computeScrollAreaClientRect() {\n return _this.area_.getBoundingClientRect();\n },\n computeScrollContentClientRect: function computeScrollContentClientRect() {\n return _this.content_.getBoundingClientRect();\n },\n computeHorizontalScrollbarHeight: function computeHorizontalScrollbarHeight() {\n return util.computeHorizontalScrollbarHeight(document);\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCTabScrollerFoundation(adapter);\n };\n /**\n * Returns the current visual scroll position\n */\n MDCTabScroller.prototype.getScrollPosition = function () {\n return this.foundation_.getScrollPosition();\n };\n /**\n * Returns the width of the scroll content\n */\n MDCTabScroller.prototype.getScrollContentWidth = function () {\n return this.content_.offsetWidth;\n };\n /**\n * Increments the scroll value by the given amount\n * @param scrollXIncrement The pixel value by which to increment the scroll value\n */\n MDCTabScroller.prototype.incrementScroll = function (scrollXIncrement) {\n this.foundation_.incrementScroll(scrollXIncrement);\n };\n /**\n * Scrolls to the given pixel position\n * @param scrollX The pixel value to scroll to\n */\n MDCTabScroller.prototype.scrollTo = function (scrollX) {\n this.foundation_.scrollTo(scrollX);\n };\n return MDCTabScroller;\n}(component_1.MDCComponent);\nexports.MDCTabScroller = MDCTabScroller;\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rtl_scroller_1 = __webpack_require__(21);\nvar MDCTabScrollerRTLDefault = /** @class */function (_super) {\n __extends(MDCTabScrollerRTLDefault, _super);\n function MDCTabScrollerRTLDefault() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTabScrollerRTLDefault.prototype.getScrollPositionRTL = function () {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n var right = this.calculateScrollEdges_().right;\n // Scroll values on most browsers are ints instead of floats so we round\n return Math.round(right - currentScrollLeft);\n };\n MDCTabScrollerRTLDefault.prototype.scrollToRTL = function (scrollX) {\n var edges = this.calculateScrollEdges_();\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(edges.right - scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft\n };\n };\n MDCTabScrollerRTLDefault.prototype.incrementScrollRTL = function (scrollX) {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft\n };\n };\n MDCTabScrollerRTLDefault.prototype.getAnimatingScrollPosition = function (scrollX) {\n return scrollX;\n };\n MDCTabScrollerRTLDefault.prototype.calculateScrollEdges_ = function () {\n var contentWidth = this.adapter_.getScrollContentOffsetWidth();\n var rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return {\n left: 0,\n right: contentWidth - rootWidth\n };\n };\n MDCTabScrollerRTLDefault.prototype.clampScrollValue_ = function (scrollX) {\n var edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.left, scrollX), edges.right);\n };\n return MDCTabScrollerRTLDefault;\n}(rtl_scroller_1.MDCTabScrollerRTL);\nexports.MDCTabScrollerRTLDefault = MDCTabScrollerRTLDefault;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTabScrollerRTLDefault;\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rtl_scroller_1 = __webpack_require__(21);\nvar MDCTabScrollerRTLNegative = /** @class */function (_super) {\n __extends(MDCTabScrollerRTLNegative, _super);\n function MDCTabScrollerRTLNegative() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTabScrollerRTLNegative.prototype.getScrollPositionRTL = function (translateX) {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n return Math.round(translateX - currentScrollLeft);\n };\n MDCTabScrollerRTLNegative.prototype.scrollToRTL = function (scrollX) {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(-scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft\n };\n };\n MDCTabScrollerRTLNegative.prototype.incrementScrollRTL = function (scrollX) {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft\n };\n };\n MDCTabScrollerRTLNegative.prototype.getAnimatingScrollPosition = function (scrollX, translateX) {\n return scrollX - translateX;\n };\n MDCTabScrollerRTLNegative.prototype.calculateScrollEdges_ = function () {\n var contentWidth = this.adapter_.getScrollContentOffsetWidth();\n var rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return {\n left: rootWidth - contentWidth,\n right: 0\n };\n };\n MDCTabScrollerRTLNegative.prototype.clampScrollValue_ = function (scrollX) {\n var edges = this.calculateScrollEdges_();\n return Math.max(Math.min(edges.right, scrollX), edges.left);\n };\n return MDCTabScrollerRTLNegative;\n}(rtl_scroller_1.MDCTabScrollerRTL);\nexports.MDCTabScrollerRTLNegative = MDCTabScrollerRTLNegative;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTabScrollerRTLNegative;\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rtl_scroller_1 = __webpack_require__(21);\nvar MDCTabScrollerRTLReverse = /** @class */function (_super) {\n __extends(MDCTabScrollerRTLReverse, _super);\n function MDCTabScrollerRTLReverse() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTabScrollerRTLReverse.prototype.getScrollPositionRTL = function (translateX) {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n // Scroll values on most browsers are ints instead of floats so we round\n return Math.round(currentScrollLeft - translateX);\n };\n MDCTabScrollerRTLReverse.prototype.scrollToRTL = function (scrollX) {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: currentScrollLeft - clampedScrollLeft\n };\n };\n MDCTabScrollerRTLReverse.prototype.incrementScrollRTL = function (scrollX) {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft + scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: currentScrollLeft - clampedScrollLeft\n };\n };\n MDCTabScrollerRTLReverse.prototype.getAnimatingScrollPosition = function (scrollX, translateX) {\n return scrollX + translateX;\n };\n MDCTabScrollerRTLReverse.prototype.calculateScrollEdges_ = function () {\n var contentWidth = this.adapter_.getScrollContentOffsetWidth();\n var rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return {\n left: contentWidth - rootWidth,\n right: 0\n };\n };\n MDCTabScrollerRTLReverse.prototype.clampScrollValue_ = function (scrollX) {\n var edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.right, scrollX), edges.left);\n };\n return MDCTabScrollerRTLReverse;\n}(rtl_scroller_1.MDCTabScrollerRTL);\nexports.MDCTabScrollerRTLReverse = MDCTabScrollerRTLReverse;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTabScrollerRTLReverse;\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar index_1 = __webpack_require__(3);\nvar index_2 = __webpack_require__(65);\nvar foundation_1 = __webpack_require__(68);\nvar MDCTab = /** @class */function (_super) {\n __extends(MDCTab, _super);\n function MDCTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTab.attachTo = function (root) {\n return new MDCTab(root);\n };\n MDCTab.prototype.initialize = function (rippleFactory, tabIndicatorFactory) {\n if (rippleFactory === void 0) {\n rippleFactory = function rippleFactory(el, foundation) {\n return new index_1.MDCRipple(el, foundation);\n };\n }\n if (tabIndicatorFactory === void 0) {\n tabIndicatorFactory = function tabIndicatorFactory(el) {\n return new index_2.MDCTabIndicator(el);\n };\n }\n this.id = this.root_.id;\n var rippleSurface = this.root_.querySelector(foundation_1.MDCTabFoundation.strings.RIPPLE_SELECTOR);\n var rippleAdapter = __assign({}, index_1.MDCRipple.createAdapter(this), { addClass: function addClass(className) {\n return rippleSurface.classList.add(className);\n }, removeClass: function removeClass(className) {\n return rippleSurface.classList.remove(className);\n }, updateCssVariable: function updateCssVariable(varName, value) {\n return rippleSurface.style.setProperty(varName, value);\n } });\n var rippleFoundation = new index_1.MDCRippleFoundation(rippleAdapter);\n this.ripple_ = rippleFactory(this.root_, rippleFoundation);\n var tabIndicatorElement = this.root_.querySelector(foundation_1.MDCTabFoundation.strings.TAB_INDICATOR_SELECTOR);\n this.tabIndicator_ = tabIndicatorFactory(tabIndicatorElement);\n this.content_ = this.root_.querySelector(foundation_1.MDCTabFoundation.strings.CONTENT_SELECTOR);\n };\n MDCTab.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.handleClick_ = function () {\n return _this.foundation_.handleClick();\n };\n this.listen('click', this.handleClick_);\n };\n MDCTab.prototype.destroy = function () {\n this.unlisten('click', this.handleClick_);\n this.ripple_.destroy();\n _super.prototype.destroy.call(this);\n };\n MDCTab.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n setAttr: function setAttr(attr, value) {\n return _this.root_.setAttribute(attr, value);\n },\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n activateIndicator: function activateIndicator(previousIndicatorClientRect) {\n return _this.tabIndicator_.activate(previousIndicatorClientRect);\n },\n deactivateIndicator: function deactivateIndicator() {\n return _this.tabIndicator_.deactivate();\n },\n notifyInteracted: function notifyInteracted() {\n return _this.emit(foundation_1.MDCTabFoundation.strings.INTERACTED_EVENT, { tabId: _this.id }, true /* bubble */);\n },\n getOffsetLeft: function getOffsetLeft() {\n return _this.root_.offsetLeft;\n },\n getOffsetWidth: function getOffsetWidth() {\n return _this.root_.offsetWidth;\n },\n getContentOffsetLeft: function getContentOffsetLeft() {\n return _this.content_.offsetLeft;\n },\n getContentOffsetWidth: function getContentOffsetWidth() {\n return _this.content_.offsetWidth;\n },\n focus: function focus() {\n return _this.root_.focus();\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCTabFoundation(adapter);\n };\n Object.defineProperty(MDCTab.prototype, \"active\", {\n /**\n * Getter for the active state of the tab\n */\n get: function get() {\n return this.foundation_.isActive();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTab.prototype, \"focusOnActivate\", {\n set: function set(focusOnActivate) {\n this.foundation_.setFocusOnActivate(focusOnActivate);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Activates the tab\n */\n MDCTab.prototype.activate = function (computeIndicatorClientRect) {\n this.foundation_.activate(computeIndicatorClientRect);\n };\n /**\n * Deactivates the tab\n */\n MDCTab.prototype.deactivate = function () {\n this.foundation_.deactivate();\n };\n /**\n * Returns the indicator's client rect\n */\n MDCTab.prototype.computeIndicatorClientRect = function () {\n return this.tabIndicator_.computeContentClientRect();\n };\n MDCTab.prototype.computeDimensions = function () {\n return this.foundation_.computeDimensions();\n };\n /**\n * Focuses the tab\n */\n MDCTab.prototype.focus = function () {\n this.root_.focus();\n };\n return MDCTab;\n}(component_1.MDCComponent);\nexports.MDCTab = MDCTab;\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar fading_foundation_1 = __webpack_require__(66);\nvar foundation_1 = __webpack_require__(9);\nvar sliding_foundation_1 = __webpack_require__(67);\nvar MDCTabIndicator = /** @class */function (_super) {\n __extends(MDCTabIndicator, _super);\n function MDCTabIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTabIndicator.attachTo = function (root) {\n return new MDCTabIndicator(root);\n };\n MDCTabIndicator.prototype.initialize = function () {\n this.content_ = this.root_.querySelector(foundation_1.MDCTabIndicatorFoundation.strings.CONTENT_SELECTOR);\n };\n MDCTabIndicator.prototype.computeContentClientRect = function () {\n return this.foundation_.computeContentClientRect();\n };\n MDCTabIndicator.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n computeContentClientRect: function computeContentClientRect() {\n return _this.content_.getBoundingClientRect();\n },\n setContentStyleProperty: function setContentStyleProperty(prop, value) {\n return _this.content_.style.setProperty(prop, value);\n }\n };\n // tslint:enable:object-literal-sort-keys\n if (this.root_.classList.contains(foundation_1.MDCTabIndicatorFoundation.cssClasses.FADE)) {\n return new fading_foundation_1.MDCFadingTabIndicatorFoundation(adapter);\n }\n // Default to the sliding indicator\n return new sliding_foundation_1.MDCSlidingTabIndicatorFoundation(adapter);\n };\n MDCTabIndicator.prototype.activate = function (previousIndicatorClientRect) {\n this.foundation_.activate(previousIndicatorClientRect);\n };\n MDCTabIndicator.prototype.deactivate = function () {\n this.foundation_.deactivate();\n };\n return MDCTabIndicator;\n}(component_1.MDCComponent);\nexports.MDCTabIndicator = MDCTabIndicator;\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n ACTIVE: 'mdc-tab-indicator--active',\n FADE: 'mdc-tab-indicator--fade',\n NO_TRANSITION: 'mdc-tab-indicator--no-transition'\n};\nexports.cssClasses = cssClasses;\nvar strings = {\n CONTENT_SELECTOR: '.mdc-tab-indicator__content'\n};\nexports.strings = strings;\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n ACTIVE: 'mdc-tab--active'\n};\nexports.cssClasses = cssClasses;\nvar strings = {\n ARIA_SELECTED: 'aria-selected',\n CONTENT_SELECTOR: '.mdc-tab__content',\n INTERACTED_EVENT: 'MDCTab:interacted',\n RIPPLE_SELECTOR: '.mdc-tab__ripple',\n TABINDEX: 'tabIndex',\n TAB_INDICATOR_SELECTOR: '.mdc-tab-indicator'\n};\nexports.strings = strings;\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar strings = {\n ARROW_LEFT_KEY: 'ArrowLeft',\n ARROW_RIGHT_KEY: 'ArrowRight',\n END_KEY: 'End',\n ENTER_KEY: 'Enter',\n HOME_KEY: 'Home',\n SPACE_KEY: 'Space',\n TAB_ACTIVATED_EVENT: 'MDCTabBar:activated',\n TAB_SCROLLER_SELECTOR: '.mdc-tab-scroller',\n TAB_SELECTOR: '.mdc-tab'\n};\nexports.strings = strings;\nvar numbers = {\n ARROW_LEFT_KEYCODE: 37,\n ARROW_RIGHT_KEYCODE: 39,\n END_KEYCODE: 35,\n ENTER_KEYCODE: 13,\n EXTRA_SCROLL_AMOUNT: 20,\n HOME_KEYCODE: 36,\n SPACE_KEYCODE: 32\n};\nexports.numbers = numbers;\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(151));\n__export(__webpack_require__(73));\n__export(__webpack_require__(70));\n__export(__webpack_require__(74));\n__export(__webpack_require__(76));\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar ponyfill = __importStar(__webpack_require__(11));\nvar index_1 = __webpack_require__(15);\nvar index_2 = __webpack_require__(17);\nvar index_3 = __webpack_require__(19);\nvar component_2 = __webpack_require__(4);\nvar foundation_1 = __webpack_require__(13);\nvar index_4 = __webpack_require__(70);\nvar constants_1 = __webpack_require__(72);\nvar foundation_2 = __webpack_require__(73);\nvar index_5 = __webpack_require__(74);\nvar index_6 = __webpack_require__(76);\nvar MDCTextField = /** @class */function (_super) {\n __extends(MDCTextField, _super);\n function MDCTextField() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTextField.attachTo = function (root) {\n return new MDCTextField(root);\n };\n MDCTextField.prototype.initialize = function (rippleFactory, lineRippleFactory, helperTextFactory, characterCounterFactory, iconFactory, labelFactory, outlineFactory) {\n if (rippleFactory === void 0) {\n rippleFactory = function rippleFactory(el, foundation) {\n return new component_2.MDCRipple(el, foundation);\n };\n }\n if (lineRippleFactory === void 0) {\n lineRippleFactory = function lineRippleFactory(el) {\n return new index_2.MDCLineRipple(el);\n };\n }\n if (helperTextFactory === void 0) {\n helperTextFactory = function helperTextFactory(el) {\n return new index_5.MDCTextFieldHelperText(el);\n };\n }\n if (characterCounterFactory === void 0) {\n characterCounterFactory = function characterCounterFactory(el) {\n return new index_4.MDCTextFieldCharacterCounter(el);\n };\n }\n if (iconFactory === void 0) {\n iconFactory = function iconFactory(el) {\n return new index_6.MDCTextFieldIcon(el);\n };\n }\n if (labelFactory === void 0) {\n labelFactory = function labelFactory(el) {\n return new index_1.MDCFloatingLabel(el);\n };\n }\n if (outlineFactory === void 0) {\n outlineFactory = function outlineFactory(el) {\n return new index_3.MDCNotchedOutline(el);\n };\n }\n this.input_ = this.root_.querySelector(constants_1.strings.INPUT_SELECTOR);\n var labelElement = this.root_.querySelector(constants_1.strings.LABEL_SELECTOR);\n this.label_ = labelElement ? labelFactory(labelElement) : null;\n var lineRippleElement = this.root_.querySelector(constants_1.strings.LINE_RIPPLE_SELECTOR);\n this.lineRipple_ = lineRippleElement ? lineRippleFactory(lineRippleElement) : null;\n var outlineElement = this.root_.querySelector(constants_1.strings.OUTLINE_SELECTOR);\n this.outline_ = outlineElement ? outlineFactory(outlineElement) : null;\n // Helper text\n var helperTextStrings = index_5.MDCTextFieldHelperTextFoundation.strings;\n var nextElementSibling = this.root_.nextElementSibling;\n var hasHelperLine = nextElementSibling && nextElementSibling.classList.contains(constants_1.cssClasses.HELPER_LINE);\n var helperTextEl = hasHelperLine && nextElementSibling && nextElementSibling.querySelector(helperTextStrings.ROOT_SELECTOR);\n this.helperText_ = helperTextEl ? helperTextFactory(helperTextEl) : null;\n // Character counter\n var characterCounterStrings = index_4.MDCTextFieldCharacterCounterFoundation.strings;\n var characterCounterEl = this.root_.querySelector(characterCounterStrings.ROOT_SELECTOR);\n // If character counter is not found in root element search in sibling element.\n if (!characterCounterEl && hasHelperLine && nextElementSibling) {\n characterCounterEl = nextElementSibling.querySelector(characterCounterStrings.ROOT_SELECTOR);\n }\n this.characterCounter_ = characterCounterEl ? characterCounterFactory(characterCounterEl) : null;\n this.leadingIcon_ = null;\n this.trailingIcon_ = null;\n var iconElements = this.root_.querySelectorAll(constants_1.strings.ICON_SELECTOR);\n if (iconElements.length > 0) {\n if (iconElements.length > 1) {\n // Has both icons.\n this.leadingIcon_ = iconFactory(iconElements[0]);\n this.trailingIcon_ = iconFactory(iconElements[1]);\n } else {\n if (this.root_.classList.contains(constants_1.cssClasses.WITH_LEADING_ICON)) {\n this.leadingIcon_ = iconFactory(iconElements[0]);\n } else {\n this.trailingIcon_ = iconFactory(iconElements[0]);\n }\n }\n }\n this.ripple = this.createRipple_(rippleFactory);\n };\n MDCTextField.prototype.destroy = function () {\n if (this.ripple) {\n this.ripple.destroy();\n }\n if (this.lineRipple_) {\n this.lineRipple_.destroy();\n }\n if (this.helperText_) {\n this.helperText_.destroy();\n }\n if (this.characterCounter_) {\n this.characterCounter_.destroy();\n }\n if (this.leadingIcon_) {\n this.leadingIcon_.destroy();\n }\n if (this.trailingIcon_) {\n this.trailingIcon_.destroy();\n }\n if (this.label_) {\n this.label_.destroy();\n }\n if (this.outline_) {\n this.outline_.destroy();\n }\n _super.prototype.destroy.call(this);\n };\n /**\n * Initializes the Text Field's internal state based on the environment's\n * state.\n */\n MDCTextField.prototype.initialSyncWithDOM = function () {\n this.disabled = this.input_.disabled;\n };\n Object.defineProperty(MDCTextField.prototype, \"value\", {\n get: function get() {\n return this.foundation_.getValue();\n },\n /**\n * @param value The value to set on the input.\n */\n set: function set(value) {\n this.foundation_.setValue(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"disabled\", {\n get: function get() {\n return this.foundation_.isDisabled();\n },\n /**\n * @param disabled Sets the Text Field disabled or enabled.\n */\n set: function set(disabled) {\n this.foundation_.setDisabled(disabled);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"valid\", {\n get: function get() {\n return this.foundation_.isValid();\n },\n /**\n * @param valid Sets the Text Field valid or invalid.\n */\n set: function set(valid) {\n this.foundation_.setValid(valid);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"required\", {\n get: function get() {\n return this.input_.required;\n },\n /**\n * @param required Sets the Text Field to required.\n */\n set: function set(required) {\n this.input_.required = required;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"pattern\", {\n get: function get() {\n return this.input_.pattern;\n },\n /**\n * @param pattern Sets the input element's validation pattern.\n */\n set: function set(pattern) {\n this.input_.pattern = pattern;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"minLength\", {\n get: function get() {\n return this.input_.minLength;\n },\n /**\n * @param minLength Sets the input element's minLength.\n */\n set: function set(minLength) {\n this.input_.minLength = minLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"maxLength\", {\n get: function get() {\n return this.input_.maxLength;\n },\n /**\n * @param maxLength Sets the input element's maxLength.\n */\n set: function set(maxLength) {\n // Chrome throws exception if maxLength is set to a value less than zero\n if (maxLength < 0) {\n this.input_.removeAttribute('maxLength');\n } else {\n this.input_.maxLength = maxLength;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"min\", {\n get: function get() {\n return this.input_.min;\n },\n /**\n * @param min Sets the input element's min.\n */\n set: function set(min) {\n this.input_.min = min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"max\", {\n get: function get() {\n return this.input_.max;\n },\n /**\n * @param max Sets the input element's max.\n */\n set: function set(max) {\n this.input_.max = max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"step\", {\n get: function get() {\n return this.input_.step;\n },\n /**\n * @param step Sets the input element's step.\n */\n set: function set(step) {\n this.input_.step = step;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"helperTextContent\", {\n /**\n * Sets the helper text element content.\n */\n set: function set(content) {\n this.foundation_.setHelperTextContent(content);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"leadingIconAriaLabel\", {\n /**\n * Sets the aria label of the leading icon.\n */\n set: function set(label) {\n this.foundation_.setLeadingIconAriaLabel(label);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"leadingIconContent\", {\n /**\n * Sets the text content of the leading icon.\n */\n set: function set(content) {\n this.foundation_.setLeadingIconContent(content);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"trailingIconAriaLabel\", {\n /**\n * Sets the aria label of the trailing icon.\n */\n set: function set(label) {\n this.foundation_.setTrailingIconAriaLabel(label);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"trailingIconContent\", {\n /**\n * Sets the text content of the trailing icon.\n */\n set: function set(content) {\n this.foundation_.setTrailingIconContent(content);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"useNativeValidation\", {\n /**\n * Enables or disables the use of native validation. Use this for custom validation.\n * @param useNativeValidation Set this to false to ignore native input validation.\n */\n set: function set(useNativeValidation) {\n this.foundation_.setUseNativeValidation(useNativeValidation);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Focuses the input element.\n */\n MDCTextField.prototype.focus = function () {\n this.input_.focus();\n };\n /**\n * Recomputes the outline SVG path for the outline element.\n */\n MDCTextField.prototype.layout = function () {\n var openNotch = this.foundation_.shouldFloat;\n this.foundation_.notchOutline(openNotch);\n };\n MDCTextField.prototype.getDefaultFoundation = function () {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = __assign({}, this.getRootAdapterMethods_(), this.getInputAdapterMethods_(), this.getLabelAdapterMethods_(), this.getLineRippleAdapterMethods_(), this.getOutlineAdapterMethods_());\n // tslint:enable:object-literal-sort-keys\n return new foundation_2.MDCTextFieldFoundation(adapter, this.getFoundationMap_());\n };\n MDCTextField.prototype.getRootAdapterMethods_ = function () {\n var _this = this;\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n registerTextFieldInteractionHandler: function registerTextFieldInteractionHandler(evtType, handler) {\n return _this.listen(evtType, handler);\n },\n deregisterTextFieldInteractionHandler: function deregisterTextFieldInteractionHandler(evtType, handler) {\n return _this.unlisten(evtType, handler);\n },\n registerValidationAttributeChangeHandler: function registerValidationAttributeChangeHandler(handler) {\n var getAttributesList = function getAttributesList(mutationsList) {\n return mutationsList.map(function (mutation) {\n return mutation.attributeName;\n }).filter(function (attributeName) {\n return attributeName;\n });\n };\n var observer = new MutationObserver(function (mutationsList) {\n return handler(getAttributesList(mutationsList));\n });\n var config = { attributes: true };\n observer.observe(_this.input_, config);\n return observer;\n },\n deregisterValidationAttributeChangeHandler: function deregisterValidationAttributeChangeHandler(observer) {\n return observer.disconnect();\n }\n };\n // tslint:enable:object-literal-sort-keys\n };\n MDCTextField.prototype.getInputAdapterMethods_ = function () {\n var _this = this;\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n getNativeInput: function getNativeInput() {\n return _this.input_;\n },\n isFocused: function isFocused() {\n return document.activeElement === _this.input_;\n },\n registerInputInteractionHandler: function registerInputInteractionHandler(evtType, handler) {\n return _this.input_.addEventListener(evtType, handler);\n },\n deregisterInputInteractionHandler: function deregisterInputInteractionHandler(evtType, handler) {\n return _this.input_.removeEventListener(evtType, handler);\n }\n };\n // tslint:enable:object-literal-sort-keys\n };\n MDCTextField.prototype.getLabelAdapterMethods_ = function () {\n var _this = this;\n return {\n floatLabel: function floatLabel(shouldFloat) {\n return _this.label_ && _this.label_.float(shouldFloat);\n },\n getLabelWidth: function getLabelWidth() {\n return _this.label_ ? _this.label_.getWidth() : 0;\n },\n hasLabel: function hasLabel() {\n return Boolean(_this.label_);\n },\n shakeLabel: function shakeLabel(shouldShake) {\n return _this.label_ && _this.label_.shake(shouldShake);\n }\n };\n };\n MDCTextField.prototype.getLineRippleAdapterMethods_ = function () {\n var _this = this;\n return {\n activateLineRipple: function activateLineRipple() {\n if (_this.lineRipple_) {\n _this.lineRipple_.activate();\n }\n },\n deactivateLineRipple: function deactivateLineRipple() {\n if (_this.lineRipple_) {\n _this.lineRipple_.deactivate();\n }\n },\n setLineRippleTransformOrigin: function setLineRippleTransformOrigin(normalizedX) {\n if (_this.lineRipple_) {\n _this.lineRipple_.setRippleCenter(normalizedX);\n }\n }\n };\n };\n MDCTextField.prototype.getOutlineAdapterMethods_ = function () {\n var _this = this;\n return {\n closeOutline: function closeOutline() {\n return _this.outline_ && _this.outline_.closeNotch();\n },\n hasOutline: function hasOutline() {\n return Boolean(_this.outline_);\n },\n notchOutline: function notchOutline(labelWidth) {\n return _this.outline_ && _this.outline_.notch(labelWidth);\n }\n };\n };\n /**\n * @return A map of all subcomponents to subfoundations.\n */\n MDCTextField.prototype.getFoundationMap_ = function () {\n return {\n characterCounter: this.characterCounter_ ? this.characterCounter_.foundation : undefined,\n helperText: this.helperText_ ? this.helperText_.foundation : undefined,\n leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined,\n trailingIcon: this.trailingIcon_ ? this.trailingIcon_.foundation : undefined\n };\n };\n MDCTextField.prototype.createRipple_ = function (rippleFactory) {\n var _this = this;\n var isTextArea = this.root_.classList.contains(constants_1.cssClasses.TEXTAREA);\n var isOutlined = this.root_.classList.contains(constants_1.cssClasses.OUTLINED);\n if (isTextArea || isOutlined) {\n return null;\n }\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = __assign({}, component_2.MDCRipple.createAdapter(this), { isSurfaceActive: function isSurfaceActive() {\n return ponyfill.matches(_this.input_, ':active');\n }, registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return _this.input_.addEventListener(evtType, handler);\n }, deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return _this.input_.removeEventListener(evtType, handler);\n } });\n // tslint:enable:object-literal-sort-keys\n return rippleFactory(this.root_, new foundation_1.MDCRippleFoundation(adapter));\n };\n return MDCTextField;\n}(component_1.MDCComponent);\nexports.MDCTextField = MDCTextField;\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar foundation_1 = __webpack_require__(71);\nvar MDCTextFieldCharacterCounter = /** @class */function (_super) {\n __extends(MDCTextFieldCharacterCounter, _super);\n function MDCTextFieldCharacterCounter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTextFieldCharacterCounter.attachTo = function (root) {\n return new MDCTextFieldCharacterCounter(root);\n };\n Object.defineProperty(MDCTextFieldCharacterCounter.prototype, \"foundation\", {\n get: function get() {\n return this.foundation_;\n },\n enumerable: true,\n configurable: true\n });\n MDCTextFieldCharacterCounter.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n setContent: function setContent(content) {\n _this.root_.textContent = content;\n }\n };\n return new foundation_1.MDCTextFieldCharacterCounterFoundation(adapter);\n };\n return MDCTextFieldCharacterCounter;\n}(component_1.MDCComponent);\nexports.MDCTextFieldCharacterCounter = MDCTextFieldCharacterCounter;\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n ROOT: 'mdc-text-field-character-counter'\n};\nexports.cssClasses = cssClasses;\nvar strings = {\n ROOT_SELECTOR: \".\" + cssClasses.ROOT\n};\nexports.strings = strings;\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar foundation_1 = __webpack_require__(75);\nvar MDCTextFieldHelperText = /** @class */function (_super) {\n __extends(MDCTextFieldHelperText, _super);\n function MDCTextFieldHelperText() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTextFieldHelperText.attachTo = function (root) {\n return new MDCTextFieldHelperText(root);\n };\n Object.defineProperty(MDCTextFieldHelperText.prototype, \"foundation\", {\n get: function get() {\n return this.foundation_;\n },\n enumerable: true,\n configurable: true\n });\n MDCTextFieldHelperText.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n setAttr: function setAttr(attr, value) {\n return _this.root_.setAttribute(attr, value);\n },\n removeAttr: function removeAttr(attr) {\n return _this.root_.removeAttribute(attr);\n },\n setContent: function setContent(content) {\n _this.root_.textContent = content;\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCTextFieldHelperTextFoundation(adapter);\n };\n return MDCTextFieldHelperText;\n}(component_1.MDCComponent);\nexports.MDCTextFieldHelperText = MDCTextFieldHelperText;\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssClasses = {\n HELPER_TEXT_PERSISTENT: 'mdc-text-field-helper-text--persistent',\n HELPER_TEXT_VALIDATION_MSG: 'mdc-text-field-helper-text--validation-msg',\n ROOT: 'mdc-text-field-helper-text'\n};\nexports.cssClasses = cssClasses;\nvar strings = {\n ARIA_HIDDEN: 'aria-hidden',\n ROLE: 'role',\n ROOT_SELECTOR: \".\" + cssClasses.ROOT\n};\nexports.strings = strings;\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar foundation_1 = __webpack_require__(77);\nvar MDCTextFieldIcon = /** @class */function (_super) {\n __extends(MDCTextFieldIcon, _super);\n function MDCTextFieldIcon() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTextFieldIcon.attachTo = function (root) {\n return new MDCTextFieldIcon(root);\n };\n Object.defineProperty(MDCTextFieldIcon.prototype, \"foundation\", {\n get: function get() {\n return this.foundation_;\n },\n enumerable: true,\n configurable: true\n });\n MDCTextFieldIcon.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n getAttr: function getAttr(attr) {\n return _this.root_.getAttribute(attr);\n },\n setAttr: function setAttr(attr, value) {\n return _this.root_.setAttribute(attr, value);\n },\n removeAttr: function removeAttr(attr) {\n return _this.root_.removeAttribute(attr);\n },\n setContent: function setContent(content) {\n _this.root_.textContent = content;\n },\n registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return _this.listen(evtType, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return _this.unlisten(evtType, handler);\n },\n notifyIconAction: function notifyIconAction() {\n return _this.emit(foundation_1.MDCTextFieldIconFoundation.strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */);\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCTextFieldIconFoundation(adapter);\n };\n return MDCTextFieldIcon;\n}(component_1.MDCComponent);\nexports.MDCTextFieldIcon = MDCTextFieldIcon;\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar strings = {\n ICON_EVENT: 'MDCTextField:icon',\n ICON_ROLE: 'button'\n};\nexports.strings = strings;\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(159));\n__export(__webpack_require__(78));\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar component_2 = __webpack_require__(4);\nvar foundation_1 = __webpack_require__(78);\nvar strings = foundation_1.MDCToolbarFoundation.strings;\nvar MDCToolbar = /** @class */function (_super) {\n __extends(MDCToolbar, _super);\n function MDCToolbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCToolbar.attachTo = function (root) {\n return new MDCToolbar(root);\n };\n MDCToolbar.prototype.initialize = function () {\n var _this = this;\n this.ripples_ = [];\n this.fixedAdjustElement_ = null;\n this.titleElement_ = this.root_.querySelector(strings.TITLE_SELECTOR);\n var firstRowElement = this.root_.querySelector(strings.FIRST_ROW_SELECTOR);\n if (!firstRowElement) {\n throw new Error(\"MDCToolbar: Required sub-element '\" + strings.FIRST_ROW_SELECTOR + \"' is missing\");\n }\n this.firstRowElement_ = firstRowElement;\n [].forEach.call(this.root_.querySelectorAll(strings.ICON_SELECTOR), function (icon) {\n var ripple = component_2.MDCRipple.attachTo(icon);\n ripple.unbounded = true;\n _this.ripples_.push(ripple);\n });\n };\n MDCToolbar.prototype.destroy = function () {\n this.ripples_.forEach(function (ripple) {\n ripple.destroy();\n });\n _super.prototype.destroy.call(this);\n };\n Object.defineProperty(MDCToolbar.prototype, \"fixedAdjustElement\", {\n get: function get() {\n return this.fixedAdjustElement_;\n },\n set: function set(element) {\n this.fixedAdjustElement_ = element;\n this.foundation_.updateAdjustElementStyles();\n },\n enumerable: true,\n configurable: true\n });\n MDCToolbar.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n registerScrollHandler: function registerScrollHandler(handler) {\n return window.addEventListener('scroll', handler);\n },\n deregisterScrollHandler: function deregisterScrollHandler(handler) {\n return window.removeEventListener('scroll', handler);\n },\n registerResizeHandler: function registerResizeHandler(handler) {\n return window.addEventListener('resize', handler);\n },\n deregisterResizeHandler: function deregisterResizeHandler(handler) {\n return window.removeEventListener('resize', handler);\n },\n getViewportWidth: function getViewportWidth() {\n return window.innerWidth;\n },\n getViewportScrollY: function getViewportScrollY() {\n return window.pageYOffset;\n },\n getOffsetHeight: function getOffsetHeight() {\n return _this.root_.offsetHeight;\n },\n getFirstRowElementOffsetHeight: function getFirstRowElementOffsetHeight() {\n return _this.firstRowElement_.offsetHeight;\n },\n notifyChange: function notifyChange(evtData) {\n return _this.emit(strings.CHANGE_EVENT, evtData);\n },\n setStyle: function setStyle(property, value) {\n return _this.root_.style.setProperty(property, value);\n },\n setStyleForTitleElement: function setStyleForTitleElement(property, value) {\n if (_this.titleElement_) {\n _this.titleElement_.style.setProperty(property, value);\n }\n },\n setStyleForFlexibleRowElement: function setStyleForFlexibleRowElement(property, value) {\n return _this.firstRowElement_.style.setProperty(property, value);\n },\n setStyleForFixedAdjustElement: function setStyleForFixedAdjustElement(property, value) {\n if (_this.fixedAdjustElement) {\n _this.fixedAdjustElement.style.setProperty(property, value);\n }\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCToolbarFoundation(adapter);\n };\n return MDCToolbar;\n}(component_1.MDCComponent);\nexports.MDCToolbar = MDCToolbar;\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cssClasses = {\n FIXED: 'mdc-toolbar--fixed',\n FIXED_AT_LAST_ROW: 'mdc-toolbar--fixed-at-last-row',\n FIXED_LASTROW: 'mdc-toolbar--fixed-lastrow-only',\n FLEXIBLE_DEFAULT_BEHAVIOR: 'mdc-toolbar--flexible-default-behavior',\n FLEXIBLE_MAX: 'mdc-toolbar--flexible-space-maximized',\n FLEXIBLE_MIN: 'mdc-toolbar--flexible-space-minimized',\n TOOLBAR_ROW_FLEXIBLE: 'mdc-toolbar--flexible'\n};\nexports.strings = {\n CHANGE_EVENT: 'MDCToolbar:change',\n FIRST_ROW_SELECTOR: '.mdc-toolbar__row:first-child',\n ICON_SELECTOR: '.mdc-toolbar__icon',\n TITLE_SELECTOR: '.mdc-toolbar__title'\n};\nexports.numbers = {\n MAX_TITLE_SIZE: 2.125,\n MIN_TITLE_SIZE: 1.25,\n TOOLBAR_MOBILE_BREAKPOINT: 600,\n TOOLBAR_ROW_HEIGHT: 64,\n TOOLBAR_ROW_MOBILE_HEIGHT: 56\n};\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(162));\n__export(__webpack_require__(23));\n__export(__webpack_require__(79));\n__export(__webpack_require__(80));\n__export(__webpack_require__(22));\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar component_2 = __webpack_require__(4);\nvar constants_1 = __webpack_require__(6);\nvar foundation_1 = __webpack_require__(79);\nvar foundation_2 = __webpack_require__(80);\nvar foundation_3 = __webpack_require__(22);\nvar MDCTopAppBar = /** @class */function (_super) {\n __extends(MDCTopAppBar, _super);\n function MDCTopAppBar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTopAppBar.attachTo = function (root) {\n return new MDCTopAppBar(root);\n };\n MDCTopAppBar.prototype.initialize = function (rippleFactory) {\n if (rippleFactory === void 0) {\n rippleFactory = function rippleFactory(el) {\n return component_2.MDCRipple.attachTo(el);\n };\n }\n this.navIcon_ = this.root_.querySelector(constants_1.strings.NAVIGATION_ICON_SELECTOR);\n // Get all icons in the toolbar and instantiate the ripples\n var icons = [].slice.call(this.root_.querySelectorAll(constants_1.strings.ACTION_ITEM_SELECTOR));\n if (this.navIcon_) {\n icons.push(this.navIcon_);\n }\n this.iconRipples_ = icons.map(function (icon) {\n var ripple = rippleFactory(icon);\n ripple.unbounded = true;\n return ripple;\n });\n this.scrollTarget_ = window;\n };\n MDCTopAppBar.prototype.destroy = function () {\n this.iconRipples_.forEach(function (iconRipple) {\n return iconRipple.destroy();\n });\n _super.prototype.destroy.call(this);\n };\n MDCTopAppBar.prototype.setScrollTarget = function (target) {\n // Remove scroll handler from the previous scroll target\n this.foundation_.destroyScrollHandler();\n this.scrollTarget_ = target;\n // Initialize scroll handler on the new scroll target\n this.foundation_.initScrollHandler();\n };\n MDCTopAppBar.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n setStyle: function setStyle(property, value) {\n return _this.root_.style.setProperty(property, value);\n },\n getTopAppBarHeight: function getTopAppBarHeight() {\n return _this.root_.clientHeight;\n },\n registerNavigationIconInteractionHandler: function registerNavigationIconInteractionHandler(evtType, handler) {\n if (_this.navIcon_) {\n _this.navIcon_.addEventListener(evtType, handler);\n }\n },\n deregisterNavigationIconInteractionHandler: function deregisterNavigationIconInteractionHandler(evtType, handler) {\n if (_this.navIcon_) {\n _this.navIcon_.removeEventListener(evtType, handler);\n }\n },\n notifyNavigationIconClicked: function notifyNavigationIconClicked() {\n return _this.emit(constants_1.strings.NAVIGATION_EVENT, {});\n },\n registerScrollHandler: function registerScrollHandler(handler) {\n return _this.scrollTarget_.addEventListener('scroll', handler);\n },\n deregisterScrollHandler: function deregisterScrollHandler(handler) {\n return _this.scrollTarget_.removeEventListener('scroll', handler);\n },\n registerResizeHandler: function registerResizeHandler(handler) {\n return window.addEventListener('resize', handler);\n },\n deregisterResizeHandler: function deregisterResizeHandler(handler) {\n return window.removeEventListener('resize', handler);\n },\n getViewportScrollY: function getViewportScrollY() {\n var win = _this.scrollTarget_;\n var el = _this.scrollTarget_;\n return win.pageYOffset !== undefined ? win.pageYOffset : el.scrollTop;\n },\n getTotalActionItems: function getTotalActionItems() {\n return _this.root_.querySelectorAll(constants_1.strings.ACTION_ITEM_SELECTOR).length;\n }\n };\n // tslint:enable:object-literal-sort-keys\n var foundation;\n if (this.root_.classList.contains(constants_1.cssClasses.SHORT_CLASS)) {\n foundation = new foundation_2.MDCShortTopAppBarFoundation(adapter);\n } else if (this.root_.classList.contains(constants_1.cssClasses.FIXED_CLASS)) {\n foundation = new foundation_1.MDCFixedTopAppBarFoundation(adapter);\n } else {\n foundation = new foundation_3.MDCTopAppBarFoundation(adapter);\n }\n return foundation;\n };\n return MDCTopAppBar;\n}(component_1.MDCComponent);\nexports.MDCTopAppBar = MDCTopAppBar;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// material-components-web.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 81);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 1adfff9af08dec06a198","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport class MDCFoundation {\n static get cssClasses(): { [key: string]: string } {\n // Classes extending MDCFoundation should implement this method to return an object which exports every\n // CSS class the foundation class needs as a property. e.g. {ACTIVE: 'mdc-component--active'}\n return {};\n }\n\n static get strings(): { [key: string]: string } {\n // Classes extending MDCFoundation should implement this method to return an object which exports all\n // semantic strings as constants. e.g. {ARIA_ROLE: 'tablist'}\n return {};\n }\n\n static get numbers(): { [key: string]: number } {\n // Classes extending MDCFoundation should implement this method to return an object which exports all\n // of its semantic numbers as constants. e.g. {ANIMATION_DELAY_MS: 350}\n return {};\n }\n\n static get defaultAdapter(): {} {\n // Classes extending MDCFoundation may choose to implement this getter in order to provide a convenient\n // way of viewing the necessary methods of an adapter. In the future, this could also be used for adapter\n // validation.\n return {};\n }\n\n protected adapter_: AdapterType;\n\n constructor(adapter: AdapterType = {} as AdapterType) {\n this.adapter_ = adapter;\n }\n\n init() {\n // Subclasses should override this method to perform initialization routines (registering events, etc.)\n }\n\n destroy() {\n // Subclasses should override this method to perform de-initialization routines (de-registering events, etc.)\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-base/foundation.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from './foundation';\nimport {CustomEventListener, EventType, SpecificEventListener} from './types';\n\nexport class MDCComponent {\n static attachTo(root: Element): MDCComponent> {\n // Subclasses which extend MDCBase should provide an attachTo() method that takes a root element and\n // returns an instantiated component with its root set to that element. Also note that in the cases of\n // subclasses, an explicit foundation class will not have to be passed in; it will simply be initialized\n // from getDefaultFoundation().\n return new MDCComponent(root, new MDCFoundation({}));\n }\n\n protected root_: Element;\n protected foundation_: FoundationType;\n\n constructor(\n root: Element,\n foundation?: FoundationType,\n ...args: Array\n ) {\n this.root_ = root;\n this.initialize(...args);\n // Note that we initialize foundation here and not within the constructor's default param so that\n // this.root_ is defined and can be used within the foundation class.\n this.foundation_ = foundation === undefined ? this.getDefaultFoundation() : foundation;\n this.foundation_.init();\n this.initialSyncWithDOM();\n }\n\n /* istanbul ignore next: method param only exists for typing purposes; it does not need to be unit tested */\n initialize(..._args: Array) {\n // Subclasses can override this to do any additional setup work that would be considered part of a\n // \"constructor\". Essentially, it is a hook into the parent constructor before the foundation is\n // initialized. Any additional arguments besides root and foundation will be passed in here.\n }\n\n getDefaultFoundation(): FoundationType {\n // Subclasses must override this method to return a properly configured foundation class for the\n // component.\n throw new Error('Subclasses must override getDefaultFoundation to return a properly configured ' +\n 'foundation class');\n }\n\n initialSyncWithDOM() {\n // Subclasses should override this method if they need to perform work to synchronize with a host DOM\n // object. An example of this would be a form control wrapper that needs to synchronize its internal state\n // to some property or attribute of the host DOM. Please note: this is *not* the place to perform DOM\n // reads/writes that would cause layout / paint, as this is called synchronously from within the constructor.\n }\n\n destroy() {\n // Subclasses may implement this method to release any resources / deregister any listeners they have\n // attached. An example of this might be deregistering a resize event from the window object.\n this.foundation_.destroy();\n }\n\n /**\n * Wrapper method to add an event listener to the component's root element. This is most useful when\n * listening for custom events.\n */\n listen(evtType: K, handler: SpecificEventListener): void;\n listen(evtType: string, handler: CustomEventListener): void;\n listen(evtType: string, handler: EventListener) {\n this.root_.addEventListener(evtType, handler);\n }\n\n /**\n * Wrapper method to remove an event listener to the component's root element. This is most useful when\n * unlistening for custom events.\n */\n unlisten(evtType: K, handler: SpecificEventListener): void;\n unlisten(evtType: string, handler: CustomEventListener): void;\n unlisten(evtType: string, handler: EventListener) {\n this.root_.removeEventListener(evtType, handler);\n }\n\n /**\n * Fires a cross-browser-compatible custom event from the component root of the given type, with the given data.\n */\n emit(evtType: string, evtData: T, shouldBubble = false) {\n let evt: CustomEvent;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent(evtType, {\n bubbles: shouldBubble,\n detail: evtData,\n });\n } else {\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(evtType, shouldBubble, false, evtData);\n }\n\n this.root_.dispatchEvent(evt);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCComponent;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-base/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport * as ponyfill from './ponyfill';\n\nexport {ponyfill};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dom/index.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport * as util from './util';\n\nexport {util};\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/index.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {ponyfill} from '@material/dom/index';\nimport {MDCRippleAdapter} from './adapter';\nimport {MDCRippleFoundation} from './foundation';\nimport {MDCRippleAttachOpts, MDCRippleCapableSurface} from './types';\nimport * as util from './util';\n\nexport type MDCRippleFactory = (el: Element, foundation?: MDCRippleFoundation) => MDCRipple;\n\nexport class MDCRipple extends MDCComponent implements MDCRippleCapableSurface {\n static attachTo(root: Element, opts: MDCRippleAttachOpts = {isUnbounded: undefined}): MDCRipple {\n const ripple = new MDCRipple(root);\n // Only override unbounded behavior if option is explicitly specified\n if (opts.isUnbounded !== undefined) {\n ripple.unbounded = opts.isUnbounded;\n }\n return ripple;\n }\n\n static createAdapter(instance: MDCRippleCapableSurface): MDCRippleAdapter {\n return {\n addClass: (className) => instance.root_.classList.add(className),\n browserSupportsCssVars: () => util.supportsCssVariables(window),\n computeBoundingRect: () => instance.root_.getBoundingClientRect(),\n containsEventTarget: (target) => instance.root_.contains(target as Node),\n deregisterDocumentInteractionHandler: (evtType, handler) =>\n document.documentElement.removeEventListener(evtType, handler, util.applyPassive()),\n deregisterInteractionHandler: (evtType, handler) =>\n instance.root_.removeEventListener(evtType, handler, util.applyPassive()),\n deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler),\n getWindowPageOffset: () => ({x: window.pageXOffset, y: window.pageYOffset}),\n isSurfaceActive: () => ponyfill.matches(instance.root_, ':active'),\n isSurfaceDisabled: () => Boolean(instance.disabled),\n isUnbounded: () => Boolean(instance.unbounded),\n registerDocumentInteractionHandler: (evtType, handler) =>\n document.documentElement.addEventListener(evtType, handler, util.applyPassive()),\n registerInteractionHandler: (evtType, handler) =>\n instance.root_.addEventListener(evtType, handler, util.applyPassive()),\n registerResizeHandler: (handler) => window.addEventListener('resize', handler),\n removeClass: (className) => instance.root_.classList.remove(className),\n updateCssVariable: (varName, value) => (instance.root_ as HTMLElement).style.setProperty(varName, value),\n };\n }\n\n // Public visibility for this property is required by MDCRippleCapableSurface.\n root_!: Element; // assigned in MDCComponent constructor\n\n disabled = false;\n\n private unbounded_?: boolean;\n\n get unbounded(): boolean {\n return Boolean(this.unbounded_);\n }\n\n set unbounded(unbounded: boolean) {\n this.unbounded_ = Boolean(unbounded);\n this.setUnbounded_();\n }\n\n activate() {\n this.foundation_.activate();\n }\n\n deactivate() {\n this.foundation_.deactivate();\n }\n\n layout() {\n this.foundation_.layout();\n }\n\n getDefaultFoundation() {\n return new MDCRippleFoundation(MDCRipple.createAdapter(this));\n }\n\n initialSyncWithDOM() {\n const root = this.root_ as HTMLElement;\n this.unbounded = 'mdcRippleIsUnbounded' in root.dataset;\n }\n\n /**\n * Closure Compiler throws an access control error when directly accessing a\n * protected or private property inside a getter/setter, like unbounded above.\n * By accessing the protected property inside a method, we solve that problem.\n * That's why this function exists.\n */\n private setUnbounded_() {\n this.foundation_.setUnbounded(Boolean(this.unbounded_));\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n ANCHOR: 'mdc-menu-surface--anchor',\n ANIMATING_CLOSED: 'mdc-menu-surface--animating-closed',\n ANIMATING_OPEN: 'mdc-menu-surface--animating-open',\n FIXED: 'mdc-menu-surface--fixed',\n OPEN: 'mdc-menu-surface--open',\n ROOT: 'mdc-menu-surface',\n};\n\n// tslint:disable:object-literal-sort-keys\nconst strings = {\n CLOSED_EVENT: 'MDCMenuSurface:closed',\n OPENED_EVENT: 'MDCMenuSurface:opened',\n FOCUSABLE_ELEMENTS: [\n 'button:not(:disabled)', '[href]:not([aria-disabled=\"true\"])', 'input:not(:disabled)',\n 'select:not(:disabled)', 'textarea:not(:disabled)', '[tabindex]:not([tabindex=\"-1\"]):not([aria-disabled=\"true\"])',\n ].join(', '),\n};\n// tslint:enable:object-literal-sort-keys\n\nconst numbers = {\n /** Total duration of menu-surface open animation. */\n TRANSITION_OPEN_DURATION: 120,\n\n /** Total duration of menu-surface close animation. */\n TRANSITION_CLOSE_DURATION: 75,\n\n /** Margin left to the edge of the viewport when menu-surface is at maximum possible height. */\n MARGIN_TO_EDGE: 32,\n\n /** Ratio of anchor width to menu-surface width for switching from corner positioning to center positioning. */\n ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO: 0.67,\n};\n\n/**\n * Enum for bits in the {@see Corner) bitmap.\n */\nenum CornerBit {\n BOTTOM = 1,\n CENTER = 2,\n RIGHT = 4,\n FLIP_RTL = 8,\n}\n\n/**\n * Enum for representing an element corner for positioning the menu-surface.\n *\n * The START constants map to LEFT if element directionality is left\n * to right and RIGHT if the directionality is right to left.\n * Likewise END maps to RIGHT or LEFT depending on the directionality.\n */\nenum Corner {\n TOP_LEFT = 0,\n TOP_RIGHT = CornerBit.RIGHT,\n BOTTOM_LEFT = CornerBit.BOTTOM,\n BOTTOM_RIGHT = CornerBit.BOTTOM | CornerBit.RIGHT, // tslint:disable-line:no-bitwise\n TOP_START = CornerBit.FLIP_RTL,\n TOP_END = CornerBit.FLIP_RTL | CornerBit.RIGHT, // tslint:disable-line:no-bitwise\n BOTTOM_START = CornerBit.BOTTOM | CornerBit.FLIP_RTL, // tslint:disable-line:no-bitwise\n BOTTOM_END = CornerBit.BOTTOM | CornerBit.RIGHT | CornerBit.FLIP_RTL, // tslint:disable-line:no-bitwise\n}\n\nexport {cssClasses, strings, numbers, CornerBit, Corner};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu-surface/constants.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n FIXED_CLASS: 'mdc-top-app-bar--fixed',\n FIXED_SCROLLED_CLASS: 'mdc-top-app-bar--fixed-scrolled',\n SHORT_CLASS: 'mdc-top-app-bar--short',\n SHORT_COLLAPSED_CLASS: 'mdc-top-app-bar--short-collapsed',\n SHORT_HAS_ACTION_ITEM_CLASS: 'mdc-top-app-bar--short-has-action-item',\n};\n\nconst numbers = {\n DEBOUNCE_THROTTLE_RESIZE_TIME_MS: 100,\n MAX_TOP_APP_BAR_HEIGHT: 128,\n};\n\nconst strings = {\n ACTION_ITEM_SELECTOR: '.mdc-top-app-bar__action-item',\n NAVIGATION_EVENT: 'MDCTopAppBar:nav',\n NAVIGATION_ICON_SELECTOR: '.mdc-top-app-bar__navigation-icon',\n ROOT_SELECTOR: '.mdc-top-app-bar',\n TITLE_SELECTOR: '.mdc-top-app-bar__title',\n};\n\nexport {cssClasses, numbers, strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/constants.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCListAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\nimport {MDCListIndex} from './types';\n\nconst ELEMENTS_KEY_ALLOWED_IN = ['input', 'button', 'textarea', 'select'];\n\nfunction isNumberArray(selectedIndex: MDCListIndex): selectedIndex is number[] {\n return selectedIndex instanceof Array;\n}\n\nexport class MDCListFoundation extends MDCFoundation {\n static get strings() {\n return strings;\n }\n\n static get cssClasses() {\n return cssClasses;\n }\n\n static get defaultAdapter(): MDCListAdapter {\n return {\n addClassForElementIndex: () => undefined,\n focusItemAtIndex: () => undefined,\n getFocusedElementIndex: () => 0,\n getListItemCount: () => 0,\n hasCheckboxAtIndex: () => false,\n hasRadioAtIndex: () => false,\n isCheckboxCheckedAtIndex: () => false,\n isFocusInsideList: () => false,\n notifyAction: () => undefined,\n removeClassForElementIndex: () => undefined,\n setAttributeForElementIndex: () => undefined,\n setCheckedCheckboxOrRadioAtIndex: () => undefined,\n setTabIndexForListItemChildren: () => undefined,\n };\n }\n\n private wrapFocus_ = false;\n private isVertical_ = true;\n private isSingleSelectionList_ = false;\n private selectedIndex_: MDCListIndex = -1;\n private focusedItemIndex_ = -1;\n private useActivatedClass_ = false;\n private isCheckboxList_ = false;\n private isRadioList_ = false;\n\n constructor(adapter?: Partial) {\n super({...MDCListFoundation.defaultAdapter, ...adapter});\n }\n\n layout() {\n if (this.adapter_.getListItemCount() === 0) {\n return;\n }\n\n if (this.adapter_.hasCheckboxAtIndex(0)) {\n this.isCheckboxList_ = true;\n } else if (this.adapter_.hasRadioAtIndex(0)) {\n this.isRadioList_ = true;\n }\n }\n\n /**\n * Sets the private wrapFocus_ variable.\n */\n setWrapFocus(value: boolean) {\n this.wrapFocus_ = value;\n }\n\n /**\n * Sets the isVertical_ private variable.\n */\n setVerticalOrientation(value: boolean) {\n this.isVertical_ = value;\n }\n\n /**\n * Sets the isSingleSelectionList_ private variable.\n */\n setSingleSelection(value: boolean) {\n this.isSingleSelectionList_ = value;\n }\n\n /**\n * Sets the useActivatedClass_ private variable.\n */\n setUseActivatedClass(useActivated: boolean) {\n this.useActivatedClass_ = useActivated;\n }\n\n getSelectedIndex(): MDCListIndex {\n return this.selectedIndex_;\n }\n\n setSelectedIndex(index: MDCListIndex) {\n if (!this.isIndexValid_(index)) {\n return;\n }\n\n if (this.isCheckboxList_) {\n this.setCheckboxAtIndex_(index as number[]);\n } else if (this.isRadioList_) {\n this.setRadioAtIndex_(index as number);\n } else {\n this.setSingleSelectionAtIndex_(index as number);\n }\n }\n\n /**\n * Focus in handler for the list items.\n */\n handleFocusIn(_: FocusEvent, listItemIndex: number) {\n if (listItemIndex >= 0) {\n this.adapter_.setTabIndexForListItemChildren(listItemIndex, '0');\n }\n }\n\n /**\n * Focus out handler for the list items.\n */\n handleFocusOut(_: FocusEvent, listItemIndex: number) {\n if (listItemIndex >= 0) {\n this.adapter_.setTabIndexForListItemChildren(listItemIndex, '-1');\n }\n\n /**\n * Between Focusout & Focusin some browsers do not have focus on any element. Setting a delay to wait till the focus\n * is moved to next element.\n */\n setTimeout(() => {\n if (!this.adapter_.isFocusInsideList()) {\n this.setTabindexToFirstSelectedItem_();\n }\n }, 0);\n }\n\n /**\n * Key handler for the list.\n */\n handleKeydown(evt: KeyboardEvent, isRootListItem: boolean, listItemIndex: number) {\n const arrowLeft = evt.key === 'ArrowLeft' || evt.keyCode === 37;\n const arrowUp = evt.key === 'ArrowUp' || evt.keyCode === 38;\n const arrowRight = evt.key === 'ArrowRight' || evt.keyCode === 39;\n const arrowDown = evt.key === 'ArrowDown' || evt.keyCode === 40;\n const isHome = evt.key === 'Home' || evt.keyCode === 36;\n const isEnd = evt.key === 'End' || evt.keyCode === 35;\n const isEnter = evt.key === 'Enter' || evt.keyCode === 13;\n const isSpace = evt.key === 'Space' || evt.keyCode === 32;\n\n let currentIndex = this.adapter_.getFocusedElementIndex();\n let nextIndex = -1;\n if (currentIndex === -1) {\n currentIndex = listItemIndex;\n if (currentIndex < 0) {\n // If this event doesn't have a mdc-list-item ancestor from the\n // current list (not from a sublist), return early.\n return;\n }\n }\n\n if ((this.isVertical_ && arrowDown) || (!this.isVertical_ && arrowRight)) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusNextElement(currentIndex);\n } else if ((this.isVertical_ && arrowUp) || (!this.isVertical_ && arrowLeft)) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusPrevElement(currentIndex);\n } else if (isHome) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusFirstElement();\n } else if (isEnd) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusLastElement();\n } else if (isEnter || isSpace) {\n if (isRootListItem) {\n // Return early if enter key is pressed on anchor element which triggers synthetic MouseEvent event.\n const target = evt.target as Element | null;\n if (target && target.tagName === 'A' && isEnter) {\n return;\n }\n this.preventDefaultEvent_(evt);\n\n if (this.isSelectableList_()) {\n this.setSelectedIndexOnAction_(currentIndex);\n }\n\n this.adapter_.notifyAction(currentIndex);\n }\n }\n\n this.focusedItemIndex_ = currentIndex;\n\n if (nextIndex >= 0) {\n this.setTabindexAtIndex_(nextIndex);\n this.focusedItemIndex_ = nextIndex;\n }\n }\n\n /**\n * Click handler for the list.\n */\n handleClick(index: number, toggleCheckbox: boolean) {\n if (index === -1) {\n return;\n }\n\n if (this.isSelectableList_()) {\n this.setSelectedIndexOnAction_(index, toggleCheckbox);\n }\n\n this.adapter_.notifyAction(index);\n\n this.setTabindexAtIndex_(index);\n this.focusedItemIndex_ = index;\n }\n\n /**\n * Focuses the next element on the list.\n */\n focusNextElement(index: number) {\n const count = this.adapter_.getListItemCount();\n let nextIndex = index + 1;\n if (nextIndex >= count) {\n if (this.wrapFocus_) {\n nextIndex = 0;\n } else {\n // Return early because last item is already focused.\n return index;\n }\n }\n this.adapter_.focusItemAtIndex(nextIndex);\n\n return nextIndex;\n }\n\n /**\n * Focuses the previous element on the list.\n */\n focusPrevElement(index: number) {\n let prevIndex = index - 1;\n if (prevIndex < 0) {\n if (this.wrapFocus_) {\n prevIndex = this.adapter_.getListItemCount() - 1;\n } else {\n // Return early because first item is already focused.\n return index;\n }\n }\n this.adapter_.focusItemAtIndex(prevIndex);\n\n return prevIndex;\n }\n\n focusFirstElement() {\n this.adapter_.focusItemAtIndex(0);\n return 0;\n }\n\n focusLastElement() {\n const lastIndex = this.adapter_.getListItemCount() - 1;\n this.adapter_.focusItemAtIndex(lastIndex);\n return lastIndex;\n }\n\n /**\n * Ensures that preventDefault is only called if the containing element doesn't\n * consume the event, and it will cause an unintended scroll.\n */\n private preventDefaultEvent_(evt: KeyboardEvent) {\n const target = evt.target as Element;\n const tagName = `${target.tagName}`.toLowerCase();\n if (ELEMENTS_KEY_ALLOWED_IN.indexOf(tagName) === -1) {\n evt.preventDefault();\n }\n }\n\n private setSingleSelectionAtIndex_(index: number) {\n let selectedClassName = cssClasses.LIST_ITEM_SELECTED_CLASS;\n if (this.useActivatedClass_) {\n selectedClassName = cssClasses.LIST_ITEM_ACTIVATED_CLASS;\n }\n\n if (this.selectedIndex_ >= 0 && this.selectedIndex_ !== index) {\n this.adapter_.removeClassForElementIndex(this.selectedIndex_ as number, selectedClassName);\n this.adapter_.setAttributeForElementIndex(this.selectedIndex_ as number, strings.ARIA_SELECTED, 'false');\n }\n\n this.adapter_.addClassForElementIndex(index, selectedClassName);\n this.adapter_.setAttributeForElementIndex(index, strings.ARIA_SELECTED, 'true');\n\n this.selectedIndex_ = index;\n }\n\n /**\n * Toggles radio at give index. Radio doesn't change the checked state if it is already checked.\n */\n private setRadioAtIndex_(index: number) {\n this.adapter_.setCheckedCheckboxOrRadioAtIndex(index, true);\n\n if (this.selectedIndex_ >= 0) {\n this.adapter_.setAttributeForElementIndex(this.selectedIndex_ as number, strings.ARIA_CHECKED, 'false');\n }\n\n this.adapter_.setAttributeForElementIndex(index, strings.ARIA_CHECKED, 'true');\n\n this.selectedIndex_ = index;\n }\n\n private setCheckboxAtIndex_(index: number[]) {\n for (let i = 0; i < this.adapter_.getListItemCount(); i++) {\n let isChecked = false;\n if (index.indexOf(i) >= 0) {\n isChecked = true;\n }\n\n this.adapter_.setCheckedCheckboxOrRadioAtIndex(i, isChecked);\n this.adapter_.setAttributeForElementIndex(i, strings.ARIA_CHECKED, isChecked ? 'true' : 'false');\n }\n\n this.selectedIndex_ = index;\n }\n\n private setTabindexAtIndex_(index: number) {\n if (this.focusedItemIndex_ === -1 && index !== 0) {\n // If no list item was selected set first list item's tabindex to -1.\n // Generally, tabindex is set to 0 on first list item of list that has no preselected items.\n this.adapter_.setAttributeForElementIndex(0, 'tabindex', '-1');\n } else if (this.focusedItemIndex_ >= 0 && this.focusedItemIndex_ !== index) {\n this.adapter_.setAttributeForElementIndex(this.focusedItemIndex_, 'tabindex', '-1');\n }\n\n this.adapter_.setAttributeForElementIndex(index, 'tabindex', '0');\n }\n\n /**\n * @return Return true if it is single selectin list, checkbox list or radio list.\n */\n private isSelectableList_() {\n return this.isSingleSelectionList_ || this.isCheckboxList_ || this.isRadioList_;\n }\n\n private setTabindexToFirstSelectedItem_() {\n let targetIndex = 0;\n\n if (this.isSelectableList_()) {\n if (typeof this.selectedIndex_ === 'number' && this.selectedIndex_ !== -1) {\n targetIndex = this.selectedIndex_;\n } else if (isNumberArray(this.selectedIndex_) && this.selectedIndex_.length > 0) {\n targetIndex = this.selectedIndex_.reduce((currentIndex, minIndex) => Math.min(currentIndex, minIndex));\n }\n }\n\n this.setTabindexAtIndex_(targetIndex);\n }\n\n private isIndexValid_(index: MDCListIndex) {\n if (index instanceof Array) {\n if (!this.isCheckboxList_) {\n throw new Error('MDCListFoundation: Array of index is only supported for checkbox based list');\n }\n\n if (index.length === 0) {\n return true;\n } else {\n return index.some((i) => this.isIndexInRange_(i));\n }\n } else if (typeof index === 'number') {\n if (this.isCheckboxList_) {\n throw new Error('MDCListFoundation: Expected array of index for checkbox based list but got number: ' + index);\n }\n return this.isIndexInRange_(index);\n } else {\n return false;\n }\n }\n\n private isIndexInRange_(index: number) {\n const listSize = this.adapter_.getListItemCount();\n return index >= 0 && index < listSize;\n }\n\n private setSelectedIndexOnAction_(index: number, toggleCheckbox = true) {\n if (this.isCheckboxList_) {\n this.toggleCheckboxAtIndex_(index, toggleCheckbox);\n } else {\n this.setSelectedIndex(index);\n }\n }\n\n private toggleCheckboxAtIndex_(index: number, toggleCheckbox: boolean) {\n let isChecked = this.adapter_.isCheckboxCheckedAtIndex(index);\n\n if (toggleCheckbox) {\n isChecked = !isChecked;\n this.adapter_.setCheckedCheckboxOrRadioAtIndex(index, isChecked);\n }\n\n this.adapter_.setAttributeForElementIndex(index, strings.ARIA_CHECKED, isChecked ? 'true' : 'false');\n\n // If none of the checkbox items are selected and selectedIndex is not initialized then provide a default value.\n let selectedIndexes = this.selectedIndex_ === -1 ? [] : (this.selectedIndex_ as number[]).slice();\n\n if (isChecked) {\n selectedIndexes.push(index);\n } else {\n selectedIndexes = selectedIndexes.filter((i) => i !== index);\n }\n\n this.selectedIndex_ = selectedIndexes;\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCListFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-list/foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCMenuSurfaceAdapter} from './adapter';\nimport {Corner, CornerBit, cssClasses, numbers, strings} from './constants';\nimport {MDCMenuDimensions, MDCMenuDistance, MDCMenuPoint} from './types';\n\ninterface AutoLayoutMeasurements {\n anchorSize: MDCMenuDimensions;\n bodySize: MDCMenuDimensions;\n surfaceSize: MDCMenuDimensions;\n viewportDistance: MDCMenuDistance;\n viewportSize: MDCMenuDimensions;\n windowScroll: MDCMenuPoint;\n}\n\nexport class MDCMenuSurfaceFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get Corner() {\n return Corner;\n }\n\n /**\n * @see {@link MDCMenuSurfaceAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCMenuSurfaceAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n hasClass: () => false,\n hasAnchor: () => false,\n\n isElementInContainer: () => false,\n isFocused: () => false,\n isFirstElementFocused: () => false,\n isLastElementFocused: () => false,\n isRtl: () => false,\n\n getInnerDimensions: () => ({height: 0, width: 0}),\n getAnchorDimensions: () => null,\n getWindowDimensions: () => ({height: 0, width: 0}),\n getBodyDimensions: () => ({height: 0, width: 0}),\n getWindowScroll: () => ({x: 0, y: 0}),\n setPosition: () => undefined,\n setMaxHeight: () => undefined,\n setTransformOrigin: () => undefined,\n\n saveFocus: () => undefined,\n restoreFocus: () => undefined,\n focusFirstElement: () => undefined,\n focusLastElement: () => undefined,\n\n notifyClose: () => undefined,\n notifyOpen: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private isOpen_ = false;\n private isQuickOpen_ = false;\n private isHoistedElement_ = false;\n private isFixedPosition_ = false;\n\n private openAnimationEndTimerId_ = 0;\n private closeAnimationEndTimerId_ = 0;\n private animationRequestId_ = 0;\n\n private anchorCorner_: Corner = Corner.TOP_START;\n private anchorMargin_: MDCMenuDistance = {top: 0, right: 0, bottom: 0, left: 0};\n private position_: MDCMenuPoint = {x: 0, y: 0};\n\n private dimensions_!: MDCMenuDimensions; // assigned in open()\n private measurements_!: AutoLayoutMeasurements; // assigned in open()\n\n constructor(adapter?: Partial) {\n super({...MDCMenuSurfaceFoundation.defaultAdapter, ...adapter});\n }\n\n init() {\n const {ROOT, OPEN} = MDCMenuSurfaceFoundation.cssClasses;\n\n if (!this.adapter_.hasClass(ROOT)) {\n throw new Error(`${ROOT} class required in root element.`);\n }\n\n if (this.adapter_.hasClass(OPEN)) {\n this.isOpen_ = true;\n }\n }\n\n destroy() {\n clearTimeout(this.openAnimationEndTimerId_);\n clearTimeout(this.closeAnimationEndTimerId_);\n // Cancel any currently running animations.\n cancelAnimationFrame(this.animationRequestId_);\n }\n\n /**\n * @param corner Default anchor corner alignment of top-left menu surface corner.\n */\n setAnchorCorner(corner: Corner) {\n this.anchorCorner_ = corner;\n }\n\n /**\n * @param margin Set of margin values from anchor.\n */\n setAnchorMargin(margin: Partial) {\n this.anchorMargin_.top = margin.top || 0;\n this.anchorMargin_.right = margin.right || 0;\n this.anchorMargin_.bottom = margin.bottom || 0;\n this.anchorMargin_.left = margin.left || 0;\n }\n\n /** Used to indicate if the menu-surface is hoisted to the body. */\n setIsHoisted(isHoisted: boolean) {\n this.isHoistedElement_ = isHoisted;\n }\n\n /** Used to set the menu-surface calculations based on a fixed position menu. */\n setFixedPosition(isFixedPosition: boolean) {\n this.isFixedPosition_ = isFixedPosition;\n }\n\n /** Sets the menu-surface position on the page. */\n setAbsolutePosition(x: number, y: number) {\n this.position_.x = this.isFinite_(x) ? x : 0;\n this.position_.y = this.isFinite_(y) ? y : 0;\n }\n\n setQuickOpen(quickOpen: boolean) {\n this.isQuickOpen_ = quickOpen;\n }\n\n isOpen() {\n return this.isOpen_;\n }\n\n /**\n * Open the menu surface.\n */\n open() {\n this.adapter_.saveFocus();\n\n if (!this.isQuickOpen_) {\n this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);\n }\n\n this.animationRequestId_ = requestAnimationFrame(() => {\n this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n this.dimensions_ = this.adapter_.getInnerDimensions();\n this.autoPosition_();\n if (this.isQuickOpen_) {\n this.adapter_.notifyOpen();\n } else {\n this.openAnimationEndTimerId_ = setTimeout(() => {\n this.openAnimationEndTimerId_ = 0;\n this.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);\n this.adapter_.notifyOpen();\n }, numbers.TRANSITION_OPEN_DURATION);\n }\n });\n\n this.isOpen_ = true;\n }\n\n /**\n * Closes the menu surface.\n */\n close() {\n if (!this.isQuickOpen_) {\n this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);\n }\n\n requestAnimationFrame(() => {\n this.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n if (this.isQuickOpen_) {\n this.adapter_.notifyClose();\n } else {\n this.closeAnimationEndTimerId_ = setTimeout(() => {\n this.closeAnimationEndTimerId_ = 0;\n this.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);\n this.adapter_.notifyClose();\n }, numbers.TRANSITION_CLOSE_DURATION);\n }\n });\n\n this.isOpen_ = false;\n this.maybeRestoreFocus_();\n }\n\n /** Handle clicks and close if not within menu-surface element. */\n handleBodyClick(evt: MouseEvent) {\n const el = evt.target as Element;\n if (this.adapter_.isElementInContainer(el)) {\n return;\n }\n this.close();\n }\n\n /** Handle keys that close the surface. */\n handleKeydown(evt: KeyboardEvent) {\n const {keyCode, key, shiftKey} = evt;\n\n const isEscape = key === 'Escape' || keyCode === 27;\n const isTab = key === 'Tab' || keyCode === 9;\n\n if (isEscape) {\n this.close();\n } else if (isTab) {\n if (this.adapter_.isLastElementFocused() && !shiftKey) {\n this.adapter_.focusFirstElement();\n evt.preventDefault();\n } else if (this.adapter_.isFirstElementFocused() && shiftKey) {\n this.adapter_.focusLastElement();\n evt.preventDefault();\n }\n }\n }\n\n private autoPosition_() {\n // Compute measurements for autoposition methods reuse.\n this.measurements_ = this.getAutoLayoutMeasurements_();\n\n const corner = this.getOriginCorner_();\n const maxMenuSurfaceHeight = this.getMenuSurfaceMaxHeight_(corner);\n const verticalAlignment = this.hasBit_(corner, CornerBit.BOTTOM) ? 'bottom' : 'top';\n let horizontalAlignment = this.hasBit_(corner, CornerBit.RIGHT) ? 'right' : 'left';\n const horizontalOffset = this.getHorizontalOriginOffset_(corner);\n const verticalOffset = this.getVerticalOriginOffset_(corner);\n const {anchorSize, surfaceSize} = this.measurements_;\n\n const position: Partial = {\n [horizontalAlignment]: horizontalOffset,\n [verticalAlignment]: verticalOffset,\n };\n\n // Center align when anchor width is comparable or greater than menu surface, otherwise keep corner.\n if (anchorSize.width / surfaceSize.width > numbers.ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO) {\n horizontalAlignment = 'center';\n }\n\n // If the menu-surface has been hoisted to the body, it's no longer relative to the anchor element\n if (this.isHoistedElement_ || this.isFixedPosition_) {\n this.adjustPositionForHoistedElement_(position);\n }\n\n this.adapter_.setTransformOrigin(`${horizontalAlignment} ${verticalAlignment}`);\n this.adapter_.setPosition(position);\n this.adapter_.setMaxHeight(maxMenuSurfaceHeight ? maxMenuSurfaceHeight + 'px' : '');\n }\n\n /**\n * @return Measurements used to position menu surface popup.\n */\n private getAutoLayoutMeasurements_(): AutoLayoutMeasurements {\n let anchorRect = this.adapter_.getAnchorDimensions();\n const bodySize = this.adapter_.getBodyDimensions();\n const viewportSize = this.adapter_.getWindowDimensions();\n const windowScroll = this.adapter_.getWindowScroll();\n\n if (!anchorRect) {\n // tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together\n anchorRect = {\n top: this.position_.y,\n right: this.position_.x,\n bottom: this.position_.y,\n left: this.position_.x,\n width: 0,\n height: 0,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n return {\n anchorSize: anchorRect,\n bodySize,\n surfaceSize: this.dimensions_,\n viewportDistance: {\n // tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together\n top: anchorRect.top,\n right: viewportSize.width - anchorRect.right,\n bottom: viewportSize.height - anchorRect.bottom,\n left: anchorRect.left,\n // tslint:enable:object-literal-sort-keys\n },\n viewportSize,\n windowScroll,\n };\n }\n\n /**\n * Computes the corner of the anchor from which to animate and position the menu surface.\n */\n private getOriginCorner_(): Corner {\n // Defaults: open from the top left.\n let corner = Corner.TOP_LEFT;\n\n const {viewportDistance, anchorSize, surfaceSize} = this.measurements_;\n\n const isBottomAligned = this.hasBit_(this.anchorCorner_, CornerBit.BOTTOM);\n const availableTop = isBottomAligned ? viewportDistance.top + anchorSize.height + this.anchorMargin_.bottom\n : viewportDistance.top + this.anchorMargin_.top;\n const availableBottom = isBottomAligned ? viewportDistance.bottom - this.anchorMargin_.bottom\n : viewportDistance.bottom + anchorSize.height - this.anchorMargin_.top;\n\n const topOverflow = surfaceSize.height - availableTop;\n const bottomOverflow = surfaceSize.height - availableBottom;\n if (bottomOverflow > 0 && topOverflow < bottomOverflow) {\n corner = this.setBit_(corner, CornerBit.BOTTOM);\n }\n\n const isRtl = this.adapter_.isRtl();\n const isFlipRtl = this.hasBit_(this.anchorCorner_, CornerBit.FLIP_RTL);\n const avoidHorizontalOverlap = this.hasBit_(this.anchorCorner_, CornerBit.RIGHT);\n const isAlignedRight = (avoidHorizontalOverlap && !isRtl) ||\n (!avoidHorizontalOverlap && isFlipRtl && isRtl);\n const availableLeft = isAlignedRight ? viewportDistance.left + anchorSize.width + this.anchorMargin_.right :\n viewportDistance.left + this.anchorMargin_.left;\n const availableRight = isAlignedRight ? viewportDistance.right - this.anchorMargin_.right :\n viewportDistance.right + anchorSize.width - this.anchorMargin_.left;\n\n const leftOverflow = surfaceSize.width - availableLeft;\n const rightOverflow = surfaceSize.width - availableRight;\n\n if ((leftOverflow < 0 && isAlignedRight && isRtl) ||\n (avoidHorizontalOverlap && !isAlignedRight && leftOverflow < 0) ||\n (rightOverflow > 0 && leftOverflow < rightOverflow)) {\n corner = this.setBit_(corner, CornerBit.RIGHT);\n }\n\n return corner;\n }\n\n /**\n * @param corner Origin corner of the menu surface.\n * @return Maximum height of the menu surface, based on available space. 0 indicates should not be set.\n */\n private getMenuSurfaceMaxHeight_(corner: Corner): number {\n const {viewportDistance} = this.measurements_;\n\n let maxHeight = 0;\n const isBottomAligned = this.hasBit_(corner, CornerBit.BOTTOM);\n const isBottomAnchored = this.hasBit_(this.anchorCorner_, CornerBit.BOTTOM);\n const {MARGIN_TO_EDGE} = MDCMenuSurfaceFoundation.numbers;\n\n // When maximum height is not specified, it is handled from CSS.\n if (isBottomAligned) {\n maxHeight = viewportDistance.top + this.anchorMargin_.top - MARGIN_TO_EDGE;\n if (!isBottomAnchored) {\n maxHeight += this.measurements_.anchorSize.height;\n }\n } else {\n maxHeight =\n viewportDistance.bottom - this.anchorMargin_.bottom + this.measurements_.anchorSize.height - MARGIN_TO_EDGE;\n if (isBottomAnchored) {\n maxHeight -= this.measurements_.anchorSize.height;\n }\n }\n\n return maxHeight;\n }\n\n /**\n * @param corner Origin corner of the menu surface.\n * @return Horizontal offset of menu surface origin corner from corresponding anchor corner.\n */\n private getHorizontalOriginOffset_(corner: Corner): number {\n const {anchorSize} = this.measurements_;\n\n // isRightAligned corresponds to using the 'right' property on the surface.\n const isRightAligned = this.hasBit_(corner, CornerBit.RIGHT);\n const avoidHorizontalOverlap = this.hasBit_(this.anchorCorner_, CornerBit.RIGHT);\n\n if (isRightAligned) {\n const rightOffset =\n avoidHorizontalOverlap ? anchorSize.width - this.anchorMargin_.left : this.anchorMargin_.right;\n\n // For hoisted or fixed elements, adjust the offset by the difference between viewport width and body width so\n // when we calculate the right value (`adjustPositionForHoistedElement_`) based on the element position,\n // the right property is correct.\n if (this.isHoistedElement_ || this.isFixedPosition_) {\n return rightOffset - (this.measurements_.viewportSize.width - this.measurements_.bodySize.width);\n }\n\n return rightOffset;\n }\n\n return avoidHorizontalOverlap ? anchorSize.width - this.anchorMargin_.right : this.anchorMargin_.left;\n }\n\n /**\n * @param corner Origin corner of the menu surface.\n * @return Vertical offset of menu surface origin corner from corresponding anchor corner.\n */\n private getVerticalOriginOffset_(corner: Corner): number {\n const {anchorSize} = this.measurements_;\n const isBottomAligned = this.hasBit_(corner, CornerBit.BOTTOM);\n const avoidVerticalOverlap = this.hasBit_(this.anchorCorner_, CornerBit.BOTTOM);\n\n let y = 0;\n if (isBottomAligned) {\n y = avoidVerticalOverlap ? anchorSize.height - this.anchorMargin_.top : -this.anchorMargin_.bottom;\n } else {\n y = avoidVerticalOverlap ? (anchorSize.height + this.anchorMargin_.bottom) : this.anchorMargin_.top;\n }\n return y;\n }\n\n /** Calculates the offsets for positioning the menu-surface when the menu-surface has been hoisted to the body. */\n private adjustPositionForHoistedElement_(position: Partial) {\n const {windowScroll, viewportDistance} = this.measurements_;\n\n const props = Object.keys(position) as Array>;\n\n for (const prop of props) {\n let value = position[prop] || 0;\n\n // Hoisted surfaces need to have the anchor elements location on the page added to the\n // position properties for proper alignment on the body.\n value += viewportDistance[prop];\n\n // Surfaces that are absolutely positioned need to have additional calculations for scroll\n // and bottom positioning.\n if (!this.isFixedPosition_) {\n if (prop === 'top') {\n value += windowScroll.y;\n } else if (prop === 'bottom') {\n value -= windowScroll.y;\n } else if (prop === 'left') {\n value += windowScroll.x;\n } else { // prop === 'right'\n value -= windowScroll.x;\n }\n }\n\n position[prop] = value;\n }\n }\n\n /**\n * The last focused element when the menu surface was opened should regain focus, if the user is\n * focused on or within the menu surface when it is closed.\n */\n private maybeRestoreFocus_() {\n const isRootFocused = this.adapter_.isFocused();\n const childHasFocus = document.activeElement && this.adapter_.isElementInContainer(document.activeElement);\n if (isRootFocused || childHasFocus) {\n this.adapter_.restoreFocus();\n }\n }\n\n private hasBit_(corner: Corner, bit: CornerBit): boolean {\n return Boolean(corner & bit); // tslint:disable-line:no-bitwise\n }\n\n private setBit_(corner: Corner, bit: CornerBit): Corner {\n return corner | bit; // tslint:disable-line:no-bitwise\n }\n\n /**\n * isFinite that doesn't force conversion to number type.\n * Equivalent to Number.isFinite in ES2015, which is not supported in IE.\n */\n private isFinite_(num: number): boolean {\n return typeof num === 'number' && isFinite(num);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCMenuSurfaceFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu-surface/foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCTabIndicatorAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport abstract class MDCTabIndicatorFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter(): MDCTabIndicatorAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n computeContentClientRect: () => ({top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0}),\n setContentStyleProperty: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n constructor(adapter?: Partial) {\n super({...MDCTabIndicatorFoundation.defaultAdapter, ...adapter});\n }\n\n computeContentClientRect(): ClientRect {\n return this.adapter_.computeContentClientRect();\n }\n\n abstract activate(previousIndicatorClientRect?: ClientRect): void;\n abstract deactivate(): void;\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTabIndicatorFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/foundation.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {\n CssVendorPropertyMap, JsVendorPropertyMap,\n PrefixedCssPropertyName, PrefixedJsEventType,\n StandardCssPropertyName, StandardJsEventType,\n} from './types';\n\nconst cssPropertyNameMap: CssVendorPropertyMap = {\n animation: {\n prefixed: '-webkit-animation',\n standard: 'animation',\n },\n transform: {\n prefixed: '-webkit-transform',\n standard: 'transform',\n },\n transition: {\n prefixed: '-webkit-transition',\n standard: 'transition',\n },\n};\n\nconst jsEventTypeMap: JsVendorPropertyMap = {\n animationend: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationEnd',\n standard: 'animationend',\n },\n animationiteration: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationIteration',\n standard: 'animationiteration',\n },\n animationstart: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationStart',\n standard: 'animationstart',\n },\n transitionend: {\n cssProperty: 'transition',\n prefixed: 'webkitTransitionEnd',\n standard: 'transitionend',\n },\n};\n\nfunction isWindow(windowObj: Window): boolean {\n return Boolean(windowObj.document) && typeof windowObj.document.createElement === 'function';\n}\n\nexport function getCorrectPropertyName(windowObj: Window, cssProperty: StandardCssPropertyName):\n StandardCssPropertyName | PrefixedCssPropertyName {\n if (isWindow(windowObj) && cssProperty in cssPropertyNameMap) {\n const el = windowObj.document.createElement('div');\n const {standard, prefixed} = cssPropertyNameMap[cssProperty];\n const isStandard = standard in el.style;\n return isStandard ? standard : prefixed;\n }\n return cssProperty;\n}\n\nexport function getCorrectEventName(windowObj: Window, eventType: StandardJsEventType):\n StandardJsEventType | PrefixedJsEventType {\n if (isWindow(windowObj) && eventType in jsEventTypeMap) {\n const el = windowObj.document.createElement('div');\n const {standard, prefixed, cssProperty} = jsEventTypeMap[eventType];\n const isStandard = cssProperty in el.style;\n return isStandard ? standard : prefixed;\n }\n return eventType;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-animation/util.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * @fileoverview A \"ponyfill\" is a polyfill that doesn't modify the global prototype chain.\n * This makes ponyfills safer than traditional polyfills, especially for libraries like MDC.\n */\n\nexport function closest(element: Element, selector: string): Element | null {\n if (element.closest) {\n return element.closest(selector);\n }\n\n let el: Element | null = element;\n while (el) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentElement;\n }\n return null;\n}\n\nexport function matches(element: Element, selector: string): boolean {\n const nativeMatches = element.matches\n || element.webkitMatchesSelector\n || element.msMatchesSelector;\n return nativeMatches.call(element, selector);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dom/ponyfill.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport {MDCRipplePoint} from './types';\n\n/**\n * Stores result from supportsCssVariables to avoid redundant processing to\n * detect CSS custom variable support.\n */\nlet supportsCssVariables_: boolean | undefined;\n\n/**\n * Stores result from applyPassive to avoid redundant processing to detect\n * passive event listener support.\n */\nlet supportsPassive_: boolean | undefined;\n\nfunction detectEdgePseudoVarBug(windowObj: Window): boolean {\n // Detect versions of Edge with buggy var() support\n // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11495448/\n const document = windowObj.document;\n const node = document.createElement('div');\n node.className = 'mdc-ripple-surface--test-edge-var-bug';\n document.body.appendChild(node);\n\n // The bug exists if ::before style ends up propagating to the parent element.\n // Additionally, getComputedStyle returns null in iframes with display: \"none\" in Firefox,\n // but Firefox is known to support CSS custom properties correctly.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n const computedStyle = windowObj.getComputedStyle(node);\n const hasPseudoVarBug = computedStyle !== null && computedStyle.borderTopStyle === 'solid';\n node.remove();\n return hasPseudoVarBug;\n}\n\nexport function supportsCssVariables(windowObj: Window, forceRefresh = false): boolean {\n const {CSS} = windowObj;\n let supportsCssVars = supportsCssVariables_;\n if (typeof supportsCssVariables_ === 'boolean' && !forceRefresh) {\n return supportsCssVariables_;\n }\n\n const supportsFunctionPresent = CSS && typeof CSS.supports === 'function';\n if (!supportsFunctionPresent) {\n return false;\n }\n\n const explicitlySupportsCssVars = CSS.supports('--css-vars', 'yes');\n // See: https://bugs.webkit.org/show_bug.cgi?id=154669\n // See: README section on Safari\n const weAreFeatureDetectingSafari10plus = (\n CSS.supports('(--css-vars: yes)') &&\n CSS.supports('color', '#00000000')\n );\n\n if (explicitlySupportsCssVars || weAreFeatureDetectingSafari10plus) {\n supportsCssVars = !detectEdgePseudoVarBug(windowObj);\n } else {\n supportsCssVars = false;\n }\n\n if (!forceRefresh) {\n supportsCssVariables_ = supportsCssVars;\n }\n return supportsCssVars;\n}\n\n/**\n * Determine whether the current browser supports passive event listeners, and\n * if so, use them.\n */\nexport function applyPassive(globalObj: Window = window, forceRefresh = false):\n boolean | EventListenerOptions {\n if (supportsPassive_ === undefined || forceRefresh) {\n let isSupported = false;\n try {\n globalObj.document.addEventListener('test', () => undefined, {\n get passive() {\n isSupported = true;\n return isSupported;\n },\n });\n } catch (e) {\n } // tslint:disable-line:no-empty cannot throw error due to tests. tslint also disables console.log.\n\n supportsPassive_ = isSupported;\n }\n\n return supportsPassive_ ? {passive: true} as EventListenerOptions : false;\n}\n\nexport function getNormalizedEventCoords(evt: Event | undefined, pageOffset: MDCRipplePoint, clientRect: ClientRect):\n MDCRipplePoint {\n if (!evt) {\n return {x: 0, y: 0};\n }\n const {x, y} = pageOffset;\n const documentX = x + clientRect.left;\n const documentY = y + clientRect.top;\n\n let normalizedX;\n let normalizedY;\n // Determine touch point relative to the ripple container.\n if (evt.type === 'touchstart') {\n const touchEvent = evt as TouchEvent;\n normalizedX = touchEvent.changedTouches[0].pageX - documentX;\n normalizedY = touchEvent.changedTouches[0].pageY - documentY;\n } else {\n const mouseEvent = evt as MouseEvent;\n normalizedX = mouseEvent.pageX - documentX;\n normalizedY = mouseEvent.pageY - documentY;\n }\n\n return {x: normalizedX, y: normalizedY};\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/util.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCRippleAdapter} from './adapter';\nimport {cssClasses, numbers, strings} from './constants';\nimport {MDCRipplePoint} from './types';\nimport {getNormalizedEventCoords} from './util';\n\ninterface ActivationStateType {\n isActivated?: boolean;\n hasDeactivationUXRun?: boolean;\n wasActivatedByPointer?: boolean;\n wasElementMadeActive?: boolean;\n activationEvent?: Event;\n isProgrammatic?: boolean;\n}\n\ninterface FgTranslationCoordinates {\n startPoint: MDCRipplePoint;\n endPoint: MDCRipplePoint;\n}\n\ninterface Coordinates {\n left: number;\n top: number;\n}\n\ntype ActivationEventType = 'touchstart' | 'pointerdown' | 'mousedown' | 'keydown';\ntype DeactivationEventType = 'touchend' | 'pointerup' | 'mouseup' | 'contextmenu';\n\n// Activation events registered on the root element of each instance for activation\nconst ACTIVATION_EVENT_TYPES: ActivationEventType[] = [\n 'touchstart', 'pointerdown', 'mousedown', 'keydown',\n];\n\n// Deactivation events registered on documentElement when a pointer-related down event occurs\nconst POINTER_DEACTIVATION_EVENT_TYPES: DeactivationEventType[] = [\n 'touchend', 'pointerup', 'mouseup', 'contextmenu',\n];\n\n// simultaneous nested activations\nlet activatedTargets: Array = [];\n\nexport class MDCRippleFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get defaultAdapter(): MDCRippleAdapter {\n return {\n addClass: () => undefined,\n browserSupportsCssVars: () => true,\n computeBoundingRect: () => ({top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0}),\n containsEventTarget: () => true,\n deregisterDocumentInteractionHandler: () => undefined,\n deregisterInteractionHandler: () => undefined,\n deregisterResizeHandler: () => undefined,\n getWindowPageOffset: () => ({x: 0, y: 0}),\n isSurfaceActive: () => true,\n isSurfaceDisabled: () => true,\n isUnbounded: () => true,\n registerDocumentInteractionHandler: () => undefined,\n registerInteractionHandler: () => undefined,\n registerResizeHandler: () => undefined,\n removeClass: () => undefined,\n updateCssVariable: () => undefined,\n };\n }\n\n private activationAnimationHasEnded_ = false;\n private activationState_: ActivationStateType;\n private activationTimer_ = 0;\n private fgDeactivationRemovalTimer_ = 0;\n private fgScale_ = '0';\n private frame_ = {width: 0, height: 0};\n private initialSize_ = 0;\n private layoutFrame_ = 0;\n private maxRadius_ = 0;\n private unboundedCoords_: Coordinates = {left: 0, top: 0};\n\n private readonly activationTimerCallback_: () => void;\n private readonly activateHandler_: EventHandlerNonNull;\n private readonly deactivateHandler_: EventHandlerNonNull;\n private readonly focusHandler_: EventHandlerNonNull;\n private readonly blurHandler_: EventHandlerNonNull;\n private readonly resizeHandler_: EventHandlerNonNull;\n\n private previousActivationEvent_?: Event;\n\n constructor(adapter?: Partial) {\n super({...MDCRippleFoundation.defaultAdapter, ...adapter});\n\n this.activationState_ = this.defaultActivationState_();\n\n this.activationTimerCallback_ = () => {\n this.activationAnimationHasEnded_ = true;\n this.runDeactivationUXLogicIfReady_();\n };\n this.activateHandler_ = (e) => this.activate_(e);\n this.deactivateHandler_ = () => this.deactivate_();\n this.focusHandler_ = () => this.handleFocus();\n this.blurHandler_ = () => this.handleBlur();\n this.resizeHandler_ = () => this.layout();\n }\n\n init() {\n const supportsPressRipple = this.supportsPressRipple_();\n\n this.registerRootHandlers_(supportsPressRipple);\n\n if (supportsPressRipple) {\n const {ROOT, UNBOUNDED} = MDCRippleFoundation.cssClasses;\n requestAnimationFrame(() => {\n this.adapter_.addClass(ROOT);\n if (this.adapter_.isUnbounded()) {\n this.adapter_.addClass(UNBOUNDED);\n // Unbounded ripples need layout logic applied immediately to set coordinates for both shade and ripple\n this.layoutInternal_();\n }\n });\n }\n }\n\n destroy() {\n if (this.supportsPressRipple_()) {\n if (this.activationTimer_) {\n clearTimeout(this.activationTimer_);\n this.activationTimer_ = 0;\n this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_ACTIVATION);\n }\n\n if (this.fgDeactivationRemovalTimer_) {\n clearTimeout(this.fgDeactivationRemovalTimer_);\n this.fgDeactivationRemovalTimer_ = 0;\n this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_DEACTIVATION);\n }\n\n const {ROOT, UNBOUNDED} = MDCRippleFoundation.cssClasses;\n requestAnimationFrame(() => {\n this.adapter_.removeClass(ROOT);\n this.adapter_.removeClass(UNBOUNDED);\n this.removeCssVars_();\n });\n }\n\n this.deregisterRootHandlers_();\n this.deregisterDeactivationHandlers_();\n }\n\n /**\n * @param evt Optional event containing position information.\n */\n activate(evt?: Event): void {\n this.activate_(evt);\n }\n\n deactivate(): void {\n this.deactivate_();\n }\n\n layout(): void {\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n }\n this.layoutFrame_ = requestAnimationFrame(() => {\n this.layoutInternal_();\n this.layoutFrame_ = 0;\n });\n }\n\n setUnbounded(unbounded: boolean): void {\n const {UNBOUNDED} = MDCRippleFoundation.cssClasses;\n if (unbounded) {\n this.adapter_.addClass(UNBOUNDED);\n } else {\n this.adapter_.removeClass(UNBOUNDED);\n }\n }\n\n handleFocus(): void {\n requestAnimationFrame(() =>\n this.adapter_.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED));\n }\n\n handleBlur(): void {\n requestAnimationFrame(() =>\n this.adapter_.removeClass(MDCRippleFoundation.cssClasses.BG_FOCUSED));\n }\n\n /**\n * We compute this property so that we are not querying information about the client\n * until the point in time where the foundation requests it. This prevents scenarios where\n * client-side feature-detection may happen too early, such as when components are rendered on the server\n * and then initialized at mount time on the client.\n */\n private supportsPressRipple_(): boolean {\n return this.adapter_.browserSupportsCssVars();\n }\n\n private defaultActivationState_(): ActivationStateType {\n return {\n activationEvent: undefined,\n hasDeactivationUXRun: false,\n isActivated: false,\n isProgrammatic: false,\n wasActivatedByPointer: false,\n wasElementMadeActive: false,\n };\n }\n\n /**\n * supportsPressRipple Passed from init to save a redundant function call\n */\n private registerRootHandlers_(supportsPressRipple: boolean) {\n if (supportsPressRipple) {\n ACTIVATION_EVENT_TYPES.forEach((evtType) => {\n this.adapter_.registerInteractionHandler(evtType, this.activateHandler_);\n });\n if (this.adapter_.isUnbounded()) {\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n }\n }\n\n this.adapter_.registerInteractionHandler('focus', this.focusHandler_);\n this.adapter_.registerInteractionHandler('blur', this.blurHandler_);\n }\n\n private registerDeactivationHandlers_(evt: Event) {\n if (evt.type === 'keydown') {\n this.adapter_.registerInteractionHandler('keyup', this.deactivateHandler_);\n } else {\n POINTER_DEACTIVATION_EVENT_TYPES.forEach((evtType) => {\n this.adapter_.registerDocumentInteractionHandler(evtType, this.deactivateHandler_);\n });\n }\n }\n\n private deregisterRootHandlers_() {\n ACTIVATION_EVENT_TYPES.forEach((evtType) => {\n this.adapter_.deregisterInteractionHandler(evtType, this.activateHandler_);\n });\n this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_);\n this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_);\n\n if (this.adapter_.isUnbounded()) {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n }\n }\n\n private deregisterDeactivationHandlers_() {\n this.adapter_.deregisterInteractionHandler('keyup', this.deactivateHandler_);\n POINTER_DEACTIVATION_EVENT_TYPES.forEach((evtType) => {\n this.adapter_.deregisterDocumentInteractionHandler(evtType, this.deactivateHandler_);\n });\n }\n\n private removeCssVars_() {\n const rippleStrings = MDCRippleFoundation.strings;\n const keys = Object.keys(rippleStrings) as Array;\n keys.forEach((key) => {\n if (key.indexOf('VAR_') === 0) {\n this.adapter_.updateCssVariable(rippleStrings[key], null);\n }\n });\n }\n\n private activate_(evt?: Event) {\n if (this.adapter_.isSurfaceDisabled()) {\n return;\n }\n\n const activationState = this.activationState_;\n if (activationState.isActivated) {\n return;\n }\n\n // Avoid reacting to follow-on events fired by touch device after an already-processed user interaction\n const previousActivationEvent = this.previousActivationEvent_;\n const isSameInteraction = previousActivationEvent && evt !== undefined && previousActivationEvent.type !== evt.type;\n if (isSameInteraction) {\n return;\n }\n\n activationState.isActivated = true;\n activationState.isProgrammatic = evt === undefined;\n activationState.activationEvent = evt;\n activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : evt !== undefined && (\n evt.type === 'mousedown' || evt.type === 'touchstart' || evt.type === 'pointerdown'\n );\n\n const hasActivatedChild = evt !== undefined && activatedTargets.length > 0 && activatedTargets.some(\n (target) => this.adapter_.containsEventTarget(target));\n if (hasActivatedChild) {\n // Immediately reset activation state, while preserving logic that prevents touch follow-on events\n this.resetActivationState_();\n return;\n }\n\n if (evt !== undefined) {\n activatedTargets.push(evt.target);\n this.registerDeactivationHandlers_(evt);\n }\n\n activationState.wasElementMadeActive = this.checkElementMadeActive_(evt);\n if (activationState.wasElementMadeActive) {\n this.animateActivation_();\n }\n\n requestAnimationFrame(() => {\n // Reset array on next frame after the current event has had a chance to bubble to prevent ancestor ripples\n activatedTargets = [];\n\n if (!activationState.wasElementMadeActive\n && evt !== undefined\n && ((evt as KeyboardEvent).key === ' ' || (evt as KeyboardEvent).keyCode === 32)) {\n // If space was pressed, try again within an rAF call to detect :active, because different UAs report\n // active states inconsistently when they're called within event handling code:\n // - https://bugs.chromium.org/p/chromium/issues/detail?id=635971\n // - https://bugzilla.mozilla.org/show_bug.cgi?id=1293741\n // We try first outside rAF to support Edge, which does not exhibit this problem, but will crash if a CSS\n // variable is set within a rAF callback for a submit button interaction (#2241).\n activationState.wasElementMadeActive = this.checkElementMadeActive_(evt);\n if (activationState.wasElementMadeActive) {\n this.animateActivation_();\n }\n }\n\n if (!activationState.wasElementMadeActive) {\n // Reset activation state immediately if element was not made active.\n this.activationState_ = this.defaultActivationState_();\n }\n });\n }\n\n private checkElementMadeActive_(evt?: Event) {\n return (evt !== undefined && evt.type === 'keydown') ? this.adapter_.isSurfaceActive() : true;\n }\n\n private animateActivation_() {\n const {VAR_FG_TRANSLATE_START, VAR_FG_TRANSLATE_END} = MDCRippleFoundation.strings;\n const {FG_DEACTIVATION, FG_ACTIVATION} = MDCRippleFoundation.cssClasses;\n const {DEACTIVATION_TIMEOUT_MS} = MDCRippleFoundation.numbers;\n\n this.layoutInternal_();\n\n let translateStart = '';\n let translateEnd = '';\n\n if (!this.adapter_.isUnbounded()) {\n const {startPoint, endPoint} = this.getFgTranslationCoordinates_();\n translateStart = `${startPoint.x}px, ${startPoint.y}px`;\n translateEnd = `${endPoint.x}px, ${endPoint.y}px`;\n }\n\n this.adapter_.updateCssVariable(VAR_FG_TRANSLATE_START, translateStart);\n this.adapter_.updateCssVariable(VAR_FG_TRANSLATE_END, translateEnd);\n // Cancel any ongoing activation/deactivation animations\n clearTimeout(this.activationTimer_);\n clearTimeout(this.fgDeactivationRemovalTimer_);\n this.rmBoundedActivationClasses_();\n this.adapter_.removeClass(FG_DEACTIVATION);\n\n // Force layout in order to re-trigger the animation.\n this.adapter_.computeBoundingRect();\n this.adapter_.addClass(FG_ACTIVATION);\n this.activationTimer_ = setTimeout(() => this.activationTimerCallback_(), DEACTIVATION_TIMEOUT_MS);\n }\n\n private getFgTranslationCoordinates_(): FgTranslationCoordinates {\n const {activationEvent, wasActivatedByPointer} = this.activationState_;\n\n let startPoint;\n if (wasActivatedByPointer) {\n startPoint = getNormalizedEventCoords(\n activationEvent,\n this.adapter_.getWindowPageOffset(),\n this.adapter_.computeBoundingRect(),\n );\n } else {\n startPoint = {\n x: this.frame_.width / 2,\n y: this.frame_.height / 2,\n };\n }\n // Center the element around the start point.\n startPoint = {\n x: startPoint.x - (this.initialSize_ / 2),\n y: startPoint.y - (this.initialSize_ / 2),\n };\n\n const endPoint = {\n x: (this.frame_.width / 2) - (this.initialSize_ / 2),\n y: (this.frame_.height / 2) - (this.initialSize_ / 2),\n };\n\n return {startPoint, endPoint};\n }\n\n private runDeactivationUXLogicIfReady_() {\n // This method is called both when a pointing device is released, and when the activation animation ends.\n // The deactivation animation should only run after both of those occur.\n const {FG_DEACTIVATION} = MDCRippleFoundation.cssClasses;\n const {hasDeactivationUXRun, isActivated} = this.activationState_;\n const activationHasEnded = hasDeactivationUXRun || !isActivated;\n\n if (activationHasEnded && this.activationAnimationHasEnded_) {\n this.rmBoundedActivationClasses_();\n this.adapter_.addClass(FG_DEACTIVATION);\n this.fgDeactivationRemovalTimer_ = setTimeout(() => {\n this.adapter_.removeClass(FG_DEACTIVATION);\n }, numbers.FG_DEACTIVATION_MS);\n }\n }\n\n private rmBoundedActivationClasses_() {\n const {FG_ACTIVATION} = MDCRippleFoundation.cssClasses;\n this.adapter_.removeClass(FG_ACTIVATION);\n this.activationAnimationHasEnded_ = false;\n this.adapter_.computeBoundingRect();\n }\n\n private resetActivationState_() {\n this.previousActivationEvent_ = this.activationState_.activationEvent;\n this.activationState_ = this.defaultActivationState_();\n // Touch devices may fire additional events for the same interaction within a short time.\n // Store the previous event until it's safe to assume that subsequent events are for new interactions.\n setTimeout(() => this.previousActivationEvent_ = undefined, MDCRippleFoundation.numbers.TAP_DELAY_MS);\n }\n\n private deactivate_(): void {\n const activationState = this.activationState_;\n // This can happen in scenarios such as when you have a keyup event that blurs the element.\n if (!activationState.isActivated) {\n return;\n }\n\n const state: ActivationStateType = {...activationState};\n\n if (activationState.isProgrammatic) {\n requestAnimationFrame(() => this.animateDeactivation_(state));\n this.resetActivationState_();\n } else {\n this.deregisterDeactivationHandlers_();\n requestAnimationFrame(() => {\n this.activationState_.hasDeactivationUXRun = true;\n this.animateDeactivation_(state);\n this.resetActivationState_();\n });\n }\n }\n\n private animateDeactivation_({wasActivatedByPointer, wasElementMadeActive}: ActivationStateType) {\n if (wasActivatedByPointer || wasElementMadeActive) {\n this.runDeactivationUXLogicIfReady_();\n }\n }\n\n private layoutInternal_() {\n this.frame_ = this.adapter_.computeBoundingRect();\n const maxDim = Math.max(this.frame_.height, this.frame_.width);\n\n // Surface diameter is treated differently for unbounded vs. bounded ripples.\n // Unbounded ripple diameter is calculated smaller since the surface is expected to already be padded appropriately\n // to extend the hitbox, and the ripple is expected to meet the edges of the padded hitbox (which is typically\n // square). Bounded ripples, on the other hand, are fully expected to expand beyond the surface's longest diameter\n // (calculated based on the diagonal plus a constant padding), and are clipped at the surface's border via\n // `overflow: hidden`.\n const getBoundedRadius = () => {\n const hypotenuse = Math.sqrt(Math.pow(this.frame_.width, 2) + Math.pow(this.frame_.height, 2));\n return hypotenuse + MDCRippleFoundation.numbers.PADDING;\n };\n\n this.maxRadius_ = this.adapter_.isUnbounded() ? maxDim : getBoundedRadius();\n\n // Ripple is sized as a fraction of the largest dimension of the surface, then scales up using a CSS scale transform\n this.initialSize_ = Math.floor(maxDim * MDCRippleFoundation.numbers.INITIAL_ORIGIN_SCALE);\n this.fgScale_ = `${this.maxRadius_ / this.initialSize_}`;\n\n this.updateLayoutCssVars_();\n }\n\n private updateLayoutCssVars_() {\n const {\n VAR_FG_SIZE, VAR_LEFT, VAR_TOP, VAR_FG_SCALE,\n } = MDCRippleFoundation.strings;\n\n this.adapter_.updateCssVariable(VAR_FG_SIZE, `${this.initialSize_}px`);\n this.adapter_.updateCssVariable(VAR_FG_SCALE, this.fgScale_);\n\n if (this.adapter_.isUnbounded()) {\n this.unboundedCoords_ = {\n left: Math.round((this.frame_.width / 2) - (this.initialSize_ / 2)),\n top: Math.round((this.frame_.height / 2) - (this.initialSize_ / 2)),\n };\n\n this.adapter_.updateCssVariable(VAR_LEFT, `${this.unboundedCoords_.left}px`);\n this.adapter_.updateCssVariable(VAR_TOP, `${this.unboundedCoords_.top}px`);\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCRippleFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCDrawerAdapter} from '../adapter';\nimport {cssClasses, strings} from '../constants';\n\nexport class MDCDismissibleDrawerFoundation extends MDCFoundation {\n static get strings() {\n return strings;\n }\n\n static get cssClasses() {\n return cssClasses;\n }\n\n static get defaultAdapter(): MDCDrawerAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n hasClass: () => false,\n elementHasClass: () => false,\n notifyClose: () => undefined,\n notifyOpen: () => undefined,\n saveFocus: () => undefined,\n restoreFocus: () => undefined,\n focusActiveNavigationItem: () => undefined,\n trapFocus: () => undefined,\n releaseFocus: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private animationFrame_ = 0;\n private animationTimer_ = 0;\n\n constructor(adapter?: Partial) {\n super({...MDCDismissibleDrawerFoundation.defaultAdapter, ...adapter});\n }\n\n destroy() {\n if (this.animationFrame_) {\n cancelAnimationFrame(this.animationFrame_);\n }\n if (this.animationTimer_) {\n clearTimeout(this.animationTimer_);\n }\n }\n\n open() {\n if (this.isOpen() || this.isOpening() || this.isClosing()) {\n return;\n }\n\n this.adapter_.addClass(cssClasses.OPEN);\n this.adapter_.addClass(cssClasses.ANIMATE);\n\n // Wait a frame once display is no longer \"none\", to establish basis for animation\n this.runNextAnimationFrame_(() => {\n this.adapter_.addClass(cssClasses.OPENING);\n });\n\n this.adapter_.saveFocus();\n }\n\n close() {\n if (!this.isOpen() || this.isOpening() || this.isClosing()) {\n return;\n }\n\n this.adapter_.addClass(cssClasses.CLOSING);\n }\n\n /**\n * @return true if drawer is in open state.\n */\n isOpen(): boolean {\n return this.adapter_.hasClass(cssClasses.OPEN);\n }\n\n /**\n * @return true if drawer is animating open.\n */\n isOpening(): boolean {\n return this.adapter_.hasClass(cssClasses.OPENING) || this.adapter_.hasClass(cssClasses.ANIMATE);\n }\n\n /**\n * @return true if drawer is animating closed.\n */\n isClosing(): boolean {\n return this.adapter_.hasClass(cssClasses.CLOSING);\n }\n\n /**\n * Keydown handler to close drawer when key is escape.\n */\n handleKeydown(evt: KeyboardEvent) {\n const {keyCode, key} = evt;\n const isEscape = key === 'Escape' || keyCode === 27;\n if (isEscape) {\n this.close();\n }\n }\n\n /**\n * Handles a transition end event on the root element.\n */\n handleTransitionEnd(evt: TransitionEvent) {\n const {OPENING, CLOSING, OPEN, ANIMATE, ROOT} = cssClasses;\n\n // In Edge, transitionend on ripple pseudo-elements yields a target without classList, so check for Element first.\n const isRootElement = this.isElement_(evt.target) && this.adapter_.elementHasClass(evt.target, ROOT);\n if (!isRootElement) {\n return;\n }\n\n if (this.isClosing()) {\n this.adapter_.removeClass(OPEN);\n this.closed_();\n this.adapter_.restoreFocus();\n this.adapter_.notifyClose();\n } else {\n this.adapter_.focusActiveNavigationItem();\n this.opened_();\n this.adapter_.notifyOpen();\n }\n\n this.adapter_.removeClass(ANIMATE);\n this.adapter_.removeClass(OPENING);\n this.adapter_.removeClass(CLOSING);\n }\n\n /**\n * Extension point for when drawer finishes open animation.\n */\n protected opened_() {} // tslint:disable-line:no-empty\n\n /**\n * Extension point for when drawer finishes close animation.\n */\n protected closed_() {} // tslint:disable-line:no-empty\n\n /**\n * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.\n */\n private runNextAnimationFrame_(callback: () => void) {\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = requestAnimationFrame(() => {\n this.animationFrame_ = 0;\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = setTimeout(callback, 0);\n });\n }\n\n private isElement_(element: unknown): element is Element {\n // In Edge, transitionend on ripple pseudo-elements yields a target without classList.\n return Boolean((element as Element).classList);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCDismissibleDrawerFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/dismissible/foundation.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-floating-label/index.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCFloatingLabelAdapter} from './adapter';\nimport {cssClasses} from './constants';\n\nexport class MDCFloatingLabelFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n /**\n * See {@link MDCFloatingLabelAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCFloatingLabelAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n getWidth: () => 0,\n registerInteractionHandler: () => undefined,\n deregisterInteractionHandler: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private readonly shakeAnimationEndHandler_: SpecificEventListener<'animationend'>;\n\n constructor(adapter?: Partial) {\n super({...MDCFloatingLabelFoundation.defaultAdapter, ...adapter});\n\n this.shakeAnimationEndHandler_ = () => this.handleShakeAnimationEnd_();\n }\n\n init() {\n this.adapter_.registerInteractionHandler('animationend', this.shakeAnimationEndHandler_);\n }\n\n destroy() {\n this.adapter_.deregisterInteractionHandler('animationend', this.shakeAnimationEndHandler_);\n }\n\n /**\n * Returns the width of the label element.\n */\n getWidth(): number {\n return this.adapter_.getWidth();\n }\n\n /**\n * Styles the label to produce a shake animation to indicate an error.\n * @param shouldShake If true, adds the shake CSS class; otherwise, removes shake class.\n */\n shake(shouldShake: boolean) {\n const {LABEL_SHAKE} = MDCFloatingLabelFoundation.cssClasses;\n if (shouldShake) {\n this.adapter_.addClass(LABEL_SHAKE);\n } else {\n this.adapter_.removeClass(LABEL_SHAKE);\n }\n }\n\n /**\n * Styles the label to float or dock.\n * @param shouldFloat If true, adds the float CSS class; otherwise, removes float and shake classes to dock the label.\n */\n float(shouldFloat: boolean) {\n const {LABEL_FLOAT_ABOVE, LABEL_SHAKE} = MDCFloatingLabelFoundation.cssClasses;\n if (shouldFloat) {\n this.adapter_.addClass(LABEL_FLOAT_ABOVE);\n } else {\n this.adapter_.removeClass(LABEL_FLOAT_ABOVE);\n this.adapter_.removeClass(LABEL_SHAKE);\n }\n }\n\n private handleShakeAnimationEnd_() {\n const {LABEL_SHAKE} = MDCFloatingLabelFoundation.cssClasses;\n this.adapter_.removeClass(LABEL_SHAKE);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCFloatingLabelFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-floating-label/foundation.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-line-ripple/index.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n MENU_SELECTED_LIST_ITEM: 'mdc-menu-item--selected',\n MENU_SELECTION_GROUP: 'mdc-menu__selection-group',\n ROOT: 'mdc-menu',\n};\n\nconst strings = {\n ARIA_SELECTED_ATTR: 'aria-selected',\n CHECKBOX_SELECTOR: 'input[type=\"checkbox\"]',\n LIST_SELECTOR: '.mdc-list',\n SELECTED_EVENT: 'MDCMenu:selected',\n};\n\nexport {cssClasses, strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-notched-outline/index.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n CLOSING: 'mdc-snackbar--closing',\n OPEN: 'mdc-snackbar--open',\n OPENING: 'mdc-snackbar--opening',\n};\n\nconst strings = {\n ACTION_SELECTOR: '.mdc-snackbar__action',\n ARIA_LIVE_LABEL_TEXT_ATTR: 'data-mdc-snackbar-label-text',\n CLOSED_EVENT: 'MDCSnackbar:closed',\n CLOSING_EVENT: 'MDCSnackbar:closing',\n DISMISS_SELECTOR: '.mdc-snackbar__dismiss',\n LABEL_SELECTOR: '.mdc-snackbar__label',\n OPENED_EVENT: 'MDCSnackbar:opened',\n OPENING_EVENT: 'MDCSnackbar:opening',\n REASON_ACTION: 'action',\n REASON_DISMISS: 'dismiss',\n SURFACE_SELECTOR: '.mdc-snackbar__surface',\n};\n\nconst numbers = {\n DEFAULT_AUTO_DISMISS_TIMEOUT_MS: 5000,\n MAX_AUTO_DISMISS_TIMEOUT_MS: 10000,\n MIN_AUTO_DISMISS_TIMEOUT_MS: 4000,\n\n // These variables need to be kept in sync with the values in _variables.scss.\n SNACKBAR_ANIMATION_CLOSE_TIME_MS: 75,\n SNACKBAR_ANIMATION_OPEN_TIME_MS: 150,\n\n /**\n * Number of milliseconds to wait between temporarily clearing the label text\n * in the DOM and subsequently restoring it. This is necessary to force IE 11\n * to pick up the `aria-live` content change and announce it to the user.\n */\n ARIA_LIVE_DELAY_MS: 1000,\n};\n\nexport {cssClasses, strings, numbers};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-snackbar/constants.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCTabScrollerAdapter} from './adapter';\nimport {MDCTabScrollerAnimation} from './types';\n\nexport abstract class MDCTabScrollerRTL {\n protected readonly adapter_: MDCTabScrollerAdapter;\n\n constructor(adapter: MDCTabScrollerAdapter) {\n this.adapter_ = adapter;\n }\n\n abstract getScrollPositionRTL(translateX: number): number;\n\n abstract scrollToRTL(scrollX: number): MDCTabScrollerAnimation;\n\n abstract incrementScrollRTL(scrollX: number): MDCTabScrollerAnimation;\n\n /**\n * @param scrollX The current scrollX position\n * @param translateX The current translateX position\n */\n abstract getAnimatingScrollPosition(scrollX: number, translateX: number): number;\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTabScrollerRTL;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/rtl-scroller.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCTopAppBarAdapter} from '../adapter';\nimport {numbers} from '../constants';\nimport {MDCTopAppBarBaseFoundation} from '../foundation';\n\nconst INITIAL_VALUE = 0;\n\nexport class MDCTopAppBarFoundation extends MDCTopAppBarBaseFoundation {\n /**\n * Indicates if the top app bar was docked in the previous scroll handler iteration.\n */\n private wasDocked_ = true;\n\n /**\n * Indicates if the top app bar is docked in the fully shown position.\n */\n private isDockedShowing_ = true;\n\n /**\n * Variable for current scroll position of the top app bar\n */\n private currentAppBarOffsetTop_ = 0;\n\n /**\n * Used to prevent the top app bar from being scrolled out of view during resize events\n */\n private isCurrentlyBeingResized_ = false;\n\n /**\n * The timeout that's used to throttle the resize events\n */\n private resizeThrottleId_ = INITIAL_VALUE;\n\n /**\n * Used for diffs of current scroll position vs previous scroll position\n */\n private lastScrollPosition_: number;\n\n /**\n * Used to verify when the top app bar is completely showing or completely hidden\n */\n private topAppBarHeight_: number;\n\n /**\n * The timeout that's used to debounce toggling the isCurrentlyBeingResized_ variable after a resize\n */\n private resizeDebounceId_ = INITIAL_VALUE;\n\n /* istanbul ignore next: optional argument is not a branch statement */\n constructor(adapter?: Partial) {\n super(adapter);\n\n this.lastScrollPosition_ = this.adapter_.getViewportScrollY();\n this.topAppBarHeight_ = this.adapter_.getTopAppBarHeight();\n\n this.scrollHandler_ = () => this.topAppBarScrollHandler_();\n this.resizeHandler_ = () => this.topAppBarResizeHandler_();\n }\n\n destroy() {\n super.destroy();\n this.adapter_.setStyle('top', '');\n }\n\n /**\n * Function to determine if the DOM needs to update.\n */\n private checkForUpdate_(): boolean {\n const offscreenBoundaryTop = -this.topAppBarHeight_;\n const hasAnyPixelsOffscreen = this.currentAppBarOffsetTop_ < 0;\n const hasAnyPixelsOnscreen = this.currentAppBarOffsetTop_ > offscreenBoundaryTop;\n const partiallyShowing = hasAnyPixelsOffscreen && hasAnyPixelsOnscreen;\n\n // If it's partially showing, it can't be docked.\n if (partiallyShowing) {\n this.wasDocked_ = false;\n } else {\n // Not previously docked and not partially showing, it's now docked.\n if (!this.wasDocked_) {\n this.wasDocked_ = true;\n return true;\n } else if (this.isDockedShowing_ !== hasAnyPixelsOnscreen) {\n this.isDockedShowing_ = hasAnyPixelsOnscreen;\n return true;\n }\n }\n\n return partiallyShowing;\n }\n\n /**\n * Function to move the top app bar if needed.\n */\n private moveTopAppBar_() {\n if (this.checkForUpdate_()) {\n // Once the top app bar is fully hidden we use the max potential top app bar height as our offset\n // so the top app bar doesn't show if the window resizes and the new height > the old height.\n let offset = this.currentAppBarOffsetTop_;\n if (Math.abs(offset) >= this.topAppBarHeight_) {\n offset = -numbers.MAX_TOP_APP_BAR_HEIGHT;\n }\n\n this.adapter_.setStyle('top', offset + 'px');\n }\n }\n\n /**\n * Scroll handler for the default scroll behavior of the top app bar.\n */\n private topAppBarScrollHandler_() {\n const currentScrollPosition = Math.max(this.adapter_.getViewportScrollY(), 0);\n const diff = currentScrollPosition - this.lastScrollPosition_;\n this.lastScrollPosition_ = currentScrollPosition;\n\n // If the window is being resized the lastScrollPosition_ needs to be updated but the\n // current scroll of the top app bar should stay in the same position.\n if (!this.isCurrentlyBeingResized_) {\n this.currentAppBarOffsetTop_ -= diff;\n\n if (this.currentAppBarOffsetTop_ > 0) {\n this.currentAppBarOffsetTop_ = 0;\n } else if (Math.abs(this.currentAppBarOffsetTop_) > this.topAppBarHeight_) {\n this.currentAppBarOffsetTop_ = -this.topAppBarHeight_;\n }\n\n this.moveTopAppBar_();\n }\n }\n\n /**\n * Top app bar resize handler that throttle/debounce functions that execute updates.\n */\n private topAppBarResizeHandler_() {\n // Throttle resize events 10 p/s\n if (!this.resizeThrottleId_) {\n this.resizeThrottleId_ = setTimeout(() => {\n this.resizeThrottleId_ = INITIAL_VALUE;\n this.throttledResizeHandler_();\n }, numbers.DEBOUNCE_THROTTLE_RESIZE_TIME_MS);\n }\n\n this.isCurrentlyBeingResized_ = true;\n\n if (this.resizeDebounceId_) {\n clearTimeout(this.resizeDebounceId_);\n }\n\n this.resizeDebounceId_ = setTimeout(() => {\n this.topAppBarScrollHandler_();\n this.isCurrentlyBeingResized_ = false;\n this.resizeDebounceId_ = INITIAL_VALUE;\n }, numbers.DEBOUNCE_THROTTLE_RESIZE_TIME_MS);\n }\n\n /**\n * Throttled function that updates the top app bar scrolled values if the\n * top app bar height changes.\n */\n private throttledResizeHandler_() {\n const currentHeight = this.adapter_.getTopAppBarHeight();\n if (this.topAppBarHeight_ !== currentHeight) {\n this.wasDocked_ = false;\n\n // Since the top app bar has a different height depending on the screen width, this\n // will ensure that the top app bar remains in the correct location if\n // completely hidden and a resize makes the top app bar a different height.\n this.currentAppBarOffsetTop_ -= this.topAppBarHeight_ - currentHeight;\n this.topAppBarHeight_ = currentHeight;\n }\n this.topAppBarScrollHandler_();\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTopAppBarFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/standard/foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCTopAppBarAdapter} from './adapter';\nimport {cssClasses, numbers, strings} from './constants';\n\nexport class MDCTopAppBarBaseFoundation extends MDCFoundation {\n static get strings() {\n return strings;\n }\n\n static get cssClasses() {\n return cssClasses;\n }\n\n static get numbers() {\n return numbers;\n }\n\n /**\n * See {@link MDCTopAppBarAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCTopAppBarAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n hasClass: () => false,\n setStyle: () => undefined,\n getTopAppBarHeight: () => 0,\n registerNavigationIconInteractionHandler: () => undefined,\n deregisterNavigationIconInteractionHandler: () => undefined,\n notifyNavigationIconClicked: () => undefined,\n registerScrollHandler: () => undefined,\n deregisterScrollHandler: () => undefined,\n registerResizeHandler: () => undefined,\n deregisterResizeHandler: () => undefined,\n getViewportScrollY: () => 0,\n getTotalActionItems: () => 0,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n protected scrollHandler_?: SpecificEventListener<'scroll'>;\n protected resizeHandler_?: SpecificEventListener<'resize'>;\n private readonly navClickHandler_: SpecificEventListener<'click'>;\n\n /* istanbul ignore next: optional argument is not a branch statement */\n constructor(adapter?: Partial) {\n super({...MDCTopAppBarBaseFoundation.defaultAdapter, ...adapter});\n\n this.navClickHandler_ = () => this.adapter_.notifyNavigationIconClicked();\n }\n\n init() {\n this.initScrollHandler();\n this.initResizeHandler_();\n this.adapter_.registerNavigationIconInteractionHandler('click', this.navClickHandler_);\n }\n\n destroy() {\n this.destroyScrollHandler();\n this.destroyResizeHandler_();\n this.adapter_.deregisterNavigationIconInteractionHandler('click', this.navClickHandler_);\n }\n\n initScrollHandler() {\n if (this.scrollHandler_) {\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n }\n }\n\n destroyScrollHandler() {\n if (this.scrollHandler_) {\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n }\n }\n\n private initResizeHandler_() {\n if (this.resizeHandler_) {\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n }\n }\n\n private destroyResizeHandler_() {\n if (this.resizeHandler_) {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTopAppBarBaseFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/foundation.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCCheckboxAdapter} from './adapter';\nimport {cssClasses, numbers, strings} from './constants';\n\nexport class MDCCheckboxFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get defaultAdapter(): MDCCheckboxAdapter {\n return {\n addClass: () => undefined,\n forceLayout: () => undefined,\n hasNativeControl: () => false,\n isAttachedToDOM: () => false,\n isChecked: () => false,\n isIndeterminate: () => false,\n removeClass: () => undefined,\n removeNativeControlAttr: () => undefined,\n setNativeControlAttr: () => undefined,\n setNativeControlDisabled: () => undefined,\n };\n }\n\n private currentCheckState_ = strings.TRANSITION_STATE_INIT;\n private currentAnimationClass_ = '';\n private animEndLatchTimer_ = 0;\n private enableAnimationEndHandler_ = false;\n\n constructor(adapter?: Partial) {\n super({...MDCCheckboxFoundation.defaultAdapter, ...adapter});\n }\n\n init() {\n this.currentCheckState_ = this.determineCheckState_();\n this.updateAriaChecked_();\n this.adapter_.addClass(cssClasses.UPGRADED);\n }\n\n destroy() {\n clearTimeout(this.animEndLatchTimer_);\n }\n\n setDisabled(disabled: boolean) {\n this.adapter_.setNativeControlDisabled(disabled);\n if (disabled) {\n this.adapter_.addClass(cssClasses.DISABLED);\n } else {\n this.adapter_.removeClass(cssClasses.DISABLED);\n }\n }\n\n /**\n * Handles the animationend event for the checkbox\n */\n handleAnimationEnd() {\n if (!this.enableAnimationEndHandler_) {\n return;\n }\n\n clearTimeout(this.animEndLatchTimer_);\n\n this.animEndLatchTimer_ = setTimeout(() => {\n this.adapter_.removeClass(this.currentAnimationClass_);\n this.enableAnimationEndHandler_ = false;\n }, numbers.ANIM_END_LATCH_MS);\n }\n\n /**\n * Handles the change event for the checkbox\n */\n handleChange() {\n this.transitionCheckState_();\n }\n\n private transitionCheckState_() {\n if (!this.adapter_.hasNativeControl()) {\n return;\n }\n const oldState = this.currentCheckState_;\n const newState = this.determineCheckState_();\n\n if (oldState === newState) {\n return;\n }\n\n this.updateAriaChecked_();\n\n // Check to ensure that there isn't a previously existing animation class, in case for example\n // the user interacted with the checkbox before the animation was finished.\n if (this.currentAnimationClass_.length > 0) {\n clearTimeout(this.animEndLatchTimer_);\n this.adapter_.forceLayout();\n this.adapter_.removeClass(this.currentAnimationClass_);\n }\n\n this.currentAnimationClass_ = this.getTransitionAnimationClass_(oldState, newState);\n this.currentCheckState_ = newState;\n\n // Check for parentNode so that animations are only run when the element is attached\n // to the DOM.\n if (this.adapter_.isAttachedToDOM() && this.currentAnimationClass_.length > 0) {\n this.adapter_.addClass(this.currentAnimationClass_);\n this.enableAnimationEndHandler_ = true;\n }\n }\n\n private determineCheckState_(): string {\n const {\n TRANSITION_STATE_INDETERMINATE,\n TRANSITION_STATE_CHECKED,\n TRANSITION_STATE_UNCHECKED,\n } = strings;\n\n if (this.adapter_.isIndeterminate()) {\n return TRANSITION_STATE_INDETERMINATE;\n }\n return this.adapter_.isChecked() ? TRANSITION_STATE_CHECKED : TRANSITION_STATE_UNCHECKED;\n }\n\n private getTransitionAnimationClass_(oldState: string, newState: string): string {\n const {\n TRANSITION_STATE_INIT,\n TRANSITION_STATE_CHECKED,\n TRANSITION_STATE_UNCHECKED,\n } = strings;\n\n const {\n ANIM_UNCHECKED_CHECKED,\n ANIM_UNCHECKED_INDETERMINATE,\n ANIM_CHECKED_UNCHECKED,\n ANIM_CHECKED_INDETERMINATE,\n ANIM_INDETERMINATE_CHECKED,\n ANIM_INDETERMINATE_UNCHECKED,\n } = MDCCheckboxFoundation.cssClasses;\n\n switch (oldState) {\n case TRANSITION_STATE_INIT:\n if (newState === TRANSITION_STATE_UNCHECKED) {\n return '';\n }\n return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;\n case TRANSITION_STATE_UNCHECKED:\n return newState === TRANSITION_STATE_CHECKED ? ANIM_UNCHECKED_CHECKED : ANIM_UNCHECKED_INDETERMINATE;\n case TRANSITION_STATE_CHECKED:\n return newState === TRANSITION_STATE_UNCHECKED ? ANIM_CHECKED_UNCHECKED : ANIM_CHECKED_INDETERMINATE;\n default: // TRANSITION_STATE_INDETERMINATE\n return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;\n }\n }\n\n private updateAriaChecked_() {\n // Ensure aria-checked is set to mixed if checkbox is in indeterminate state.\n if (this.adapter_.isIndeterminate()) {\n this.adapter_.setNativeControlAttr(\n strings.ARIA_CHECKED_ATTR, strings.ARIA_CHECKED_INDETERMINATE_VALUE);\n } else {\n // The on/off state does not need to keep track of aria-checked, since\n // the screenreader uses the checked property on the checkbox element.\n this.adapter_.removeNativeControlAttr(strings.ARIA_CHECKED_ATTR);\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCCheckboxFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-checkbox/foundation.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip/index.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport const strings = {\n CHECKMARK_SELECTOR: '.mdc-chip__checkmark',\n ENTRY_ANIMATION_NAME: 'mdc-chip-entry',\n INTERACTION_EVENT: 'MDCChip:interaction',\n LEADING_ICON_SELECTOR: '.mdc-chip__icon--leading',\n REMOVAL_EVENT: 'MDCChip:removal',\n SELECTION_EVENT: 'MDCChip:selection',\n TRAILING_ICON_INTERACTION_EVENT: 'MDCChip:trailingIconInteraction',\n TRAILING_ICON_SELECTOR: '.mdc-chip__icon--trailing',\n};\n\nexport const cssClasses = {\n CHECKMARK: 'mdc-chip__checkmark',\n CHIP_EXIT: 'mdc-chip--exit',\n HIDDEN_LEADING_ICON: 'mdc-chip__icon--leading-hidden',\n LEADING_ICON: 'mdc-chip__icon--leading',\n SELECTED: 'mdc-chip--selected',\n TRAILING_ICON: 'mdc-chip__icon--trailing',\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip/constants.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCChipAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nconst emptyClientRect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n};\n\nexport class MDCChipFoundation extends MDCFoundation {\n static get strings() {\n return strings;\n }\n\n static get cssClasses() {\n return cssClasses;\n }\n\n static get defaultAdapter(): MDCChipAdapter {\n return {\n addClass: () => undefined,\n addClassToLeadingIcon: () => undefined,\n eventTargetHasClass: () => false,\n getCheckmarkBoundingClientRect: () => emptyClientRect,\n getComputedStyleValue: () => '',\n getRootBoundingClientRect: () => emptyClientRect,\n hasClass: () => false,\n hasLeadingIcon: () => false,\n notifyInteraction: () => undefined,\n notifyRemoval: () => undefined,\n notifySelection: () => undefined,\n notifyTrailingIconInteraction: () => undefined,\n removeClass: () => undefined,\n removeClassFromLeadingIcon: () => undefined,\n setStyleProperty: () => undefined,\n };\n }\n\n /**\n * Whether a trailing icon click should immediately trigger exit/removal of the chip.\n */\n private shouldRemoveOnTrailingIconClick_ = true;\n\n constructor(adapter?: Partial) {\n super({...MDCChipFoundation.defaultAdapter, ...adapter});\n }\n\n isSelected() {\n return this.adapter_.hasClass(cssClasses.SELECTED);\n }\n\n setSelected(selected: boolean) {\n if (selected) {\n this.adapter_.addClass(cssClasses.SELECTED);\n } else {\n this.adapter_.removeClass(cssClasses.SELECTED);\n }\n this.adapter_.notifySelection(selected);\n }\n\n getShouldRemoveOnTrailingIconClick() {\n return this.shouldRemoveOnTrailingIconClick_;\n }\n\n setShouldRemoveOnTrailingIconClick(shouldRemove: boolean) {\n this.shouldRemoveOnTrailingIconClick_ = shouldRemove;\n }\n\n getDimensions(): ClientRect {\n const getRootRect = () => this.adapter_.getRootBoundingClientRect();\n const getCheckmarkRect = () => this.adapter_.getCheckmarkBoundingClientRect();\n\n // When a chip has a checkmark and not a leading icon, the bounding rect changes in size depending on the current\n // size of the checkmark.\n if (!this.adapter_.hasLeadingIcon()) {\n const checkmarkRect = getCheckmarkRect();\n if (checkmarkRect) {\n const rootRect = getRootRect();\n const height = rootRect.height;\n // Checkmark is a square, meaning the client rect's width and height are identical once the animation completes.\n // However, the checkbox is initially hidden by setting the width to 0.\n // To account for an initial width of 0, we use the checkbox's height instead (which equals the end-state width)\n // when adding it to the root client rect's width.\n const checkmarkWidth = checkmarkRect.height;\n const width = rootRect.width + checkmarkWidth;\n return {...rootRect, width, height};\n }\n }\n\n return getRootRect();\n }\n\n /**\n * Begins the exit animation which leads to removal of the chip.\n */\n beginExit() {\n this.adapter_.addClass(cssClasses.CHIP_EXIT);\n }\n\n /**\n * Handles an interaction event on the root element.\n */\n handleInteraction(evt: MouseEvent | KeyboardEvent) {\n const isEnter = (evt as KeyboardEvent).key === 'Enter' || (evt as KeyboardEvent).keyCode === 13;\n if (evt.type === 'click' || isEnter) {\n this.adapter_.notifyInteraction();\n }\n }\n\n /**\n * Handles a transition end event on the root element.\n */\n handleTransitionEnd(evt: TransitionEvent) {\n // Handle transition end event on the chip when it is about to be removed.\n if (this.adapter_.eventTargetHasClass(evt.target, cssClasses.CHIP_EXIT)) {\n if (evt.propertyName === 'width') {\n this.adapter_.notifyRemoval();\n } else if (evt.propertyName === 'opacity') {\n // See: https://css-tricks.com/using-css-transitions-auto-dimensions/#article-header-id-5\n const chipWidth = this.adapter_.getComputedStyleValue('width');\n\n // On the next frame (once we get the computed width), explicitly set the chip's width\n // to its current pixel width, so we aren't transitioning out of 'auto'.\n requestAnimationFrame(() => {\n this.adapter_.setStyleProperty('width', chipWidth);\n\n // To mitigate jitter, start transitioning padding and margin before width.\n this.adapter_.setStyleProperty('padding', '0');\n this.adapter_.setStyleProperty('margin', '0');\n\n // On the next frame (once width is explicitly set), transition width to 0.\n requestAnimationFrame(() => {\n this.adapter_.setStyleProperty('width', '0');\n });\n });\n }\n return;\n }\n\n // Handle a transition end event on the leading icon or checkmark, since the transition end event bubbles.\n if (evt.propertyName !== 'opacity') {\n return;\n }\n if (this.adapter_.eventTargetHasClass(evt.target, cssClasses.LEADING_ICON) &&\n this.adapter_.hasClass(cssClasses.SELECTED)) {\n this.adapter_.addClassToLeadingIcon(cssClasses.HIDDEN_LEADING_ICON);\n } else if (this.adapter_.eventTargetHasClass(evt.target, cssClasses.CHECKMARK) &&\n !this.adapter_.hasClass(cssClasses.SELECTED)) {\n this.adapter_.removeClassFromLeadingIcon(cssClasses.HIDDEN_LEADING_ICON);\n }\n }\n\n /**\n * Handles an interaction event on the trailing icon element. This is used to\n * prevent the ripple from activating on interaction with the trailing icon.\n */\n handleTrailingIconInteraction(evt: MouseEvent | KeyboardEvent) {\n const isEnter = (evt as KeyboardEvent).key === 'Enter' || (evt as KeyboardEvent).keyCode === 13;\n evt.stopPropagation();\n if (evt.type === 'click' || isEnter) {\n this.adapter_.notifyTrailingIconInteraction();\n if (this.shouldRemoveOnTrailingIconClick_) {\n this.beginExit();\n }\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCChipFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip/foundation.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCChipSetAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport class MDCChipSetFoundation extends MDCFoundation {\n static get strings() {\n return strings;\n }\n\n static get cssClasses() {\n return cssClasses;\n }\n\n static get defaultAdapter(): MDCChipSetAdapter {\n return {\n hasClass: () => false,\n removeChip: () => undefined,\n setSelected: () => undefined,\n };\n }\n\n /**\n * The ids of the selected chips in the set. Only used for choice chip set or filter chip set.\n */\n private selectedChipIds_: string[] = [];\n\n constructor(adapter?: Partial) {\n super({...MDCChipSetFoundation.defaultAdapter, ...adapter});\n }\n\n /**\n * Returns an array of the IDs of all selected chips.\n */\n getSelectedChipIds(): ReadonlyArray {\n return this.selectedChipIds_.slice();\n }\n\n /**\n * Selects the chip with the given id. Deselects all other chips if the chip set is of the choice variant.\n */\n select(chipId: string) {\n if (this.selectedChipIds_.indexOf(chipId) >= 0) {\n return;\n }\n\n if (this.adapter_.hasClass(cssClasses.CHOICE) && this.selectedChipIds_.length > 0) {\n const previouslySelectedChip = this.selectedChipIds_[0];\n this.selectedChipIds_.length = 0;\n this.adapter_.setSelected(previouslySelectedChip, false);\n }\n this.selectedChipIds_.push(chipId);\n this.adapter_.setSelected(chipId, true);\n }\n\n /**\n * Handles a chip interaction event\n */\n handleChipInteraction(chipId: string) {\n if (this.adapter_.hasClass(cssClasses.CHOICE) || this.adapter_.hasClass(cssClasses.FILTER)) {\n this.toggleSelect_(chipId);\n }\n }\n\n /**\n * Handles a chip selection event, used to handle discrepancy when selection state is set directly on the Chip.\n */\n handleChipSelection(chipId: string, selected: boolean) {\n const chipIsSelected = this.selectedChipIds_.indexOf(chipId) >= 0;\n if (selected && !chipIsSelected) {\n this.select(chipId);\n } else if (!selected && chipIsSelected) {\n this.deselect_(chipId);\n }\n }\n\n /**\n * Handles the event when a chip is removed.\n */\n handleChipRemoval(chipId: string) {\n this.deselect_(chipId);\n this.adapter_.removeChip(chipId);\n }\n\n /**\n * Deselects the chip with the given id.\n */\n private deselect_(chipId: string) {\n const index = this.selectedChipIds_.indexOf(chipId);\n if (index >= 0) {\n this.selectedChipIds_.splice(index, 1);\n this.adapter_.setSelected(chipId, false);\n }\n }\n\n /**\n * Toggles selection of the chip with the given id.\n */\n private toggleSelect_(chipId: string) {\n if (this.selectedChipIds_.indexOf(chipId) >= 0) {\n this.deselect_(chipId);\n } else {\n this.select(chipId);\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCChipSetFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip-set/foundation.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {default as createFocusTrap, FocusTarget, FocusTrap, Options} from 'focus-trap';\n\nexport type MDCDialogFocusTrapFactory = (\n element: HTMLElement | string,\n userOptions?: Options,\n) => FocusTrap;\n\nexport function createFocusTrapInstance(\n surfaceEl: HTMLElement,\n focusTrapFactory: MDCDialogFocusTrapFactory = createFocusTrap as unknown as MDCDialogFocusTrapFactory,\n initialFocusEl?: FocusTarget,\n): FocusTrap {\n return focusTrapFactory(surfaceEl, {\n clickOutsideDeactivates: true, // Allow handling of scrim clicks.\n escapeDeactivates: false, // Foundation handles ESC key.\n initialFocus: initialFocusEl,\n });\n}\n\nexport function isScrollable(el: HTMLElement | null): boolean {\n return el ? el.scrollHeight > el.offsetHeight : false;\n}\n\nexport function areTopsMisaligned(els: HTMLElement[]): boolean {\n const tops = new Set();\n [].forEach.call(els, (el: HTMLElement) => tops.add(el.offsetTop));\n return tops.size > 1;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dialog/util.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCDialogAdapter} from './adapter';\nimport {cssClasses, numbers, strings} from './constants';\n\nexport class MDCDialogFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get defaultAdapter(): MDCDialogAdapter {\n return {\n addBodyClass: () => undefined,\n addClass: () => undefined,\n areButtonsStacked: () => false,\n clickDefaultButton: () => undefined,\n eventTargetMatches: () => false,\n getActionFromEvent: () => '',\n hasClass: () => false,\n isContentScrollable: () => false,\n notifyClosed: () => undefined,\n notifyClosing: () => undefined,\n notifyOpened: () => undefined,\n notifyOpening: () => undefined,\n releaseFocus: () => undefined,\n removeBodyClass: () => undefined,\n removeClass: () => undefined,\n reverseButtons: () => undefined,\n trapFocus: () => undefined,\n };\n }\n\n private isOpen_ = false;\n private animationFrame_ = 0;\n private animationTimer_ = 0;\n private layoutFrame_ = 0;\n private escapeKeyAction_ = strings.CLOSE_ACTION;\n private scrimClickAction_ = strings.CLOSE_ACTION;\n private autoStackButtons_ = true;\n private areButtonsStacked_ = false;\n\n constructor(adapter?: Partial) {\n super({...MDCDialogFoundation.defaultAdapter, ...adapter});\n }\n\n init() {\n if (this.adapter_.hasClass(cssClasses.STACKED)) {\n this.setAutoStackButtons(false);\n }\n }\n\n destroy() {\n if (this.isOpen_) {\n this.close(strings.DESTROY_ACTION);\n }\n\n if (this.animationTimer_) {\n clearTimeout(this.animationTimer_);\n this.handleAnimationTimerEnd_();\n }\n\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n this.layoutFrame_ = 0;\n }\n }\n\n open() {\n this.isOpen_ = true;\n this.adapter_.notifyOpening();\n this.adapter_.addClass(cssClasses.OPENING);\n\n // Wait a frame once display is no longer \"none\", to establish basis for animation\n this.runNextAnimationFrame_(() => {\n this.adapter_.addClass(cssClasses.OPEN);\n this.adapter_.addBodyClass(cssClasses.SCROLL_LOCK);\n\n this.layout();\n\n this.animationTimer_ = setTimeout(() => {\n this.handleAnimationTimerEnd_();\n this.adapter_.trapFocus();\n this.adapter_.notifyOpened();\n }, numbers.DIALOG_ANIMATION_OPEN_TIME_MS);\n });\n }\n\n close(action = '') {\n if (!this.isOpen_) {\n // Avoid redundant close calls (and events), e.g. from keydown on elements that inherently emit click\n return;\n }\n\n this.isOpen_ = false;\n this.adapter_.notifyClosing(action);\n this.adapter_.addClass(cssClasses.CLOSING);\n this.adapter_.removeClass(cssClasses.OPEN);\n this.adapter_.removeBodyClass(cssClasses.SCROLL_LOCK);\n\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = 0;\n\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = setTimeout(() => {\n this.adapter_.releaseFocus();\n this.handleAnimationTimerEnd_();\n this.adapter_.notifyClosed(action);\n }, numbers.DIALOG_ANIMATION_CLOSE_TIME_MS);\n }\n\n isOpen() {\n return this.isOpen_;\n }\n\n getEscapeKeyAction(): string {\n return this.escapeKeyAction_;\n }\n\n setEscapeKeyAction(action: string) {\n this.escapeKeyAction_ = action;\n }\n\n getScrimClickAction(): string {\n return this.scrimClickAction_;\n }\n\n setScrimClickAction(action: string) {\n this.scrimClickAction_ = action;\n }\n\n getAutoStackButtons(): boolean {\n return this.autoStackButtons_;\n }\n\n setAutoStackButtons(autoStack: boolean) {\n this.autoStackButtons_ = autoStack;\n }\n\n layout() {\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n }\n this.layoutFrame_ = requestAnimationFrame(() => {\n this.layoutInternal_();\n this.layoutFrame_ = 0;\n });\n }\n\n handleInteraction(evt: MouseEvent | KeyboardEvent) {\n const isClick = evt.type === 'click';\n const isEnter = (evt as KeyboardEvent).key === 'Enter' || (evt as KeyboardEvent).keyCode === 13;\n const isSpace = (evt as KeyboardEvent).key === 'Space' || (evt as KeyboardEvent).keyCode === 32;\n const isScrim = this.adapter_.eventTargetMatches(evt.target, strings.SCRIM_SELECTOR);\n const isDefault = !this.adapter_.eventTargetMatches(evt.target, strings.SUPPRESS_DEFAULT_PRESS_SELECTOR);\n\n // Check for scrim click first since it doesn't require querying ancestors\n if (isClick && isScrim && this.scrimClickAction_ !== '') {\n this.close(this.scrimClickAction_);\n } else if (isClick || isSpace || isEnter) {\n const action = this.adapter_.getActionFromEvent(evt);\n if (action) {\n this.close(action);\n } else if (isEnter && isDefault) {\n this.adapter_.clickDefaultButton();\n }\n }\n }\n\n handleDocumentKeydown(evt: KeyboardEvent) {\n const isEscape = evt.key === 'Escape' || evt.keyCode === 27;\n if (isEscape && this.escapeKeyAction_ !== '') {\n this.close(this.escapeKeyAction_);\n }\n }\n\n private layoutInternal_() {\n if (this.autoStackButtons_) {\n this.detectStackedButtons_();\n }\n this.detectScrollableContent_();\n }\n\n private handleAnimationTimerEnd_() {\n this.animationTimer_ = 0;\n this.adapter_.removeClass(cssClasses.OPENING);\n this.adapter_.removeClass(cssClasses.CLOSING);\n }\n\n /**\n * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.\n */\n private runNextAnimationFrame_(callback: () => void) {\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = requestAnimationFrame(() => {\n this.animationFrame_ = 0;\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = setTimeout(callback, 0);\n });\n }\n\n private detectStackedButtons_() {\n // Remove the class first to let us measure the buttons' natural positions.\n this.adapter_.removeClass(cssClasses.STACKED);\n\n const areButtonsStacked = this.adapter_.areButtonsStacked();\n\n if (areButtonsStacked) {\n this.adapter_.addClass(cssClasses.STACKED);\n }\n\n if (areButtonsStacked !== this.areButtonsStacked_) {\n this.adapter_.reverseButtons();\n this.areButtonsStacked_ = areButtonsStacked;\n }\n }\n\n private detectScrollableContent_() {\n // Remove the class first to let us measure the natural height of the content.\n this.adapter_.removeClass(cssClasses.SCROLLABLE);\n if (this.adapter_.isContentScrollable()) {\n this.adapter_.addClass(cssClasses.SCROLLABLE);\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCDialogFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dialog/foundation.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {default as createFocusTrap, FocusTrap, Options} from 'focus-trap';\n\nexport type MDCDrawerFocusTrapFactory = (\n element: HTMLElement | string,\n userOptions?: Options,\n) => FocusTrap;\n\nexport function createFocusTrapInstance(\n surfaceEl: HTMLElement,\n focusTrapFactory: MDCDrawerFocusTrapFactory = createFocusTrap as unknown as MDCDrawerFocusTrapFactory,\n): FocusTrap {\n return focusTrapFactory(surfaceEl, {\n clickOutsideDeactivates: true, // Allow handling of scrim clicks.\n escapeDeactivates: false, // Foundation handles ESC key.\n initialFocus: undefined, // Component handles focusing on active nav item.\n returnFocusOnDeactivate: false, // Component handles restoring focus.\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/util.ts","var tabbable = require('tabbable');\nvar xtend = require('xtend');\n\nvar activeFocusTraps = (function() {\n var trapQueue = [];\n return {\n activateTrap: function(trap) {\n if (trapQueue.length > 0) {\n var activeTrap = trapQueue[trapQueue.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex === -1) {\n trapQueue.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapQueue.splice(trapIndex, 1);\n trapQueue.push(trap);\n }\n },\n\n deactivateTrap: function(trap) {\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex !== -1) {\n trapQueue.splice(trapIndex, 1);\n }\n\n if (trapQueue.length > 0) {\n trapQueue[trapQueue.length - 1].unpause();\n }\n }\n };\n})();\n\nfunction focusTrap(element, userOptions) {\n var doc = document;\n var container =\n typeof element === 'string' ? doc.querySelector(element) : element;\n\n var config = xtend(\n {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true\n },\n userOptions\n );\n\n var state = {\n firstTabbableNode: null,\n lastTabbableNode: null,\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false\n };\n\n var trap = {\n activate: activate,\n deactivate: deactivate,\n pause: pause,\n unpause: unpause\n };\n\n return trap;\n\n function activate(activateOptions) {\n if (state.active) return;\n\n updateTabbableNodes();\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n var onActivate =\n activateOptions && activateOptions.onActivate\n ? activateOptions.onActivate\n : config.onActivate;\n if (onActivate) {\n onActivate();\n }\n\n addListeners();\n return trap;\n }\n\n function deactivate(deactivateOptions) {\n if (!state.active) return;\n\n removeListeners();\n state.active = false;\n state.paused = false;\n\n activeFocusTraps.deactivateTrap(trap);\n\n var onDeactivate =\n deactivateOptions && deactivateOptions.onDeactivate !== undefined\n ? deactivateOptions.onDeactivate\n : config.onDeactivate;\n if (onDeactivate) {\n onDeactivate();\n }\n\n var returnFocus =\n deactivateOptions && deactivateOptions.returnFocus !== undefined\n ? deactivateOptions.returnFocus\n : config.returnFocusOnDeactivate;\n if (returnFocus) {\n delay(function() {\n tryFocus(state.nodeFocusedBeforeActivation);\n });\n }\n\n return trap;\n }\n\n function pause() {\n if (state.paused || !state.active) return;\n state.paused = true;\n removeListeners();\n }\n\n function unpause() {\n if (!state.paused || !state.active) return;\n state.paused = false;\n addListeners();\n }\n\n function addListeners() {\n if (!state.active) return;\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trap);\n\n updateTabbableNodes();\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n delay(function() {\n tryFocus(getInitialFocusNode());\n });\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, true);\n doc.addEventListener('touchstart', checkPointerDown, true);\n doc.addEventListener('click', checkClick, true);\n doc.addEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function removeListeners() {\n if (!state.active) return;\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n var node = optionValue;\n if (!optionValue) {\n return null;\n }\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue);\n if (!node) {\n throw new Error('`' + optionName + '` refers to no known node');\n }\n }\n if (typeof optionValue === 'function') {\n node = optionValue();\n if (!node) {\n throw new Error('`' + optionName + '` did not return a node');\n }\n }\n return node;\n }\n\n function getInitialFocusNode() {\n var node;\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (container.contains(doc.activeElement)) {\n node = doc.activeElement;\n } else {\n node = state.firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error(\n \"You can't have a focus-trap without at least one focusable element\"\n );\n }\n\n return node;\n }\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n function checkPointerDown(e) {\n if (container.contains(e.target)) return;\n if (config.clickOutsideDeactivates) {\n deactivate({\n returnFocus: !tabbable.isFocusable(e.target)\n });\n } else {\n e.preventDefault();\n }\n }\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n function checkFocusIn(e) {\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (container.contains(e.target) || e.target instanceof Document) {\n return;\n }\n e.stopImmediatePropagation();\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n\n function checkKey(e) {\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n e.preventDefault();\n deactivate();\n return;\n }\n if (isTabEvent(e)) {\n checkTab(e);\n return;\n }\n }\n\n // Hijack Tab events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n function checkTab(e) {\n updateTabbableNodes();\n if (e.shiftKey && e.target === state.firstTabbableNode) {\n e.preventDefault();\n tryFocus(state.lastTabbableNode);\n return;\n }\n if (!e.shiftKey && e.target === state.lastTabbableNode) {\n e.preventDefault();\n tryFocus(state.firstTabbableNode);\n return;\n }\n }\n\n function checkClick(e) {\n if (config.clickOutsideDeactivates) return;\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n function updateTabbableNodes() {\n var tabbableNodes = tabbable(container);\n state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();\n state.lastTabbableNode =\n tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();\n }\n\n function tryFocus(node) {\n if (node === doc.activeElement) return;\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus();\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n }\n}\n\nfunction isSelectableInput(node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n}\n\nfunction isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction isTabEvent(e) {\n return e.key === 'Tab' || e.keyCode === 9;\n}\n\nfunction delay(fn) {\n return setTimeout(fn, 0);\n}\n\nmodule.exports = focusTrap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./packages/mdc-drawer/node_modules/focus-trap/index.js\n// module id = 32\n// module chunks = 0","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {SpecificEventListener} from '@material/base/types';\nimport {ponyfill} from '@material/dom/index';\nimport {MDCListAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\nimport {MDCListFoundation} from './foundation';\nimport {MDCListActionEventDetail, MDCListIndex} from './types';\n\nexport type MDCListFactory = (el: Element, foundation?: MDCListFoundation) => MDCList;\n\nexport class MDCList extends MDCComponent {\n set vertical(value: boolean) {\n this.foundation_.setVerticalOrientation(value);\n }\n\n get listElements(): Element[] {\n return [].slice.call(this.root_.querySelectorAll(strings.ENABLED_ITEMS_SELECTOR));\n }\n\n set wrapFocus(value: boolean) {\n this.foundation_.setWrapFocus(value);\n }\n\n set singleSelection(isSingleSelectionList: boolean) {\n this.foundation_.setSingleSelection(isSingleSelectionList);\n }\n\n get selectedIndex(): MDCListIndex {\n return this.foundation_.getSelectedIndex();\n }\n\n set selectedIndex(index: MDCListIndex) {\n this.foundation_.setSelectedIndex(index);\n }\n\n static attachTo(root: Element) {\n return new MDCList(root);\n }\n\n private handleKeydown_!: SpecificEventListener<'keydown'>; // assigned in initialSyncWithDOM()\n private handleClick_!: SpecificEventListener<'click'>; // assigned in initialSyncWithDOM()\n private focusInEventListener_!: SpecificEventListener<'focus'>; // assigned in initialSyncWithDOM()\n private focusOutEventListener_!: SpecificEventListener<'focus'>; // assigned in initialSyncWithDOM()\n\n initialSyncWithDOM() {\n this.handleClick_ = this.handleClickEvent_.bind(this);\n this.handleKeydown_ = this.handleKeydownEvent_.bind(this);\n this.focusInEventListener_ = this.handleFocusInEvent_.bind(this);\n this.focusOutEventListener_ = this.handleFocusOutEvent_.bind(this);\n this.listen('keydown', this.handleKeydown_);\n this.listen('click', this.handleClick_);\n this.listen('focusin', this.focusInEventListener_);\n this.listen('focusout', this.focusOutEventListener_);\n this.layout();\n this.initializeListType();\n }\n\n destroy() {\n this.unlisten('keydown', this.handleKeydown_);\n this.unlisten('click', this.handleClick_);\n this.unlisten('focusin', this.focusInEventListener_);\n this.unlisten('focusout', this.focusOutEventListener_);\n }\n\n layout() {\n const direction = this.root_.getAttribute(strings.ARIA_ORIENTATION);\n this.vertical = direction !== strings.ARIA_ORIENTATION_HORIZONTAL;\n\n // List items need to have at least tabindex=-1 to be focusable.\n [].slice.call(this.root_.querySelectorAll('.mdc-list-item:not([tabindex])'))\n .forEach((el: Element) => {\n el.setAttribute('tabindex', '-1');\n });\n\n // Child button/a elements are not tabbable until the list item is focused.\n [].slice.call(this.root_.querySelectorAll(strings.FOCUSABLE_CHILD_ELEMENTS))\n .forEach((el: Element) => el.setAttribute('tabindex', '-1'));\n\n this.foundation_.layout();\n }\n\n /**\n * Initialize selectedIndex value based on pre-selected checkbox list items, single selection or radio.\n */\n initializeListType() {\n const checkboxListItems = this.root_.querySelectorAll(strings.ARIA_ROLE_CHECKBOX_SELECTOR);\n const singleSelectedListItem = this.root_.querySelector(`\n .${cssClasses.LIST_ITEM_ACTIVATED_CLASS},\n .${cssClasses.LIST_ITEM_SELECTED_CLASS}\n `);\n const radioSelectedListItem = this.root_.querySelector(strings.ARIA_CHECKED_RADIO_SELECTOR);\n\n if (checkboxListItems.length) {\n const preselectedItems = this.root_.querySelectorAll(strings.ARIA_CHECKED_CHECKBOX_SELECTOR);\n this.selectedIndex =\n [].map.call(preselectedItems, (listItem: Element) => this.listElements.indexOf(listItem)) as number[];\n } else if (singleSelectedListItem) {\n if (singleSelectedListItem.classList.contains(cssClasses.LIST_ITEM_ACTIVATED_CLASS)) {\n this.foundation_.setUseActivatedClass(true);\n }\n\n this.singleSelection = true;\n this.selectedIndex = this.listElements.indexOf(singleSelectedListItem);\n } else if (radioSelectedListItem) {\n this.selectedIndex = this.listElements.indexOf(radioSelectedListItem);\n }\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCListAdapter = {\n addClassForElementIndex: (index, className) => {\n const element = this.listElements[index];\n if (element) {\n element.classList.add(className);\n }\n },\n focusItemAtIndex: (index) => {\n const element = this.listElements[index] as HTMLElement | undefined;\n if (element) {\n element.focus();\n }\n },\n getFocusedElementIndex: () => this.listElements.indexOf(document.activeElement!),\n getListItemCount: () => this.listElements.length,\n hasCheckboxAtIndex: (index) => {\n const listItem = this.listElements[index];\n return !!listItem.querySelector(strings.CHECKBOX_SELECTOR);\n },\n hasRadioAtIndex: (index) => {\n const listItem = this.listElements[index];\n return !!listItem.querySelector(strings.RADIO_SELECTOR);\n },\n isCheckboxCheckedAtIndex: (index) => {\n const listItem = this.listElements[index];\n const toggleEl = listItem.querySelector(strings.CHECKBOX_SELECTOR);\n return toggleEl!.checked;\n },\n isFocusInsideList: () => {\n return this.root_.contains(document.activeElement);\n },\n notifyAction: (index) => {\n this.emit(strings.ACTION_EVENT, {index}, /** shouldBubble */ true);\n },\n removeClassForElementIndex: (index, className) => {\n const element = this.listElements[index];\n if (element) {\n element.classList.remove(className);\n }\n },\n setAttributeForElementIndex: (index, attr, value) => {\n const element = this.listElements[index];\n if (element) {\n element.setAttribute(attr, value);\n }\n },\n setCheckedCheckboxOrRadioAtIndex: (index, isChecked) => {\n const listItem = this.listElements[index];\n const toggleEl = listItem.querySelector(strings.CHECKBOX_RADIO_SELECTOR);\n toggleEl!.checked = isChecked;\n\n const event = document.createEvent('Event');\n event.initEvent('change', true, true);\n toggleEl!.dispatchEvent(event);\n },\n setTabIndexForListItemChildren: (listItemIndex, tabIndexValue) => {\n const element = this.listElements[listItemIndex];\n const listItemChildren: Element[] =\n [].slice.call(element.querySelectorAll(strings.CHILD_ELEMENTS_TO_TOGGLE_TABINDEX));\n listItemChildren.forEach((el) => el.setAttribute('tabindex', tabIndexValue));\n },\n };\n return new MDCListFoundation(adapter);\n }\n\n /**\n * Used to figure out which list item this event is targetting. Or returns -1 if\n * there is no list item\n */\n private getListItemIndex_(evt: Event) {\n const eventTarget = evt.target as Element;\n const nearestParent = ponyfill.closest(eventTarget, `.${cssClasses.LIST_ITEM_CLASS}, .${cssClasses.ROOT}`);\n\n // Get the index of the element if it is a list item.\n if (nearestParent && ponyfill.matches(nearestParent, `.${cssClasses.LIST_ITEM_CLASS}`)) {\n return this.listElements.indexOf(nearestParent);\n }\n\n return -1;\n }\n\n /**\n * Used to figure out which element was clicked before sending the event to the foundation.\n */\n private handleFocusInEvent_(evt: FocusEvent) {\n const index = this.getListItemIndex_(evt);\n this.foundation_.handleFocusIn(evt, index);\n }\n\n /**\n * Used to figure out which element was clicked before sending the event to the foundation.\n */\n private handleFocusOutEvent_(evt: FocusEvent) {\n const index = this.getListItemIndex_(evt);\n this.foundation_.handleFocusOut(evt, index);\n }\n\n /**\n * Used to figure out which element was focused when keydown event occurred before sending the event to the\n * foundation.\n */\n private handleKeydownEvent_(evt: KeyboardEvent) {\n const index = this.getListItemIndex_(evt);\n const target = evt.target as Element;\n\n if (index >= 0) {\n this.foundation_.handleKeydown(evt, target.classList.contains(cssClasses.LIST_ITEM_CLASS), index);\n }\n }\n\n /**\n * Used to figure out which element was clicked before sending the event to the foundation.\n */\n private handleClickEvent_(evt: MouseEvent) {\n const index = this.getListItemIndex_(evt);\n const target = evt.target as Element;\n\n // Toggle the checkbox only if it's not the target of the event, or the checkbox will have 2 change events.\n const toggleCheckbox = !ponyfill.matches(target, strings.CHECKBOX_RADIO_SELECTOR);\n this.foundation_.handleClick(index, toggleCheckbox);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-list/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n LIST_ITEM_ACTIVATED_CLASS: 'mdc-list-item--activated',\n LIST_ITEM_CLASS: 'mdc-list-item',\n LIST_ITEM_SELECTED_CLASS: 'mdc-list-item--selected',\n ROOT: 'mdc-list',\n};\n\nconst strings = {\n ACTION_EVENT: 'MDCList:action',\n ARIA_CHECKED: 'aria-checked',\n ARIA_CHECKED_CHECKBOX_SELECTOR: '[role=\"checkbox\"][aria-checked=\"true\"]',\n ARIA_CHECKED_RADIO_SELECTOR: '[role=\"radio\"][aria-checked=\"true\"]',\n ARIA_ORIENTATION: 'aria-orientation',\n ARIA_ORIENTATION_HORIZONTAL: 'horizontal',\n ARIA_ROLE_CHECKBOX_SELECTOR: '[role=\"checkbox\"]',\n ARIA_SELECTED: 'aria-selected',\n CHECKBOX_RADIO_SELECTOR: 'input[type=\"checkbox\"]:not(:disabled), input[type=\"radio\"]:not(:disabled)',\n CHECKBOX_SELECTOR: 'input[type=\"checkbox\"]:not(:disabled)',\n CHILD_ELEMENTS_TO_TOGGLE_TABINDEX: `\n .${cssClasses.LIST_ITEM_CLASS} button:not(:disabled),\n .${cssClasses.LIST_ITEM_CLASS} a\n `,\n ENABLED_ITEMS_SELECTOR: '.mdc-list-item:not(.mdc-list-item--disabled)',\n FOCUSABLE_CHILD_ELEMENTS: `\n .${cssClasses.LIST_ITEM_CLASS} button:not(:disabled),\n .${cssClasses.LIST_ITEM_CLASS} a,\n .${cssClasses.LIST_ITEM_CLASS} input[type=\"radio\"]:not(:disabled),\n .${cssClasses.LIST_ITEM_CLASS} input[type=\"checkbox\"]:not(:disabled)\n `,\n RADIO_SELECTOR: 'input[type=\"radio\"]:not(:disabled)',\n};\n\nexport {strings, cssClasses};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-list/constants.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCDismissibleDrawerFoundation} from '../dismissible/foundation';\n\n/* istanbul ignore next: subclass is not a branch statement */\nexport class MDCModalDrawerFoundation extends MDCDismissibleDrawerFoundation {\n /**\n * Handles click event on scrim.\n */\n handleScrimClick() {\n this.close();\n }\n\n /**\n * Called when drawer finishes open animation.\n */\n protected opened_() {\n this.adapter_.trapFocus();\n }\n\n /**\n * Called when drawer finishes close animation.\n */\n protected closed_() {\n this.adapter_.releaseFocus();\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCModalDrawerFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/modal/foundation.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCFormFieldAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport class MDCFormFieldFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter(): MDCFormFieldAdapter {\n return {\n activateInputRipple: () => undefined,\n deactivateInputRipple: () => undefined,\n deregisterInteractionHandler: () => undefined,\n registerInteractionHandler: () => undefined,\n };\n }\n\n private readonly clickHandler_: () => void;\n\n constructor(adapter?: Partial) {\n super({...MDCFormFieldFoundation.defaultAdapter, ...adapter});\n\n this.clickHandler_ = () => this.handleClick_();\n }\n\n init() {\n this.adapter_.registerInteractionHandler('click', this.clickHandler_);\n }\n\n destroy() {\n this.adapter_.deregisterInteractionHandler('click', this.clickHandler_);\n }\n\n private handleClick_() {\n this.adapter_.activateInputRipple();\n requestAnimationFrame(() => this.adapter_.deactivateInputRipple());\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCFormFieldFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-form-field/foundation.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCGridListAdapter} from './adapter';\nimport {strings} from './constants';\n\nexport class MDCGridListFoundation extends MDCFoundation {\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter(): MDCGridListAdapter {\n return {\n deregisterResizeHandler: () => undefined,\n getNumberOfTiles: () => 0,\n getOffsetWidth: () => 0,\n getOffsetWidthForTileAtIndex: () => 0,\n registerResizeHandler: () => undefined,\n setStyleForTilesElement: () => undefined,\n };\n }\n\n private readonly resizeHandler_: EventListener;\n private resizeFrame_ = 0;\n\n /* istanbul ignore next: optional argument is not a branch statement */\n constructor(adapter?: Partial) {\n super({...MDCGridListFoundation.defaultAdapter, ...adapter});\n\n this.resizeHandler_ = this.alignCenter.bind(this);\n }\n\n init() {\n this.alignCenter();\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n }\n\n destroy() {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n }\n\n alignCenter() {\n cancelAnimationFrame(this.resizeFrame_);\n this.resizeFrame_ = requestAnimationFrame(() => {\n this.alignCenter_();\n this.resizeFrame_ = 0;\n });\n }\n\n private alignCenter_() {\n if (this.adapter_.getNumberOfTiles() === 0) {\n return;\n }\n const gridWidth = this.adapter_.getOffsetWidth();\n const itemWidth = this.adapter_.getOffsetWidthForTileAtIndex(0);\n const tilesWidth = itemWidth * Math.floor(gridWidth / itemWidth);\n this.adapter_.setStyleForTilesElement('width', `${tilesWidth}px`);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCGridListFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-grid-list/foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCIconButtonToggleAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport class MDCIconButtonToggleFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter(): MDCIconButtonToggleAdapter {\n return {\n addClass: () => undefined,\n hasClass: () => false,\n notifyChange: () => undefined,\n removeClass: () => undefined,\n setAttr: () => undefined,\n };\n }\n\n constructor(adapter?: Partial) {\n super({...MDCIconButtonToggleFoundation.defaultAdapter, ...adapter});\n }\n\n init() {\n this.adapter_.setAttr(strings.ARIA_PRESSED, `${this.isOn()}`);\n }\n\n handleClick() {\n this.toggle();\n this.adapter_.notifyChange({isOn: this.isOn()});\n }\n\n isOn(): boolean {\n return this.adapter_.hasClass(cssClasses.ICON_BUTTON_ON);\n }\n\n toggle(isOn: boolean = !this.isOn()) {\n if (isOn) {\n this.adapter_.addClass(cssClasses.ICON_BUTTON_ON);\n } else {\n this.adapter_.removeClass(cssClasses.ICON_BUTTON_ON);\n }\n\n this.adapter_.setAttr(strings.ARIA_PRESSED, `${isOn}`);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCIconButtonToggleFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-icon-button/foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCLineRippleAdapter} from './adapter';\nimport {cssClasses} from './constants';\n\nexport class MDCLineRippleFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n /**\n * See {@link MDCLineRippleAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCLineRippleAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n hasClass: () => false,\n setStyle: () => undefined,\n registerEventHandler: () => undefined,\n deregisterEventHandler: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private readonly transitionEndHandler_: SpecificEventListener<'transitionend'>;\n\n constructor(adapter?: Partial) {\n super({...MDCLineRippleFoundation.defaultAdapter, ...adapter});\n\n this.transitionEndHandler_ = (evt) => this.handleTransitionEnd(evt);\n }\n\n init() {\n this.adapter_.registerEventHandler('transitionend', this.transitionEndHandler_);\n }\n\n destroy() {\n this.adapter_.deregisterEventHandler('transitionend', this.transitionEndHandler_);\n }\n\n activate() {\n this.adapter_.removeClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n this.adapter_.addClass(cssClasses.LINE_RIPPLE_ACTIVE);\n }\n\n setRippleCenter(xCoordinate: number) {\n this.adapter_.setStyle('transform-origin', `${xCoordinate}px center`);\n }\n\n deactivate() {\n this.adapter_.addClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n }\n\n handleTransitionEnd(evt: TransitionEvent) {\n // Wait for the line ripple to be either transparent or opaque\n // before emitting the animation end event\n const isDeactivating = this.adapter_.hasClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n\n if (evt.propertyName === 'opacity') {\n if (isDeactivating) {\n this.adapter_.removeClass(cssClasses.LINE_RIPPLE_ACTIVE);\n this.adapter_.removeClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n }\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCLineRippleFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-line-ripple/foundation.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {getCorrectPropertyName} from '@material/animation/util';\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCLinearProgressAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport class MDCLinearProgressFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter(): MDCLinearProgressAdapter {\n return {\n addClass: () => undefined,\n getBuffer: () => null,\n getPrimaryBar: () => null,\n hasClass: () => false,\n removeClass: () => undefined,\n setStyle: () => undefined,\n };\n }\n\n private isDeterminate_!: boolean;\n private isReversed_!: boolean;\n private progress_!: number;\n\n constructor(adapter?: Partial) {\n super({...MDCLinearProgressFoundation.defaultAdapter, ...adapter});\n }\n\n init() {\n this.isDeterminate_ = !this.adapter_.hasClass(cssClasses.INDETERMINATE_CLASS);\n this.isReversed_ = this.adapter_.hasClass(cssClasses.REVERSED_CLASS);\n this.progress_ = 0;\n }\n\n setDeterminate(isDeterminate: boolean) {\n this.isDeterminate_ = isDeterminate;\n if (this.isDeterminate_) {\n this.adapter_.removeClass(cssClasses.INDETERMINATE_CLASS);\n this.setScale_(this.adapter_.getPrimaryBar(), this.progress_);\n } else {\n this.adapter_.addClass(cssClasses.INDETERMINATE_CLASS);\n this.setScale_(this.adapter_.getPrimaryBar(), 1);\n this.setScale_(this.adapter_.getBuffer(), 1);\n }\n }\n\n setProgress(value: number) {\n this.progress_ = value;\n if (this.isDeterminate_) {\n this.setScale_(this.adapter_.getPrimaryBar(), value);\n }\n }\n\n setBuffer(value: number) {\n if (this.isDeterminate_) {\n this.setScale_(this.adapter_.getBuffer(), value);\n }\n }\n\n setReverse(isReversed: boolean) {\n this.isReversed_ = isReversed;\n if (this.isReversed_) {\n this.adapter_.addClass(cssClasses.REVERSED_CLASS);\n } else {\n this.adapter_.removeClass(cssClasses.REVERSED_CLASS);\n }\n }\n\n open() {\n this.adapter_.removeClass(cssClasses.CLOSED_CLASS);\n }\n\n close() {\n this.adapter_.addClass(cssClasses.CLOSED_CLASS);\n }\n\n private setScale_(el: HTMLElement | null, scaleValue: number) {\n if (!el) {\n return;\n }\n const value = `scaleX(${scaleValue})`;\n this.adapter_.setStyle(el, getCorrectPropertyName(window, 'transform'), value);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCLinearProgressFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-linear-progress/foundation.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-list/index.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport * as util from './util';\n\nexport {Corner, CornerBit} from './constants';\nexport {util};\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu-surface/index.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\ntype CssTransformPropertyName = ('transform' | 'webkitTransform');\n\nlet cachedCssTransformPropertyName_: CssTransformPropertyName | undefined;\n\n/**\n * Returns the name of the correct transform property to use on the current browser.\n */\nfunction getTransformPropertyName(globalObj: Window, forceRefresh = false): CssTransformPropertyName {\n if (cachedCssTransformPropertyName_ === undefined || forceRefresh) {\n const el = globalObj.document.createElement('div');\n cachedCssTransformPropertyName_ = 'transform' in el.style ? 'transform' : 'webkitTransform';\n }\n return cachedCssTransformPropertyName_;\n}\n\nexport {getTransformPropertyName};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu-surface/util.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport {Corner} from '@material/menu-surface/constants'; // for backward compatibility\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu/index.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCListFoundation} from '@material/list/foundation';\nimport {MDCMenuSurfaceFoundation} from '@material/menu-surface/foundation';\nimport {MDCMenuAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport class MDCMenuFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n private closeAnimationEndTimerId_ = 0;\n\n /**\n * @see {@link MDCMenuAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCMenuAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClassToElementAtIndex: () => undefined,\n removeClassFromElementAtIndex: () => undefined,\n addAttributeToElementAtIndex: () => undefined,\n removeAttributeFromElementAtIndex: () => undefined,\n elementContainsClass: () => false,\n closeSurface: () => undefined,\n getElementIndex: () => -1,\n getParentElement: () => null,\n getSelectedElementIndex: () => -1,\n notifySelected: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n constructor(adapter?: Partial) {\n super({...MDCMenuFoundation.defaultAdapter, ...adapter});\n }\n\n destroy() {\n if (this.closeAnimationEndTimerId_) {\n clearTimeout(this.closeAnimationEndTimerId_);\n }\n\n this.adapter_.closeSurface();\n }\n\n handleKeydown(evt: KeyboardEvent) {\n const {key, keyCode} = evt;\n const isTab = key === 'Tab' || keyCode === 9;\n\n if (isTab) {\n this.adapter_.closeSurface();\n }\n }\n\n handleItemAction(listItem: Element) {\n const index = this.adapter_.getElementIndex(listItem);\n if (index < 0) {\n return;\n }\n\n this.adapter_.notifySelected({index});\n this.adapter_.closeSurface();\n\n // Wait for the menu to close before adding/removing classes that affect styles.\n this.closeAnimationEndTimerId_ = setTimeout(() => {\n const selectionGroup = this.getSelectionGroup_(listItem);\n if (selectionGroup) {\n this.handleSelectionGroup_(selectionGroup, index);\n }\n }, MDCMenuSurfaceFoundation.numbers.TRANSITION_CLOSE_DURATION);\n }\n\n /**\n * Handles toggling the selected classes in a selection group when a selection is made.\n */\n private handleSelectionGroup_(selectionGroup: Element, index: number) {\n // De-select the previous selection in this group.\n const selectedIndex = this.adapter_.getSelectedElementIndex(selectionGroup);\n if (selectedIndex >= 0) {\n this.adapter_.removeAttributeFromElementAtIndex(selectedIndex, strings.ARIA_SELECTED_ATTR);\n this.adapter_.removeClassFromElementAtIndex(selectedIndex, cssClasses.MENU_SELECTED_LIST_ITEM);\n }\n // Select the new list item in this group.\n this.adapter_.addClassToElementAtIndex(index, cssClasses.MENU_SELECTED_LIST_ITEM);\n this.adapter_.addAttributeToElementAtIndex(index, strings.ARIA_SELECTED_ATTR, 'true');\n }\n\n /**\n * Returns the parent selection group of an element if one exists.\n */\n private getSelectionGroup_(listItem: Element): Element | null {\n let parent = this.adapter_.getParentElement(listItem);\n if (!parent) {\n return null;\n }\n\n let isGroup = this.adapter_.elementContainsClass(parent, cssClasses.MENU_SELECTION_GROUP);\n\n // Iterate through ancestors until we find the group or get to the list.\n while (!isGroup && parent && !this.adapter_.elementContainsClass(parent, MDCListFoundation.cssClasses.ROOT)) {\n parent = this.adapter_.getParentElement(parent);\n isGroup = parent ? this.adapter_.elementContainsClass(parent, cssClasses.MENU_SELECTION_GROUP) : false;\n }\n\n if (isGroup) {\n return parent;\n } else {\n return null;\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCMenuFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu/foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst strings = {\n NOTCH_ELEMENT_SELECTOR: '.mdc-notched-outline__notch',\n};\n\nconst numbers = {\n // This should stay in sync with $mdc-notched-outline-padding * 2.\n NOTCH_ELEMENT_PADDING: 8,\n};\n\nconst cssClasses = {\n NO_LABEL: 'mdc-notched-outline--no-label',\n OUTLINE_NOTCHED: 'mdc-notched-outline--notched',\n OUTLINE_UPGRADED: 'mdc-notched-outline--upgraded',\n};\n\nexport {cssClasses, numbers, strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-notched-outline/constants.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCNotchedOutlineAdapter} from './adapter';\nimport {cssClasses, numbers, strings} from './constants';\n\nexport class MDCNotchedOutlineFoundation extends MDCFoundation {\n static get strings() {\n return strings;\n }\n\n static get cssClasses() {\n return cssClasses;\n }\n\n static get numbers() {\n return numbers;\n }\n\n /**\n * See {@link MDCNotchedOutlineAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCNotchedOutlineAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n setNotchWidthProperty: () => undefined,\n removeNotchWidthProperty: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n constructor(adapter?: Partial) {\n super({...MDCNotchedOutlineFoundation.defaultAdapter, ...adapter});\n }\n\n /**\n * Adds the outline notched selector and updates the notch width calculated based off of notchWidth.\n */\n notch(notchWidth: number) {\n const {OUTLINE_NOTCHED} = MDCNotchedOutlineFoundation.cssClasses;\n\n if (notchWidth > 0) {\n notchWidth += numbers.NOTCH_ELEMENT_PADDING; // Add padding from left/right.\n }\n\n this.adapter_.setNotchWidthProperty(notchWidth);\n this.adapter_.addClass(OUTLINE_NOTCHED);\n }\n\n /**\n * Removes notched outline selector to close the notch in the outline.\n */\n closeNotch() {\n const {OUTLINE_NOTCHED} = MDCNotchedOutlineFoundation.cssClasses;\n this.adapter_.removeClass(OUTLINE_NOTCHED);\n this.adapter_.removeNotchWidthProperty();\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCNotchedOutlineFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-notched-outline/foundation.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCRadioAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport class MDCRadioFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter(): MDCRadioAdapter {\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n setNativeControlDisabled: () => undefined,\n };\n }\n\n constructor(adapter?: Partial) {\n super({...MDCRadioFoundation.defaultAdapter, ...adapter});\n }\n\n setDisabled(disabled: boolean) {\n const {DISABLED} = MDCRadioFoundation.cssClasses;\n this.adapter_.setNativeControlDisabled(disabled);\n if (disabled) {\n this.adapter_.addClass(DISABLED);\n } else {\n this.adapter_.removeClass(DISABLED);\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCRadioFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-radio/foundation.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n DISABLED: 'mdc-select--disabled',\n FOCUSED: 'mdc-select--focused',\n INVALID: 'mdc-select--invalid',\n OUTLINED: 'mdc-select--outlined',\n REQUIRED: 'mdc-select--required',\n ROOT: 'mdc-select',\n SELECTED_ITEM_CLASS: 'mdc-list-item--selected',\n WITH_LEADING_ICON: 'mdc-select--with-leading-icon',\n};\n\nconst strings = {\n ARIA_CONTROLS: 'aria-controls',\n ARIA_SELECTED_ATTR: 'aria-selected',\n CHANGE_EVENT: 'MDCSelect:change',\n ENHANCED_VALUE_ATTR: 'data-value',\n HIDDEN_INPUT_SELECTOR: 'input[type=\"hidden\"]',\n LABEL_SELECTOR: '.mdc-floating-label',\n LEADING_ICON_SELECTOR: '.mdc-select__icon',\n LINE_RIPPLE_SELECTOR: '.mdc-line-ripple',\n MENU_SELECTOR: '.mdc-select__menu',\n NATIVE_CONTROL_SELECTOR: '.mdc-select__native-control',\n OUTLINE_SELECTOR: '.mdc-notched-outline',\n SELECTED_ITEM_SELECTOR: `.${cssClasses.SELECTED_ITEM_CLASS}`,\n SELECTED_TEXT_SELECTOR: '.mdc-select__selected-text',\n};\n\nconst numbers = {\n LABEL_SCALE: 0.75,\n};\n\nexport {cssClasses, strings, numbers};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/constants.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCSelectAdapter} from './adapter';\nimport {cssClasses, numbers, strings} from './constants';\nimport {MDCSelectHelperTextFoundation} from './helper-text/foundation';\nimport {MDCSelectIconFoundation} from './icon/foundation';\nimport {MDCSelectFoundationMap} from './types';\n\nexport class MDCSelectFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get strings() {\n return strings;\n }\n\n /**\n * See {@link MDCSelectAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCSelectAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n hasClass: () => false,\n activateBottomLine: () => undefined,\n deactivateBottomLine: () => undefined,\n setValue: () => undefined,\n getValue: () => '',\n floatLabel: () => undefined,\n getLabelWidth: () => 0,\n hasOutline: () => false,\n notchOutline: () => undefined,\n closeOutline: () => undefined,\n openMenu: () => undefined,\n closeMenu: () => undefined,\n isMenuOpen: () => false,\n setSelectedIndex: () => undefined,\n setDisabled: () => undefined,\n setRippleCenter: () => undefined,\n notifyChange: () => undefined,\n checkValidity: () => false,\n setValid: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private readonly leadingIcon_: MDCSelectIconFoundation | undefined;\n private readonly helperText_: MDCSelectHelperTextFoundation | undefined;\n\n /* istanbul ignore next: optional argument is not a branch statement */\n /**\n * @param adapter\n * @param foundationMap Map from subcomponent names to their subfoundations.\n */\n constructor(adapter?: Partial, foundationMap: Partial = {}) {\n super({...MDCSelectFoundation.defaultAdapter, ...adapter});\n\n this.leadingIcon_ = foundationMap.leadingIcon;\n this.helperText_ = foundationMap.helperText;\n }\n\n setSelectedIndex(index: number) {\n this.adapter_.setSelectedIndex(index);\n this.adapter_.closeMenu();\n const didChange = true;\n this.handleChange(didChange);\n }\n\n setValue(value: string) {\n this.adapter_.setValue(value);\n const didChange = true;\n this.handleChange(didChange);\n }\n\n getValue() {\n return this.adapter_.getValue();\n }\n\n setDisabled(isDisabled: boolean) {\n if (isDisabled) {\n this.adapter_.addClass(cssClasses.DISABLED);\n } else {\n this.adapter_.removeClass(cssClasses.DISABLED);\n }\n this.adapter_.setDisabled(isDisabled);\n this.adapter_.closeMenu();\n\n if (this.leadingIcon_) {\n this.leadingIcon_.setDisabled(isDisabled);\n }\n }\n\n /**\n * @param content Sets the content of the helper text.\n */\n setHelperTextContent(content: string) {\n if (this.helperText_) {\n this.helperText_.setContent(content);\n }\n }\n\n layout() {\n const openNotch = this.getValue().length > 0;\n this.notchOutline(openNotch);\n }\n\n /**\n * Handles value changes, via change event or programmatic updates.\n */\n handleChange(didChange = true) {\n const value = this.getValue();\n const optionHasValue = value.length > 0;\n const isRequired = this.adapter_.hasClass(cssClasses.REQUIRED);\n\n this.notchOutline(optionHasValue);\n\n if (!this.adapter_.hasClass(cssClasses.FOCUSED)) {\n this.adapter_.floatLabel(optionHasValue);\n }\n\n if (didChange) {\n this.adapter_.notifyChange(value);\n\n if (isRequired) {\n this.setValid(this.isValid());\n if (this.helperText_) {\n this.helperText_.setValidity(this.isValid());\n }\n }\n }\n }\n\n /**\n * Handles focus events from select element.\n */\n handleFocus() {\n this.adapter_.addClass(cssClasses.FOCUSED);\n this.adapter_.floatLabel(true);\n this.notchOutline(true);\n this.adapter_.activateBottomLine();\n if (this.helperText_) {\n this.helperText_.showToScreenReader();\n }\n }\n\n /**\n * Handles blur events from select element.\n */\n handleBlur() {\n if (this.adapter_.isMenuOpen()) {\n return;\n }\n this.adapter_.removeClass(cssClasses.FOCUSED);\n this.handleChange(false);\n this.adapter_.deactivateBottomLine();\n\n const isRequired = this.adapter_.hasClass(cssClasses.REQUIRED);\n\n if (isRequired) {\n this.setValid(this.isValid());\n if (this.helperText_) {\n this.helperText_.setValidity(this.isValid());\n }\n }\n }\n\n handleClick(normalizedX: number) {\n if (this.adapter_.isMenuOpen()) {\n return;\n }\n this.adapter_.setRippleCenter(normalizedX);\n\n this.adapter_.openMenu();\n }\n\n handleKeydown(event: KeyboardEvent) {\n if (this.adapter_.isMenuOpen()) {\n return;\n }\n\n const isEnter = event.key === 'Enter' || event.keyCode === 13;\n const isSpace = event.key === 'Space' || event.keyCode === 32;\n const arrowUp = event.key === 'ArrowUp' || event.keyCode === 38;\n const arrowDown = event.key === 'ArrowDown' || event.keyCode === 40;\n\n if (this.adapter_.hasClass(cssClasses.FOCUSED) && (isEnter || isSpace || arrowUp || arrowDown)) {\n this.adapter_.openMenu();\n event.preventDefault();\n }\n }\n\n /**\n * Opens/closes the notched outline.\n */\n notchOutline(openNotch: boolean) {\n if (!this.adapter_.hasOutline()) {\n return;\n }\n const isFocused = this.adapter_.hasClass(cssClasses.FOCUSED);\n\n if (openNotch) {\n const labelScale = numbers.LABEL_SCALE;\n const labelWidth = this.adapter_.getLabelWidth() * labelScale;\n this.adapter_.notchOutline(labelWidth);\n } else if (!isFocused) {\n this.adapter_.closeOutline();\n }\n }\n\n /**\n * Sets the aria label of the leading icon.\n */\n setLeadingIconAriaLabel(label: string) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setAriaLabel(label);\n }\n }\n\n /**\n * Sets the text content of the leading icon.\n */\n setLeadingIconContent(content: string) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setContent(content);\n }\n }\n\n setValid(isValid: boolean) {\n this.adapter_.setValid(isValid);\n }\n\n isValid() {\n return this.adapter_.checkValidity();\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCSelectFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/foundation.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/helper-text/index.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCSelectHelperTextAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport class MDCSelectHelperTextFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n /**\n * See {@link MDCSelectHelperTextAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCSelectHelperTextAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n hasClass: () => false,\n setAttr: () => undefined,\n removeAttr: () => undefined,\n setContent: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n constructor(adapter?: Partial) {\n super({...MDCSelectHelperTextFoundation.defaultAdapter, ...adapter});\n }\n\n /**\n * Sets the content of the helper text field.\n */\n setContent(content: string) {\n this.adapter_.setContent(content);\n }\n\n /**\n * Sets the persistency of the helper text.\n */\n setPersistent(isPersistent: boolean) {\n if (isPersistent) {\n this.adapter_.addClass(cssClasses.HELPER_TEXT_PERSISTENT);\n } else {\n this.adapter_.removeClass(cssClasses.HELPER_TEXT_PERSISTENT);\n }\n }\n\n /**\n * @param isValidation True to make the helper text act as an error validation message.\n */\n setValidation(isValidation: boolean) {\n if (isValidation) {\n this.adapter_.addClass(cssClasses.HELPER_TEXT_VALIDATION_MSG);\n } else {\n this.adapter_.removeClass(cssClasses.HELPER_TEXT_VALIDATION_MSG);\n }\n }\n\n /**\n * Makes the helper text visible to screen readers.\n */\n showToScreenReader() {\n this.adapter_.removeAttr(strings.ARIA_HIDDEN);\n }\n\n /**\n * Sets the validity of the helper text based on the select validity.\n */\n setValidity(selectIsValid: boolean) {\n const helperTextIsPersistent = this.adapter_.hasClass(cssClasses.HELPER_TEXT_PERSISTENT);\n const helperTextIsValidationMsg = this.adapter_.hasClass(cssClasses.HELPER_TEXT_VALIDATION_MSG);\n const validationMsgNeedsDisplay = helperTextIsValidationMsg && !selectIsValid;\n\n if (validationMsgNeedsDisplay) {\n this.adapter_.setAttr(strings.ROLE, 'alert');\n } else {\n this.adapter_.removeAttr(strings.ROLE);\n }\n\n if (!helperTextIsPersistent && !validationMsgNeedsDisplay) {\n this.hide_();\n }\n }\n\n /**\n * Hides the help text from screen readers.\n */\n private hide_() {\n this.adapter_.setAttr(strings.ARIA_HIDDEN, 'true');\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCSelectHelperTextFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/helper-text/foundation.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/icon/index.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCSelectIconAdapter} from './adapter';\nimport {strings} from './constants';\n\ntype InteractionEventType = 'click' | 'keydown';\n\nconst INTERACTION_EVENTS: InteractionEventType[] = ['click', 'keydown'];\n\nexport class MDCSelectIconFoundation extends MDCFoundation {\n static get strings() {\n return strings;\n }\n\n /**\n * See {@link MDCSelectIconAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCSelectIconAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n getAttr: () => null,\n setAttr: () => undefined,\n removeAttr: () => undefined,\n setContent: () => undefined,\n registerInteractionHandler: () => undefined,\n deregisterInteractionHandler: () => undefined,\n notifyIconAction: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private savedTabIndex_: string | null = null;\n\n // assigned in initialSyncWithDOM()\n private readonly interactionHandler_!: SpecificEventListener;\n\n constructor(adapter?: Partial) {\n super({...MDCSelectIconFoundation.defaultAdapter, ...adapter});\n\n this.interactionHandler_ = (evt) => this.handleInteraction(evt);\n }\n\n init() {\n this.savedTabIndex_ = this.adapter_.getAttr('tabindex');\n\n INTERACTION_EVENTS.forEach((evtType) => {\n this.adapter_.registerInteractionHandler(evtType, this.interactionHandler_);\n });\n }\n\n destroy() {\n INTERACTION_EVENTS.forEach((evtType) => {\n this.adapter_.deregisterInteractionHandler(evtType, this.interactionHandler_);\n });\n }\n\n setDisabled(disabled: boolean) {\n if (!this.savedTabIndex_) {\n return;\n }\n\n if (disabled) {\n this.adapter_.setAttr('tabindex', '-1');\n this.adapter_.removeAttr('role');\n } else {\n this.adapter_.setAttr('tabindex', this.savedTabIndex_);\n this.adapter_.setAttr('role', strings.ICON_ROLE);\n }\n }\n\n setAriaLabel(label: string) {\n this.adapter_.setAttr('aria-label', label);\n }\n\n setContent(content: string) {\n this.adapter_.setContent(content);\n }\n\n handleInteraction(evt: MouseEvent | KeyboardEvent) {\n const isEnterKey = (evt as KeyboardEvent).key === 'Enter' || (evt as KeyboardEvent).keyCode === 13;\n if (evt.type === 'click' || isEnterKey) {\n this.adapter_.notifyIconAction();\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCSelectIconFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/icon/foundation.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n ACTIVE: 'mdc-slider--active',\n DISABLED: 'mdc-slider--disabled',\n DISCRETE: 'mdc-slider--discrete',\n FOCUS: 'mdc-slider--focus',\n HAS_TRACK_MARKER: 'mdc-slider--display-markers',\n IN_TRANSIT: 'mdc-slider--in-transit',\n IS_DISCRETE: 'mdc-slider--discrete',\n};\n\nconst strings = {\n ARIA_DISABLED: 'aria-disabled',\n ARIA_VALUEMAX: 'aria-valuemax',\n ARIA_VALUEMIN: 'aria-valuemin',\n ARIA_VALUENOW: 'aria-valuenow',\n CHANGE_EVENT: 'MDCSlider:change',\n INPUT_EVENT: 'MDCSlider:input',\n LAST_TRACK_MARKER_SELECTOR: '.mdc-slider__track-marker:last-child',\n PIN_VALUE_MARKER_SELECTOR: '.mdc-slider__pin-value-marker',\n STEP_DATA_ATTR: 'data-step',\n THUMB_CONTAINER_SELECTOR: '.mdc-slider__thumb-container',\n TRACK_MARKER_CONTAINER_SELECTOR: '.mdc-slider__track-marker-container',\n TRACK_SELECTOR: '.mdc-slider__track',\n};\n\nconst numbers = {\n PAGE_FACTOR: 4,\n};\n\nexport {cssClasses, strings, numbers};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-slider/constants.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {getCorrectEventName, getCorrectPropertyName} from '@material/animation/util';\nimport {MDCFoundation} from '@material/base/foundation';\nimport {EventType, SpecificEventListener} from '@material/base/types';\nimport {MDCSliderAdapter} from './adapter';\nimport {cssClasses, numbers, strings} from './constants';\n\ntype UpEventType = 'mouseup' | 'pointerup' | 'touchend';\ntype DownEventType = 'mousedown' | 'pointerdown' | 'touchstart';\ntype MoveEventType = 'mousemove' | 'pointermove' | 'touchmove';\ntype MouseLikeEvent = MouseEvent | PointerEvent | TouchEvent;\n\ntype MoveEventMap = {\n readonly [K in DownEventType]: MoveEventType;\n};\n\nconst DOWN_EVENTS: DownEventType[] = ['mousedown', 'pointerdown', 'touchstart'];\nconst UP_EVENTS: UpEventType[] = ['mouseup', 'pointerup', 'touchend'];\n\nconst MOVE_EVENT_MAP: MoveEventMap = {\n mousedown: 'mousemove',\n pointerdown: 'pointermove',\n touchstart: 'touchmove',\n};\n\nconst KEY_IDS = {\n ARROW_DOWN: 'ArrowDown',\n ARROW_LEFT: 'ArrowLeft',\n ARROW_RIGHT: 'ArrowRight',\n ARROW_UP: 'ArrowUp',\n END: 'End',\n HOME: 'Home',\n PAGE_DOWN: 'PageDown',\n PAGE_UP: 'PageUp',\n};\n\nexport class MDCSliderFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get defaultAdapter(): MDCSliderAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n hasClass: () => false,\n addClass: () => undefined,\n removeClass: () => undefined,\n getAttribute: () => null,\n setAttribute: () => undefined,\n removeAttribute: () => undefined,\n computeBoundingRect: () => ({top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0}),\n getTabIndex: () => 0,\n registerInteractionHandler: () => undefined,\n deregisterInteractionHandler: () => undefined,\n registerThumbContainerInteractionHandler: () => undefined,\n deregisterThumbContainerInteractionHandler: () => undefined,\n registerBodyInteractionHandler: () => undefined,\n deregisterBodyInteractionHandler: () => undefined,\n registerResizeHandler: () => undefined,\n deregisterResizeHandler: () => undefined,\n notifyInput: () => undefined,\n notifyChange: () => undefined,\n setThumbContainerStyleProperty: () => undefined,\n setTrackStyleProperty: () => undefined,\n setMarkerValue: () => undefined,\n appendTrackMarkers: () => undefined,\n removeTrackMarkers: () => undefined,\n setLastTrackMarkersStyleProperty: () => undefined,\n isRTL: () => false,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private rect_!: ClientRect; // assigned in layout() via init()\n\n /**\n * We set this to NaN since we want it to be a number, but we can't use '0' or '-1'\n * because those could be valid tabindices set by the client code.\n */\n private savedTabIndex_ = NaN;\n\n private active_ = false;\n private inTransit_ = false;\n private isDiscrete_ = false;\n private hasTrackMarker_ = false;\n private handlingThumbTargetEvt_ = false;\n private min_ = 0;\n private max_ = 100;\n private step_ = 0;\n private value_ = 0;\n private disabled_ = false;\n private preventFocusState_ = false;\n\n private readonly thumbContainerPointerHandler_: SpecificEventListener;\n private readonly interactionStartHandler_: SpecificEventListener;\n private readonly keydownHandler_: SpecificEventListener<'keydown'>;\n private readonly focusHandler_: SpecificEventListener<'focus'>;\n private readonly blurHandler_: SpecificEventListener<'blur'>;\n private readonly resizeHandler_: SpecificEventListener<'resize'>;\n\n constructor(adapter?: Partial) {\n super({...MDCSliderFoundation.defaultAdapter, ...adapter});\n\n this.thumbContainerPointerHandler_ = () => this.handlingThumbTargetEvt_ = true;\n this.interactionStartHandler_ = (evt: MouseLikeEvent) => this.handleDown_(evt);\n this.keydownHandler_ = (evt) => this.handleKeydown_(evt);\n this.focusHandler_ = () => this.handleFocus_();\n this.blurHandler_ = () => this.handleBlur_();\n this.resizeHandler_ = () => this.layout();\n }\n\n init() {\n this.isDiscrete_ = this.adapter_.hasClass(cssClasses.IS_DISCRETE);\n this.hasTrackMarker_ = this.adapter_.hasClass(cssClasses.HAS_TRACK_MARKER);\n\n DOWN_EVENTS.forEach((evtName) => {\n this.adapter_.registerInteractionHandler(evtName, this.interactionStartHandler_);\n this.adapter_.registerThumbContainerInteractionHandler(evtName, this.thumbContainerPointerHandler_);\n });\n\n this.adapter_.registerInteractionHandler('keydown', this.keydownHandler_);\n this.adapter_.registerInteractionHandler('focus', this.focusHandler_);\n this.adapter_.registerInteractionHandler('blur', this.blurHandler_);\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n\n this.layout();\n\n // At last step, provide a reasonable default value to discrete slider\n if (this.isDiscrete_ && this.getStep() === 0) {\n this.step_ = 1;\n }\n }\n\n destroy() {\n DOWN_EVENTS.forEach((evtName) => {\n this.adapter_.deregisterInteractionHandler(evtName, this.interactionStartHandler_);\n this.adapter_.deregisterThumbContainerInteractionHandler(evtName, this.thumbContainerPointerHandler_);\n });\n\n this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_);\n this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_);\n this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_);\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n }\n\n setupTrackMarker() {\n if (this.isDiscrete_ && this.hasTrackMarker_ && this.getStep() !== 0) {\n const min = this.getMin();\n const max = this.getMax();\n const step = this.getStep();\n let numMarkers = (max - min) / step;\n\n // In case distance between max & min is indivisible to step,\n // we place the secondary to last marker proportionally at where thumb\n // could reach and place the last marker at max value\n const indivisible = Math.ceil(numMarkers) !== numMarkers;\n if (indivisible) {\n numMarkers = Math.ceil(numMarkers);\n }\n\n this.adapter_.removeTrackMarkers();\n this.adapter_.appendTrackMarkers(numMarkers);\n\n if (indivisible) {\n const lastStepRatio = (max - numMarkers * step) / step + 1;\n this.adapter_.setLastTrackMarkersStyleProperty('flex-grow', String(lastStepRatio));\n }\n }\n }\n\n layout() {\n this.rect_ = this.adapter_.computeBoundingRect();\n this.updateUIForCurrentValue_();\n }\n\n getValue(): number {\n return this.value_;\n }\n\n setValue(value: number) {\n this.setValue_(value, false);\n }\n\n getMax(): number {\n return this.max_;\n }\n\n setMax(max: number) {\n if (max < this.min_) {\n throw new Error('Cannot set max to be less than the slider\\'s minimum value');\n }\n this.max_ = max;\n this.setValue_(this.value_, false, true);\n this.adapter_.setAttribute(strings.ARIA_VALUEMAX, String(this.max_));\n this.setupTrackMarker();\n }\n\n getMin(): number {\n return this.min_;\n }\n\n setMin(min: number) {\n if (min > this.max_) {\n throw new Error('Cannot set min to be greater than the slider\\'s maximum value');\n }\n this.min_ = min;\n this.setValue_(this.value_, false, true);\n this.adapter_.setAttribute(strings.ARIA_VALUEMIN, String(this.min_));\n this.setupTrackMarker();\n }\n\n getStep(): number {\n return this.step_;\n }\n\n setStep(step: number) {\n if (step < 0) {\n throw new Error('Step cannot be set to a negative number');\n }\n if (this.isDiscrete_ && (typeof (step) !== 'number' || step < 1)) {\n step = 1;\n }\n this.step_ = step;\n this.setValue_(this.value_, false, true);\n this.setupTrackMarker();\n }\n\n isDisabled(): boolean {\n return this.disabled_;\n }\n\n setDisabled(disabled: boolean) {\n this.disabled_ = disabled;\n this.toggleClass_(cssClasses.DISABLED, this.disabled_);\n if (this.disabled_) {\n this.savedTabIndex_ = this.adapter_.getTabIndex();\n this.adapter_.setAttribute(strings.ARIA_DISABLED, 'true');\n this.adapter_.removeAttribute('tabindex');\n } else {\n this.adapter_.removeAttribute(strings.ARIA_DISABLED);\n if (!isNaN(this.savedTabIndex_)) {\n this.adapter_.setAttribute('tabindex', String(this.savedTabIndex_));\n }\n }\n }\n\n /**\n * Called when the user starts interacting with the slider\n */\n private handleDown_(downEvent: MouseLikeEvent) {\n if (this.disabled_) {\n return;\n }\n\n this.preventFocusState_ = true;\n this.setInTransit_(!this.handlingThumbTargetEvt_);\n this.handlingThumbTargetEvt_ = false;\n this.setActive_(true);\n\n const moveHandler = (moveEvent: MouseLikeEvent) => {\n this.handleMove_(moveEvent);\n };\n\n const moveEventType = MOVE_EVENT_MAP[downEvent.type as DownEventType];\n\n // Note: upHandler is [de]registered on ALL potential pointer-related release event types, since some browsers\n // do not always fire these consistently in pairs.\n // (See https://github.com/material-components/material-components-web/issues/1192)\n const upHandler = () => {\n this.handleUp_();\n this.adapter_.deregisterBodyInteractionHandler(moveEventType, moveHandler);\n UP_EVENTS.forEach((evtName) => this.adapter_.deregisterBodyInteractionHandler(evtName, upHandler));\n };\n\n this.adapter_.registerBodyInteractionHandler(moveEventType, moveHandler);\n UP_EVENTS.forEach((evtName) => this.adapter_.registerBodyInteractionHandler(evtName, upHandler));\n this.setValueFromEvt_(downEvent);\n }\n\n /**\n * Called when the user moves the slider\n */\n private handleMove_(evt: MouseLikeEvent) {\n evt.preventDefault();\n this.setValueFromEvt_(evt);\n }\n\n /**\n * Called when the user's interaction with the slider ends\n */\n private handleUp_() {\n this.setActive_(false);\n this.adapter_.notifyChange();\n }\n\n /**\n * Returns the pageX of the event\n */\n private getPageX_(evt: MouseLikeEvent): number {\n if ((evt as TouchEvent).targetTouches && (evt as TouchEvent).targetTouches.length > 0) {\n return (evt as TouchEvent).targetTouches[0].pageX;\n }\n return (evt as MouseEvent).pageX;\n }\n\n /**\n * Sets the slider value from an event\n */\n private setValueFromEvt_(evt: MouseLikeEvent) {\n const pageX = this.getPageX_(evt);\n const value = this.computeValueFromPageX_(pageX);\n this.setValue_(value, true);\n }\n\n /**\n * Computes the new value from the pageX position\n */\n private computeValueFromPageX_(pageX: number): number {\n const {max_: max, min_: min} = this;\n const xPos = pageX - this.rect_.left;\n let pctComplete = xPos / this.rect_.width;\n if (this.adapter_.isRTL()) {\n pctComplete = 1 - pctComplete;\n }\n // Fit the percentage complete between the range [min,max]\n // by remapping from [0, 1] to [min, min+(max-min)].\n return min + pctComplete * (max - min);\n }\n\n /**\n * Handles keydown events\n */\n private handleKeydown_(evt: KeyboardEvent) {\n const keyId = this.getKeyId_(evt);\n const value = this.getValueForKeyId_(keyId);\n if (isNaN(value)) {\n return;\n }\n\n // Prevent page from scrolling due to key presses that would normally scroll the page\n evt.preventDefault();\n this.adapter_.addClass(cssClasses.FOCUS);\n this.setValue_(value, true);\n this.adapter_.notifyChange();\n }\n\n /**\n * Returns the computed name of the event\n */\n private getKeyId_(kbdEvt: KeyboardEvent): string {\n if (kbdEvt.key === KEY_IDS.ARROW_LEFT || kbdEvt.keyCode === 37) {\n return KEY_IDS.ARROW_LEFT;\n }\n if (kbdEvt.key === KEY_IDS.ARROW_RIGHT || kbdEvt.keyCode === 39) {\n return KEY_IDS.ARROW_RIGHT;\n }\n if (kbdEvt.key === KEY_IDS.ARROW_UP || kbdEvt.keyCode === 38) {\n return KEY_IDS.ARROW_UP;\n }\n if (kbdEvt.key === KEY_IDS.ARROW_DOWN || kbdEvt.keyCode === 40) {\n return KEY_IDS.ARROW_DOWN;\n }\n if (kbdEvt.key === KEY_IDS.HOME || kbdEvt.keyCode === 36) {\n return KEY_IDS.HOME;\n }\n if (kbdEvt.key === KEY_IDS.END || kbdEvt.keyCode === 35) {\n return KEY_IDS.END;\n }\n if (kbdEvt.key === KEY_IDS.PAGE_UP || kbdEvt.keyCode === 33) {\n return KEY_IDS.PAGE_UP;\n }\n if (kbdEvt.key === KEY_IDS.PAGE_DOWN || kbdEvt.keyCode === 34) {\n return KEY_IDS.PAGE_DOWN;\n }\n return '';\n }\n\n /**\n * Computes the value given a keyboard key ID\n */\n private getValueForKeyId_(keyId: string): number {\n const {max_: max, min_: min, step_: step} = this;\n let delta = step || (max - min) / 100;\n const valueNeedsToBeFlipped = this.adapter_.isRTL() && (\n keyId === KEY_IDS.ARROW_LEFT || keyId === KEY_IDS.ARROW_RIGHT\n );\n if (valueNeedsToBeFlipped) {\n delta = -delta;\n }\n\n switch (keyId) {\n case KEY_IDS.ARROW_LEFT:\n case KEY_IDS.ARROW_DOWN:\n return this.value_ - delta;\n case KEY_IDS.ARROW_RIGHT:\n case KEY_IDS.ARROW_UP:\n return this.value_ + delta;\n case KEY_IDS.HOME:\n return this.min_;\n case KEY_IDS.END:\n return this.max_;\n case KEY_IDS.PAGE_UP:\n return this.value_ + delta * numbers.PAGE_FACTOR;\n case KEY_IDS.PAGE_DOWN:\n return this.value_ - delta * numbers.PAGE_FACTOR;\n default:\n return NaN;\n }\n }\n\n private handleFocus_() {\n if (this.preventFocusState_) {\n return;\n }\n this.adapter_.addClass(cssClasses.FOCUS);\n }\n\n private handleBlur_() {\n this.preventFocusState_ = false;\n this.adapter_.removeClass(cssClasses.FOCUS);\n }\n\n /**\n * Sets the value of the slider\n */\n private setValue_(value: number, shouldFireInput: boolean, force = false) {\n if (value === this.value_ && !force) {\n return;\n }\n\n const {min_: min, max_: max} = this;\n const valueSetToBoundary = value === min || value === max;\n if (this.step_ && !valueSetToBoundary) {\n value = this.quantize_(value);\n }\n if (value < min) {\n value = min;\n } else if (value > max) {\n value = max;\n }\n this.value_ = value;\n this.adapter_.setAttribute(strings.ARIA_VALUENOW, String(this.value_));\n this.updateUIForCurrentValue_();\n\n if (shouldFireInput) {\n this.adapter_.notifyInput();\n if (this.isDiscrete_) {\n this.adapter_.setMarkerValue(value);\n }\n }\n }\n\n /**\n * Calculates the quantized value\n */\n private quantize_(value: number): number {\n const numSteps = Math.round(value / this.step_);\n return numSteps * this.step_;\n }\n\n private updateUIForCurrentValue_() {\n const {max_: max, min_: min, value_: value} = this;\n const pctComplete = (value - min) / (max - min);\n let translatePx = pctComplete * this.rect_.width;\n if (this.adapter_.isRTL()) {\n translatePx = this.rect_.width - translatePx;\n }\n\n const transformProp = getCorrectPropertyName(window, 'transform');\n const transitionendEvtName = getCorrectEventName(window, 'transitionend') as EventType;\n\n if (this.inTransit_) {\n const onTransitionEnd = () => {\n this.setInTransit_(false);\n this.adapter_.deregisterThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd);\n };\n this.adapter_.registerThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd);\n }\n\n requestAnimationFrame(() => {\n // NOTE(traviskaufman): It would be nice to use calc() here,\n // but IE cannot handle calcs in transforms correctly.\n // See: https://goo.gl/NC2itk\n // Also note that the -50% offset is used to center the slider thumb.\n this.adapter_.setThumbContainerStyleProperty(transformProp, `translateX(${translatePx}px) translateX(-50%)`);\n this.adapter_.setTrackStyleProperty(transformProp, `scaleX(${pctComplete})`);\n });\n }\n\n /**\n * Toggles the active state of the slider\n */\n private setActive_(active: boolean) {\n this.active_ = active;\n this.toggleClass_(cssClasses.ACTIVE, this.active_);\n }\n\n /**\n * Toggles the inTransit state of the slider\n */\n private setInTransit_(inTransit: boolean) {\n this.inTransit_ = inTransit;\n this.toggleClass_(cssClasses.IN_TRANSIT, this.inTransit_);\n }\n\n /**\n * Conditionally adds or removes a class based on shouldBePresent\n */\n private toggleClass_(className: string, shouldBePresent: boolean) {\n if (shouldBePresent) {\n this.adapter_.addClass(className);\n } else {\n this.adapter_.removeClass(className);\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCSliderFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-slider/foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {numbers, strings} from './constants';\n\nconst {ARIA_LIVE_DELAY_MS} = numbers;\nconst {ARIA_LIVE_LABEL_TEXT_ATTR} = strings;\n\nfunction announce(ariaEl: Element, labelEl: Element = ariaEl) {\n const priority = ariaEl.getAttribute('aria-live');\n\n // Trim text to ignore ` ` (see below).\n // textContent is only null if the node is a document, DOCTYPE, or notation.\n const labelText = labelEl.textContent!.trim();\n if (!labelText || !priority) {\n return;\n }\n\n // Temporarily disable `aria-live` to prevent JAWS+Firefox from announcing the message twice.\n ariaEl.setAttribute('aria-live', 'off');\n\n // Temporarily clear `textContent` to force a DOM mutation event that will be detected by screen readers.\n // `aria-live` elements are only announced when the element's `textContent` *changes*, so snackbars\n // sent to the browser in the initial HTML response won't be read unless we clear the element's `textContent` first.\n // Similarly, displaying the same snackbar message twice in a row doesn't trigger a DOM mutation event,\n // so screen readers won't announce the second message unless we first clear `textContent`.\n //\n // We have to clear the label text two different ways to make it work in all browsers and screen readers:\n //\n // 1. `textContent = ''` is required for IE11 + JAWS\n // 2. `innerHTML = ' '` is required for Chrome + JAWS and NVDA\n //\n // All other browser/screen reader combinations support both methods.\n //\n // The wrapper `` visually hides the space character so that it doesn't cause jank when added/removed.\n // N.B.: Setting `position: absolute`, `opacity: 0`, or `height: 0` prevents Chrome from detecting the DOM change.\n //\n // This technique has been tested in:\n //\n // * JAWS 2019:\n // - Chrome 70\n // - Firefox 60 (ESR)\n // - IE 11\n // * NVDA 2018:\n // - Chrome 70\n // - Firefox 60 (ESR)\n // - IE 11\n // * ChromeVox 53\n labelEl.textContent = '';\n labelEl.innerHTML = ' ';\n\n // Prevent visual jank by temporarily displaying the label text in the ::before pseudo-element.\n // CSS generated content is normally announced by screen readers\n // (except in IE 11; see https://tink.uk/accessibility-support-for-css-generated-content/);\n // however, `aria-live` is turned off, so this DOM update will be ignored by screen readers.\n labelEl.setAttribute(ARIA_LIVE_LABEL_TEXT_ATTR, labelText);\n\n setTimeout(() => {\n // Allow screen readers to announce changes to the DOM again.\n ariaEl.setAttribute('aria-live', priority);\n\n // Remove the message from the ::before pseudo-element.\n labelEl.removeAttribute(ARIA_LIVE_LABEL_TEXT_ATTR);\n\n // Restore the original label text, which will be announced by screen readers.\n labelEl.textContent = labelText;\n }, ARIA_LIVE_DELAY_MS);\n}\n\nexport {announce};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-snackbar/util.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCSnackbarAdapter} from './adapter';\nimport {cssClasses, numbers, strings} from './constants';\n\nconst {OPENING, OPEN, CLOSING} = cssClasses;\nconst {REASON_ACTION, REASON_DISMISS} = strings;\n\nexport class MDCSnackbarFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get defaultAdapter(): MDCSnackbarAdapter {\n return {\n addClass: () => undefined,\n announce: () => undefined,\n notifyClosed: () => undefined,\n notifyClosing: () => undefined,\n notifyOpened: () => undefined,\n notifyOpening: () => undefined,\n removeClass: () => undefined,\n };\n }\n\n private isOpen_ = false;\n private animationFrame_ = 0;\n private animationTimer_ = 0;\n private autoDismissTimer_ = 0;\n private autoDismissTimeoutMs_ = numbers.DEFAULT_AUTO_DISMISS_TIMEOUT_MS;\n private closeOnEscape_ = true;\n\n constructor(adapter?: Partial) {\n super({...MDCSnackbarFoundation.defaultAdapter, ...adapter});\n }\n\n destroy() {\n this.clearAutoDismissTimer_();\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = 0;\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = 0;\n this.adapter_.removeClass(OPENING);\n this.adapter_.removeClass(OPEN);\n this.adapter_.removeClass(CLOSING);\n }\n\n open() {\n this.clearAutoDismissTimer_();\n this.isOpen_ = true;\n this.adapter_.notifyOpening();\n this.adapter_.removeClass(CLOSING);\n this.adapter_.addClass(OPENING);\n this.adapter_.announce();\n\n // Wait a frame once display is no longer \"none\", to establish basis for animation\n this.runNextAnimationFrame_(() => {\n this.adapter_.addClass(OPEN);\n\n this.animationTimer_ = setTimeout(() => {\n this.handleAnimationTimerEnd_();\n this.adapter_.notifyOpened();\n this.autoDismissTimer_ = setTimeout(() => {\n this.close(REASON_DISMISS);\n }, this.getTimeoutMs());\n }, numbers.SNACKBAR_ANIMATION_OPEN_TIME_MS);\n });\n }\n\n /**\n * @param reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the\n * `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom\n * client-specific values may also be used if desired.\n */\n close(reason = '') {\n if (!this.isOpen_) {\n // Avoid redundant close calls (and events), e.g. repeated interactions as the snackbar is animating closed\n return;\n }\n\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = 0;\n this.clearAutoDismissTimer_();\n\n this.isOpen_ = false;\n this.adapter_.notifyClosing(reason);\n this.adapter_.addClass(cssClasses.CLOSING);\n this.adapter_.removeClass(cssClasses.OPEN);\n this.adapter_.removeClass(cssClasses.OPENING);\n\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = setTimeout(() => {\n this.handleAnimationTimerEnd_();\n this.adapter_.notifyClosed(reason);\n }, numbers.SNACKBAR_ANIMATION_CLOSE_TIME_MS);\n }\n\n isOpen(): boolean {\n return this.isOpen_;\n }\n\n getTimeoutMs(): number {\n return this.autoDismissTimeoutMs_;\n }\n\n setTimeoutMs(timeoutMs: number) {\n // Use shorter variable names to make the code more readable\n const minValue = numbers.MIN_AUTO_DISMISS_TIMEOUT_MS;\n const maxValue = numbers.MAX_AUTO_DISMISS_TIMEOUT_MS;\n\n if (timeoutMs <= maxValue && timeoutMs >= minValue) {\n this.autoDismissTimeoutMs_ = timeoutMs;\n } else {\n throw new Error(`timeoutMs must be an integer in the range ${minValue}–${maxValue}, but got '${timeoutMs}'`);\n }\n }\n\n getCloseOnEscape(): boolean {\n return this.closeOnEscape_;\n }\n\n setCloseOnEscape(closeOnEscape: boolean) {\n this.closeOnEscape_ = closeOnEscape;\n }\n\n handleKeyDown(evt: KeyboardEvent) {\n const isEscapeKey = evt.key === 'Escape' || evt.keyCode === 27;\n if (isEscapeKey && this.getCloseOnEscape()) {\n this.close(REASON_DISMISS);\n }\n }\n\n handleActionButtonClick(_evt: MouseEvent) {\n this.close(REASON_ACTION);\n }\n\n handleActionIconClick(_evt: MouseEvent) {\n this.close(REASON_DISMISS);\n }\n\n private clearAutoDismissTimer_() {\n clearTimeout(this.autoDismissTimer_);\n this.autoDismissTimer_ = 0;\n }\n\n private handleAnimationTimerEnd_() {\n this.animationTimer_ = 0;\n this.adapter_.removeClass(cssClasses.OPENING);\n this.adapter_.removeClass(cssClasses.CLOSING);\n }\n\n /**\n * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.\n */\n private runNextAnimationFrame_(callback: () => void) {\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = requestAnimationFrame(() => {\n this.animationFrame_ = 0;\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = setTimeout(callback, 0);\n });\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCSnackbarFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-snackbar/foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCSwitchAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport class MDCSwitchFoundation extends MDCFoundation {\n /** The string constants used by the switch. */\n static get strings() {\n return strings;\n }\n\n /** The CSS classes used by the switch. */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** The default Adapter for the switch. */\n static get defaultAdapter(): MDCSwitchAdapter {\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n setNativeControlChecked: () => undefined,\n setNativeControlDisabled: () => undefined,\n };\n }\n\n constructor(adapter?: Partial) {\n super({...MDCSwitchFoundation.defaultAdapter, ...adapter});\n }\n\n /** Sets the checked state of the switch. */\n setChecked(checked: boolean) {\n this.adapter_.setNativeControlChecked(checked);\n this.updateCheckedStyling_(checked);\n }\n\n /** Sets the disabled state of the switch. */\n setDisabled(disabled: boolean) {\n this.adapter_.setNativeControlDisabled(disabled);\n if (disabled) {\n this.adapter_.addClass(cssClasses.DISABLED);\n } else {\n this.adapter_.removeClass(cssClasses.DISABLED);\n }\n }\n\n /** Handles the change event for the switch native control. */\n handleChange(evt: Event) {\n const nativeControl = evt.target as HTMLInputElement;\n this.updateCheckedStyling_(nativeControl.checked);\n }\n\n /** Updates the styling of the switch based on its checked state. */\n private updateCheckedStyling_(checked: boolean) {\n if (checked) {\n this.adapter_.addClass(cssClasses.CHECKED);\n } else {\n this.adapter_.removeClass(cssClasses.CHECKED);\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCSwitchFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-switch/foundation.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport * as util from './util';\n\nexport {util};\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/index.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {cssClasses} from './constants';\n\n/**\n * Stores result from computeHorizontalScrollbarHeight to avoid redundant processing.\n */\nlet horizontalScrollbarHeight_: number | undefined;\n\n/**\n * Computes the height of browser-rendered horizontal scrollbars using a self-created test element.\n * May return 0 (e.g. on OS X browsers under default configuration).\n */\nexport function computeHorizontalScrollbarHeight(documentObj: Document, shouldCacheResult = true): number {\n if (shouldCacheResult && typeof horizontalScrollbarHeight_ !== 'undefined') {\n return horizontalScrollbarHeight_;\n }\n\n const el = documentObj.createElement('div');\n el.classList.add(cssClasses.SCROLL_TEST);\n documentObj.body.appendChild(el);\n\n const horizontalScrollbarHeight = el.offsetHeight - el.clientHeight;\n documentObj.body.removeChild(el);\n\n if (shouldCacheResult) {\n horizontalScrollbarHeight_ = horizontalScrollbarHeight;\n }\n return horizontalScrollbarHeight;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/util.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n ANIMATING: 'mdc-tab-scroller--animating',\n SCROLL_AREA_SCROLL: 'mdc-tab-scroller__scroll-area--scroll',\n SCROLL_TEST: 'mdc-tab-scroller__test',\n};\n\nconst strings = {\n AREA_SELECTOR: '.mdc-tab-scroller__scroll-area',\n CONTENT_SELECTOR: '.mdc-tab-scroller__scroll-content',\n};\n\nexport {\n cssClasses,\n strings,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/constants.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCTabScrollerAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\nimport {MDCTabScrollerRTLDefault} from './rtl-default-scroller';\nimport {MDCTabScrollerRTLNegative} from './rtl-negative-scroller';\nimport {MDCTabScrollerRTLReverse} from './rtl-reverse-scroller';\nimport {MDCTabScrollerRTL} from './rtl-scroller';\nimport {MDCTabScrollerAnimation, MDCTabScrollerHorizontalEdges} from './types';\n\nexport class MDCTabScrollerFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter(): MDCTabScrollerAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n eventTargetMatchesSelector: () => false,\n addClass: () => undefined,\n removeClass: () => undefined,\n addScrollAreaClass: () => undefined,\n setScrollAreaStyleProperty: () => undefined,\n setScrollContentStyleProperty: () => undefined,\n getScrollContentStyleValue: () => '',\n setScrollAreaScrollLeft: () => undefined,\n getScrollAreaScrollLeft: () => 0,\n getScrollContentOffsetWidth: () => 0,\n getScrollAreaOffsetWidth: () => 0,\n computeScrollAreaClientRect: () => ({top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0}),\n computeScrollContentClientRect: () => ({top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0}),\n computeHorizontalScrollbarHeight: () => 0,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n /**\n * Controls whether we should handle the transitionend and interaction events during the animation.\n */\n private isAnimating_ = false;\n\n /**\n * The MDCTabScrollerRTL instance varies per browser and allows us to encapsulate the peculiar browser behavior\n * of RTL scrolling in it's own class.\n */\n private rtlScrollerInstance_?: MDCTabScrollerRTL;\n\n constructor(adapter?: Partial) {\n super({...MDCTabScrollerFoundation.defaultAdapter, ...adapter});\n }\n\n init() {\n // Compute horizontal scrollbar height on scroller with overflow initially hidden, then update overflow to scroll\n // and immediately adjust bottom margin to avoid the scrollbar initially appearing before JS runs.\n const horizontalScrollbarHeight = this.adapter_.computeHorizontalScrollbarHeight();\n this.adapter_.setScrollAreaStyleProperty('margin-bottom', -horizontalScrollbarHeight + 'px');\n this.adapter_.addScrollAreaClass(MDCTabScrollerFoundation.cssClasses.SCROLL_AREA_SCROLL);\n }\n\n /**\n * Computes the current visual scroll position\n */\n getScrollPosition(): number {\n if (this.isRTL_()) {\n return this.computeCurrentScrollPositionRTL_();\n }\n\n const currentTranslateX = this.calculateCurrentTranslateX_();\n const scrollLeft = this.adapter_.getScrollAreaScrollLeft();\n return scrollLeft - currentTranslateX;\n }\n\n /**\n * Handles interaction events that occur during transition\n */\n handleInteraction() {\n // Early exit if we aren't animating\n if (!this.isAnimating_) {\n return;\n }\n\n // Prevent other event listeners from handling this event\n this.stopScrollAnimation_();\n }\n\n /**\n * Handles the transitionend event\n */\n handleTransitionEnd(evt: Event) {\n // Early exit if we aren't animating or the event was triggered by a different element.\n const evtTarget = evt.target as Element;\n if (!this.isAnimating_ ||\n !this.adapter_.eventTargetMatchesSelector(evtTarget, MDCTabScrollerFoundation.strings.CONTENT_SELECTOR)) {\n return;\n }\n\n this.isAnimating_ = false;\n this.adapter_.removeClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);\n }\n\n /**\n * Increment the scroll value by the scrollXIncrement\n * @param scrollXIncrement The value by which to increment the scroll position\n */\n incrementScroll(scrollXIncrement: number) {\n // Early exit for non-operational increment values\n if (scrollXIncrement === 0) {\n return;\n }\n\n if (this.isRTL_()) {\n return this.incrementScrollRTL_(scrollXIncrement);\n }\n\n this.incrementScroll_(scrollXIncrement);\n }\n\n /**\n * Scrolls to the given scrollX value\n */\n scrollTo(scrollX: number) {\n if (this.isRTL_()) {\n return this.scrollToRTL_(scrollX);\n }\n\n this.scrollTo_(scrollX);\n }\n\n /**\n * @return Browser-specific {@link MDCTabScrollerRTL} instance.\n */\n getRTLScroller(): MDCTabScrollerRTL {\n if (!this.rtlScrollerInstance_) {\n this.rtlScrollerInstance_ = this.rtlScrollerFactory_();\n }\n\n return this.rtlScrollerInstance_;\n }\n\n /**\n * @return translateX value from a CSS matrix transform function string.\n */\n private calculateCurrentTranslateX_(): number {\n const transformValue = this.adapter_.getScrollContentStyleValue('transform');\n // Early exit if no transform is present\n if (transformValue === 'none') {\n return 0;\n }\n\n // The transform value comes back as a matrix transformation in the form\n // of `matrix(a, b, c, d, tx, ty)`. We only care about tx (translateX) so\n // we're going to grab all the parenthesized values, strip out tx, and\n // parse it.\n const match = /\\((.+?)\\)/.exec(transformValue);\n if (!match) {\n return 0;\n }\n\n const matrixParams = match[1];\n\n // tslint:disable-next-line:ban-ts-ignore \"Unused vars\" should be a linter warning, not a compiler error.\n // @ts-ignore These unused variables should retain their semantic names for clarity.\n const [a, b, c, d, tx, ty] = matrixParams.split(',');\n\n return parseFloat(tx); // tslint:disable-line:ban\n }\n\n /**\n * Calculates a safe scroll value that is > 0 and < the max scroll value\n * @param scrollX The distance to scroll\n */\n private clampScrollValue_(scrollX: number): number {\n const edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.left, scrollX), edges.right);\n }\n\n private computeCurrentScrollPositionRTL_(): number {\n const translateX = this.calculateCurrentTranslateX_();\n return this.getRTLScroller().getScrollPositionRTL(translateX);\n }\n\n private calculateScrollEdges_(): MDCTabScrollerHorizontalEdges {\n const contentWidth = this.adapter_.getScrollContentOffsetWidth();\n const rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return {\n left: 0,\n right: contentWidth - rootWidth,\n };\n }\n\n /**\n * Internal scroll method\n * @param scrollX The new scroll position\n */\n private scrollTo_(scrollX: number) {\n const currentScrollX = this.getScrollPosition();\n const safeScrollX = this.clampScrollValue_(scrollX);\n const scrollDelta = safeScrollX - currentScrollX;\n this.animate_({\n finalScrollPosition: safeScrollX,\n scrollDelta,\n });\n }\n\n /**\n * Internal RTL scroll method\n * @param scrollX The new scroll position\n */\n private scrollToRTL_(scrollX: number) {\n const animation = this.getRTLScroller().scrollToRTL(scrollX);\n this.animate_(animation);\n }\n\n /**\n * Internal increment scroll method\n * @param scrollX The new scroll position increment\n */\n private incrementScroll_(scrollX: number) {\n const currentScrollX = this.getScrollPosition();\n const targetScrollX = scrollX + currentScrollX;\n const safeScrollX = this.clampScrollValue_(targetScrollX);\n const scrollDelta = safeScrollX - currentScrollX;\n this.animate_({\n finalScrollPosition: safeScrollX,\n scrollDelta,\n });\n }\n\n /**\n * Internal increment scroll RTL method\n * @param scrollX The new scroll position RTL increment\n */\n private incrementScrollRTL_(scrollX: number) {\n const animation = this.getRTLScroller().incrementScrollRTL(scrollX);\n this.animate_(animation);\n }\n\n /**\n * Animates the tab scrolling\n * @param animation The animation to apply\n */\n private animate_(animation: MDCTabScrollerAnimation) {\n // Early exit if translateX is 0, which means there's no animation to perform\n if (animation.scrollDelta === 0) {\n return;\n }\n\n this.stopScrollAnimation_();\n // This animation uses the FLIP approach.\n // Read more here: https://aerotwist.com/blog/flip-your-animations/\n this.adapter_.setScrollAreaScrollLeft(animation.finalScrollPosition);\n this.adapter_.setScrollContentStyleProperty('transform', `translateX(${animation.scrollDelta}px)`);\n // Force repaint\n this.adapter_.computeScrollAreaClientRect();\n\n requestAnimationFrame(() => {\n this.adapter_.addClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);\n this.adapter_.setScrollContentStyleProperty('transform', 'none');\n });\n\n this.isAnimating_ = true;\n }\n\n /**\n * Stops scroll animation\n */\n private stopScrollAnimation_() {\n this.isAnimating_ = false;\n const currentScrollPosition = this.getAnimatingScrollPosition_();\n this.adapter_.removeClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);\n this.adapter_.setScrollContentStyleProperty('transform', 'translateX(0px)');\n this.adapter_.setScrollAreaScrollLeft(currentScrollPosition);\n }\n\n /**\n * Gets the current scroll position during animation\n */\n private getAnimatingScrollPosition_(): number {\n const currentTranslateX = this.calculateCurrentTranslateX_();\n const scrollLeft = this.adapter_.getScrollAreaScrollLeft();\n if (this.isRTL_()) {\n return this.getRTLScroller().getAnimatingScrollPosition(scrollLeft, currentTranslateX);\n }\n\n return scrollLeft - currentTranslateX;\n }\n\n /**\n * Determines the RTL Scroller to use\n */\n private rtlScrollerFactory_(): MDCTabScrollerRTL {\n // Browsers have three different implementations of scrollLeft in RTL mode,\n // dependent on the browser. The behavior is based off the max LTR\n // scrollLeft value and 0.\n //\n // * Default scrolling in RTL *\n // - Left-most value: 0\n // - Right-most value: Max LTR scrollLeft value\n //\n // * Negative scrolling in RTL *\n // - Left-most value: Negated max LTR scrollLeft value\n // - Right-most value: 0\n //\n // * Reverse scrolling in RTL *\n // - Left-most value: Max LTR scrollLeft value\n // - Right-most value: 0\n //\n // We use those principles below to determine which RTL scrollLeft\n // behavior is implemented in the current browser.\n const initialScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n this.adapter_.setScrollAreaScrollLeft(initialScrollLeft - 1);\n const newScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n\n // If the newScrollLeft value is negative,then we know that the browser has\n // implemented negative RTL scrolling, since all other implementations have\n // only positive values.\n if (newScrollLeft < 0) {\n // Undo the scrollLeft test check\n this.adapter_.setScrollAreaScrollLeft(initialScrollLeft);\n return new MDCTabScrollerRTLNegative(this.adapter_);\n }\n\n const rootClientRect = this.adapter_.computeScrollAreaClientRect();\n const contentClientRect = this.adapter_.computeScrollContentClientRect();\n const rightEdgeDelta = Math.round(contentClientRect.right - rootClientRect.right);\n // Undo the scrollLeft test check\n this.adapter_.setScrollAreaScrollLeft(initialScrollLeft);\n\n // By calculating the clientRect of the root element and the clientRect of\n // the content element, we can determine how much the scroll value changed\n // when we performed the scrollLeft subtraction above.\n if (rightEdgeDelta === newScrollLeft) {\n return new MDCTabScrollerRTLReverse(this.adapter_);\n }\n\n return new MDCTabScrollerRTLDefault(this.adapter_);\n }\n\n private isRTL_(): boolean {\n return this.adapter_.getScrollContentStyleValue('direction') === 'rtl';\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTabScrollerFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/foundation.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab/index.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './fading-foundation';\nexport * from './sliding-foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/index.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCTabIndicatorFoundation} from './foundation';\n\n/* istanbul ignore next: subclass is not a branch statement */\nexport class MDCFadingTabIndicatorFoundation extends MDCTabIndicatorFoundation {\n activate() {\n this.adapter_.addClass(MDCTabIndicatorFoundation.cssClasses.ACTIVE);\n }\n\n deactivate() {\n this.adapter_.removeClass(MDCTabIndicatorFoundation.cssClasses.ACTIVE);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCFadingTabIndicatorFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/fading-foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCTabIndicatorFoundation} from './foundation';\n\n/* istanbul ignore next: subclass is not a branch statement */\nexport class MDCSlidingTabIndicatorFoundation extends MDCTabIndicatorFoundation {\n activate(previousIndicatorClientRect?: ClientRect) {\n // Early exit if no indicator is present to handle cases where an indicator\n // may be activated without a prior indicator state\n if (!previousIndicatorClientRect) {\n this.adapter_.addClass(MDCTabIndicatorFoundation.cssClasses.ACTIVE);\n return;\n }\n\n // This animation uses the FLIP approach. You can read more about it at the link below:\n // https://aerotwist.com/blog/flip-your-animations/\n\n // Calculate the dimensions based on the dimensions of the previous indicator\n const currentClientRect = this.computeContentClientRect();\n const widthDelta = previousIndicatorClientRect.width / currentClientRect.width;\n const xPosition = previousIndicatorClientRect.left - currentClientRect.left;\n this.adapter_.addClass(MDCTabIndicatorFoundation.cssClasses.NO_TRANSITION);\n this.adapter_.setContentStyleProperty('transform', `translateX(${xPosition}px) scaleX(${widthDelta})`);\n\n // Force repaint before updating classes and transform to ensure the transform properly takes effect\n this.computeContentClientRect();\n\n this.adapter_.removeClass(MDCTabIndicatorFoundation.cssClasses.NO_TRANSITION);\n this.adapter_.addClass(MDCTabIndicatorFoundation.cssClasses.ACTIVE);\n this.adapter_.setContentStyleProperty('transform', '');\n }\n\n deactivate() {\n this.adapter_.removeClass(MDCTabIndicatorFoundation.cssClasses.ACTIVE);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCSlidingTabIndicatorFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/sliding-foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCTabAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\nimport {MDCTabDimensions} from './types';\n\nexport class MDCTabFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter(): MDCTabAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n hasClass: () => false,\n setAttr: () => undefined,\n activateIndicator: () => undefined,\n deactivateIndicator: () => undefined,\n notifyInteracted: () => undefined,\n getOffsetLeft: () => 0,\n getOffsetWidth: () => 0,\n getContentOffsetLeft: () => 0,\n getContentOffsetWidth: () => 0,\n focus: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private focusOnActivate_ = true;\n\n constructor(adapter?: Partial) {\n super({...MDCTabFoundation.defaultAdapter, ...adapter});\n }\n\n handleClick() {\n // It's up to the parent component to keep track of the active Tab and\n // ensure we don't activate a Tab that's already active.\n this.adapter_.notifyInteracted();\n }\n\n isActive(): boolean {\n return this.adapter_.hasClass(cssClasses.ACTIVE);\n }\n\n /**\n * Sets whether the tab should focus itself when activated\n */\n setFocusOnActivate(focusOnActivate: boolean) {\n this.focusOnActivate_ = focusOnActivate;\n }\n\n /**\n * Activates the Tab\n */\n activate(previousIndicatorClientRect?: ClientRect) {\n this.adapter_.addClass(cssClasses.ACTIVE);\n this.adapter_.setAttr(strings.ARIA_SELECTED, 'true');\n this.adapter_.setAttr(strings.TABINDEX, '0');\n this.adapter_.activateIndicator(previousIndicatorClientRect);\n if (this.focusOnActivate_) {\n this.adapter_.focus();\n }\n }\n\n /**\n * Deactivates the Tab\n */\n deactivate() {\n // Early exit\n if (!this.isActive()) {\n return;\n }\n\n this.adapter_.removeClass(cssClasses.ACTIVE);\n this.adapter_.setAttr(strings.ARIA_SELECTED, 'false');\n this.adapter_.setAttr(strings.TABINDEX, '-1');\n this.adapter_.deactivateIndicator();\n }\n\n /**\n * Returns the dimensions of the Tab\n */\n computeDimensions(): MDCTabDimensions {\n const rootWidth = this.adapter_.getOffsetWidth();\n const rootLeft = this.adapter_.getOffsetLeft();\n const contentWidth = this.adapter_.getContentOffsetWidth();\n const contentLeft = this.adapter_.getContentOffsetLeft();\n\n return {\n contentLeft: rootLeft + contentLeft,\n contentRight: rootLeft + contentLeft + contentWidth,\n rootLeft,\n rootRight: rootLeft + rootWidth,\n };\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTabFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab/foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCTabDimensions, MDCTabInteractionEvent} from '@material/tab/types';\nimport {MDCTabBarAdapter} from './adapter';\nimport {numbers, strings} from './constants';\n\nconst ACCEPTABLE_KEYS = new Set();\n// IE11 has no support for new Set with iterable so we need to initialize this by hand\nACCEPTABLE_KEYS.add(strings.ARROW_LEFT_KEY);\nACCEPTABLE_KEYS.add(strings.ARROW_RIGHT_KEY);\nACCEPTABLE_KEYS.add(strings.END_KEY);\nACCEPTABLE_KEYS.add(strings.HOME_KEY);\nACCEPTABLE_KEYS.add(strings.ENTER_KEY);\nACCEPTABLE_KEYS.add(strings.SPACE_KEY);\n\nconst KEYCODE_MAP = new Map();\n// IE11 has no support for new Map with iterable so we need to initialize this by hand\nKEYCODE_MAP.set(numbers.ARROW_LEFT_KEYCODE, strings.ARROW_LEFT_KEY);\nKEYCODE_MAP.set(numbers.ARROW_RIGHT_KEYCODE, strings.ARROW_RIGHT_KEY);\nKEYCODE_MAP.set(numbers.END_KEYCODE, strings.END_KEY);\nKEYCODE_MAP.set(numbers.HOME_KEYCODE, strings.HOME_KEY);\nKEYCODE_MAP.set(numbers.ENTER_KEYCODE, strings.ENTER_KEY);\nKEYCODE_MAP.set(numbers.SPACE_KEYCODE, strings.SPACE_KEY);\n\nexport class MDCTabBarFoundation extends MDCFoundation {\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get defaultAdapter(): MDCTabBarAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n scrollTo: () => undefined,\n incrementScroll: () => undefined,\n getScrollPosition: () => 0,\n getScrollContentWidth: () => 0,\n getOffsetWidth: () => 0,\n isRTL: () => false,\n setActiveTab: () => undefined,\n activateTabAtIndex: () => undefined,\n deactivateTabAtIndex: () => undefined,\n focusTabAtIndex: () => undefined,\n getTabIndicatorClientRectAtIndex: () => ({top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0}),\n getTabDimensionsAtIndex: () => ({rootLeft: 0, rootRight: 0, contentLeft: 0, contentRight: 0}),\n getPreviousActiveTabIndex: () => -1,\n getFocusedTabIndex: () => -1,\n getIndexOfTabById: () => -1,\n getTabListLength: () => 0,\n notifyTabActivated: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private useAutomaticActivation_ = false;\n\n constructor(adapter?: Partial) {\n super({...MDCTabBarFoundation.defaultAdapter, ...adapter});\n }\n\n /**\n * Switches between automatic and manual activation modes.\n * See https://www.w3.org/TR/wai-aria-practices/#tabpanel for examples.\n */\n setUseAutomaticActivation(useAutomaticActivation: boolean) {\n this.useAutomaticActivation_ = useAutomaticActivation;\n }\n\n activateTab(index: number) {\n const previousActiveIndex = this.adapter_.getPreviousActiveTabIndex();\n if (!this.indexIsInRange_(index) || index === previousActiveIndex) {\n return;\n }\n\n this.adapter_.deactivateTabAtIndex(previousActiveIndex);\n this.adapter_.activateTabAtIndex(index, this.adapter_.getTabIndicatorClientRectAtIndex(previousActiveIndex));\n this.scrollIntoView(index);\n\n this.adapter_.notifyTabActivated(index);\n }\n\n handleKeyDown(evt: KeyboardEvent) {\n // Get the key from the event\n const key = this.getKeyFromEvent_(evt);\n\n // Early exit if the event key isn't one of the keyboard navigation keys\n if (key === undefined) {\n return;\n }\n\n // Prevent default behavior for movement keys, but not for activation keys, since :active is used to apply ripple\n if (!this.isActivationKey_(key)) {\n evt.preventDefault();\n }\n\n if (this.useAutomaticActivation_) {\n if (this.isActivationKey_(key)) {\n return;\n }\n\n const index = this.determineTargetFromKey_(this.adapter_.getPreviousActiveTabIndex(), key);\n this.adapter_.setActiveTab(index);\n this.scrollIntoView(index);\n } else {\n const focusedTabIndex = this.adapter_.getFocusedTabIndex();\n if (this.isActivationKey_(key)) {\n this.adapter_.setActiveTab(focusedTabIndex);\n } else {\n const index = this.determineTargetFromKey_(focusedTabIndex, key);\n this.adapter_.focusTabAtIndex(index);\n this.scrollIntoView(index);\n }\n }\n }\n\n /**\n * Handles the MDCTab:interacted event\n */\n handleTabInteraction(evt: MDCTabInteractionEvent) {\n this.adapter_.setActiveTab(this.adapter_.getIndexOfTabById(evt.detail.tabId));\n }\n\n /**\n * Scrolls the tab at the given index into view\n * @param index The tab index to make visible\n */\n scrollIntoView(index: number) {\n // Early exit if the index is out of range\n if (!this.indexIsInRange_(index)) {\n return;\n }\n\n // Always scroll to 0 if scrolling to the 0th index\n if (index === 0) {\n return this.adapter_.scrollTo(0);\n }\n\n // Always scroll to the max value if scrolling to the Nth index\n // MDCTabScroller.scrollTo() will never scroll past the max possible value\n if (index === this.adapter_.getTabListLength() - 1) {\n return this.adapter_.scrollTo(this.adapter_.getScrollContentWidth());\n }\n\n if (this.isRTL_()) {\n return this.scrollIntoViewRTL_(index);\n }\n\n this.scrollIntoView_(index);\n }\n\n /**\n * Private method for determining the index of the destination tab based on what key was pressed\n * @param origin The original index from which to determine the destination\n * @param key The name of the key\n */\n private determineTargetFromKey_(origin: number, key: string): number {\n const isRTL = this.isRTL_();\n const maxIndex = this.adapter_.getTabListLength() - 1;\n const shouldGoToEnd = key === strings.END_KEY;\n const shouldDecrement = key === strings.ARROW_LEFT_KEY && !isRTL || key === strings.ARROW_RIGHT_KEY && isRTL;\n const shouldIncrement = key === strings.ARROW_RIGHT_KEY && !isRTL || key === strings.ARROW_LEFT_KEY && isRTL;\n let index = origin;\n\n if (shouldGoToEnd) {\n index = maxIndex;\n } else if (shouldDecrement) {\n index -= 1;\n } else if (shouldIncrement) {\n index += 1;\n } else {\n index = 0;\n }\n\n if (index < 0) {\n index = maxIndex;\n } else if (index > maxIndex) {\n index = 0;\n }\n\n return index;\n }\n\n /**\n * Calculates the scroll increment that will make the tab at the given index visible\n * @param index The index of the tab\n * @param nextIndex The index of the next tab\n * @param scrollPosition The current scroll position\n * @param barWidth The width of the Tab Bar\n */\n private calculateScrollIncrement_(\n index: number,\n nextIndex: number,\n scrollPosition: number,\n barWidth: number,\n ): number {\n const nextTabDimensions = this.adapter_.getTabDimensionsAtIndex(nextIndex);\n const relativeContentLeft = nextTabDimensions.contentLeft - scrollPosition - barWidth;\n const relativeContentRight = nextTabDimensions.contentRight - scrollPosition;\n const leftIncrement = relativeContentRight - numbers.EXTRA_SCROLL_AMOUNT;\n const rightIncrement = relativeContentLeft + numbers.EXTRA_SCROLL_AMOUNT;\n\n if (nextIndex < index) {\n return Math.min(leftIncrement, 0);\n }\n\n return Math.max(rightIncrement, 0);\n }\n\n /**\n * Calculates the scroll increment that will make the tab at the given index visible in RTL\n * @param index The index of the tab\n * @param nextIndex The index of the next tab\n * @param scrollPosition The current scroll position\n * @param barWidth The width of the Tab Bar\n * @param scrollContentWidth The width of the scroll content\n */\n private calculateScrollIncrementRTL_(\n index: number,\n nextIndex: number,\n scrollPosition: number,\n barWidth: number,\n scrollContentWidth: number,\n ): number {\n const nextTabDimensions = this.adapter_.getTabDimensionsAtIndex(nextIndex);\n const relativeContentLeft = scrollContentWidth - nextTabDimensions.contentLeft - scrollPosition;\n const relativeContentRight = scrollContentWidth - nextTabDimensions.contentRight - scrollPosition - barWidth;\n const leftIncrement = relativeContentRight + numbers.EXTRA_SCROLL_AMOUNT;\n const rightIncrement = relativeContentLeft - numbers.EXTRA_SCROLL_AMOUNT;\n\n if (nextIndex > index) {\n return Math.max(leftIncrement, 0);\n }\n\n return Math.min(rightIncrement, 0);\n }\n\n /**\n * Determines the index of the adjacent tab closest to either edge of the Tab Bar\n * @param index The index of the tab\n * @param tabDimensions The dimensions of the tab\n * @param scrollPosition The current scroll position\n * @param barWidth The width of the tab bar\n */\n private findAdjacentTabIndexClosestToEdge_(\n index: number,\n tabDimensions: MDCTabDimensions,\n scrollPosition: number,\n barWidth: number,\n ): number {\n /**\n * Tabs are laid out in the Tab Scroller like this:\n *\n * Scroll Position\n * +---+\n * | | Bar Width\n * | +-----------------------------------+\n * | | |\n * | V V\n * | +-----------------------------------+\n * V | Tab Scroller |\n * +------------+--------------+-------------------+\n * | Tab | Tab | Tab |\n * +------------+--------------+-------------------+\n * | |\n * +-----------------------------------+\n *\n * To determine the next adjacent index, we look at the Tab root left and\n * Tab root right, both relative to the scroll position. If the Tab root\n * left is less than 0, then we know it's out of view to the left. If the\n * Tab root right minus the bar width is greater than 0, we know the Tab is\n * out of view to the right. From there, we either increment or decrement\n * the index.\n */\n const relativeRootLeft = tabDimensions.rootLeft - scrollPosition;\n const relativeRootRight = tabDimensions.rootRight - scrollPosition - barWidth;\n const relativeRootDelta = relativeRootLeft + relativeRootRight;\n const leftEdgeIsCloser = relativeRootLeft < 0 || relativeRootDelta < 0;\n const rightEdgeIsCloser = relativeRootRight > 0 || relativeRootDelta > 0;\n\n if (leftEdgeIsCloser) {\n return index - 1;\n }\n\n if (rightEdgeIsCloser) {\n return index + 1;\n }\n\n return -1;\n }\n\n /**\n * Determines the index of the adjacent tab closest to either edge of the Tab Bar in RTL\n * @param index The index of the tab\n * @param tabDimensions The dimensions of the tab\n * @param scrollPosition The current scroll position\n * @param barWidth The width of the tab bar\n * @param scrollContentWidth The width of the scroller content\n */\n private findAdjacentTabIndexClosestToEdgeRTL_(\n index: number,\n tabDimensions: MDCTabDimensions,\n scrollPosition: number,\n barWidth: number,\n scrollContentWidth: number,\n ): number {\n const rootLeft = scrollContentWidth - tabDimensions.rootLeft - barWidth - scrollPosition;\n const rootRight = scrollContentWidth - tabDimensions.rootRight - scrollPosition;\n const rootDelta = rootLeft + rootRight;\n const leftEdgeIsCloser = rootLeft > 0 || rootDelta > 0;\n const rightEdgeIsCloser = rootRight < 0 || rootDelta < 0;\n\n if (leftEdgeIsCloser) {\n return index + 1;\n }\n\n if (rightEdgeIsCloser) {\n return index - 1;\n }\n\n return -1;\n }\n\n /**\n * Returns the key associated with a keydown event\n * @param evt The keydown event\n */\n private getKeyFromEvent_(evt: KeyboardEvent): string {\n if (ACCEPTABLE_KEYS.has(evt.key)) {\n return evt.key;\n }\n return KEYCODE_MAP.get(evt.keyCode)!;\n }\n\n private isActivationKey_(key: string) {\n return key === strings.SPACE_KEY || key === strings.ENTER_KEY;\n }\n\n /**\n * Returns whether a given index is inclusively between the ends\n * @param index The index to test\n */\n private indexIsInRange_(index: number) {\n return index >= 0 && index < this.adapter_.getTabListLength();\n }\n\n /**\n * Returns the view's RTL property\n */\n private isRTL_(): boolean {\n return this.adapter_.isRTL();\n }\n\n /**\n * Scrolls the tab at the given index into view for left-to-right user agents.\n * @param index The index of the tab to scroll into view\n */\n private scrollIntoView_(index: number) {\n const scrollPosition = this.adapter_.getScrollPosition();\n const barWidth = this.adapter_.getOffsetWidth();\n const tabDimensions = this.adapter_.getTabDimensionsAtIndex(index);\n const nextIndex = this.findAdjacentTabIndexClosestToEdge_(index, tabDimensions, scrollPosition, barWidth);\n\n if (!this.indexIsInRange_(nextIndex)) {\n return;\n }\n\n const scrollIncrement = this.calculateScrollIncrement_(index, nextIndex, scrollPosition, barWidth);\n this.adapter_.incrementScroll(scrollIncrement);\n }\n\n /**\n * Scrolls the tab at the given index into view in RTL\n * @param index The tab index to make visible\n */\n private scrollIntoViewRTL_(index: number) {\n const scrollPosition = this.adapter_.getScrollPosition();\n const barWidth = this.adapter_.getOffsetWidth();\n const tabDimensions = this.adapter_.getTabDimensionsAtIndex(index);\n const scrollWidth = this.adapter_.getScrollContentWidth();\n const nextIndex = this.findAdjacentTabIndexClosestToEdgeRTL_(\n index, tabDimensions, scrollPosition, barWidth, scrollWidth);\n\n if (!this.indexIsInRange_(nextIndex)) {\n return;\n }\n\n const scrollIncrement = this.calculateScrollIncrementRTL_(index, nextIndex, scrollPosition, barWidth, scrollWidth);\n this.adapter_.incrementScroll(scrollIncrement);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTabBarFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-bar/foundation.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/character-counter/index.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCTextFieldCharacterCounterAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport class MDCTextFieldCharacterCounterFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n /**\n * See {@link MDCTextFieldCharacterCounterAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCTextFieldCharacterCounterAdapter {\n return {\n setContent: () => undefined,\n };\n }\n\n constructor(adapter?: Partial) {\n super({...MDCTextFieldCharacterCounterFoundation.defaultAdapter, ...adapter});\n }\n\n setCounterValue(currentLength: number, maxLength: number) {\n currentLength = Math.min(currentLength, maxLength);\n this.adapter_.setContent(`${currentLength} / ${maxLength}`);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTextFieldCharacterCounterFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/character-counter/foundation.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst strings = {\n ARIA_CONTROLS: 'aria-controls',\n ICON_SELECTOR: '.mdc-text-field__icon',\n INPUT_SELECTOR: '.mdc-text-field__input',\n LABEL_SELECTOR: '.mdc-floating-label',\n LINE_RIPPLE_SELECTOR: '.mdc-line-ripple',\n OUTLINE_SELECTOR: '.mdc-notched-outline',\n};\n\nconst cssClasses = {\n DENSE: 'mdc-text-field--dense',\n DISABLED: 'mdc-text-field--disabled',\n FOCUSED: 'mdc-text-field--focused',\n HELPER_LINE: 'mdc-text-field-helper-line',\n INVALID: 'mdc-text-field--invalid',\n OUTLINED: 'mdc-text-field--outlined',\n ROOT: 'mdc-text-field',\n TEXTAREA: 'mdc-text-field--textarea',\n WITH_LEADING_ICON: 'mdc-text-field--with-leading-icon',\n};\n\nconst numbers = {\n DENSE_LABEL_SCALE: 0.923,\n LABEL_SCALE: 0.75,\n};\n\n/**\n * Whitelist based off of https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation\n * under the \"Validation-related attributes\" section.\n */\nconst VALIDATION_ATTR_WHITELIST = [\n 'pattern', 'min', 'max', 'required', 'step', 'minlength', 'maxlength',\n];\n\n/**\n * Label should always float for these types as they show some UI even if value is empty.\n */\nconst ALWAYS_FLOAT_TYPES = [\n 'color', 'date', 'datetime-local', 'month', 'range', 'time', 'week',\n];\n\nexport {cssClasses, strings, numbers, VALIDATION_ATTR_WHITELIST, ALWAYS_FLOAT_TYPES};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/constants.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCTextFieldAdapter} from './adapter';\nimport {MDCTextFieldCharacterCounterFoundation} from './character-counter/foundation';\nimport {ALWAYS_FLOAT_TYPES, cssClasses, numbers, strings, VALIDATION_ATTR_WHITELIST} from './constants';\nimport {MDCTextFieldHelperTextFoundation} from './helper-text/foundation';\nimport {MDCTextFieldIconFoundation} from './icon/foundation';\nimport {MDCTextFieldFoundationMap, MDCTextFieldNativeInputElement} from './types';\n\ntype PointerDownEventType = 'mousedown' | 'touchstart';\ntype InteractionEventType = 'click' | 'keydown';\n\nconst POINTERDOWN_EVENTS: PointerDownEventType[] = ['mousedown', 'touchstart'];\nconst INTERACTION_EVENTS: InteractionEventType[] = ['click', 'keydown'];\n\nexport class MDCTextFieldFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n private get shouldAlwaysFloat_(): boolean {\n const type = this.getNativeInput_().type;\n return ALWAYS_FLOAT_TYPES.indexOf(type) >= 0;\n }\n\n get shouldFloat(): boolean {\n return this.shouldAlwaysFloat_ || this.isFocused_ || Boolean(this.getValue()) || this.isBadInput_();\n }\n\n get shouldShake(): boolean {\n return !this.isFocused_ && !this.isValid() && Boolean(this.getValue());\n }\n\n /**\n * See {@link MDCTextFieldAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCTextFieldAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n hasClass: () => true,\n registerTextFieldInteractionHandler: () => undefined,\n deregisterTextFieldInteractionHandler: () => undefined,\n registerInputInteractionHandler: () => undefined,\n deregisterInputInteractionHandler: () => undefined,\n registerValidationAttributeChangeHandler: () => new MutationObserver(() => undefined),\n deregisterValidationAttributeChangeHandler: () => undefined,\n getNativeInput: () => null,\n isFocused: () => false,\n activateLineRipple: () => undefined,\n deactivateLineRipple: () => undefined,\n setLineRippleTransformOrigin: () => undefined,\n shakeLabel: () => undefined,\n floatLabel: () => undefined,\n hasLabel: () => false,\n getLabelWidth: () => 0,\n hasOutline: () => false,\n notchOutline: () => undefined,\n closeOutline: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private isFocused_ = false;\n private receivedUserInput_ = false;\n private isValid_ = true;\n private useNativeValidation_ = true;\n\n private readonly inputFocusHandler_: () => void;\n private readonly inputBlurHandler_: SpecificEventListener<'blur'>;\n private readonly inputInputHandler_: SpecificEventListener<'input'>;\n private readonly setPointerXOffset_: SpecificEventListener;\n private readonly textFieldInteractionHandler_: SpecificEventListener;\n private readonly validationAttributeChangeHandler_: (attributesList: string[]) => void;\n private validationObserver_!: MutationObserver; // assigned in init()\n\n private readonly helperText_?: MDCTextFieldHelperTextFoundation;\n private readonly characterCounter_?: MDCTextFieldCharacterCounterFoundation;\n private readonly leadingIcon_?: MDCTextFieldIconFoundation;\n private readonly trailingIcon_?: MDCTextFieldIconFoundation;\n\n /**\n * @param adapter\n * @param foundationMap Map from subcomponent names to their subfoundations.\n */\n constructor(adapter?: Partial, foundationMap: Partial = {}) {\n super({...MDCTextFieldFoundation.defaultAdapter, ...adapter});\n\n this.helperText_ = foundationMap.helperText;\n this.characterCounter_ = foundationMap.characterCounter;\n this.leadingIcon_ = foundationMap.leadingIcon;\n this.trailingIcon_ = foundationMap.trailingIcon;\n\n this.inputFocusHandler_ = () => this.activateFocus();\n this.inputBlurHandler_ = () => this.deactivateFocus();\n this.inputInputHandler_ = () => this.handleInput();\n this.setPointerXOffset_ = (evt) => this.setTransformOrigin(evt);\n this.textFieldInteractionHandler_ = () => this.handleTextFieldInteraction();\n this.validationAttributeChangeHandler_ = (attributesList) => this.handleValidationAttributeChange(attributesList);\n }\n\n init() {\n if (this.adapter_.isFocused()) {\n this.inputFocusHandler_();\n } else if (this.adapter_.hasLabel() && this.shouldFloat) {\n this.notchOutline(true);\n this.adapter_.floatLabel(true);\n }\n\n this.adapter_.registerInputInteractionHandler('focus', this.inputFocusHandler_);\n this.adapter_.registerInputInteractionHandler('blur', this.inputBlurHandler_);\n this.adapter_.registerInputInteractionHandler('input', this.inputInputHandler_);\n POINTERDOWN_EVENTS.forEach((evtType) => {\n this.adapter_.registerInputInteractionHandler(evtType, this.setPointerXOffset_);\n });\n INTERACTION_EVENTS.forEach((evtType) => {\n this.adapter_.registerTextFieldInteractionHandler(evtType, this.textFieldInteractionHandler_);\n });\n this.validationObserver_ =\n this.adapter_.registerValidationAttributeChangeHandler(this.validationAttributeChangeHandler_);\n this.setCharacterCounter_(this.getValue().length);\n }\n\n destroy() {\n this.adapter_.deregisterInputInteractionHandler('focus', this.inputFocusHandler_);\n this.adapter_.deregisterInputInteractionHandler('blur', this.inputBlurHandler_);\n this.adapter_.deregisterInputInteractionHandler('input', this.inputInputHandler_);\n POINTERDOWN_EVENTS.forEach((evtType) => {\n this.adapter_.deregisterInputInteractionHandler(evtType, this.setPointerXOffset_);\n });\n INTERACTION_EVENTS.forEach((evtType) => {\n this.adapter_.deregisterTextFieldInteractionHandler(evtType, this.textFieldInteractionHandler_);\n });\n this.adapter_.deregisterValidationAttributeChangeHandler(this.validationObserver_);\n }\n\n /**\n * Handles user interactions with the Text Field.\n */\n handleTextFieldInteraction() {\n const nativeInput = this.adapter_.getNativeInput();\n if (nativeInput && nativeInput.disabled) {\n return;\n }\n this.receivedUserInput_ = true;\n }\n\n /**\n * Handles validation attribute changes\n */\n handleValidationAttributeChange(attributesList: string[]): void {\n attributesList.some((attributeName) => {\n if (VALIDATION_ATTR_WHITELIST.indexOf(attributeName) > -1) {\n this.styleValidity_(true);\n return true;\n }\n return false;\n });\n\n if (attributesList.indexOf('maxlength') > -1) {\n this.setCharacterCounter_(this.getValue().length);\n }\n }\n\n /**\n * Opens/closes the notched outline.\n */\n notchOutline(openNotch: boolean) {\n if (!this.adapter_.hasOutline()) {\n return;\n }\n\n if (openNotch) {\n const isDense = this.adapter_.hasClass(cssClasses.DENSE);\n const labelScale = isDense ? numbers.DENSE_LABEL_SCALE : numbers.LABEL_SCALE;\n const labelWidth = this.adapter_.getLabelWidth() * labelScale;\n this.adapter_.notchOutline(labelWidth);\n } else {\n this.adapter_.closeOutline();\n }\n }\n\n /**\n * Activates the text field focus state.\n */\n activateFocus() {\n this.isFocused_ = true;\n this.styleFocused_(this.isFocused_);\n this.adapter_.activateLineRipple();\n if (this.adapter_.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter_.floatLabel(this.shouldFloat);\n this.adapter_.shakeLabel(this.shouldShake);\n }\n if (this.helperText_) {\n this.helperText_.showToScreenReader();\n }\n }\n\n /**\n * Sets the line ripple's transform origin, so that the line ripple activate\n * animation will animate out from the user's click location.\n */\n setTransformOrigin(evt: TouchEvent | MouseEvent): void {\n const touches = (evt as TouchEvent).touches;\n const targetEvent = touches ? touches[0] : evt;\n const targetClientRect = (targetEvent.target as Element).getBoundingClientRect();\n const normalizedX = (targetEvent as MouseEvent).clientX - targetClientRect.left;\n this.adapter_.setLineRippleTransformOrigin(normalizedX);\n }\n\n /**\n * Handles input change of text input and text area.\n */\n handleInput() {\n this.autoCompleteFocus();\n this.setCharacterCounter_(this.getValue().length);\n }\n\n /**\n * Activates the Text Field's focus state in cases when the input value\n * changes without user input (e.g. programmatically).\n */\n autoCompleteFocus() {\n if (!this.receivedUserInput_) {\n this.activateFocus();\n }\n }\n\n /**\n * Deactivates the Text Field's focus state.\n */\n deactivateFocus() {\n this.isFocused_ = false;\n this.adapter_.deactivateLineRipple();\n const isValid = this.isValid();\n this.styleValidity_(isValid);\n this.styleFocused_(this.isFocused_);\n if (this.adapter_.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter_.floatLabel(this.shouldFloat);\n this.adapter_.shakeLabel(this.shouldShake);\n }\n if (!this.shouldFloat) {\n this.receivedUserInput_ = false;\n }\n }\n\n getValue(): string {\n return this.getNativeInput_().value;\n }\n\n /**\n * @param value The value to set on the input Element.\n */\n setValue(value: string): void {\n // Prevent Safari from moving the caret to the end of the input when the value has not changed.\n if (this.getValue() !== value) {\n this.getNativeInput_().value = value;\n }\n const isValid = this.isValid();\n this.styleValidity_(isValid);\n if (this.adapter_.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter_.floatLabel(this.shouldFloat);\n this.adapter_.shakeLabel(this.shouldShake);\n }\n }\n\n /**\n * @return The custom validity state, if set; otherwise, the result of a native validity check.\n */\n isValid(): boolean {\n return this.useNativeValidation_\n ? this.isNativeInputValid_() : this.isValid_;\n }\n\n /**\n * @param isValid Sets the custom validity state of the Text Field.\n */\n setValid(isValid: boolean): void {\n this.isValid_ = isValid;\n this.styleValidity_(isValid);\n\n const shouldShake = !isValid && !this.isFocused_;\n if (this.adapter_.hasLabel()) {\n this.adapter_.shakeLabel(shouldShake);\n }\n }\n\n /**\n * Enables or disables the use of native validation. Use this for custom validation.\n * @param useNativeValidation Set this to false to ignore native input validation.\n */\n setUseNativeValidation(useNativeValidation: boolean): void {\n this.useNativeValidation_ = useNativeValidation;\n }\n\n isDisabled(): boolean {\n return this.getNativeInput_().disabled;\n }\n\n /**\n * @param disabled Sets the text-field disabled or enabled.\n */\n setDisabled(disabled: boolean): void {\n this.getNativeInput_().disabled = disabled;\n this.styleDisabled_(disabled);\n }\n\n /**\n * @param content Sets the content of the helper text.\n */\n setHelperTextContent(content: string): void {\n if (this.helperText_) {\n this.helperText_.setContent(content);\n }\n }\n\n /**\n * Sets the aria label of the leading icon.\n */\n setLeadingIconAriaLabel(label: string): void {\n if (this.leadingIcon_) {\n this.leadingIcon_.setAriaLabel(label);\n }\n }\n\n /**\n * Sets the text content of the leading icon.\n */\n setLeadingIconContent(content: string): void {\n if (this.leadingIcon_) {\n this.leadingIcon_.setContent(content);\n }\n }\n\n /**\n * Sets the aria label of the trailing icon.\n */\n setTrailingIconAriaLabel(label: string): void {\n if (this.trailingIcon_) {\n this.trailingIcon_.setAriaLabel(label);\n }\n }\n\n /**\n * Sets the text content of the trailing icon.\n */\n setTrailingIconContent(content: string): void {\n if (this.trailingIcon_) {\n this.trailingIcon_.setContent(content);\n }\n }\n\n /**\n * Sets character counter values that shows characters used and the total character limit.\n */\n private setCharacterCounter_(currentLength: number): void {\n if (!this.characterCounter_) {\n return;\n }\n\n const maxLength = this.getNativeInput_().maxLength;\n if (maxLength === -1) {\n throw new Error('MDCTextFieldFoundation: Expected maxlength html property on text input or textarea.');\n }\n\n this.characterCounter_.setCounterValue(currentLength, maxLength);\n }\n\n /**\n * @return True if the Text Field input fails in converting the user-supplied value.\n */\n private isBadInput_(): boolean {\n // The badInput property is not supported in IE 11 💩.\n return this.getNativeInput_().validity.badInput || false;\n }\n\n /**\n * @return The result of native validity checking (ValidityState.valid).\n */\n private isNativeInputValid_(): boolean {\n return this.getNativeInput_().validity.valid;\n }\n\n /**\n * Styles the component based on the validity state.\n */\n private styleValidity_(isValid: boolean): void {\n const {INVALID} = MDCTextFieldFoundation.cssClasses;\n if (isValid) {\n this.adapter_.removeClass(INVALID);\n } else {\n this.adapter_.addClass(INVALID);\n }\n if (this.helperText_) {\n this.helperText_.setValidity(isValid);\n }\n }\n\n /**\n * Styles the component based on the focused state.\n */\n private styleFocused_(isFocused: boolean): void {\n const {FOCUSED} = MDCTextFieldFoundation.cssClasses;\n if (isFocused) {\n this.adapter_.addClass(FOCUSED);\n } else {\n this.adapter_.removeClass(FOCUSED);\n }\n }\n\n /**\n * Styles the component based on the disabled state.\n */\n private styleDisabled_(isDisabled: boolean): void {\n const {DISABLED, INVALID} = MDCTextFieldFoundation.cssClasses;\n if (isDisabled) {\n this.adapter_.addClass(DISABLED);\n this.adapter_.removeClass(INVALID);\n } else {\n this.adapter_.removeClass(DISABLED);\n }\n\n if (this.leadingIcon_) {\n this.leadingIcon_.setDisabled(isDisabled);\n }\n\n if (this.trailingIcon_) {\n this.trailingIcon_.setDisabled(isDisabled);\n }\n }\n\n /**\n * @return The native text input element from the host environment, or an object with the same shape for unit tests.\n */\n private getNativeInput_(): MDCTextFieldNativeInputElement {\n // this.adapter_ may be undefined in foundation unit tests. This happens when testdouble is creating a mock object\n // and invokes the shouldShake/shouldFloat getters (which in turn call getValue(), which calls this method) before\n // init() has been called from the MDCTextField constructor. To work around that issue, we return a dummy object.\n const nativeInput = this.adapter_ ? this.adapter_.getNativeInput() : null;\n return nativeInput || {\n disabled: false,\n maxLength: -1,\n type: 'input',\n validity: {\n badInput: false,\n valid: true,\n },\n value: '',\n };\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTextFieldFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/foundation.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/helper-text/index.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCTextFieldHelperTextAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport class MDCTextFieldHelperTextFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n /**\n * See {@link MDCTextFieldHelperTextAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCTextFieldHelperTextAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n hasClass: () => false,\n setAttr: () => undefined,\n removeAttr: () => undefined,\n setContent: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n constructor(adapter?: Partial) {\n super({...MDCTextFieldHelperTextFoundation.defaultAdapter, ...adapter});\n }\n\n /**\n * Sets the content of the helper text field.\n */\n setContent(content: string) {\n this.adapter_.setContent(content);\n }\n\n /**\n * @param isPersistent Sets the persistency of the helper text.\n */\n setPersistent(isPersistent: boolean) {\n if (isPersistent) {\n this.adapter_.addClass(cssClasses.HELPER_TEXT_PERSISTENT);\n } else {\n this.adapter_.removeClass(cssClasses.HELPER_TEXT_PERSISTENT);\n }\n }\n\n /**\n * @param isValidation True to make the helper text act as an error validation message.\n */\n setValidation(isValidation: boolean) {\n if (isValidation) {\n this.adapter_.addClass(cssClasses.HELPER_TEXT_VALIDATION_MSG);\n } else {\n this.adapter_.removeClass(cssClasses.HELPER_TEXT_VALIDATION_MSG);\n }\n }\n\n /**\n * Makes the helper text visible to the screen reader.\n */\n showToScreenReader() {\n this.adapter_.removeAttr(strings.ARIA_HIDDEN);\n }\n\n /**\n * Sets the validity of the helper text based on the input validity.\n */\n setValidity(inputIsValid: boolean) {\n const helperTextIsPersistent = this.adapter_.hasClass(cssClasses.HELPER_TEXT_PERSISTENT);\n const helperTextIsValidationMsg = this.adapter_.hasClass(cssClasses.HELPER_TEXT_VALIDATION_MSG);\n const validationMsgNeedsDisplay = helperTextIsValidationMsg && !inputIsValid;\n\n if (validationMsgNeedsDisplay) {\n this.adapter_.setAttr(strings.ROLE, 'alert');\n } else {\n this.adapter_.removeAttr(strings.ROLE);\n }\n\n if (!helperTextIsPersistent && !validationMsgNeedsDisplay) {\n this.hide_();\n }\n }\n\n /**\n * Hides the help text from screen readers.\n */\n private hide_() {\n this.adapter_.setAttr(strings.ARIA_HIDDEN, 'true');\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTextFieldHelperTextFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/helper-text/foundation.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/icon/index.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCTextFieldIconAdapter} from './adapter';\nimport {strings} from './constants';\n\ntype InteractionEventType = 'click' | 'keydown';\n\nconst INTERACTION_EVENTS: InteractionEventType[] = ['click', 'keydown'];\n\nexport class MDCTextFieldIconFoundation extends MDCFoundation {\n static get strings() {\n return strings;\n }\n\n /**\n * See {@link MDCTextFieldIconAdapter} for typing information on parameters and return types.\n */\n static get defaultAdapter(): MDCTextFieldIconAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n getAttr: () => null,\n setAttr: () => undefined,\n removeAttr: () => undefined,\n setContent: () => undefined,\n registerInteractionHandler: () => undefined,\n deregisterInteractionHandler: () => undefined,\n notifyIconAction: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private savedTabIndex_: string | null = null;\n private readonly interactionHandler_: SpecificEventListener;\n\n constructor(adapter?: Partial) {\n super({...MDCTextFieldIconFoundation.defaultAdapter, ...adapter});\n\n this.interactionHandler_ = (evt) => this.handleInteraction(evt);\n }\n\n init() {\n this.savedTabIndex_ = this.adapter_.getAttr('tabindex');\n\n INTERACTION_EVENTS.forEach((evtType) => {\n this.adapter_.registerInteractionHandler(evtType, this.interactionHandler_);\n });\n }\n\n destroy() {\n INTERACTION_EVENTS.forEach((evtType) => {\n this.adapter_.deregisterInteractionHandler(evtType, this.interactionHandler_);\n });\n }\n\n setDisabled(disabled: boolean) {\n if (!this.savedTabIndex_) {\n return;\n }\n\n if (disabled) {\n this.adapter_.setAttr('tabindex', '-1');\n this.adapter_.removeAttr('role');\n } else {\n this.adapter_.setAttr('tabindex', this.savedTabIndex_);\n this.adapter_.setAttr('role', strings.ICON_ROLE);\n }\n }\n\n setAriaLabel(label: string) {\n this.adapter_.setAttr('aria-label', label);\n }\n\n setContent(content: string) {\n this.adapter_.setContent(content);\n }\n\n handleInteraction(evt: MouseEvent | KeyboardEvent) {\n const isEnterKey = (evt as KeyboardEvent).key === 'Enter' || (evt as KeyboardEvent).keyCode === 13;\n if (evt.type === 'click' || isEnterKey) {\n this.adapter_.notifyIconAction();\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTextFieldIconFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/icon/foundation.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCToolbarAdapter} from './adapter';\nimport {cssClasses, numbers, strings} from './constants';\n\ninterface Calculations {\n toolbarRowHeight: number;\n\n /*\n * Calculated height ratios. We use ratio to calculate corresponding heights in resize event.\n */\n\n /** The ratio of toolbar height to row height. */\n toolbarRatio: number;\n\n /** The ratio of flexible space height to row height. */\n flexibleExpansionRatio: number;\n\n /** The ratio of max toolbar move up distance to row height. */\n maxTranslateYRatio: number;\n\n /** The ratio of max scrollTop that we should listen to to row height. */\n scrollThresholdRatio: number;\n\n /*\n * Derived heights based on the above ratios.\n */\n\n toolbarHeight: number;\n\n /** Flexible row minus toolbar height (derived). */\n flexibleExpansionHeight: number;\n\n /** When toolbar only fix last row (derived). */\n maxTranslateYDistance: number;\n\n scrollThreshold: number;\n}\n\nexport class MDCToolbarFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get defaultAdapter(): MDCToolbarAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n hasClass: () => false,\n addClass: () => undefined,\n removeClass: () => undefined,\n registerScrollHandler: () => undefined,\n deregisterScrollHandler: () => undefined,\n registerResizeHandler: () => undefined,\n deregisterResizeHandler: () => undefined,\n getViewportWidth: () => 0,\n getViewportScrollY: () => 0,\n getOffsetHeight: () => 0,\n getFirstRowElementOffsetHeight: () => 0,\n notifyChange: () => undefined,\n setStyle: () => undefined,\n setStyleForTitleElement: () => undefined,\n setStyleForFlexibleRowElement: () => undefined,\n setStyleForFixedAdjustElement: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private checkRowHeightFrame_ = 0;\n private scrollFrame_ = 0;\n private executedLastChange_ = false;\n private isFixed_ = false;\n private isFixedLastRow_ = false;\n private hasFlexibleFirstRow_ = false;\n private useFlexDefaultBehavior_ = false;\n private calculations_: Calculations = {\n flexibleExpansionHeight: 0,\n flexibleExpansionRatio: 0,\n maxTranslateYDistance: 0,\n maxTranslateYRatio: 0,\n scrollThreshold: 0,\n scrollThresholdRatio: 0,\n toolbarHeight: 0,\n toolbarRatio: 0,\n toolbarRowHeight: 0,\n };\n\n private resizeHandler_!: SpecificEventListener<'resize'>; // assigned in init()\n private scrollHandler_!: SpecificEventListener<'scroll'>; // assigned in init()\n\n constructor(adapter?: Partial) {\n super({...MDCToolbarFoundation.defaultAdapter, ...adapter});\n }\n\n init() {\n this.isFixed_ = this.adapter_.hasClass(cssClasses.FIXED);\n this.isFixedLastRow_ = this.adapter_.hasClass(cssClasses.FIXED_LASTROW) && this.isFixed_;\n this.hasFlexibleFirstRow_ = this.adapter_.hasClass(cssClasses.TOOLBAR_ROW_FLEXIBLE);\n\n if (this.hasFlexibleFirstRow_) {\n this.useFlexDefaultBehavior_ = this.adapter_.hasClass(cssClasses.FLEXIBLE_DEFAULT_BEHAVIOR);\n }\n\n this.resizeHandler_ = () => this.checkRowHeight_();\n this.scrollHandler_ = () => this.updateToolbarStyles_();\n\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n\n this.initKeyRatio_();\n this.setKeyHeights_();\n }\n\n destroy() {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n }\n\n updateAdjustElementStyles() {\n if (this.isFixed_) {\n this.adapter_.setStyleForFixedAdjustElement('margin-top', `${this.calculations_.toolbarHeight}px`);\n }\n }\n\n private getFlexibleExpansionRatio_(scrollTop: number) {\n // To prevent division by zero when there is no flexibleExpansionHeight\n const delta = 0.0001;\n return Math.max(0, 1 - scrollTop / (this.calculations_.flexibleExpansionHeight + delta));\n }\n\n private checkRowHeight_() {\n cancelAnimationFrame(this.checkRowHeightFrame_);\n this.checkRowHeightFrame_ = requestAnimationFrame(() => this.setKeyHeights_());\n }\n\n private setKeyHeights_() {\n const newToolbarRowHeight = this.getRowHeight_();\n if (newToolbarRowHeight !== this.calculations_.toolbarRowHeight) {\n this.calculations_.toolbarRowHeight = newToolbarRowHeight;\n this.calculations_.toolbarHeight = this.calculations_.toolbarRatio * this.calculations_.toolbarRowHeight;\n this.calculations_.flexibleExpansionHeight =\n this.calculations_.flexibleExpansionRatio * this.calculations_.toolbarRowHeight;\n this.calculations_.maxTranslateYDistance =\n this.calculations_.maxTranslateYRatio * this.calculations_.toolbarRowHeight;\n this.calculations_.scrollThreshold =\n this.calculations_.scrollThresholdRatio * this.calculations_.toolbarRowHeight;\n this.updateAdjustElementStyles();\n this.updateToolbarStyles_();\n }\n }\n\n private updateToolbarStyles_() {\n cancelAnimationFrame(this.scrollFrame_);\n this.scrollFrame_ = requestAnimationFrame(() => {\n const scrollTop = this.adapter_.getViewportScrollY();\n const hasScrolledOutOfThreshold = this.scrolledOutOfThreshold_(scrollTop);\n\n if (hasScrolledOutOfThreshold && this.executedLastChange_) {\n return;\n }\n\n const flexibleExpansionRatio = this.getFlexibleExpansionRatio_(scrollTop);\n\n this.updateToolbarFlexibleState_(flexibleExpansionRatio);\n if (this.isFixedLastRow_) {\n this.updateToolbarFixedState_(scrollTop);\n }\n if (this.hasFlexibleFirstRow_) {\n this.updateFlexibleRowElementStyles_(flexibleExpansionRatio);\n }\n this.executedLastChange_ = hasScrolledOutOfThreshold;\n this.adapter_.notifyChange({flexibleExpansionRatio});\n });\n }\n\n private scrolledOutOfThreshold_(scrollTop: number) {\n return scrollTop > this.calculations_.scrollThreshold;\n }\n\n private initKeyRatio_() {\n const toolbarRowHeight = this.getRowHeight_();\n const firstRowMaxRatio = this.adapter_.getFirstRowElementOffsetHeight() / toolbarRowHeight;\n this.calculations_.toolbarRatio = this.adapter_.getOffsetHeight() / toolbarRowHeight;\n this.calculations_.flexibleExpansionRatio = firstRowMaxRatio - 1;\n this.calculations_.maxTranslateYRatio =\n this.isFixedLastRow_ ? this.calculations_.toolbarRatio - firstRowMaxRatio : 0;\n this.calculations_.scrollThresholdRatio =\n (this.isFixedLastRow_ ? this.calculations_.toolbarRatio : firstRowMaxRatio) - 1;\n }\n\n private getRowHeight_() {\n const breakpoint = numbers.TOOLBAR_MOBILE_BREAKPOINT;\n return this.adapter_.getViewportWidth() < breakpoint ?\n numbers.TOOLBAR_ROW_MOBILE_HEIGHT : numbers.TOOLBAR_ROW_HEIGHT;\n }\n\n private updateToolbarFlexibleState_(flexibleExpansionRatio: number) {\n this.adapter_.removeClass(cssClasses.FLEXIBLE_MAX);\n this.adapter_.removeClass(cssClasses.FLEXIBLE_MIN);\n if (flexibleExpansionRatio === 1) {\n this.adapter_.addClass(cssClasses.FLEXIBLE_MAX);\n } else if (flexibleExpansionRatio === 0) {\n this.adapter_.addClass(cssClasses.FLEXIBLE_MIN);\n }\n }\n\n private updateToolbarFixedState_(scrollTop: number) {\n const translateDistance = Math.max(0, Math.min(\n scrollTop - this.calculations_.flexibleExpansionHeight,\n this.calculations_.maxTranslateYDistance));\n this.adapter_.setStyle('transform', `translateY(${-translateDistance}px)`);\n\n if (translateDistance === this.calculations_.maxTranslateYDistance) {\n this.adapter_.addClass(cssClasses.FIXED_AT_LAST_ROW);\n } else {\n this.adapter_.removeClass(cssClasses.FIXED_AT_LAST_ROW);\n }\n }\n\n private updateFlexibleRowElementStyles_(flexibleExpansionRatio: number) {\n if (this.isFixed_) {\n const height = this.calculations_.flexibleExpansionHeight * flexibleExpansionRatio;\n this.adapter_.setStyleForFlexibleRowElement('height',\n `${height + this.calculations_.toolbarRowHeight}px`);\n }\n if (this.useFlexDefaultBehavior_) {\n this.updateElementStylesDefaultBehavior_(flexibleExpansionRatio);\n }\n }\n\n private updateElementStylesDefaultBehavior_(flexibleExpansionRatio: number) {\n const maxTitleSize = numbers.MAX_TITLE_SIZE;\n const minTitleSize = numbers.MIN_TITLE_SIZE;\n const currentTitleSize = (maxTitleSize - minTitleSize) * flexibleExpansionRatio + minTitleSize;\n\n this.adapter_.setStyleForTitleElement('font-size', `${currentTitleSize}rem`);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCToolbarFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-toolbar/foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCTopAppBarAdapter} from '../adapter';\nimport {cssClasses} from '../constants';\nimport {MDCTopAppBarFoundation} from '../standard/foundation';\n\nexport class MDCFixedTopAppBarFoundation extends MDCTopAppBarFoundation {\n /**\n * State variable for the previous scroll iteration top app bar state\n */\n private wasScrolled_ = false;\n\n /* istanbul ignore next: optional argument is not a branch statement */\n constructor(adapter?: Partial) {\n super(adapter);\n\n this.scrollHandler_ = () => this.fixedScrollHandler_();\n }\n\n /**\n * Scroll handler for applying/removing the modifier class on the fixed top app bar.\n */\n private fixedScrollHandler_() {\n const currentScroll = this.adapter_.getViewportScrollY();\n\n if (currentScroll <= 0) {\n if (this.wasScrolled_) {\n this.adapter_.removeClass(cssClasses.FIXED_SCROLLED_CLASS);\n this.wasScrolled_ = false;\n }\n } else {\n if (!this.wasScrolled_) {\n this.adapter_.addClass(cssClasses.FIXED_SCROLLED_CLASS);\n this.wasScrolled_ = true;\n }\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCFixedTopAppBarFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/fixed/foundation.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCTopAppBarAdapter} from '../adapter';\nimport {cssClasses} from '../constants';\nimport {MDCTopAppBarBaseFoundation} from '../foundation';\n\nexport class MDCShortTopAppBarFoundation extends MDCTopAppBarBaseFoundation {\n // Public visibility for backward compatibility.\n get isCollapsed(): boolean {\n return this.isCollapsed_;\n }\n\n private isCollapsed_ = false;\n\n /* istanbul ignore next: optional argument is not a branch statement */\n constructor(adapter?: Partial) {\n super(adapter);\n }\n\n init() {\n super.init();\n\n if (this.adapter_.getTotalActionItems() > 0) {\n this.adapter_.addClass(cssClasses.SHORT_HAS_ACTION_ITEM_CLASS);\n }\n\n if (!this.adapter_.hasClass(cssClasses.SHORT_COLLAPSED_CLASS)) {\n this.scrollHandler_ = () => this.shortAppBarScrollHandler_();\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n this.shortAppBarScrollHandler_();\n }\n }\n\n destroy() {\n super.destroy();\n }\n\n /**\n * Scroll handler for applying/removing the collapsed modifier class on the short top app bar.\n */\n private shortAppBarScrollHandler_() {\n const currentScroll = this.adapter_.getViewportScrollY();\n\n if (currentScroll <= 0) {\n if (this.isCollapsed_) {\n this.adapter_.removeClass(cssClasses.SHORT_COLLAPSED_CLASS);\n this.isCollapsed_ = false;\n }\n } else {\n if (!this.isCollapsed_) {\n this.adapter_.addClass(cssClasses.SHORT_COLLAPSED_CLASS);\n this.isCollapsed_ = true;\n }\n }\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCShortTopAppBarFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/short/foundation.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport autoInit from '@material/auto-init/index';\nimport * as base from '@material/base/index';\nimport * as checkbox from '@material/checkbox/index';\nimport * as chips from '@material/chips/index';\nimport * as dialog from '@material/dialog/index';\nimport * as dom from '@material/dom/index';\nimport * as drawer from '@material/drawer/index';\nimport * as floatingLabel from '@material/floating-label/index';\nimport * as formField from '@material/form-field/index';\nimport * as gridList from '@material/grid-list/index';\nimport * as iconButton from '@material/icon-button/index';\nimport * as lineRipple from '@material/line-ripple/index';\nimport * as linearProgress from '@material/linear-progress/index';\nimport * as list from '@material/list/index';\nimport * as menuSurface from '@material/menu-surface/index';\nimport * as menu from '@material/menu/index';\nimport * as notchedOutline from '@material/notched-outline/index';\nimport * as radio from '@material/radio/index';\nimport * as ripple from '@material/ripple/index';\nimport * as select from '@material/select/index';\nimport * as slider from '@material/slider/index';\nimport * as snackbar from '@material/snackbar/index';\nimport * as switchControl from '@material/switch/index';\nimport * as tabBar from '@material/tab-bar/index';\nimport * as tabIndicator from '@material/tab-indicator/index';\nimport * as tabScroller from '@material/tab-scroller/index';\nimport * as tab from '@material/tab/index';\nimport * as textField from '@material/textfield/index';\nimport * as toolbar from '@material/toolbar/index';\nimport * as topAppBar from '@material/top-app-bar/index';\n\n// Register all components\nautoInit.register('MDCCheckbox', checkbox.MDCCheckbox);\nautoInit.register('MDCChip', chips.MDCChip);\nautoInit.register('MDCChipSet', chips.MDCChipSet);\nautoInit.register('MDCDialog', dialog.MDCDialog);\nautoInit.register('MDCDrawer', drawer.MDCDrawer);\nautoInit.register('MDCFloatingLabel', floatingLabel.MDCFloatingLabel);\nautoInit.register('MDCFormField', formField.MDCFormField);\nautoInit.register('MDCGridList', gridList.MDCGridList);\nautoInit.register('MDCIconButtonToggle', iconButton.MDCIconButtonToggle);\nautoInit.register('MDCLineRipple', lineRipple.MDCLineRipple);\nautoInit.register('MDCLinearProgress', linearProgress.MDCLinearProgress);\nautoInit.register('MDCList', list.MDCList);\nautoInit.register('MDCMenu', menu.MDCMenu);\nautoInit.register('MDCMenuSurface', menuSurface.MDCMenuSurface);\nautoInit.register('MDCNotchedOutline', notchedOutline.MDCNotchedOutline);\nautoInit.register('MDCRadio', radio.MDCRadio);\nautoInit.register('MDCRipple', ripple.MDCRipple);\nautoInit.register('MDCSelect', select.MDCSelect);\nautoInit.register('MDCSlider', slider.MDCSlider);\nautoInit.register('MDCSnackbar', snackbar.MDCSnackbar);\nautoInit.register('MDCSwitch', switchControl.MDCSwitch);\nautoInit.register('MDCTabBar', tabBar.MDCTabBar);\nautoInit.register('MDCTextField', textField.MDCTextField);\nautoInit.register('MDCToolbar', toolbar.MDCToolbar);\nautoInit.register('MDCTopAppBar', topAppBar.MDCTopAppBar);\n\n// Export all components.\nexport {\n autoInit,\n base,\n checkbox,\n chips,\n dialog,\n dom,\n drawer,\n floatingLabel,\n formField,\n gridList,\n iconButton,\n lineRipple,\n linearProgress,\n list,\n menu,\n menuSurface,\n notchedOutline,\n radio,\n ripple,\n select,\n slider,\n snackbar,\n switchControl,\n tab,\n tabBar,\n tabIndicator,\n tabScroller,\n textField,\n toolbar,\n topAppBar,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/material-components-web/index.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n// tslint:disable:only-arrow-functions\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCFoundation} from '@material/base/foundation';\n\nexport interface MDCAttachable {\n new(root: Element, foundation?: F, ...args: Array): MDCComponent;\n\n // Static method.\n attachTo(root: Element): MDCComponent;\n}\n\ninterface InternalComponentRegistry {\n [key: string]: MDCAttachable;\n}\n\nconst registry: InternalComponentRegistry = {};\n\nconst CONSOLE_WARN = console.warn.bind(console); // tslint:disable-line:no-console\n\nfunction emit(evtType: string, evtData: T, shouldBubble = false) {\n let evt;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent(evtType, {\n bubbles: shouldBubble,\n detail: evtData,\n });\n } else {\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(evtType, shouldBubble, false, evtData);\n }\n\n document.dispatchEvent(evt);\n}\n\n/* istanbul ignore next: optional argument is not a branch statement */\n/**\n * Auto-initializes all MDC components on a page.\n */\nexport function mdcAutoInit(root = document, warn = CONSOLE_WARN) {\n const components = [];\n const nodes: Element[] = [].slice.call(root.querySelectorAll('[data-mdc-auto-init]'));\n\n for (const node of nodes) {\n const ctorName = node.getAttribute('data-mdc-auto-init');\n if (!ctorName) {\n throw new Error('(mdc-auto-init) Constructor name must be given.');\n }\n\n const Constructor = registry[ctorName]; // tslint:disable-line:variable-name\n if (typeof Constructor !== 'function') {\n throw new Error(\n `(mdc-auto-init) Could not find constructor in registry for ${ctorName}`);\n }\n\n if (Object.getOwnPropertyDescriptor(node, ctorName)) {\n warn(`(mdc-auto-init) Component already initialized for ${node}. Skipping...`);\n continue;\n }\n\n // TODO: Should we make an eslint rule for an attachTo() static method?\n // See https://github.com/Microsoft/TypeScript/issues/14600 for discussion of static interface support in TS\n const component = Constructor.attachTo(node);\n Object.defineProperty(node, ctorName, {\n configurable: true,\n enumerable: false,\n value: component,\n writable: false,\n });\n components.push(component);\n }\n\n emit('MDCAutoInit:End', {});\n return components;\n}\n\n// Constructor is PascalCased because it is a direct reference to a class, rather than an instance of a class.\n// tslint:disable-next-line:variable-name\nmdcAutoInit.register = function(componentName: string, Constructor: MDCAttachable, warn = CONSOLE_WARN) {\n if (typeof Constructor !== 'function') {\n throw new Error(`(mdc-auto-init) Invalid Constructor value: ${Constructor}. Expected function.`);\n }\n const registryValue = registry[componentName];\n if (registryValue) {\n warn(`(mdc-auto-init) Overriding registration for ${componentName} with ${Constructor}. Was: ${registryValue}`);\n }\n registry[componentName] = Constructor;\n};\n\nmdcAutoInit.deregister = function(componentName: string) {\n delete registry[componentName];\n};\n\nmdcAutoInit.deregisterAll = function() {\n const keys = Object.keys(registry) as string[];\n keys.forEach(this.deregister, this);\n};\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default mdcAutoInit;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-auto-init/index.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-base/index.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-checkbox/index.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {getCorrectEventName} from '@material/animation/util';\nimport {MDCComponent} from '@material/base/component';\nimport {ponyfill} from '@material/dom/index';\nimport {MDCRipple, MDCRippleAdapter, MDCRippleCapableSurface, MDCRippleFoundation} from '@material/ripple/index';\nimport {MDCCheckboxAdapter} from './adapter';\nimport {MDCCheckboxFoundation} from './foundation';\n\n/**\n * This type is needed for compatibility with Closure Compiler.\n */\ntype PropertyDescriptorGetter = (() => unknown) | undefined;\n\nconst CB_PROTO_PROPS = ['checked', 'indeterminate'];\n\nexport class MDCCheckbox extends MDCComponent implements MDCRippleCapableSurface {\n static attachTo(root: Element) {\n return new MDCCheckbox(root);\n }\n\n get ripple(): MDCRipple {\n return this.ripple_;\n }\n\n get checked(): boolean {\n return this.nativeControl_.checked;\n }\n\n set checked(checked: boolean) {\n this.nativeControl_.checked = checked;\n }\n\n get indeterminate(): boolean {\n return this.nativeControl_.indeterminate;\n }\n\n set indeterminate(indeterminate: boolean) {\n this.nativeControl_.indeterminate = indeterminate;\n }\n\n get disabled(): boolean {\n return this.nativeControl_.disabled;\n }\n\n set disabled(disabled: boolean) {\n this.foundation_.setDisabled(disabled);\n }\n\n get value(): string {\n return this.nativeControl_.value;\n }\n\n set value(value: string) {\n this.nativeControl_.value = value;\n }\n\n // Public visibility for this property is required by MDCRippleCapableSurface.\n root_!: Element; // assigned in MDCComponent constructor\n\n private readonly ripple_: MDCRipple = this.createRipple_();\n private handleChange_!: EventListener; // assigned in initialSyncWithDOM()\n private handleAnimationEnd_!: EventListener; // assigned in initialSyncWithDOM()\n\n initialSyncWithDOM() {\n this.handleChange_ = () => this.foundation_.handleChange();\n this.handleAnimationEnd_ = () => this.foundation_.handleAnimationEnd();\n this.nativeControl_.addEventListener('change', this.handleChange_);\n this.listen(getCorrectEventName(window, 'animationend'), this.handleAnimationEnd_);\n this.installPropertyChangeHooks_();\n }\n\n destroy() {\n this.ripple_.destroy();\n this.nativeControl_.removeEventListener('change', this.handleChange_);\n this.unlisten(getCorrectEventName(window, 'animationend'), this.handleAnimationEnd_);\n this.uninstallPropertyChangeHooks_();\n super.destroy();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCCheckboxAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n forceLayout: () => (this.root_ as HTMLElement).offsetWidth,\n hasNativeControl: () => !!this.nativeControl_,\n isAttachedToDOM: () => Boolean(this.root_.parentNode),\n isChecked: () => this.checked,\n isIndeterminate: () => this.indeterminate,\n removeClass: (className) => this.root_.classList.remove(className),\n removeNativeControlAttr: (attr) => this.nativeControl_.removeAttribute(attr),\n setNativeControlAttr: (attr, value) => this.nativeControl_.setAttribute(attr, value),\n setNativeControlDisabled: (disabled) => this.nativeControl_.disabled = disabled,\n };\n return new MDCCheckboxFoundation(adapter);\n }\n\n private createRipple_(): MDCRipple {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCRippleAdapter = {\n ...MDCRipple.createAdapter(this),\n deregisterInteractionHandler: (evtType, handler) => this.nativeControl_.removeEventListener(evtType, handler),\n isSurfaceActive: () => ponyfill.matches(this.nativeControl_, ':active'),\n isUnbounded: () => true,\n registerInteractionHandler: (evtType, handler) => this.nativeControl_.addEventListener(evtType, handler),\n };\n return new MDCRipple(this.root_, new MDCRippleFoundation(adapter));\n }\n\n private installPropertyChangeHooks_() {\n const nativeCb = this.nativeControl_;\n const cbProto = Object.getPrototypeOf(nativeCb);\n\n CB_PROTO_PROPS.forEach((controlState) => {\n const desc = Object.getOwnPropertyDescriptor(cbProto, controlState);\n // We have to check for this descriptor, since some browsers (Safari) don't support its return.\n // See: https://bugs.webkit.org/show_bug.cgi?id=49739\n if (!validDescriptor(desc)) {\n return;\n }\n\n // Type cast is needed for compatibility with Closure Compiler.\n const nativeGetter = (desc as {get: PropertyDescriptorGetter}).get;\n\n const nativeCbDesc = {\n configurable: desc.configurable,\n enumerable: desc.enumerable,\n get: nativeGetter,\n set: (state: boolean) => {\n desc.set!.call(nativeCb, state);\n this.foundation_.handleChange();\n },\n };\n Object.defineProperty(nativeCb, controlState, nativeCbDesc);\n });\n }\n\n private uninstallPropertyChangeHooks_() {\n const nativeCb = this.nativeControl_;\n const cbProto = Object.getPrototypeOf(nativeCb);\n\n CB_PROTO_PROPS.forEach((controlState) => {\n const desc = Object.getOwnPropertyDescriptor(cbProto, controlState);\n if (!validDescriptor(desc)) {\n return;\n }\n Object.defineProperty(nativeCb, controlState, desc);\n });\n }\n\n private get nativeControl_(): HTMLInputElement {\n const {NATIVE_CONTROL_SELECTOR} = MDCCheckboxFoundation.strings;\n const el = this.root_.querySelector(NATIVE_CONTROL_SELECTOR);\n if (!el) {\n throw new Error(`Checkbox component requires a ${NATIVE_CONTROL_SELECTOR} element`);\n }\n return el;\n }\n}\n\nfunction validDescriptor(inputPropDesc: PropertyDescriptor | undefined): inputPropDesc is PropertyDescriptor {\n return !!inputPropDesc && typeof inputPropDesc.set === 'function';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-checkbox/component.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport const cssClasses = {\n // Ripple is a special case where the \"root\" component is really a \"mixin\" of sorts,\n // given that it's an 'upgrade' to an existing component. That being said it is the root\n // CSS class that all other CSS classes derive from.\n BG_FOCUSED: 'mdc-ripple-upgraded--background-focused',\n FG_ACTIVATION: 'mdc-ripple-upgraded--foreground-activation',\n FG_DEACTIVATION: 'mdc-ripple-upgraded--foreground-deactivation',\n ROOT: 'mdc-ripple-upgraded',\n UNBOUNDED: 'mdc-ripple-upgraded--unbounded',\n};\n\nexport const strings = {\n VAR_FG_SCALE: '--mdc-ripple-fg-scale',\n VAR_FG_SIZE: '--mdc-ripple-fg-size',\n VAR_FG_TRANSLATE_END: '--mdc-ripple-fg-translate-end',\n VAR_FG_TRANSLATE_START: '--mdc-ripple-fg-translate-start',\n VAR_LEFT: '--mdc-ripple-left',\n VAR_TOP: '--mdc-ripple-top',\n};\n\nexport const numbers = {\n DEACTIVATION_TIMEOUT_MS: 225, // Corresponds to $mdc-ripple-translate-duration (i.e. activation animation duration)\n FG_DEACTIVATION_MS: 150, // Corresponds to $mdc-ripple-fade-out-duration (i.e. deactivation animation duration)\n INITIAL_ORIGIN_SCALE: 0.6,\n PADDING: 10,\n TAP_DELAY_MS: 300, // Delay between touch and simulated mouse events on touch devices\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/constants.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport const cssClasses = {\n ANIM_CHECKED_INDETERMINATE: 'mdc-checkbox--anim-checked-indeterminate',\n ANIM_CHECKED_UNCHECKED: 'mdc-checkbox--anim-checked-unchecked',\n ANIM_INDETERMINATE_CHECKED: 'mdc-checkbox--anim-indeterminate-checked',\n ANIM_INDETERMINATE_UNCHECKED: 'mdc-checkbox--anim-indeterminate-unchecked',\n ANIM_UNCHECKED_CHECKED: 'mdc-checkbox--anim-unchecked-checked',\n ANIM_UNCHECKED_INDETERMINATE: 'mdc-checkbox--anim-unchecked-indeterminate',\n CHECKED: 'mdc-checkbox--checked',\n DISABLED: 'mdc-checkbox--disabled',\n INDETERMINATE: 'mdc-checkbox--indeterminate',\n UPGRADED: 'mdc-checkbox--upgraded',\n};\n\nexport const strings = {\n ARIA_CHECKED_ATTR: 'aria-checked',\n ARIA_CHECKED_INDETERMINATE_VALUE: 'mixed',\n NATIVE_CONTROL_SELECTOR: '.mdc-checkbox__native-control',\n TRANSITION_STATE_CHECKED: 'checked',\n TRANSITION_STATE_INDETERMINATE: 'indeterminate',\n TRANSITION_STATE_INIT: 'init',\n TRANSITION_STATE_UNCHECKED: 'unchecked',\n};\n\nexport const numbers = {\n ANIM_END_LATCH_MS: 250,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-checkbox/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './chip/index';\nexport * from './chip-set/index';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/index.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {SpecificEventListener} from '@material/base/types';\nimport {\n MDCRipple,\n MDCRippleAdapter,\n MDCRippleCapableSurface,\n MDCRippleFactory,\n MDCRippleFoundation,\n} from '@material/ripple/index';\nimport {MDCChipAdapter} from './adapter';\nimport {strings} from './constants';\nimport {MDCChipFoundation} from './foundation';\nimport {MDCChipInteractionEventDetail, MDCChipRemovalEventDetail, MDCChipSelectionEventDetail} from './types';\n\ntype InteractionType = 'click' | 'keydown';\n\nconst INTERACTION_EVENTS: InteractionType[] = ['click', 'keydown'];\n\nexport type MDCChipFactory = (el: Element, foundation?: MDCChipFoundation) => MDCChip;\n\nexport class MDCChip extends MDCComponent implements MDCRippleCapableSurface {\n /**\n * @return Whether the chip is selected.\n */\n get selected(): boolean {\n return this.foundation_.isSelected();\n }\n\n /**\n * Sets selected state on the chip.\n */\n set selected(selected: boolean) {\n this.foundation_.setSelected(selected);\n }\n\n /**\n * @return Whether a trailing icon click should trigger exit/removal of the chip.\n */\n get shouldRemoveOnTrailingIconClick(): boolean {\n return this.foundation_.getShouldRemoveOnTrailingIconClick();\n }\n\n /**\n * Sets whether a trailing icon click should trigger exit/removal of the chip.\n */\n set shouldRemoveOnTrailingIconClick(shouldRemove: boolean) {\n this.foundation_.setShouldRemoveOnTrailingIconClick(shouldRemove);\n }\n\n get ripple(): MDCRipple {\n return this.ripple_;\n }\n\n get id(): string {\n return this.root_.id;\n }\n\n static attachTo(root: Element) {\n return new MDCChip(root);\n }\n\n // Public visibility for this property is required by MDCRippleCapableSurface.\n root_!: HTMLElement; // assigned in MDCComponent constructor\n\n private leadingIcon_!: Element | null; // assigned in initialize()\n private trailingIcon_!: Element | null; // assigned in initialize()\n private checkmark_!: Element | null; // assigned in initialize()\n private ripple_!: MDCRipple; // assigned in initialize()\n\n private handleInteraction_!: SpecificEventListener; // assigned in initialSyncWithDOM()\n private handleTransitionEnd_!: SpecificEventListener<'transitionend'>; // assigned in initialSyncWithDOM()\n private handleTrailingIconInteraction_!: SpecificEventListener; // assigned in initialSyncWithDOM()\n\n initialize(rippleFactory: MDCRippleFactory = (el, foundation) => new MDCRipple(el, foundation)) {\n this.leadingIcon_ = this.root_.querySelector(strings.LEADING_ICON_SELECTOR);\n this.trailingIcon_ = this.root_.querySelector(strings.TRAILING_ICON_SELECTOR);\n this.checkmark_ = this.root_.querySelector(strings.CHECKMARK_SELECTOR);\n\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const rippleAdapter: MDCRippleAdapter = {\n ...MDCRipple.createAdapter(this),\n computeBoundingRect: () => this.foundation_.getDimensions(),\n };\n this.ripple_ = rippleFactory(this.root_, new MDCRippleFoundation(rippleAdapter));\n }\n\n initialSyncWithDOM() {\n this.handleInteraction_ = (evt: MouseEvent | KeyboardEvent) => this.foundation_.handleInteraction(evt);\n this.handleTransitionEnd_ = (evt: TransitionEvent) => this.foundation_.handleTransitionEnd(evt);\n this.handleTrailingIconInteraction_ = (evt: MouseEvent | KeyboardEvent) =>\n this.foundation_.handleTrailingIconInteraction(evt);\n\n INTERACTION_EVENTS.forEach((evtType) => {\n this.listen(evtType, this.handleInteraction_);\n });\n this.listen('transitionend', this.handleTransitionEnd_);\n\n if (this.trailingIcon_) {\n INTERACTION_EVENTS.forEach((evtType) => {\n this.trailingIcon_!.addEventListener(evtType, this.handleTrailingIconInteraction_ as EventListener);\n });\n }\n }\n\n destroy() {\n this.ripple_.destroy();\n\n INTERACTION_EVENTS.forEach((evtType) => {\n this.unlisten(evtType, this.handleInteraction_);\n });\n this.unlisten('transitionend', this.handleTransitionEnd_);\n\n if (this.trailingIcon_) {\n INTERACTION_EVENTS.forEach((evtType) => {\n this.trailingIcon_!.removeEventListener(evtType, this.handleTrailingIconInteraction_ as EventListener);\n });\n }\n\n super.destroy();\n }\n\n /**\n * Begins the exit animation which leads to removal of the chip.\n */\n beginExit() {\n this.foundation_.beginExit();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCChipAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n addClassToLeadingIcon: (className) => {\n if (this.leadingIcon_) {\n this.leadingIcon_.classList.add(className);\n }\n },\n eventTargetHasClass: (target, className) => target ? (target as Element).classList.contains(className) : false,\n getCheckmarkBoundingClientRect: () => this.checkmark_ ? this.checkmark_.getBoundingClientRect() : null,\n getComputedStyleValue: (propertyName) => window.getComputedStyle(this.root_).getPropertyValue(propertyName),\n getRootBoundingClientRect: () => this.root_.getBoundingClientRect(),\n hasClass: (className) => this.root_.classList.contains(className),\n hasLeadingIcon: () => !!this.leadingIcon_,\n notifyInteraction: () => this.emit(\n strings.INTERACTION_EVENT, {chipId: this.id}, true /* shouldBubble */),\n notifyRemoval: () => this.emit(\n strings.REMOVAL_EVENT, {chipId: this.id, root: this.root_}, true /* shouldBubble */),\n notifySelection: (selected) => this.emit(\n strings.SELECTION_EVENT, {chipId: this.id, selected}, true /* shouldBubble */),\n notifyTrailingIconInteraction: () => this.emit(\n strings.TRAILING_ICON_INTERACTION_EVENT, {chipId: this.id}, true /* shouldBubble */),\n removeClass: (className) => this.root_.classList.remove(className),\n removeClassFromLeadingIcon: (className) => {\n if (this.leadingIcon_) {\n this.leadingIcon_.classList.remove(className);\n }\n },\n setStyleProperty: (propertyName, value) => this.root_.style.setProperty(propertyName, value),\n };\n return new MDCChipFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip/component.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip-set/index.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCChip, MDCChipFactory, MDCChipFoundation} from '../chip/index';\nimport {MDCChipInteractionEvent, MDCChipRemovalEvent, MDCChipSelectionEvent} from '../chip/index';\nimport {MDCChipSetAdapter} from './adapter';\nimport {MDCChipSetFoundation} from './foundation';\n\nconst {INTERACTION_EVENT, SELECTION_EVENT, REMOVAL_EVENT} = MDCChipFoundation.strings;\nconst {CHIP_SELECTOR} = MDCChipSetFoundation.strings;\n\nlet idCounter = 0;\n\nexport class MDCChipSet extends MDCComponent {\n static attachTo(root: Element) {\n return new MDCChipSet(root);\n }\n\n get chips(): ReadonlyArray {\n return this.chips_.slice();\n }\n\n /**\n * @return An array of the IDs of all selected chips.\n */\n get selectedChipIds(): ReadonlyArray {\n return this.foundation_.getSelectedChipIds();\n }\n\n private chips_!: MDCChip[]; // assigned in initialize()\n private chipFactory_!: (el: Element) => MDCChip; // assigned in initialize()\n private handleChipInteraction_!: (evt: MDCChipInteractionEvent) => void; // assigned in initialSyncWithDOM()\n private handleChipSelection_!: (evt: MDCChipSelectionEvent) => void; // assigned in initialSyncWithDOM()\n private handleChipRemoval_!: (evt: MDCChipRemovalEvent) => void; // assigned in initialSyncWithDOM()\n\n /**\n * @param chipFactory A function which creates a new MDCChip.\n */\n initialize(chipFactory: MDCChipFactory = (el) => new MDCChip(el)) {\n this.chipFactory_ = chipFactory;\n this.chips_ = this.instantiateChips_(this.chipFactory_);\n }\n\n initialSyncWithDOM() {\n this.chips_.forEach((chip) => {\n if (chip.id && chip.selected) {\n this.foundation_.select(chip.id);\n }\n });\n\n this.handleChipInteraction_ = (evt) => this.foundation_.handleChipInteraction(evt.detail.chipId);\n this.handleChipSelection_ = (evt) => this.foundation_.handleChipSelection(evt.detail.chipId, evt.detail.selected);\n this.handleChipRemoval_ = (evt) => this.foundation_.handleChipRemoval(evt.detail.chipId);\n this.listen(INTERACTION_EVENT, this.handleChipInteraction_);\n this.listen(SELECTION_EVENT, this.handleChipSelection_);\n this.listen(REMOVAL_EVENT, this.handleChipRemoval_);\n }\n\n destroy() {\n this.chips_.forEach((chip) => {\n chip.destroy();\n });\n\n this.unlisten(INTERACTION_EVENT, this.handleChipInteraction_);\n this.unlisten(SELECTION_EVENT, this.handleChipSelection_);\n this.unlisten(REMOVAL_EVENT, this.handleChipRemoval_);\n\n super.destroy();\n }\n\n /**\n * Adds a new chip object to the chip set from the given chip element.\n */\n addChip(chipEl: Element) {\n chipEl.id = chipEl.id || `mdc-chip-${++idCounter}`;\n this.chips_.push(this.chipFactory_(chipEl));\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCChipSetAdapter = {\n hasClass: (className) => this.root_.classList.contains(className),\n removeChip: (chipId) => {\n const index = this.findChipIndex_(chipId);\n if (index >= 0) {\n this.chips_[index].destroy();\n this.chips_.splice(index, 1);\n }\n },\n setSelected: (chipId, selected) => {\n const index = this.findChipIndex_(chipId);\n if (index >= 0) {\n this.chips_[index].selected = selected;\n }\n },\n };\n return new MDCChipSetFoundation(adapter);\n }\n\n /**\n * Instantiates chip components on all of the chip set's child chip elements.\n */\n private instantiateChips_(chipFactory: MDCChipFactory): MDCChip[] {\n const chipElements: Element[] =\n [].slice.call(this.root_.querySelectorAll(CHIP_SELECTOR));\n return chipElements.map((el) => {\n el.id = el.id || `mdc-chip-${++idCounter}`;\n return chipFactory(el);\n });\n }\n\n /**\n * Returns the index of the chip with the given id, or -1 if the chip does not exist.\n */\n private findChipIndex_(chipId: string): number {\n for (let i = 0; i < this.chips_.length; i++) {\n if (this.chips_[i].id === chipId) {\n return i;\n }\n }\n return -1;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip-set/component.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport const strings = {\n CHIP_SELECTOR: '.mdc-chip',\n};\n\nexport const cssClasses = {\n CHOICE: 'mdc-chip-set--choice',\n FILTER: 'mdc-chip-set--filter',\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip-set/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport * as util from './util';\n\nexport {util};\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dialog/index.ts","var tabbable = require('tabbable');\nvar xtend = require('xtend');\n\nvar activeFocusTraps = (function() {\n var trapQueue = [];\n return {\n activateTrap: function(trap) {\n if (trapQueue.length > 0) {\n var activeTrap = trapQueue[trapQueue.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex === -1) {\n trapQueue.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapQueue.splice(trapIndex, 1);\n trapQueue.push(trap);\n }\n },\n\n deactivateTrap: function(trap) {\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex !== -1) {\n trapQueue.splice(trapIndex, 1);\n }\n\n if (trapQueue.length > 0) {\n trapQueue[trapQueue.length - 1].unpause();\n }\n }\n };\n})();\n\nfunction focusTrap(element, userOptions) {\n var doc = document;\n var container =\n typeof element === 'string' ? doc.querySelector(element) : element;\n\n var config = xtend(\n {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true\n },\n userOptions\n );\n\n var state = {\n firstTabbableNode: null,\n lastTabbableNode: null,\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false\n };\n\n var trap = {\n activate: activate,\n deactivate: deactivate,\n pause: pause,\n unpause: unpause\n };\n\n return trap;\n\n function activate(activateOptions) {\n if (state.active) return;\n\n updateTabbableNodes();\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n var onActivate =\n activateOptions && activateOptions.onActivate\n ? activateOptions.onActivate\n : config.onActivate;\n if (onActivate) {\n onActivate();\n }\n\n addListeners();\n return trap;\n }\n\n function deactivate(deactivateOptions) {\n if (!state.active) return;\n\n removeListeners();\n state.active = false;\n state.paused = false;\n\n activeFocusTraps.deactivateTrap(trap);\n\n var onDeactivate =\n deactivateOptions && deactivateOptions.onDeactivate !== undefined\n ? deactivateOptions.onDeactivate\n : config.onDeactivate;\n if (onDeactivate) {\n onDeactivate();\n }\n\n var returnFocus =\n deactivateOptions && deactivateOptions.returnFocus !== undefined\n ? deactivateOptions.returnFocus\n : config.returnFocusOnDeactivate;\n if (returnFocus) {\n delay(function() {\n tryFocus(state.nodeFocusedBeforeActivation);\n });\n }\n\n return trap;\n }\n\n function pause() {\n if (state.paused || !state.active) return;\n state.paused = true;\n removeListeners();\n }\n\n function unpause() {\n if (!state.paused || !state.active) return;\n state.paused = false;\n addListeners();\n }\n\n function addListeners() {\n if (!state.active) return;\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trap);\n\n updateTabbableNodes();\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n delay(function() {\n tryFocus(getInitialFocusNode());\n });\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, true);\n doc.addEventListener('touchstart', checkPointerDown, true);\n doc.addEventListener('click', checkClick, true);\n doc.addEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function removeListeners() {\n if (!state.active) return;\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n var node = optionValue;\n if (!optionValue) {\n return null;\n }\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue);\n if (!node) {\n throw new Error('`' + optionName + '` refers to no known node');\n }\n }\n if (typeof optionValue === 'function') {\n node = optionValue();\n if (!node) {\n throw new Error('`' + optionName + '` did not return a node');\n }\n }\n return node;\n }\n\n function getInitialFocusNode() {\n var node;\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (container.contains(doc.activeElement)) {\n node = doc.activeElement;\n } else {\n node = state.firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error(\n \"You can't have a focus-trap without at least one focusable element\"\n );\n }\n\n return node;\n }\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n function checkPointerDown(e) {\n if (container.contains(e.target)) return;\n if (config.clickOutsideDeactivates) {\n deactivate({\n returnFocus: !tabbable.isFocusable(e.target)\n });\n } else {\n e.preventDefault();\n }\n }\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n function checkFocusIn(e) {\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (container.contains(e.target) || e.target instanceof Document) {\n return;\n }\n e.stopImmediatePropagation();\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n\n function checkKey(e) {\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n e.preventDefault();\n deactivate();\n return;\n }\n if (isTabEvent(e)) {\n checkTab(e);\n return;\n }\n }\n\n // Hijack Tab events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n function checkTab(e) {\n updateTabbableNodes();\n if (e.shiftKey && e.target === state.firstTabbableNode) {\n e.preventDefault();\n tryFocus(state.lastTabbableNode);\n return;\n }\n if (!e.shiftKey && e.target === state.lastTabbableNode) {\n e.preventDefault();\n tryFocus(state.firstTabbableNode);\n return;\n }\n }\n\n function checkClick(e) {\n if (config.clickOutsideDeactivates) return;\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n function updateTabbableNodes() {\n var tabbableNodes = tabbable(container);\n state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();\n state.lastTabbableNode =\n tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();\n }\n\n function tryFocus(node) {\n if (node === doc.activeElement) return;\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus();\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n }\n}\n\nfunction isSelectableInput(node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n}\n\nfunction isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction isTabEvent(e) {\n return e.key === 'Tab' || e.keyCode === 9;\n}\n\nfunction delay(fn) {\n return setTimeout(fn, 0);\n}\n\nmodule.exports = focusTrap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./packages/mdc-dialog/node_modules/focus-trap/index.js\n// module id = 94\n// module chunks = 0","var candidateSelectors = [\n 'input',\n 'select',\n 'textarea',\n 'a[href]',\n 'button',\n '[tabindex]',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n];\nvar candidateSelector = candidateSelectors.join(',');\n\nvar matches = typeof Element === 'undefined'\n ? function () {}\n : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nfunction tabbable(el, options) {\n options = options || {};\n\n var elementDocument = el.ownerDocument || el;\n var regularTabbables = [];\n var orderedTabbables = [];\n\n var untouchabilityChecker = new UntouchabilityChecker(elementDocument);\n var candidates = el.querySelectorAll(candidateSelector);\n\n if (options.includeContainer) {\n if (matches.call(el, candidateSelector)) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var i, candidate, candidateTabindex;\n for (i = 0; i < candidates.length; i++) {\n candidate = candidates[i];\n\n if (!isNodeMatchingSelectorTabbable(candidate, untouchabilityChecker)) continue;\n\n candidateTabindex = getTabindex(candidate);\n if (candidateTabindex === 0) {\n regularTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n node: candidate,\n });\n }\n }\n\n var tabbableNodes = orderedTabbables\n .sort(sortOrderedTabbables)\n .map(function(a) { return a.node })\n .concat(regularTabbables);\n\n return tabbableNodes;\n}\n\ntabbable.isTabbable = isTabbable;\ntabbable.isFocusable = isFocusable;\n\nfunction isNodeMatchingSelectorTabbable(node, untouchabilityChecker) {\n if (\n !isNodeMatchingSelectorFocusable(node, untouchabilityChecker)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);\n}\n\nfunction isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {\n untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);\n if (\n node.disabled\n || isHiddenInput(node)\n || untouchabilityChecker.isUntouchable(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);\n}\n\nfunction getTabindex(node) {\n var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n if (!isNaN(tabindexAttr)) return tabindexAttr;\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if (isContentEditable(node)) return 0;\n return node.tabIndex;\n}\n\nfunction sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n}\n\n// Array.prototype.find not available in IE.\nfunction find(list, predicate) {\n for (var i = 0, length = list.length; i < length; i++) {\n if (predicate(list[i])) return list[i];\n }\n}\n\nfunction isContentEditable(node) {\n return node.contentEditable === 'true';\n}\n\nfunction isInput(node) {\n return node.tagName === 'INPUT';\n}\n\nfunction isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n}\n\nfunction isRadio(node) {\n return isInput(node) && node.type === 'radio';\n}\n\nfunction isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n}\n\nfunction getCheckedRadio(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked) {\n return nodes[i];\n }\n }\n}\n\nfunction isTabbableRadio(node) {\n if (!node.name) return true;\n // This won't account for the edge case where you have radio groups with the same\n // in separate forms on the same page.\n var radioSet = node.ownerDocument.querySelectorAll('input[type=\"radio\"][name=\"' + node.name + '\"]');\n var checked = getCheckedRadio(radioSet);\n return !checked || checked === node;\n}\n\n// An element is \"untouchable\" if *it or one of its ancestors* has\n// `visibility: hidden` or `display: none`.\nfunction UntouchabilityChecker(elementDocument) {\n this.doc = elementDocument;\n // Node cache must be refreshed on every check, in case\n // the content of the element has changed. The cache contains tuples\n // mapping nodes to their boolean result.\n this.cache = [];\n}\n\n// getComputedStyle accurately reflects `visibility: hidden` of ancestors\n// but not `display: none`, so we need to recursively check parents.\nUntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {\n if (node.nodeType !== Node.ELEMENT_NODE) return false;\n\n // Search for a cached result.\n var cached = find(this.cache, function(item) {\n return item === node;\n });\n if (cached) return cached[1];\n\n nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);\n\n var result = false;\n\n if (nodeComputedStyle.display === 'none') {\n result = true;\n } else if (node.parentNode) {\n result = this.hasDisplayNone(node.parentNode);\n }\n\n this.cache.push([node, result]);\n\n return result;\n}\n\nUntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {\n if (node === this.doc.documentElement) return false;\n var computedStyle = this.doc.defaultView.getComputedStyle(node);\n if (this.hasDisplayNone(node, computedStyle)) return true;\n return computedStyle.visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./packages/mdc-dialog/node_modules/tabbable/index.js\n// module id = 95\n// module chunks = 0","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./packages/mdc-dialog/node_modules/xtend/immutable.js\n// module id = 96\n// module chunks = 0","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {SpecificEventListener} from '@material/base/types';\nimport {closest, matches} from '@material/dom/ponyfill';\nimport {MDCRipple} from '@material/ripple/component';\nimport {FocusTrap} from 'focus-trap';\nimport {MDCDialogAdapter} from './adapter';\nimport {MDCDialogFoundation} from './foundation';\nimport {MDCDialogCloseEventDetail} from './types';\nimport * as util from './util';\nimport {MDCDialogFocusTrapFactory} from './util';\n\nconst {strings} = MDCDialogFoundation;\n\nexport class MDCDialog extends MDCComponent {\n get isOpen() {\n return this.foundation_.isOpen();\n }\n\n get escapeKeyAction() {\n return this.foundation_.getEscapeKeyAction();\n }\n\n set escapeKeyAction(action) {\n this.foundation_.setEscapeKeyAction(action);\n }\n\n get scrimClickAction() {\n return this.foundation_.getScrimClickAction();\n }\n\n set scrimClickAction(action) {\n this.foundation_.setScrimClickAction(action);\n }\n\n get autoStackButtons() {\n return this.foundation_.getAutoStackButtons();\n }\n\n set autoStackButtons(autoStack) {\n this.foundation_.setAutoStackButtons(autoStack);\n }\n\n static attachTo(root: Element) {\n return new MDCDialog(root);\n }\n\n private buttonRipples_!: MDCRipple[]; // assigned in initialize()\n private buttons_!: HTMLElement[]; // assigned in initialize()\n private container_!: HTMLElement; // assigned in initialize()\n private content_!: HTMLElement | null; // assigned in initialize()\n private defaultButton_!: HTMLElement | null; // assigned in initialize()\n private initialFocusEl_?: HTMLElement; // assigned in initialize()\n\n private focusTrap_!: FocusTrap; // assigned in initialSyncWithDOM()\n private focusTrapFactory_?: MDCDialogFocusTrapFactory; // assigned in initialize()\n\n private handleInteraction_!: SpecificEventListener<'click' | 'keydown'>; // assigned in initialSyncWithDOM()\n private handleDocumentKeydown_!: SpecificEventListener<'keydown'>; // assigned in initialSyncWithDOM()\n private handleLayout_!: EventListener; // assigned in initialSyncWithDOM()\n private handleOpening_!: EventListener; // assigned in initialSyncWithDOM()\n private handleClosing_!: () => void; // assigned in initialSyncWithDOM()\n\n initialize(\n focusTrapFactory?: MDCDialogFocusTrapFactory,\n initialFocusEl?: HTMLElement,\n ) {\n const container = this.root_.querySelector(strings.CONTAINER_SELECTOR);\n if (!container) {\n throw new Error(`Dialog component requires a ${strings.CONTAINER_SELECTOR} container element`);\n }\n this.container_ = container;\n this.content_ = this.root_.querySelector(strings.CONTENT_SELECTOR);\n this.buttons_ = [].slice.call(this.root_.querySelectorAll(strings.BUTTON_SELECTOR));\n this.defaultButton_ = this.root_.querySelector(strings.DEFAULT_BUTTON_SELECTOR);\n this.focusTrapFactory_ = focusTrapFactory;\n this.initialFocusEl_ = initialFocusEl;\n this.buttonRipples_ = [];\n\n for (const buttonEl of this.buttons_) {\n this.buttonRipples_.push(new MDCRipple(buttonEl));\n }\n }\n\n initialSyncWithDOM() {\n this.focusTrap_ = util.createFocusTrapInstance(this.container_, this.focusTrapFactory_, this.initialFocusEl_);\n\n this.handleInteraction_ = this.foundation_.handleInteraction.bind(this.foundation_);\n this.handleDocumentKeydown_ = this.foundation_.handleDocumentKeydown.bind(this.foundation_);\n this.handleLayout_ = this.layout.bind(this);\n\n const LAYOUT_EVENTS = ['resize', 'orientationchange'];\n this.handleOpening_ = () => {\n LAYOUT_EVENTS.forEach((evtType) => window.addEventListener(evtType, this.handleLayout_));\n document.addEventListener('keydown', this.handleDocumentKeydown_);\n };\n this.handleClosing_ = () => {\n LAYOUT_EVENTS.forEach((evtType) => window.removeEventListener(evtType, this.handleLayout_));\n document.removeEventListener('keydown', this.handleDocumentKeydown_);\n };\n\n this.listen('click', this.handleInteraction_);\n this.listen('keydown', this.handleInteraction_);\n this.listen(strings.OPENING_EVENT, this.handleOpening_);\n this.listen(strings.CLOSING_EVENT, this.handleClosing_);\n }\n\n destroy() {\n this.unlisten('click', this.handleInteraction_);\n this.unlisten('keydown', this.handleInteraction_);\n this.unlisten(strings.OPENING_EVENT, this.handleOpening_);\n this.unlisten(strings.CLOSING_EVENT, this.handleClosing_);\n this.handleClosing_();\n\n this.buttonRipples_.forEach((ripple) => ripple.destroy());\n super.destroy();\n }\n\n layout() {\n this.foundation_.layout();\n }\n\n open() {\n this.foundation_.open();\n }\n\n close(action = '') {\n this.foundation_.close(action);\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCDialogAdapter = {\n addBodyClass: (className) => document.body.classList.add(className),\n addClass: (className) => this.root_.classList.add(className),\n areButtonsStacked: () => util.areTopsMisaligned(this.buttons_),\n clickDefaultButton: () => this.defaultButton_ && this.defaultButton_.click(),\n eventTargetMatches: (target, selector) => target ? matches(target as Element, selector) : false,\n getActionFromEvent: (evt: Event) => {\n if (!evt.target) {\n return '';\n }\n const element = closest(evt.target as Element, `[${strings.ACTION_ATTRIBUTE}]`);\n return element && element.getAttribute(strings.ACTION_ATTRIBUTE);\n },\n hasClass: (className) => this.root_.classList.contains(className),\n isContentScrollable: () => util.isScrollable(this.content_),\n notifyClosed: (action) => this.emit(strings.CLOSED_EVENT, action ? {action} : {}),\n notifyClosing: (action) => this.emit(strings.CLOSING_EVENT, action ? {action} : {}),\n notifyOpened: () => this.emit(strings.OPENED_EVENT, {}),\n notifyOpening: () => this.emit(strings.OPENING_EVENT, {}),\n releaseFocus: () => this.focusTrap_.deactivate(),\n removeBodyClass: (className) => document.body.classList.remove(className),\n removeClass: (className) => this.root_.classList.remove(className),\n reverseButtons: () => {\n this.buttons_.reverse();\n this.buttons_.forEach((button) => {\n button.parentElement!.appendChild(button);\n });\n },\n trapFocus: () => this.focusTrap_.activate(),\n };\n return new MDCDialogFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dialog/component.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport const cssClasses = {\n CLOSING: 'mdc-dialog--closing',\n OPEN: 'mdc-dialog--open',\n OPENING: 'mdc-dialog--opening',\n SCROLLABLE: 'mdc-dialog--scrollable',\n SCROLL_LOCK: 'mdc-dialog-scroll-lock',\n STACKED: 'mdc-dialog--stacked',\n};\n\nexport const strings = {\n ACTION_ATTRIBUTE: 'data-mdc-dialog-action',\n BUTTON_SELECTOR: '.mdc-dialog__button',\n CLOSED_EVENT: 'MDCDialog:closed',\n CLOSE_ACTION: 'close',\n CLOSING_EVENT: 'MDCDialog:closing',\n CONTAINER_SELECTOR: '.mdc-dialog__container',\n CONTENT_SELECTOR: '.mdc-dialog__content',\n DEFAULT_BUTTON_SELECTOR: '.mdc-dialog__button--default',\n DESTROY_ACTION: 'destroy',\n OPENED_EVENT: 'MDCDialog:opened',\n OPENING_EVENT: 'MDCDialog:opening',\n SCRIM_SELECTOR: '.mdc-dialog__scrim',\n SUPPRESS_DEFAULT_PRESS_SELECTOR: [\n 'textarea',\n '.mdc-menu .mdc-list-item',\n ].join(', '),\n SURFACE_SELECTOR: '.mdc-dialog__surface',\n};\n\nexport const numbers = {\n DIALOG_ANIMATION_CLOSE_TIME_MS: 75,\n DIALOG_ANIMATION_OPEN_TIME_MS: 150,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dialog/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport * as util from './util';\n\nexport {util};\nexport * from './adapter';\nexport * from './component';\nexport * from './dismissible/foundation';\nexport * from './modal/foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/index.ts","var candidateSelectors = [\n 'input',\n 'select',\n 'textarea',\n 'a[href]',\n 'button',\n '[tabindex]',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n];\nvar candidateSelector = candidateSelectors.join(',');\n\nvar matches = typeof Element === 'undefined'\n ? function () {}\n : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nfunction tabbable(el, options) {\n options = options || {};\n\n var elementDocument = el.ownerDocument || el;\n var regularTabbables = [];\n var orderedTabbables = [];\n\n var untouchabilityChecker = new UntouchabilityChecker(elementDocument);\n var candidates = el.querySelectorAll(candidateSelector);\n\n if (options.includeContainer) {\n if (matches.call(el, candidateSelector)) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var i, candidate, candidateTabindex;\n for (i = 0; i < candidates.length; i++) {\n candidate = candidates[i];\n\n if (!isNodeMatchingSelectorTabbable(candidate, untouchabilityChecker)) continue;\n\n candidateTabindex = getTabindex(candidate);\n if (candidateTabindex === 0) {\n regularTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n node: candidate,\n });\n }\n }\n\n var tabbableNodes = orderedTabbables\n .sort(sortOrderedTabbables)\n .map(function(a) { return a.node })\n .concat(regularTabbables);\n\n return tabbableNodes;\n}\n\ntabbable.isTabbable = isTabbable;\ntabbable.isFocusable = isFocusable;\n\nfunction isNodeMatchingSelectorTabbable(node, untouchabilityChecker) {\n if (\n !isNodeMatchingSelectorFocusable(node, untouchabilityChecker)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);\n}\n\nfunction isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {\n untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);\n if (\n node.disabled\n || isHiddenInput(node)\n || untouchabilityChecker.isUntouchable(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);\n}\n\nfunction getTabindex(node) {\n var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n if (!isNaN(tabindexAttr)) return tabindexAttr;\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if (isContentEditable(node)) return 0;\n return node.tabIndex;\n}\n\nfunction sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n}\n\n// Array.prototype.find not available in IE.\nfunction find(list, predicate) {\n for (var i = 0, length = list.length; i < length; i++) {\n if (predicate(list[i])) return list[i];\n }\n}\n\nfunction isContentEditable(node) {\n return node.contentEditable === 'true';\n}\n\nfunction isInput(node) {\n return node.tagName === 'INPUT';\n}\n\nfunction isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n}\n\nfunction isRadio(node) {\n return isInput(node) && node.type === 'radio';\n}\n\nfunction isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n}\n\nfunction getCheckedRadio(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked) {\n return nodes[i];\n }\n }\n}\n\nfunction isTabbableRadio(node) {\n if (!node.name) return true;\n // This won't account for the edge case where you have radio groups with the same\n // in separate forms on the same page.\n var radioSet = node.ownerDocument.querySelectorAll('input[type=\"radio\"][name=\"' + node.name + '\"]');\n var checked = getCheckedRadio(radioSet);\n return !checked || checked === node;\n}\n\n// An element is \"untouchable\" if *it or one of its ancestors* has\n// `visibility: hidden` or `display: none`.\nfunction UntouchabilityChecker(elementDocument) {\n this.doc = elementDocument;\n // Node cache must be refreshed on every check, in case\n // the content of the element has changed. The cache contains tuples\n // mapping nodes to their boolean result.\n this.cache = [];\n}\n\n// getComputedStyle accurately reflects `visibility: hidden` of ancestors\n// but not `display: none`, so we need to recursively check parents.\nUntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {\n if (node.nodeType !== Node.ELEMENT_NODE) return false;\n\n // Search for a cached result.\n var cached = find(this.cache, function(item) {\n return item === node;\n });\n if (cached) return cached[1];\n\n nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);\n\n var result = false;\n\n if (nodeComputedStyle.display === 'none') {\n result = true;\n } else if (node.parentNode) {\n result = this.hasDisplayNone(node.parentNode);\n }\n\n this.cache.push([node, result]);\n\n return result;\n}\n\nUntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {\n if (node === this.doc.documentElement) return false;\n var computedStyle = this.doc.defaultView.getComputedStyle(node);\n if (this.hasDisplayNone(node, computedStyle)) return true;\n return computedStyle.visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./packages/mdc-drawer/node_modules/tabbable/index.js\n// module id = 100\n// module chunks = 0","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./packages/mdc-drawer/node_modules/xtend/immutable.js\n// module id = 101\n// module chunks = 0","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCList, MDCListFactory} from '@material/list/component';\nimport {MDCListFoundation} from '@material/list/foundation';\nimport {default as createFocusTrap, FocusTrap} from 'focus-trap';\nimport {MDCDrawerAdapter} from './adapter';\nimport {MDCDismissibleDrawerFoundation} from './dismissible/foundation';\nimport {MDCModalDrawerFoundation} from './modal/foundation';\nimport * as util from './util';\nimport {MDCDrawerFocusTrapFactory} from './util';\n\nconst {cssClasses, strings} = MDCDismissibleDrawerFoundation;\n\nexport class MDCDrawer extends MDCComponent {\n static attachTo(root: Element): MDCDrawer {\n return new MDCDrawer(root);\n }\n\n /**\n * Returns true if drawer is in the open position.\n */\n get open(): boolean {\n return this.foundation_.isOpen();\n }\n\n /**\n * Toggles the drawer open and closed.\n */\n set open(isOpen: boolean) {\n if (isOpen) {\n this.foundation_.open();\n } else {\n this.foundation_.close();\n }\n }\n\n private previousFocus_?: Element | null;\n private scrim_!: HTMLElement | null; // assigned in initialSyncWithDOM()\n private list_?: MDCList; // assigned in initialize()\n\n private focusTrap_?: FocusTrap; // assigned in initialSyncWithDOM()\n private focusTrapFactory_!: MDCDrawerFocusTrapFactory; // assigned in initialize()\n\n private handleScrimClick_?: SpecificEventListener<'click'>; // initialized in initialSyncWithDOM()\n private handleKeydown_!: SpecificEventListener<'keydown'>; // initialized in initialSyncWithDOM()\n private handleTransitionEnd_!: SpecificEventListener<'transitionend'>; // initialized in initialSyncWithDOM()\n\n initialize(\n focusTrapFactory: MDCDrawerFocusTrapFactory = createFocusTrap as unknown as MDCDrawerFocusTrapFactory,\n listFactory: MDCListFactory = (el) => new MDCList(el),\n ) {\n const listEl = this.root_.querySelector(`.${MDCListFoundation.cssClasses.ROOT}`);\n if (listEl) {\n this.list_ = listFactory(listEl);\n this.list_.wrapFocus = true;\n }\n this.focusTrapFactory_ = focusTrapFactory;\n }\n\n initialSyncWithDOM() {\n const {MODAL} = cssClasses;\n const {SCRIM_SELECTOR} = strings;\n\n this.scrim_ = (this.root_.parentNode as Element).querySelector(SCRIM_SELECTOR);\n\n if (this.scrim_ && this.root_.classList.contains(MODAL)) {\n this.handleScrimClick_ = () => (this.foundation_ as MDCModalDrawerFoundation).handleScrimClick();\n this.scrim_.addEventListener('click', this.handleScrimClick_);\n this.focusTrap_ = util.createFocusTrapInstance(this.root_ as HTMLElement, this.focusTrapFactory_);\n }\n\n this.handleKeydown_ = (evt) => this.foundation_.handleKeydown(evt);\n this.handleTransitionEnd_ = (evt) => this.foundation_.handleTransitionEnd(evt);\n\n this.listen('keydown', this.handleKeydown_);\n this.listen('transitionend', this.handleTransitionEnd_);\n }\n\n destroy() {\n this.unlisten('keydown', this.handleKeydown_);\n this.unlisten('transitionend', this.handleTransitionEnd_);\n\n if (this.list_) {\n this.list_.destroy();\n }\n\n const {MODAL} = cssClasses;\n if (this.scrim_ && this.handleScrimClick_ && this.root_.classList.contains(MODAL)) {\n this.scrim_.removeEventListener('click', this.handleScrimClick_);\n // Ensure drawer is closed to hide scrim and release focus\n this.open = false;\n }\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCDrawerAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n hasClass: (className) => this.root_.classList.contains(className),\n elementHasClass: (element, className) => element.classList.contains(className),\n saveFocus: () => this.previousFocus_ = document.activeElement,\n restoreFocus: () => {\n const previousFocus = this.previousFocus_ as HTMLOrSVGElement | null;\n if (previousFocus && previousFocus.focus && this.root_.contains(document.activeElement)) {\n previousFocus.focus();\n }\n },\n focusActiveNavigationItem: () => {\n const activeNavItemEl =\n this.root_.querySelector(`.${MDCListFoundation.cssClasses.LIST_ITEM_ACTIVATED_CLASS}`);\n if (activeNavItemEl) {\n activeNavItemEl.focus();\n }\n },\n notifyClose: () => this.emit(strings.CLOSE_EVENT, {}, true /* shouldBubble */),\n notifyOpen: () => this.emit(strings.OPEN_EVENT, {}, true /* shouldBubble */),\n trapFocus: () => this.focusTrap_!.activate(),\n releaseFocus: () => this.focusTrap_!.deactivate(),\n };\n // tslint:enable:object-literal-sort-keys\n\n const {DISMISSIBLE, MODAL} = cssClasses;\n if (this.root_.classList.contains(DISMISSIBLE)) {\n return new MDCDismissibleDrawerFoundation(adapter);\n } else if (this.root_.classList.contains(MODAL)) {\n return new MDCModalDrawerFoundation(adapter);\n } else {\n throw new Error(\n `MDCDrawer: Failed to instantiate component. Supported variants are ${DISMISSIBLE} and ${MODAL}.`);\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/component.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n ANIMATE: 'mdc-drawer--animate',\n CLOSING: 'mdc-drawer--closing',\n DISMISSIBLE: 'mdc-drawer--dismissible',\n MODAL: 'mdc-drawer--modal',\n OPEN: 'mdc-drawer--open',\n OPENING: 'mdc-drawer--opening',\n ROOT: 'mdc-drawer',\n};\n\nconst strings = {\n APP_CONTENT_SELECTOR: '.mdc-drawer-app-content',\n CLOSE_EVENT: 'MDCDrawer:closed',\n OPEN_EVENT: 'MDCDrawer:opened',\n SCRIM_SELECTOR: '.mdc-drawer-scrim',\n};\n\nexport {cssClasses, strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/constants.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCFloatingLabelAdapter} from './adapter';\nimport {MDCFloatingLabelFoundation} from './foundation';\n\nexport type MDCFloatingLabelFactory = (el: Element, foundation?: MDCFloatingLabelFoundation) => MDCFloatingLabel;\n\nexport class MDCFloatingLabel extends MDCComponent {\n static attachTo(root: Element): MDCFloatingLabel {\n return new MDCFloatingLabel(root);\n }\n\n /**\n * Styles the label to produce the label shake for errors.\n * @param shouldShake If true, shakes the label by adding a CSS class; otherwise, stops shaking by removing the class.\n */\n shake(shouldShake: boolean) {\n this.foundation_.shake(shouldShake);\n }\n\n /**\n * Styles the label to float/dock.\n * @param shouldFloat If true, floats the label by adding a CSS class; otherwise, docks it by removing the class.\n */\n float(shouldFloat: boolean) {\n this.foundation_.float(shouldFloat);\n }\n\n getWidth(): number {\n return this.foundation_.getWidth();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCFloatingLabelAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n getWidth: () => this.root_.scrollWidth,\n registerInteractionHandler: (evtType, handler) => this.listen(evtType, handler),\n deregisterInteractionHandler: (evtType, handler) => this.unlisten(evtType, handler),\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCFloatingLabelFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-floating-label/component.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport const cssClasses = {\n LABEL_FLOAT_ABOVE: 'mdc-floating-label--float-above',\n LABEL_SHAKE: 'mdc-floating-label--shake',\n ROOT: 'mdc-floating-label',\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-floating-label/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-form-field/index.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCRipple} from '@material/ripple/component';\nimport {MDCFormFieldAdapter} from './adapter';\nimport {MDCFormFieldFoundation} from './foundation';\n\nexport interface MDCFormFieldInput {\n readonly ripple: MDCRipple | undefined;\n}\n\nexport class MDCFormField extends MDCComponent {\n static attachTo(root: HTMLElement) {\n return new MDCFormField(root);\n }\n\n private input_?: MDCFormFieldInput;\n\n set input(input: MDCFormFieldInput | undefined) {\n this.input_ = input;\n }\n\n get input(): MDCFormFieldInput | undefined {\n return this.input_;\n }\n\n private get label_(): Element | null {\n const {LABEL_SELECTOR} = MDCFormFieldFoundation.strings;\n return this.root_.querySelector(LABEL_SELECTOR);\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCFormFieldAdapter = {\n activateInputRipple: () => {\n if (this.input_ && this.input_.ripple) {\n this.input_.ripple.activate();\n }\n },\n deactivateInputRipple: () => {\n if (this.input_ && this.input_.ripple) {\n this.input_.ripple.deactivate();\n }\n },\n deregisterInteractionHandler: (evtType, handler) => {\n if (this.label_) {\n this.label_.removeEventListener(evtType, handler);\n }\n },\n registerInteractionHandler: (evtType, handler) => {\n if (this.label_) {\n this.label_.addEventListener(evtType, handler);\n }\n },\n };\n return new MDCFormFieldFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-form-field/component.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport const cssClasses = {\n ROOT: 'mdc-form-field',\n};\n\nexport const strings = {\n LABEL_SELECTOR: '.mdc-form-field > label',\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-form-field/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-grid-list/index.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCGridListAdapter} from './adapter';\nimport {MDCGridListFoundation} from './foundation';\n\nexport class MDCGridList extends MDCComponent {\n static attachTo(root: Element) {\n return new MDCGridList(root);\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCGridListAdapter = {\n deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler),\n getNumberOfTiles: () => {\n return this.root_.querySelectorAll(MDCGridListFoundation.strings.TILE_SELECTOR).length;\n },\n getOffsetWidth: () => (this.root_ as HTMLElement).offsetWidth,\n getOffsetWidthForTileAtIndex: (index) => {\n const tileEl = this.root_.querySelectorAll(MDCGridListFoundation.strings.TILE_SELECTOR)[index];\n return tileEl.offsetWidth;\n },\n registerResizeHandler: (handler) => window.addEventListener('resize', handler),\n setStyleForTilesElement: (property, value) => {\n const tilesEl = this.root_.querySelector(MDCGridListFoundation.strings.TILES_SELECTOR);\n tilesEl!.style[property] = value;\n },\n };\n return new MDCGridListFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-grid-list/component.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport const strings = {\n TILES_SELECTOR: '.mdc-grid-list__tiles',\n TILE_SELECTOR: '.mdc-grid-tile',\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-grid-list/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-icon-button/index.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCRipple} from '@material/ripple/component';\nimport {MDCIconButtonToggleAdapter} from './adapter';\nimport {MDCIconButtonToggleFoundation} from './foundation';\nimport {MDCIconButtonToggleEventDetail} from './types';\n\nconst {strings} = MDCIconButtonToggleFoundation;\n\nexport class MDCIconButtonToggle extends MDCComponent {\n static attachTo(root: HTMLElement) {\n return new MDCIconButtonToggle(root);\n }\n\n protected root_!: HTMLElement; // assigned in MDCComponent constructor\n\n private readonly ripple_: MDCRipple = this.createRipple_();\n private handleClick_!: SpecificEventListener<'click'>; // assigned in initialSyncWithDOM()\n\n initialSyncWithDOM() {\n this.handleClick_ = () => this.foundation_.handleClick();\n this.listen('click', this.handleClick_);\n }\n\n destroy() {\n this.unlisten('click', this.handleClick_);\n this.ripple_.destroy();\n super.destroy();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCIconButtonToggleAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n hasClass: (className) => this.root_.classList.contains(className),\n notifyChange: (evtData) => this.emit(strings.CHANGE_EVENT, evtData),\n removeClass: (className) => this.root_.classList.remove(className),\n setAttr: (attrName, attrValue) => this.root_.setAttribute(attrName, attrValue),\n };\n return new MDCIconButtonToggleFoundation(adapter);\n }\n\n get ripple(): MDCRipple {\n return this.ripple_;\n }\n\n get on(): boolean {\n return this.foundation_.isOn();\n }\n\n set on(isOn: boolean) {\n this.foundation_.toggle(isOn);\n }\n\n private createRipple_(): MDCRipple {\n const ripple = new MDCRipple(this.root_);\n ripple.unbounded = true;\n return ripple;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-icon-button/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport const cssClasses = {\n ICON_BUTTON_ON: 'mdc-icon-button--on',\n ROOT: 'mdc-icon-button',\n};\n\nexport const strings = {\n ARIA_PRESSED: 'aria-pressed',\n CHANGE_EVENT: 'MDCIconButtonToggle:change',\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-icon-button/constants.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCLineRippleAdapter} from './adapter';\nimport {MDCLineRippleFoundation} from './foundation';\n\nexport type MDCLineRippleFactory = (el: Element, foundation?: MDCLineRippleFoundation) => MDCLineRipple;\n\nexport class MDCLineRipple extends MDCComponent {\n static attachTo(root: Element): MDCLineRipple {\n return new MDCLineRipple(root);\n }\n\n /**\n * Activates the line ripple\n */\n activate() {\n this.foundation_.activate();\n }\n\n /**\n * Deactivates the line ripple\n */\n deactivate() {\n this.foundation_.deactivate();\n }\n\n /**\n * Sets the transform origin given a user's click location.\n * The `rippleCenter` is the x-coordinate of the middle of the ripple.\n */\n setRippleCenter(xCoordinate: number) {\n this.foundation_.setRippleCenter(xCoordinate);\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCLineRippleAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n hasClass: (className) => this.root_.classList.contains(className),\n setStyle: (propertyName, value) => (this.root_ as HTMLElement).style.setProperty(propertyName, value),\n registerEventHandler: (evtType, handler) => this.listen(evtType, handler),\n deregisterEventHandler: (evtType, handler) => this.unlisten(evtType, handler),\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCLineRippleFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-line-ripple/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n LINE_RIPPLE_ACTIVE: 'mdc-line-ripple--active',\n LINE_RIPPLE_DEACTIVATING: 'mdc-line-ripple--deactivating',\n};\n\nexport {cssClasses};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-line-ripple/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-linear-progress/index.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCLinearProgressAdapter} from './adapter';\nimport {MDCLinearProgressFoundation} from './foundation';\n\nexport class MDCLinearProgress extends MDCComponent {\n static attachTo(root: Element) {\n return new MDCLinearProgress(root);\n }\n\n set determinate(value: boolean) {\n this.foundation_.setDeterminate(value);\n }\n\n set progress(value: number) {\n this.foundation_.setProgress(value);\n }\n\n set buffer(value: number) {\n this.foundation_.setBuffer(value);\n }\n\n set reverse(value: boolean) {\n this.foundation_.setReverse(value);\n }\n\n open() {\n this.foundation_.open();\n }\n\n close() {\n this.foundation_.close();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCLinearProgressAdapter = {\n addClass: (className: string) => this.root_.classList.add(className),\n getBuffer: () => this.root_.querySelector(MDCLinearProgressFoundation.strings.BUFFER_SELECTOR),\n getPrimaryBar: () => this.root_.querySelector(MDCLinearProgressFoundation.strings.PRIMARY_BAR_SELECTOR),\n hasClass: (className: string) => this.root_.classList.contains(className),\n removeClass: (className: string) => this.root_.classList.remove(className),\n setStyle: (el: HTMLElement, styleProperty: string, value: string) => el.style.setProperty(styleProperty, value),\n };\n return new MDCLinearProgressFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-linear-progress/component.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport const cssClasses = {\n CLOSED_CLASS: 'mdc-linear-progress--closed',\n INDETERMINATE_CLASS: 'mdc-linear-progress--indeterminate',\n REVERSED_CLASS: 'mdc-linear-progress--reversed',\n};\n\nexport const strings = {\n BUFFER_SELECTOR: '.mdc-linear-progress__buffer',\n PRIMARY_BAR_SELECTOR: '.mdc-linear-progress__primary-bar',\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-linear-progress/constants.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCMenuSurfaceAdapter} from './adapter';\nimport {Corner, cssClasses, strings} from './constants';\nimport {MDCMenuSurfaceFoundation} from './foundation';\nimport {MDCMenuDistance} from './types';\nimport * as util from './util';\n\ntype RegisterFunction = () => void;\n\nexport type MDCMenuSurfaceFactory = (el: Element, foundation?: MDCMenuSurfaceFoundation) => MDCMenuSurface;\n\nexport class MDCMenuSurface extends MDCComponent {\n static attachTo(root: Element): MDCMenuSurface {\n return new MDCMenuSurface(root);\n }\n\n anchorElement!: Element | null; // assigned in initialSyncWithDOM()\n\n protected root_!: HTMLElement; // assigned in MDCComponent constructor\n\n private previousFocus_?: HTMLElement | SVGElement | null;\n private firstFocusableElement_?: HTMLElement | SVGElement;\n private lastFocusableElement_?: HTMLElement | SVGElement;\n\n private handleKeydown_!: SpecificEventListener<'keydown'>; // assigned in initialSyncWithDOM()\n private handleBodyClick_!: SpecificEventListener<'click'>; // assigned in initialSyncWithDOM()\n\n private registerBodyClickListener_!: RegisterFunction; // assigned in initialSyncWithDOM()\n private deregisterBodyClickListener_!: RegisterFunction; // assigned in initialSyncWithDOM()\n\n initialSyncWithDOM() {\n const parentEl = this.root_.parentElement;\n this.anchorElement = parentEl && parentEl.classList.contains(cssClasses.ANCHOR) ? parentEl : null;\n\n if (this.root_.classList.contains(cssClasses.FIXED)) {\n this.setFixedPosition(true);\n }\n\n this.handleKeydown_ = (evt) => this.foundation_.handleKeydown(evt);\n this.handleBodyClick_ = (evt) => this.foundation_.handleBodyClick(evt);\n\n this.registerBodyClickListener_ = () => document.body.addEventListener('click', this.handleBodyClick_);\n this.deregisterBodyClickListener_ = () => document.body.removeEventListener('click', this.handleBodyClick_);\n\n this.listen('keydown', this.handleKeydown_);\n this.listen(strings.OPENED_EVENT, this.registerBodyClickListener_);\n this.listen(strings.CLOSED_EVENT, this.deregisterBodyClickListener_);\n }\n\n destroy() {\n this.unlisten('keydown', this.handleKeydown_);\n this.unlisten(strings.OPENED_EVENT, this.registerBodyClickListener_);\n this.unlisten(strings.CLOSED_EVENT, this.deregisterBodyClickListener_);\n super.destroy();\n }\n\n get open(): boolean {\n return this.foundation_.isOpen();\n }\n\n set open(value: boolean) {\n if (value) {\n const focusableElements = this.root_.querySelectorAll(strings.FOCUSABLE_ELEMENTS);\n this.firstFocusableElement_ = focusableElements[0];\n this.lastFocusableElement_ = focusableElements[focusableElements.length - 1];\n this.foundation_.open();\n } else {\n this.foundation_.close();\n }\n }\n\n set quickOpen(quickOpen: boolean) {\n this.foundation_.setQuickOpen(quickOpen);\n }\n\n /**\n * Removes the menu-surface from it's current location and appends it to the\n * body to overcome any overflow:hidden issues.\n */\n hoistMenuToBody() {\n document.body.appendChild(this.root_);\n this.setIsHoisted(true);\n }\n\n /** Sets the foundation to use page offsets for an positioning when the menu is hoisted to the body. */\n setIsHoisted(isHoisted: boolean) {\n this.foundation_.setIsHoisted(isHoisted);\n }\n\n /** Sets the element that the menu-surface is anchored to. */\n setMenuSurfaceAnchorElement(element: Element) {\n this.anchorElement = element;\n }\n\n /** Sets the menu-surface to position: fixed. */\n setFixedPosition(isFixed: boolean) {\n if (isFixed) {\n this.root_.classList.add(cssClasses.FIXED);\n } else {\n this.root_.classList.remove(cssClasses.FIXED);\n }\n\n this.foundation_.setFixedPosition(isFixed);\n }\n\n /** Sets the absolute x/y position to position based on. Requires the menu to be hoisted. */\n setAbsolutePosition(x: number, y: number) {\n this.foundation_.setAbsolutePosition(x, y);\n this.setIsHoisted(true);\n }\n\n /**\n * @param corner Default anchor corner alignment of top-left surface corner.\n */\n setAnchorCorner(corner: Corner) {\n this.foundation_.setAnchorCorner(corner);\n }\n\n setAnchorMargin(margin: Partial) {\n this.foundation_.setAnchorMargin(margin);\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCMenuSurfaceAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n hasClass: (className) => this.root_.classList.contains(className),\n hasAnchor: () => !!this.anchorElement,\n notifyClose: () => this.emit(MDCMenuSurfaceFoundation.strings.CLOSED_EVENT, {}),\n notifyOpen: () => this.emit(MDCMenuSurfaceFoundation.strings.OPENED_EVENT, {}),\n isElementInContainer: (el) => this.root_.contains(el),\n isRtl: () => getComputedStyle(this.root_).getPropertyValue('direction') === 'rtl',\n setTransformOrigin: (origin) => {\n const propertyName = `${util.getTransformPropertyName(window)}-origin`;\n this.root_.style.setProperty(propertyName, origin);\n },\n\n isFocused: () => document.activeElement === this.root_,\n saveFocus: () => {\n this.previousFocus_ = document.activeElement as HTMLElement | SVGElement | null;\n },\n restoreFocus: () => {\n if (this.root_.contains(document.activeElement)) {\n if (this.previousFocus_ && this.previousFocus_.focus) {\n this.previousFocus_.focus();\n }\n }\n },\n isFirstElementFocused: () =>\n this.firstFocusableElement_ ? this.firstFocusableElement_ === document.activeElement : false,\n isLastElementFocused: () =>\n this.lastFocusableElement_ ? this.lastFocusableElement_ === document.activeElement : false,\n focusFirstElement: () =>\n this.firstFocusableElement_ && this.firstFocusableElement_.focus && this.firstFocusableElement_.focus(),\n focusLastElement: () =>\n this.lastFocusableElement_ && this.lastFocusableElement_.focus && this.lastFocusableElement_.focus(),\n\n getInnerDimensions: () => {\n return {width: this.root_.offsetWidth, height: this.root_.offsetHeight};\n },\n getAnchorDimensions: () => this.anchorElement ? this.anchorElement.getBoundingClientRect() : null,\n getWindowDimensions: () => {\n return {width: window.innerWidth, height: window.innerHeight};\n },\n getBodyDimensions: () => {\n return {width: document.body.clientWidth, height: document.body.clientHeight};\n },\n getWindowScroll: () => {\n return {x: window.pageXOffset, y: window.pageYOffset};\n },\n setPosition: (position) => {\n this.root_.style.left = 'left' in position ? `${position.left}px` : '';\n this.root_.style.right = 'right' in position ? `${position.right}px` : '';\n this.root_.style.top = 'top' in position ? `${position.top}px` : '';\n this.root_.style.bottom = 'bottom' in position ? `${position.bottom}px` : '';\n },\n setMaxHeight: (height) => {\n this.root_.style.maxHeight = height;\n },\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCMenuSurfaceFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu-surface/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {CustomEventListener, SpecificEventListener} from '@material/base/types';\nimport {MDCList, MDCListActionEvent, MDCListFactory, MDCListFoundation} from '@material/list/index';\nimport {MDCMenuSurfaceFoundation} from '@material/menu-surface/foundation';\nimport {Corner, MDCMenuSurface, MDCMenuSurfaceFactory} from '@material/menu-surface/index';\nimport {MDCMenuDistance} from '@material/menu-surface/types';\nimport {MDCMenuAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\nimport {MDCMenuFoundation} from './foundation';\nimport {MDCMenuItemComponentEventDetail} from './types';\n\nexport type MDCMenuFactory = (el: Element, foundation?: MDCMenuFoundation) => MDCMenu;\n\nexport class MDCMenu extends MDCComponent {\n static attachTo(root: Element) {\n return new MDCMenu(root);\n }\n\n private menuSurfaceFactory_!: MDCMenuSurfaceFactory; // assigned in initialize()\n private listFactory_!: MDCListFactory; // assigned in initialize()\n\n private menuSurface_!: MDCMenuSurface; // assigned in initialSyncWithDOM()\n private list_!: MDCList | null; // assigned in initialSyncWithDOM()\n\n private handleKeydown_!: SpecificEventListener<'keydown'>; // assigned in initialSyncWithDOM()\n private handleItemAction_!: CustomEventListener; // assigned in initialSyncWithDOM()\n private afterOpenedCallback_!: EventListener; // assigned in initialSyncWithDOM()\n\n initialize(\n menuSurfaceFactory: MDCMenuSurfaceFactory = (el) => new MDCMenuSurface(el),\n listFactory: MDCListFactory = (el) => new MDCList(el)) {\n this.menuSurfaceFactory_ = menuSurfaceFactory;\n this.listFactory_ = listFactory;\n }\n\n initialSyncWithDOM() {\n this.menuSurface_ = this.menuSurfaceFactory_(this.root_);\n\n const list = this.root_.querySelector(strings.LIST_SELECTOR);\n if (list) {\n this.list_ = this.listFactory_(list);\n this.list_.wrapFocus = true;\n } else {\n this.list_ = null;\n }\n\n this.handleKeydown_ = (evt) => this.foundation_.handleKeydown(evt);\n this.handleItemAction_ = (evt) => this.foundation_.handleItemAction(this.items[evt.detail.index]);\n this.afterOpenedCallback_ = () => this.handleAfterOpened_();\n\n this.menuSurface_.listen(MDCMenuSurfaceFoundation.strings.OPENED_EVENT, this.afterOpenedCallback_);\n this.listen('keydown', this.handleKeydown_);\n this.listen(MDCListFoundation.strings.ACTION_EVENT, this.handleItemAction_);\n }\n\n destroy() {\n if (this.list_) {\n this.list_.destroy();\n }\n\n this.menuSurface_.destroy();\n this.menuSurface_.unlisten(MDCMenuSurfaceFoundation.strings.OPENED_EVENT, this.afterOpenedCallback_);\n this.unlisten('keydown', this.handleKeydown_);\n this.unlisten(MDCListFoundation.strings.ACTION_EVENT, this.handleItemAction_);\n super.destroy();\n }\n\n get open(): boolean {\n return this.menuSurface_.open;\n }\n\n set open(value: boolean) {\n this.menuSurface_.open = value;\n }\n\n get wrapFocus(): boolean {\n return this.list_ ? this.list_.wrapFocus : false;\n }\n\n set wrapFocus(value: boolean) {\n if (this.list_) {\n this.list_.wrapFocus = value;\n }\n }\n\n /**\n * Return the items within the menu. Note that this only contains the set of elements within\n * the items container that are proper list items, and not supplemental / presentational DOM\n * elements.\n */\n get items(): Element[] {\n return this.list_ ? this.list_.listElements : [];\n }\n\n set quickOpen(quickOpen: boolean) {\n this.menuSurface_.quickOpen = quickOpen;\n }\n\n /**\n * @param corner Default anchor corner alignment of top-left menu corner.\n */\n setAnchorCorner(corner: Corner) {\n this.menuSurface_.setAnchorCorner(corner);\n }\n\n setAnchorMargin(margin: Partial) {\n this.menuSurface_.setAnchorMargin(margin);\n }\n\n /**\n * @return The item within the menu at the index specified.\n */\n getOptionByIndex(index: number): Element | null {\n const items = this.items;\n\n if (index < items.length) {\n return this.items[index];\n } else {\n return null;\n }\n }\n\n setFixedPosition(isFixed: boolean) {\n this.menuSurface_.setFixedPosition(isFixed);\n }\n\n hoistMenuToBody() {\n this.menuSurface_.hoistMenuToBody();\n }\n\n setIsHoisted(isHoisted: boolean) {\n this.menuSurface_.setIsHoisted(isHoisted);\n }\n\n setAbsolutePosition(x: number, y: number) {\n this.menuSurface_.setAbsolutePosition(x, y);\n }\n\n /**\n * Sets the element that the menu-surface is anchored to.\n */\n setAnchorElement(element: Element) {\n this.menuSurface_.anchorElement = element;\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCMenuAdapter = {\n addClassToElementAtIndex: (index, className) => {\n const list = this.items;\n list[index].classList.add(className);\n },\n removeClassFromElementAtIndex: (index, className) => {\n const list = this.items;\n list[index].classList.remove(className);\n },\n addAttributeToElementAtIndex: (index, attr, value) => {\n const list = this.items;\n list[index].setAttribute(attr, value);\n },\n removeAttributeFromElementAtIndex: (index, attr) => {\n const list = this.items;\n list[index].removeAttribute(attr);\n },\n elementContainsClass: (element, className) => element.classList.contains(className),\n closeSurface: () => this.open = false,\n getElementIndex: (element) => this.items.indexOf(element),\n getParentElement: (element) => element.parentElement,\n getSelectedElementIndex: (selectionGroup) => {\n const selectedListItem = selectionGroup.querySelector(`.${cssClasses.MENU_SELECTED_LIST_ITEM}`);\n return selectedListItem ? this.items.indexOf(selectedListItem) : -1;\n },\n notifySelected: (evtData) => this.emit(strings.SELECTED_EVENT, {\n index: evtData.index,\n item: this.items[evtData.index],\n }),\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCMenuFoundation(adapter);\n }\n\n private handleAfterOpened_() {\n const list = this.items;\n if (list.length > 0) {\n (list[0] as HTMLElement).focus();\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu/component.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCFloatingLabelFoundation} from '@material/floating-label/foundation';\nimport {MDCNotchedOutlineAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\nimport {MDCNotchedOutlineFoundation} from './foundation';\n\nexport type MDCNotchedOutlineFactory = (el: Element, foundation?: MDCNotchedOutlineFoundation) => MDCNotchedOutline;\n\nexport class MDCNotchedOutline extends MDCComponent {\n static attachTo(root: Element): MDCNotchedOutline {\n return new MDCNotchedOutline(root);\n }\n\n private notchElement_!: HTMLElement; // assigned in initialSyncWithDOM()\n\n initialSyncWithDOM() {\n this.notchElement_ = this.root_.querySelector(strings.NOTCH_ELEMENT_SELECTOR)!;\n\n const label = this.root_.querySelector('.' + MDCFloatingLabelFoundation.cssClasses.ROOT);\n if (label) {\n label.style.transitionDuration = '0s';\n this.root_.classList.add(cssClasses.OUTLINE_UPGRADED);\n requestAnimationFrame(() => {\n label.style.transitionDuration = '';\n });\n } else {\n this.root_.classList.add(cssClasses.NO_LABEL);\n }\n }\n\n /**\n * Updates classes and styles to open the notch to the specified width.\n * @param notchWidth The notch width in the outline.\n */\n notch(notchWidth: number) {\n this.foundation_.notch(notchWidth);\n }\n\n /**\n * Updates classes and styles to close the notch.\n */\n closeNotch() {\n this.foundation_.closeNotch();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCNotchedOutlineAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n setNotchWidthProperty: (width) => this.notchElement_.style.setProperty('width', width + 'px'),\n removeNotchWidthProperty: () => this.notchElement_.style.removeProperty('width'),\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCNotchedOutlineFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-notched-outline/component.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-radio/index.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCRipple, MDCRippleAdapter, MDCRippleCapableSurface, MDCRippleFoundation} from '@material/ripple/index';\nimport {MDCRadioAdapter} from './adapter';\nimport {MDCRadioFoundation} from './foundation';\n\nexport class MDCRadio extends MDCComponent implements MDCRippleCapableSurface {\n static attachTo(root: Element) {\n return new MDCRadio(root);\n }\n\n get checked(): boolean {\n return this.nativeControl_.checked;\n }\n\n set checked(checked: boolean) {\n this.nativeControl_.checked = checked;\n }\n\n get disabled() {\n return this.nativeControl_.disabled;\n }\n\n set disabled(disabled: boolean) {\n this.foundation_.setDisabled(disabled);\n }\n\n get value() {\n return this.nativeControl_.value;\n }\n\n set value(value: string) {\n this.nativeControl_.value = value;\n }\n\n get ripple(): MDCRipple {\n return this.ripple_;\n }\n\n // Public visibility for this property is required by MDCRippleCapableSurface.\n root_!: Element; // assigned in MDCComponent constructor\n\n private readonly ripple_: MDCRipple = this.createRipple_();\n\n destroy() {\n this.ripple_.destroy();\n super.destroy();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCRadioAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n setNativeControlDisabled: (disabled) => this.nativeControl_.disabled = disabled,\n };\n return new MDCRadioFoundation(adapter);\n }\n\n private createRipple_(): MDCRipple {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCRippleAdapter = {\n ...MDCRipple.createAdapter(this),\n registerInteractionHandler: (evtType, handler) => this.nativeControl_.addEventListener(evtType, handler),\n deregisterInteractionHandler: (evtType, handler) => this.nativeControl_.removeEventListener(evtType, handler),\n // Radio buttons technically go \"active\" whenever there is *any* keyboard interaction.\n // This is not the UI we desire.\n isSurfaceActive: () => false,\n isUnbounded: () => true,\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCRipple(this.root_, new MDCRippleFoundation(adapter));\n }\n\n private get nativeControl_(): HTMLInputElement {\n const {NATIVE_CONTROL_SELECTOR} = MDCRadioFoundation.strings;\n const el = this.root_.querySelector(NATIVE_CONTROL_SELECTOR);\n if (!el) {\n throw new Error(`Radio component requires a ${NATIVE_CONTROL_SELECTOR} element`);\n }\n return el;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-radio/component.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst strings = {\n NATIVE_CONTROL_SELECTOR: '.mdc-radio__native-control',\n};\n\nconst cssClasses = {\n DISABLED: 'mdc-radio--disabled',\n ROOT: 'mdc-radio',\n};\n\nexport {strings, cssClasses};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-radio/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\nexport * from './helper-text/index';\nexport * from './icon/index';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/index.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {CustomEventListener, SpecificEventListener} from '@material/base/types';\nimport {MDCFloatingLabel, MDCFloatingLabelFactory} from '@material/floating-label/index';\nimport {MDCLineRipple, MDCLineRippleFactory} from '@material/line-ripple/index';\nimport * as menuSurfaceConstants from '@material/menu-surface/constants';\nimport * as menuConstants from '@material/menu/constants';\nimport {MDCMenu, MDCMenuFactory, MDCMenuItemEvent} from '@material/menu/index';\nimport {MDCNotchedOutline, MDCNotchedOutlineFactory} from '@material/notched-outline/index';\nimport {MDCRipple, MDCRippleAdapter, MDCRippleCapableSurface, MDCRippleFoundation} from '@material/ripple/index';\nimport {MDCSelectAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\nimport {MDCSelectFoundation} from './foundation';\nimport {MDCSelectHelperText, MDCSelectHelperTextFactory} from './helper-text/index';\nimport {MDCSelectIcon, MDCSelectIconFactory} from './icon/index';\nimport {MDCSelectEventDetail, MDCSelectFoundationMap} from './types';\n\ntype PointerEventType = 'mousedown' | 'touchstart';\n\nconst POINTER_EVENTS: PointerEventType[] = ['mousedown', 'touchstart'];\nconst VALIDATION_ATTR_WHITELIST = ['required', 'aria-required'];\n\nexport class MDCSelect extends MDCComponent implements MDCRippleCapableSurface {\n static attachTo(root: Element): MDCSelect {\n return new MDCSelect(root);\n }\n\n // Public visibility for this property is required by MDCRippleCapableSurface.\n root_!: HTMLElement; // assigned in MDCComponent constructor\n\n ripple!: MDCRipple | null;\n\n private menu_!: MDCMenu | null; // assigned in enhancedSelectSetup_()\n private isMenuOpen_!: boolean; // assigned in initialize()\n\n // Exactly one of these fields must be non-null.\n private nativeControl_!: HTMLSelectElement | null; // assigned in initialize()\n private selectedText_!: HTMLElement | null; // assigned in initialize()\n\n private targetElement_!: HTMLElement; // assigned in initialize()\n\n private hiddenInput_!: HTMLInputElement | null; // assigned in enhancedSelectSetup_()\n private menuElement_!: Element | null; // assigned in enhancedSelectSetup_()\n private leadingIcon_?: MDCSelectIcon; // assigned in initialize()\n private helperText_!: MDCSelectHelperText | null; // assigned in initialize()\n private lineRipple_!: MDCLineRipple | null; // assigned in initialize()\n private label_!: MDCFloatingLabel | null; // assigned in initialize()\n private outline_!: MDCNotchedOutline | null; // assigned in initialize()\n private handleChange_!: SpecificEventListener<'change'>; // assigned in initialize()\n private handleFocus_!: SpecificEventListener<'focus'>; // assigned in initialize()\n private handleBlur_!: SpecificEventListener<'blur'>; // assigned in initialize()\n private handleClick_!: SpecificEventListener; // assigned in initialize()\n private handleKeydown_!: SpecificEventListener<'keydown'>; // assigned in initialize()\n private handleMenuOpened_!: EventListener; // assigned in initialize()\n private handleMenuClosed_!: EventListener; // assigned in initialize()\n private handleMenuSelected_!: CustomEventListener; // assigned in initialize()\n private validationObserver_!: MutationObserver; // assigned in initialize()\n\n initialize(\n labelFactory: MDCFloatingLabelFactory = (el) => new MDCFloatingLabel(el),\n lineRippleFactory: MDCLineRippleFactory = (el) => new MDCLineRipple(el),\n outlineFactory: MDCNotchedOutlineFactory = (el) => new MDCNotchedOutline(el),\n menuFactory: MDCMenuFactory = (el) => new MDCMenu(el),\n iconFactory: MDCSelectIconFactory = (el) => new MDCSelectIcon(el),\n helperTextFactory: MDCSelectHelperTextFactory = (el) => new MDCSelectHelperText(el),\n ) {\n this.isMenuOpen_ = false;\n this.nativeControl_ = this.root_.querySelector(strings.NATIVE_CONTROL_SELECTOR);\n this.selectedText_ = this.root_.querySelector(strings.SELECTED_TEXT_SELECTOR);\n\n const targetElement = this.nativeControl_ || this.selectedText_;\n if (!targetElement) {\n throw new Error(\n 'MDCSelect: Missing required element: Exactly one of the following selectors must be present: ' +\n `'${strings.NATIVE_CONTROL_SELECTOR}' or '${strings.SELECTED_TEXT_SELECTOR}'`,\n );\n }\n\n this.targetElement_ = targetElement;\n if (this.targetElement_.hasAttribute(strings.ARIA_CONTROLS)) {\n const helperTextElement = document.getElementById(this.targetElement_.getAttribute(strings.ARIA_CONTROLS)!);\n if (helperTextElement) {\n this.helperText_ = helperTextFactory(helperTextElement);\n }\n }\n\n if (this.selectedText_) {\n this.enhancedSelectSetup_(menuFactory);\n }\n\n const labelElement = this.root_.querySelector(strings.LABEL_SELECTOR);\n this.label_ = labelElement ? labelFactory(labelElement) : null;\n\n const lineRippleElement = this.root_.querySelector(strings.LINE_RIPPLE_SELECTOR);\n this.lineRipple_ = lineRippleElement ? lineRippleFactory(lineRippleElement) : null;\n\n const outlineElement = this.root_.querySelector(strings.OUTLINE_SELECTOR);\n this.outline_ = outlineElement ? outlineFactory(outlineElement) : null;\n\n const leadingIcon = this.root_.querySelector(strings.LEADING_ICON_SELECTOR);\n if (leadingIcon) {\n this.root_.classList.add(cssClasses.WITH_LEADING_ICON);\n this.leadingIcon_ = iconFactory(leadingIcon);\n\n if (this.menuElement_) {\n this.menuElement_.classList.add(cssClasses.WITH_LEADING_ICON);\n }\n }\n\n if (!this.root_.classList.contains(cssClasses.OUTLINED)) {\n this.ripple = this.createRipple_();\n }\n\n // The required state needs to be sync'd before the mutation observer is added.\n this.initialSyncRequiredState_();\n this.addMutationObserverForRequired_();\n }\n\n /**\n * Initializes the select's event listeners and internal state based\n * on the environment's state.\n */\n initialSyncWithDOM() {\n this.handleChange_ = () => this.foundation_.handleChange(/* didChange */ true);\n this.handleFocus_ = () => this.foundation_.handleFocus();\n this.handleBlur_ = () => this.foundation_.handleBlur();\n this.handleClick_ = (evt) => {\n if (this.selectedText_) {\n this.selectedText_.focus();\n }\n this.foundation_.handleClick(this.getNormalizedXCoordinate_(evt));\n };\n this.handleKeydown_ = (evt) => this.foundation_.handleKeydown(evt);\n this.handleMenuSelected_ = (evtData) => this.selectedIndex = evtData.detail.index;\n this.handleMenuOpened_ = () => {\n // Menu should open to the last selected element.\n if (this.selectedIndex >= 0) {\n const selectedItemEl = this.menu_!.items[this.selectedIndex] as HTMLElement;\n selectedItemEl.focus();\n }\n };\n this.handleMenuClosed_ = () => {\n // isMenuOpen_ is used to track the state of the menu opening or closing since the menu.open function\n // will return false if the menu is still closing and this method listens to the closed event which\n // occurs after the menu is already closed.\n this.isMenuOpen_ = false;\n this.selectedText_!.removeAttribute('aria-expanded');\n if (document.activeElement !== this.selectedText_) {\n this.foundation_.handleBlur();\n }\n };\n\n this.targetElement_.addEventListener('change', this.handleChange_);\n this.targetElement_.addEventListener('focus', this.handleFocus_);\n this.targetElement_.addEventListener('blur', this.handleBlur_);\n\n POINTER_EVENTS.forEach((evtType) => {\n this.targetElement_.addEventListener(evtType, this.handleClick_ as EventListener);\n });\n\n if (this.menuElement_) {\n this.selectedText_!.addEventListener('keydown', this.handleKeydown_);\n this.menu_!.listen(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);\n this.menu_!.listen(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);\n this.menu_!.listen(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);\n\n if (this.hiddenInput_ && this.hiddenInput_.value) {\n // If the hidden input already has a value, use it to restore the select's value.\n // This can happen e.g. if the user goes back or (in some browsers) refreshes the page.\n const enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();\n enhancedAdapterMethods.setValue(this.hiddenInput_.value);\n } else if (this.menuElement_.querySelector(strings.SELECTED_ITEM_SELECTOR)) {\n // If an element is selected, the select should set the initial selected text.\n const enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();\n enhancedAdapterMethods.setValue(enhancedAdapterMethods.getValue());\n }\n }\n\n // Initially sync floating label\n this.foundation_.handleChange(/* didChange */ false);\n\n if (this.root_.classList.contains(cssClasses.DISABLED)\n || (this.nativeControl_ && this.nativeControl_.disabled)) {\n this.disabled = true;\n }\n }\n\n destroy() {\n this.targetElement_.removeEventListener('change', this.handleChange_);\n this.targetElement_.removeEventListener('focus', this.handleFocus_);\n this.targetElement_.removeEventListener('blur', this.handleBlur_);\n this.targetElement_.removeEventListener('keydown', this.handleKeydown_);\n POINTER_EVENTS.forEach((evtType) => {\n this.targetElement_.removeEventListener(evtType, this.handleClick_ as EventListener);\n });\n\n if (this.menu_) {\n this.menu_.unlisten(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);\n this.menu_.unlisten(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);\n this.menu_.unlisten(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);\n this.menu_.destroy();\n }\n\n if (this.ripple) {\n this.ripple.destroy();\n }\n if (this.outline_) {\n this.outline_.destroy();\n }\n if (this.leadingIcon_) {\n this.leadingIcon_.destroy();\n }\n if (this.helperText_) {\n this.helperText_.destroy();\n }\n if (this.validationObserver_) {\n this.validationObserver_.disconnect();\n }\n\n super.destroy();\n }\n\n get value(): string {\n return this.foundation_.getValue();\n }\n\n set value(value: string) {\n this.foundation_.setValue(value);\n }\n\n get selectedIndex(): number {\n let selectedIndex = -1;\n if (this.menuElement_ && this.menu_) {\n const selectedEl = this.menuElement_.querySelector(strings.SELECTED_ITEM_SELECTOR)!;\n selectedIndex = this.menu_.items.indexOf(selectedEl);\n } else if (this.nativeControl_) {\n selectedIndex = this.nativeControl_.selectedIndex;\n }\n return selectedIndex;\n }\n\n set selectedIndex(selectedIndex: number) {\n this.foundation_.setSelectedIndex(selectedIndex);\n }\n\n get disabled(): boolean {\n return this.root_.classList.contains(cssClasses.DISABLED) ||\n (this.nativeControl_ ? this.nativeControl_.disabled : false);\n }\n\n set disabled(disabled: boolean) {\n this.foundation_.setDisabled(disabled);\n }\n\n set leadingIconAriaLabel(label: string) {\n this.foundation_.setLeadingIconAriaLabel(label);\n }\n\n /**\n * Sets the text content of the leading icon.\n */\n set leadingIconContent(content: string) {\n this.foundation_.setLeadingIconContent(content);\n }\n\n /**\n * Sets the text content of the helper text.\n */\n set helperTextContent(content: string) {\n this.foundation_.setHelperTextContent(content);\n }\n\n /**\n * Sets the current invalid state of the select.\n */\n set valid(isValid: boolean) {\n this.foundation_.setValid(isValid);\n }\n\n /**\n * Checks if the select is in a valid state.\n */\n get valid(): boolean {\n return this.foundation_.isValid();\n }\n\n /**\n * Sets the control to the required state.\n */\n set required(isRequired: boolean) {\n if (this.nativeControl_) {\n this.nativeControl_.required = isRequired;\n } else {\n if (isRequired) {\n this.selectedText_!.setAttribute('aria-required', isRequired.toString());\n } else {\n this.selectedText_!.removeAttribute('aria-required');\n }\n }\n }\n\n /**\n * Returns whether the select is required.\n */\n get required(): boolean {\n if (this.nativeControl_) {\n return this.nativeControl_.required;\n } else {\n return this.selectedText_!.getAttribute('aria-required') === 'true';\n }\n }\n\n /**\n * Recomputes the outline SVG path for the outline element.\n */\n layout() {\n this.foundation_.layout();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCSelectAdapter = {\n ...(this.nativeControl_ ? this.getNativeSelectAdapterMethods_() : this.getEnhancedSelectAdapterMethods_()),\n ...this.getCommonAdapterMethods_(),\n ...this.getOutlineAdapterMethods_(),\n ...this.getLabelAdapterMethods_(),\n };\n return new MDCSelectFoundation(adapter, this.getFoundationMap_());\n }\n\n /**\n * Handles setup for the enhanced menu.\n */\n private enhancedSelectSetup_(menuFactory: MDCMenuFactory) {\n const isDisabled = this.root_.classList.contains(cssClasses.DISABLED);\n this.selectedText_!.setAttribute('tabindex', isDisabled ? '-1' : '0');\n this.hiddenInput_ = this.root_.querySelector(strings.HIDDEN_INPUT_SELECTOR);\n this.menuElement_ = this.root_.querySelector(strings.MENU_SELECTOR)!;\n this.menu_ = menuFactory(this.menuElement_);\n this.menu_.hoistMenuToBody();\n this.menu_.setAnchorElement(this.root_);\n this.menu_.setAnchorCorner(menuSurfaceConstants.Corner.BOTTOM_START);\n this.menu_.wrapFocus = false;\n }\n\n private createRipple_(): MDCRipple {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCRippleAdapter = {\n ...MDCRipple.createAdapter(this),\n registerInteractionHandler: (evtType, handler) => this.targetElement_.addEventListener(evtType, handler),\n deregisterInteractionHandler: (evtType, handler) => this.targetElement_.removeEventListener(evtType, handler),\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCRipple(this.root_, new MDCRippleFoundation(adapter));\n }\n\n private getNativeSelectAdapterMethods_() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n getValue: () => this.nativeControl_!.value,\n setValue: (value: string) => {\n this.nativeControl_!.value = value;\n },\n openMenu: () => undefined,\n closeMenu: () => undefined,\n isMenuOpen: () => false,\n setSelectedIndex: (index: number) => {\n this.nativeControl_!.selectedIndex = index;\n },\n setDisabled: (isDisabled: boolean) => {\n this.nativeControl_!.disabled = isDisabled;\n },\n setValid: (isValid: boolean) => {\n if (isValid) {\n this.root_.classList.remove(cssClasses.INVALID);\n } else {\n this.root_.classList.add(cssClasses.INVALID);\n }\n },\n checkValidity: () => this.nativeControl_!.checkValidity(),\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private getEnhancedSelectAdapterMethods_() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n getValue: () => {\n const listItem = this.menuElement_!.querySelector(strings.SELECTED_ITEM_SELECTOR);\n if (listItem && listItem.hasAttribute(strings.ENHANCED_VALUE_ATTR)) {\n return listItem.getAttribute(strings.ENHANCED_VALUE_ATTR) || '';\n }\n return '';\n },\n setValue: (value: string) => {\n const element = this.menuElement_!.querySelector(`[${strings.ENHANCED_VALUE_ATTR}=\"${value}\"]`);\n this.setEnhancedSelectedIndex_(element ? this.menu_!.items.indexOf(element) : -1);\n },\n openMenu: () => {\n if (this.menu_ && !this.menu_.open) {\n this.menu_.open = true;\n this.isMenuOpen_ = true;\n this.selectedText_!.setAttribute('aria-expanded', 'true');\n }\n },\n closeMenu: () => {\n if (this.menu_ && this.menu_.open) {\n this.menu_.open = false;\n }\n },\n isMenuOpen: () => Boolean(this.menu_) && this.isMenuOpen_,\n setSelectedIndex: (index: number) => this.setEnhancedSelectedIndex_(index),\n setDisabled: (isDisabled: boolean) => {\n this.selectedText_!.setAttribute('tabindex', isDisabled ? '-1' : '0');\n this.selectedText_!.setAttribute('aria-disabled', isDisabled.toString());\n if (this.hiddenInput_) {\n this.hiddenInput_.disabled = isDisabled;\n }\n },\n checkValidity: () => {\n const classList = this.root_.classList;\n if (classList.contains(cssClasses.REQUIRED) && !classList.contains(cssClasses.DISABLED)) {\n // See notes for required attribute under https://www.w3.org/TR/html52/sec-forms.html#the-select-element\n // TL;DR: Invalid if no index is selected, or if the first index is selected and has an empty value.\n return this.selectedIndex !== -1 && (this.selectedIndex !== 0 || Boolean(this.value));\n } else {\n return true;\n }\n },\n setValid: (isValid: boolean) => {\n this.selectedText_!.setAttribute('aria-invalid', (!isValid).toString());\n if (isValid) {\n this.root_.classList.remove(cssClasses.INVALID);\n } else {\n this.root_.classList.add(cssClasses.INVALID);\n }\n },\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private getCommonAdapterMethods_() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: (className: string) => this.root_.classList.add(className),\n removeClass: (className: string) => this.root_.classList.remove(className),\n hasClass: (className: string) => this.root_.classList.contains(className),\n setRippleCenter: (normalizedX: number) => this.lineRipple_ && this.lineRipple_.setRippleCenter(normalizedX),\n activateBottomLine: () => this.lineRipple_ && this.lineRipple_.activate(),\n deactivateBottomLine: () => this.lineRipple_ && this.lineRipple_.deactivate(),\n notifyChange: (value: string) => {\n const index = this.selectedIndex;\n this.emit(strings.CHANGE_EVENT, {value, index}, true /* shouldBubble */);\n },\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private getOutlineAdapterMethods_() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n hasOutline: () => Boolean(this.outline_),\n notchOutline: (labelWidth: number) => this.outline_ && this.outline_.notch(labelWidth),\n closeOutline: () => this.outline_ && this.outline_.closeNotch(),\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private getLabelAdapterMethods_() {\n return {\n floatLabel: (shouldFloat: boolean) => this.label_ && this.label_.float(shouldFloat),\n getLabelWidth: () => this.label_ ? this.label_.getWidth() : 0,\n };\n }\n\n /**\n * Calculates where the line ripple should start based on the x coordinate within the component.\n */\n private getNormalizedXCoordinate_(evt: MouseEvent | TouchEvent): number {\n const targetClientRect = (evt.target as Element).getBoundingClientRect();\n const xCoordinate = this.isTouchEvent_(evt) ? evt.touches[0].clientX : evt.clientX;\n return xCoordinate - targetClientRect.left;\n }\n\n private isTouchEvent_(evt: MouseEvent | TouchEvent): evt is TouchEvent {\n return Boolean((evt as TouchEvent).touches);\n }\n\n /**\n * Returns a map of all subcomponents to subfoundations.\n */\n private getFoundationMap_(): Partial {\n return {\n helperText: this.helperText_ ? this.helperText_.foundation : undefined,\n leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined,\n };\n }\n\n private setEnhancedSelectedIndex_(index: number) {\n const selectedItem = this.menu_!.items[index];\n this.selectedText_!.textContent = selectedItem ? selectedItem.textContent!.trim() : '';\n const previouslySelected = this.menuElement_!.querySelector(strings.SELECTED_ITEM_SELECTOR);\n\n if (previouslySelected) {\n previouslySelected.classList.remove(cssClasses.SELECTED_ITEM_CLASS);\n previouslySelected.removeAttribute(strings.ARIA_SELECTED_ATTR);\n }\n\n if (selectedItem) {\n selectedItem.classList.add(cssClasses.SELECTED_ITEM_CLASS);\n selectedItem.setAttribute(strings.ARIA_SELECTED_ATTR, 'true');\n }\n\n // Synchronize hidden input's value with data-value attribute of selected item.\n // This code path is also followed when setting value directly, so this covers all cases.\n if (this.hiddenInput_) {\n this.hiddenInput_.value = selectedItem ? selectedItem.getAttribute(strings.ENHANCED_VALUE_ATTR) || '' : '';\n }\n\n this.layout();\n }\n\n private initialSyncRequiredState_() {\n const isRequired =\n (this.targetElement_ as HTMLSelectElement).required\n || this.targetElement_.getAttribute('aria-required') === 'true'\n || this.root_.classList.contains(cssClasses.REQUIRED);\n if (isRequired) {\n if (this.nativeControl_) {\n this.nativeControl_.required = true;\n } else {\n this.selectedText_!.setAttribute('aria-required', 'true');\n }\n this.root_.classList.add(cssClasses.REQUIRED);\n }\n }\n\n private addMutationObserverForRequired_() {\n const observerHandler = (attributesList: string[]) => {\n attributesList.some((attributeName) => {\n if (VALIDATION_ATTR_WHITELIST.indexOf(attributeName) === -1) {\n return false;\n }\n\n if (this.selectedText_) {\n if (this.selectedText_.getAttribute('aria-required') === 'true') {\n this.root_.classList.add(cssClasses.REQUIRED);\n } else {\n this.root_.classList.remove(cssClasses.REQUIRED);\n }\n } else {\n if (this.nativeControl_!.required) {\n this.root_.classList.add(cssClasses.REQUIRED);\n } else {\n this.root_.classList.remove(cssClasses.REQUIRED);\n }\n }\n\n return true;\n });\n };\n\n const getAttributesList = (mutationsList: MutationRecord[]): string[] => {\n return mutationsList\n .map((mutation) => mutation.attributeName)\n .filter((attributeName) => attributeName) as string[];\n };\n const observer = new MutationObserver((mutationsList) => observerHandler(getAttributesList(mutationsList)));\n observer.observe(this.targetElement_, {attributes: true});\n this.validationObserver_ = observer;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCSelectHelperTextAdapter} from './adapter';\nimport {MDCSelectHelperTextFoundation} from './foundation';\n\nexport type MDCSelectHelperTextFactory =\n (el: Element, foundation?: MDCSelectHelperTextFoundation) => MDCSelectHelperText;\n\nexport class MDCSelectHelperText extends MDCComponent {\n static attachTo(root: Element): MDCSelectHelperText {\n return new MDCSelectHelperText(root);\n }\n\n get foundation(): MDCSelectHelperTextFoundation {\n return this.foundation_;\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCSelectHelperTextAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n hasClass: (className) => this.root_.classList.contains(className),\n setAttr: (attr, value) => this.root_.setAttribute(attr, value),\n removeAttr: (attr) => this.root_.removeAttribute(attr),\n setContent: (content) => {\n this.root_.textContent = content;\n },\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCSelectHelperTextFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/helper-text/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst strings = {\n ARIA_HIDDEN: 'aria-hidden',\n ROLE: 'role',\n};\n\nconst cssClasses = {\n HELPER_TEXT_PERSISTENT: 'mdc-select-helper-text--persistent',\n HELPER_TEXT_VALIDATION_MSG: 'mdc-select-helper-text--validation-msg',\n};\n\nexport {strings, cssClasses};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/helper-text/constants.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCSelectIconAdapter} from './adapter';\nimport {MDCSelectIconFoundation} from './foundation';\n\nexport type MDCSelectIconFactory = (el: Element, foundation?: MDCSelectIconFoundation) => MDCSelectIcon;\n\nexport class MDCSelectIcon extends MDCComponent {\n static attachTo(root: Element): MDCSelectIcon {\n return new MDCSelectIcon(root);\n }\n\n get foundation(): MDCSelectIconFoundation {\n return this.foundation_;\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCSelectIconAdapter = {\n getAttr: (attr) => this.root_.getAttribute(attr),\n setAttr: (attr, value) => this.root_.setAttribute(attr, value),\n removeAttr: (attr) => this.root_.removeAttribute(attr),\n setContent: (content) => {\n this.root_.textContent = content;\n },\n registerInteractionHandler: (evtType, handler) => this.listen(evtType, handler),\n deregisterInteractionHandler: (evtType, handler) => this.unlisten(evtType, handler),\n notifyIconAction: () => this.emit(\n MDCSelectIconFoundation.strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */),\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCSelectIconFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/icon/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst strings = {\n ICON_EVENT: 'MDCSelect:icon',\n ICON_ROLE: 'button',\n};\n\nexport {strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/icon/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-slider/index.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCSliderAdapter} from './adapter';\nimport {strings} from './constants';\nimport {MDCSliderFoundation} from './foundation';\n\nexport class MDCSlider extends MDCComponent {\n static attachTo(root: Element) {\n return new MDCSlider(root);\n }\n\n protected root_!: HTMLElement; // assigned in MDCComponent constructor\n\n private thumbContainer_!: HTMLElement; // assigned in initialize()\n private track_!: HTMLElement; // assigned in initialize()\n private pinValueMarker_!: HTMLElement; // assigned in initialize()\n private trackMarkerContainer_!: HTMLElement; // assigned in initialize()\n\n get value(): number {\n return this.foundation_.getValue();\n }\n\n set value(value: number) {\n this.foundation_.setValue(value);\n }\n\n get min(): number {\n return this.foundation_.getMin();\n }\n\n set min(min: number) {\n this.foundation_.setMin(min);\n }\n\n get max(): number {\n return this.foundation_.getMax();\n }\n\n set max(max: number) {\n this.foundation_.setMax(max);\n }\n\n get step(): number {\n return this.foundation_.getStep();\n }\n\n set step(step: number) {\n this.foundation_.setStep(step);\n }\n\n get disabled(): boolean {\n return this.foundation_.isDisabled();\n }\n\n set disabled(disabled: boolean) {\n this.foundation_.setDisabled(disabled);\n }\n\n initialize() {\n this.thumbContainer_ = this.root_.querySelector(strings.THUMB_CONTAINER_SELECTOR)!;\n this.track_ = this.root_.querySelector(strings.TRACK_SELECTOR)!;\n this.pinValueMarker_ = this.root_.querySelector(strings.PIN_VALUE_MARKER_SELECTOR)!;\n this.trackMarkerContainer_ = this.root_.querySelector(strings.TRACK_MARKER_CONTAINER_SELECTOR)!;\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCSliderAdapter = {\n hasClass: (className) => this.root_.classList.contains(className),\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n getAttribute: (name) => this.root_.getAttribute(name),\n setAttribute: (name, value) => this.root_.setAttribute(name, value),\n removeAttribute: (name) => this.root_.removeAttribute(name),\n computeBoundingRect: () => this.root_.getBoundingClientRect(),\n getTabIndex: () => this.root_.tabIndex,\n registerInteractionHandler: (evtType, handler) => this.listen(evtType, handler),\n deregisterInteractionHandler: (evtType, handler) => this.unlisten(evtType, handler),\n registerThumbContainerInteractionHandler: (evtType, handler) => {\n this.thumbContainer_.addEventListener(evtType, handler);\n },\n deregisterThumbContainerInteractionHandler: (evtType, handler) => {\n this.thumbContainer_.removeEventListener(evtType, handler);\n },\n registerBodyInteractionHandler: (evtType, handler) => document.body.addEventListener(evtType, handler),\n deregisterBodyInteractionHandler: (evtType, handler) => document.body.removeEventListener(evtType, handler),\n registerResizeHandler: (handler) => window.addEventListener('resize', handler),\n deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler),\n notifyInput: () => this.emit(strings.INPUT_EVENT, this), // TODO(acdvorak): Create detail interface\n notifyChange: () => this.emit(strings.CHANGE_EVENT, this), // TODO(acdvorak): Create detail interface\n setThumbContainerStyleProperty: (propertyName, value) => {\n this.thumbContainer_.style.setProperty(propertyName, value);\n },\n setTrackStyleProperty: (propertyName, value) => this.track_.style.setProperty(propertyName, value),\n setMarkerValue: (value) => this.pinValueMarker_.innerText = value.toLocaleString(),\n appendTrackMarkers: (numMarkers) => {\n const frag = document.createDocumentFragment();\n for (let i = 0; i < numMarkers; i++) {\n const marker = document.createElement('div');\n marker.classList.add('mdc-slider__track-marker');\n frag.appendChild(marker);\n }\n this.trackMarkerContainer_.appendChild(frag);\n },\n removeTrackMarkers: () => {\n while (this.trackMarkerContainer_.firstChild) {\n this.trackMarkerContainer_.removeChild(this.trackMarkerContainer_.firstChild);\n }\n },\n setLastTrackMarkersStyleProperty: (propertyName, value) => {\n // We remove and append new nodes, thus, the last track marker must be dynamically found.\n const lastTrackMarker = this.root_.querySelector(strings.LAST_TRACK_MARKER_SELECTOR)!;\n lastTrackMarker.style.setProperty(propertyName, value);\n },\n isRTL: () => getComputedStyle(this.root_).direction === 'rtl',\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCSliderFoundation(adapter);\n }\n\n initialSyncWithDOM() {\n const origValueNow = this.parseFloat_(this.root_.getAttribute(strings.ARIA_VALUENOW), this.value);\n const min = this.parseFloat_(this.root_.getAttribute(strings.ARIA_VALUEMIN), this.min);\n const max = this.parseFloat_(this.root_.getAttribute(strings.ARIA_VALUEMAX), this.max);\n\n // min and max need to be set in the right order to avoid throwing an error\n // when the new min is greater than the default max.\n if (min >= this.max) {\n this.max = max;\n this.min = min;\n } else {\n this.min = min;\n this.max = max;\n }\n\n this.step = this.parseFloat_(this.root_.getAttribute(strings.STEP_DATA_ATTR), this.step);\n this.value = origValueNow;\n this.disabled = (\n this.root_.hasAttribute(strings.ARIA_DISABLED) &&\n this.root_.getAttribute(strings.ARIA_DISABLED) !== 'false'\n );\n this.foundation_.setupTrackMarker();\n }\n\n layout() {\n this.foundation_.layout();\n }\n\n stepUp(amount = (this.step || 1)) {\n this.value += amount;\n }\n\n stepDown(amount = (this.step || 1)) {\n this.value -= amount;\n }\n\n private parseFloat_(str: string | null, defaultValue: number) {\n const num = parseFloat(str!); // tslint:disable-line:ban\n const isNumeric = typeof num === 'number' && isFinite(num);\n return isNumeric ? num : defaultValue;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-slider/component.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport * as util from './util';\n\nexport {util};\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-snackbar/index.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {SpecificEventListener} from '@material/base/types';\nimport {ponyfill} from '@material/dom/index';\nimport {MDCSnackbarAdapter} from './adapter';\nimport {strings} from './constants';\nimport {MDCSnackbarFoundation} from './foundation';\nimport {MDCSnackbarAnnouncer, MDCSnackbarAnnouncerFactory, MDCSnackbarCloseEventDetail} from './types';\nimport * as util from './util';\n\nconst {\n SURFACE_SELECTOR, LABEL_SELECTOR, ACTION_SELECTOR, DISMISS_SELECTOR,\n OPENING_EVENT, OPENED_EVENT, CLOSING_EVENT, CLOSED_EVENT,\n} = strings;\n\nexport class MDCSnackbar extends MDCComponent {\n static attachTo(root: Element) {\n return new MDCSnackbar(root);\n }\n\n private announce_!: MDCSnackbarAnnouncer; // assigned in initialize()\n\n private actionEl_!: Element; // assigned in initialSyncWithDOM()\n private labelEl_!: Element; // assigned in initialSyncWithDOM()\n private surfaceEl_!: Element; // assigned in initialSyncWithDOM()\n\n private handleKeyDown_!: SpecificEventListener<'keydown'>; // assigned in initialSyncWithDOM()\n private handleSurfaceClick_!: SpecificEventListener<'click'>; // assigned in initialSyncWithDOM()\n\n initialize(announcerFactory: MDCSnackbarAnnouncerFactory = () => util.announce) {\n this.announce_ = announcerFactory();\n }\n\n initialSyncWithDOM() {\n this.surfaceEl_ = this.root_.querySelector(SURFACE_SELECTOR)!;\n this.labelEl_ = this.root_.querySelector(LABEL_SELECTOR)!;\n this.actionEl_ = this.root_.querySelector(ACTION_SELECTOR)!;\n\n this.handleKeyDown_ = (evt) => this.foundation_.handleKeyDown(evt);\n this.handleSurfaceClick_ = (evt) => {\n const target = evt.target as Element;\n if (this.isActionButton_(target)) {\n this.foundation_.handleActionButtonClick(evt);\n } else if (this.isActionIcon_(target)) {\n this.foundation_.handleActionIconClick(evt);\n }\n };\n\n this.registerKeyDownHandler_(this.handleKeyDown_);\n this.registerSurfaceClickHandler_(this.handleSurfaceClick_);\n }\n\n destroy() {\n super.destroy();\n this.deregisterKeyDownHandler_(this.handleKeyDown_);\n this.deregisterSurfaceClickHandler_(this.handleSurfaceClick_);\n }\n\n open() {\n this.foundation_.open();\n }\n\n /**\n * @param reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the\n * `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom\n * client-specific values may also be used if desired.\n */\n close(reason = '') {\n this.foundation_.close(reason);\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCSnackbarAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n announce: () => this.announce_(this.labelEl_),\n notifyClosed: (reason) => this.emit(CLOSED_EVENT, reason ? {reason} : {}),\n notifyClosing: (reason) => this.emit(CLOSING_EVENT, reason ? {reason} : {}),\n notifyOpened: () => this.emit(OPENED_EVENT, {}),\n notifyOpening: () => this.emit(OPENING_EVENT, {}),\n removeClass: (className) => this.root_.classList.remove(className),\n };\n return new MDCSnackbarFoundation(adapter);\n }\n\n get timeoutMs(): number {\n return this.foundation_.getTimeoutMs();\n }\n\n set timeoutMs(timeoutMs: number) {\n this.foundation_.setTimeoutMs(timeoutMs);\n }\n\n get closeOnEscape(): boolean {\n return this.foundation_.getCloseOnEscape();\n }\n\n set closeOnEscape(closeOnEscape: boolean) {\n this.foundation_.setCloseOnEscape(closeOnEscape);\n }\n\n get isOpen(): boolean {\n return this.foundation_.isOpen();\n }\n\n get labelText(): string {\n // This property only returns null if the node is a document, DOCTYPE, or notation.\n // On Element nodes, it always returns a string.\n return this.labelEl_.textContent!;\n }\n\n set labelText(labelText: string) {\n this.labelEl_.textContent = labelText;\n }\n\n get actionButtonText(): string {\n return this.actionEl_.textContent!;\n }\n\n set actionButtonText(actionButtonText: string) {\n this.actionEl_.textContent = actionButtonText;\n }\n\n private registerKeyDownHandler_(handler: SpecificEventListener<'keydown'>) {\n this.listen('keydown', handler);\n }\n\n private deregisterKeyDownHandler_(handler: SpecificEventListener<'keydown'>) {\n this.unlisten('keydown', handler);\n }\n\n private registerSurfaceClickHandler_(handler: SpecificEventListener<'click'>) {\n this.surfaceEl_.addEventListener('click', handler as EventListener);\n }\n\n private deregisterSurfaceClickHandler_(handler: SpecificEventListener<'click'>) {\n this.surfaceEl_.removeEventListener('click', handler as EventListener);\n }\n\n private isActionButton_(target: Element): boolean {\n return Boolean(ponyfill.closest(target, ACTION_SELECTOR));\n }\n\n private isActionIcon_(target: Element): boolean {\n return Boolean(ponyfill.closest(target, DISMISS_SELECTOR));\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-snackbar/component.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-switch/index.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {EventType} from '@material/base/types';\nimport {ponyfill} from '@material/dom/index';\nimport {MDCRipple, MDCRippleAdapter, MDCRippleCapableSurface, MDCRippleFoundation} from '@material/ripple/index';\nimport {MDCSwitchAdapter} from './adapter';\nimport {MDCSwitchFoundation} from './foundation';\n\nexport class MDCSwitch extends MDCComponent implements MDCRippleCapableSurface {\n static attachTo(root: HTMLElement) {\n return new MDCSwitch(root);\n }\n\n // Public visibility for this property is required by MDCRippleCapableSurface.\n root_!: Element; // assigned in MDCComponent constructor\n\n private readonly ripple_ = this.createRipple_();\n\n // Initialized in `initialSyncWithDOM`.\n private changeHandler_!: EventListener;\n\n destroy() {\n super.destroy();\n this.ripple_.destroy();\n this.nativeControl_.removeEventListener('change', this.changeHandler_);\n }\n\n initialSyncWithDOM() {\n this.changeHandler_ = (...args) => this.foundation_.handleChange(...args);\n this.nativeControl_.addEventListener('change', this.changeHandler_);\n\n // Sometimes the checked state of the input element is saved in the history.\n // The switch styling should match the checked state of the input element.\n // Do an initial sync between the native control and the foundation.\n this.checked = this.checked;\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCSwitchAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n setNativeControlChecked: (checked) => this.nativeControl_.checked = checked,\n setNativeControlDisabled: (disabled) => this.nativeControl_.disabled = disabled,\n };\n return new MDCSwitchFoundation(adapter);\n }\n\n get ripple() {\n return this.ripple_;\n }\n\n get checked() {\n return this.nativeControl_.checked;\n }\n\n set checked(checked) {\n this.foundation_.setChecked(checked);\n }\n\n get disabled() {\n return this.nativeControl_.disabled;\n }\n\n set disabled(disabled) {\n this.foundation_.setDisabled(disabled);\n }\n\n private createRipple_(): MDCRipple {\n const {RIPPLE_SURFACE_SELECTOR} = MDCSwitchFoundation.strings;\n const rippleSurface = this.root_.querySelector(RIPPLE_SURFACE_SELECTOR) as HTMLElement;\n\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCRippleAdapter = {\n ...MDCRipple.createAdapter(this),\n addClass: (className: string) => rippleSurface.classList.add(className),\n computeBoundingRect: () => rippleSurface.getBoundingClientRect(),\n deregisterInteractionHandler: (evtType: EventType, handler: EventListener) => {\n this.nativeControl_.removeEventListener(evtType, handler);\n },\n isSurfaceActive: () => ponyfill.matches(this.nativeControl_, ':active'),\n isUnbounded: () => true,\n registerInteractionHandler: (evtType: EventType, handler: EventListener) => {\n this.nativeControl_.addEventListener(evtType, handler);\n },\n removeClass: (className: string) => rippleSurface.classList.remove(className),\n updateCssVariable: (varName: string, value: string) => {\n rippleSurface.style.setProperty(varName, value);\n },\n };\n return new MDCRipple(this.root_, new MDCRippleFoundation(adapter));\n }\n\n private get nativeControl_() {\n const {NATIVE_CONTROL_SELECTOR} = MDCSwitchFoundation.strings;\n return this.root_.querySelector(NATIVE_CONTROL_SELECTOR) as HTMLInputElement;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-switch/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/** CSS classes used by the switch. */\nconst cssClasses = {\n /** Class used for a switch that is in the \"checked\" (on) position. */\n CHECKED: 'mdc-switch--checked',\n /** Class used for a switch that is disabled. */\n DISABLED: 'mdc-switch--disabled',\n};\n\n/** String constants used by the switch. */\nconst strings = {\n /** A CSS selector used to locate the native HTML control for the switch. */\n NATIVE_CONTROL_SELECTOR: '.mdc-switch__native-control',\n /** A CSS selector used to locate the ripple surface element for the switch. */\n RIPPLE_SURFACE_SELECTOR: '.mdc-switch__thumb-underlay',\n};\n\nexport {cssClasses, strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-switch/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-bar/index.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {CustomEventListener, SpecificEventListener} from '@material/base/types';\nimport {MDCTabScroller, MDCTabScrollerFactory} from '@material/tab-scroller/index';\nimport {MDCTab, MDCTabFactory, MDCTabFoundation, MDCTabInteractionEvent} from '@material/tab/index';\nimport {MDCTabBarAdapter} from './adapter';\nimport {MDCTabBarFoundation} from './foundation';\nimport {MDCTabBarActivatedEventDetail} from './types';\n\nconst {strings} = MDCTabBarFoundation;\n\nlet tabIdCounter = 0;\n\nexport class MDCTabBar extends MDCComponent {\n static attachTo(root: Element): MDCTabBar {\n return new MDCTabBar(root);\n }\n\n private tabList_!: MDCTab[]; // assigned in initialize()\n private tabScroller_!: MDCTabScroller | null; // assigned in initialize()\n private handleTabInteraction_!: CustomEventListener; // assigned in initialSyncWithDOM()\n private handleKeyDown_!: SpecificEventListener<'keydown'>; // assigned in initialSyncWithDOM()\n\n set focusOnActivate(focusOnActivate: boolean) {\n this.tabList_.forEach((tab) => tab.focusOnActivate = focusOnActivate);\n }\n\n set useAutomaticActivation(useAutomaticActivation: boolean) {\n this.foundation_.setUseAutomaticActivation(useAutomaticActivation);\n }\n\n initialize(\n tabFactory: MDCTabFactory = (el) => new MDCTab(el),\n tabScrollerFactory: MDCTabScrollerFactory = (el) => new MDCTabScroller(el),\n ) {\n this.tabList_ = this.instantiateTabs_(tabFactory);\n this.tabScroller_ = this.instantiateTabScroller_(tabScrollerFactory);\n }\n\n initialSyncWithDOM() {\n this.handleTabInteraction_ = (evt) => this.foundation_.handleTabInteraction(evt);\n this.handleKeyDown_ = (evt) => this.foundation_.handleKeyDown(evt);\n\n this.listen(MDCTabFoundation.strings.INTERACTED_EVENT, this.handleTabInteraction_);\n this.listen('keydown', this.handleKeyDown_);\n\n for (let i = 0; i < this.tabList_.length; i++) {\n if (this.tabList_[i].active) {\n this.scrollIntoView(i);\n break;\n }\n }\n }\n\n destroy() {\n super.destroy();\n this.unlisten(MDCTabFoundation.strings.INTERACTED_EVENT, this.handleTabInteraction_);\n this.unlisten('keydown', this.handleKeyDown_);\n this.tabList_.forEach((tab) => tab.destroy());\n\n if (this.tabScroller_) {\n this.tabScroller_.destroy();\n }\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCTabBarAdapter = {\n scrollTo: (scrollX) => this.tabScroller_!.scrollTo(scrollX),\n incrementScroll: (scrollXIncrement) => this.tabScroller_!.incrementScroll(scrollXIncrement),\n getScrollPosition: () => this.tabScroller_!.getScrollPosition(),\n getScrollContentWidth: () => this.tabScroller_!.getScrollContentWidth(),\n getOffsetWidth: () => (this.root_ as HTMLElement).offsetWidth,\n isRTL: () => window.getComputedStyle(this.root_).getPropertyValue('direction') === 'rtl',\n setActiveTab: (index) => this.foundation_.activateTab(index),\n activateTabAtIndex: (index, clientRect) => this.tabList_[index].activate(clientRect),\n deactivateTabAtIndex: (index) => this.tabList_[index].deactivate(),\n focusTabAtIndex: (index) => this.tabList_[index].focus(),\n getTabIndicatorClientRectAtIndex: (index) => this.tabList_[index].computeIndicatorClientRect(),\n getTabDimensionsAtIndex: (index) => this.tabList_[index].computeDimensions(),\n getPreviousActiveTabIndex: () => {\n for (let i = 0; i < this.tabList_.length; i++) {\n if (this.tabList_[i].active) {\n return i;\n }\n }\n return -1;\n },\n getFocusedTabIndex: () => {\n const tabElements = this.getTabElements_();\n const activeElement = document.activeElement!;\n return tabElements.indexOf(activeElement);\n },\n getIndexOfTabById: (id) => {\n for (let i = 0; i < this.tabList_.length; i++) {\n if (this.tabList_[i].id === id) {\n return i;\n }\n }\n return -1;\n },\n getTabListLength: () => this.tabList_.length,\n notifyTabActivated: (index) =>\n this.emit(strings.TAB_ACTIVATED_EVENT, {index}, true),\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCTabBarFoundation(adapter);\n }\n\n /**\n * Activates the tab at the given index\n * @param index The index of the tab\n */\n activateTab(index: number) {\n this.foundation_.activateTab(index);\n }\n\n /**\n * Scrolls the tab at the given index into view\n * @param index THe index of the tab\n */\n scrollIntoView(index: number) {\n this.foundation_.scrollIntoView(index);\n }\n\n /**\n * Returns all the tab elements in a nice clean array\n */\n private getTabElements_(): Element[] {\n return [].slice.call(this.root_.querySelectorAll(strings.TAB_SELECTOR));\n }\n\n /**\n * Instantiates tab components on all child tab elements\n */\n private instantiateTabs_(tabFactory: MDCTabFactory) {\n return this.getTabElements_().map((el) => {\n el.id = el.id || `mdc-tab-${++tabIdCounter}`;\n return tabFactory(el);\n });\n }\n\n /**\n * Instantiates tab scroller component on the child tab scroller element\n */\n private instantiateTabScroller_(tabScrollerFactory: MDCTabScrollerFactory): MDCTabScroller | null {\n const tabScrollerElement = this.root_.querySelector(strings.TAB_SCROLLER_SELECTOR);\n if (tabScrollerElement) {\n return tabScrollerFactory(tabScrollerElement);\n }\n return null;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-bar/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {SpecificEventListener} from '@material/base/types';\nimport {ponyfill} from '@material/dom/index';\nimport {MDCTabScrollerAdapter} from './adapter';\nimport {MDCTabScrollerFoundation} from './foundation';\nimport * as util from './util';\n\ntype InteractionEventType = 'wheel' | 'touchstart' | 'pointerdown' | 'mousedown' | 'keydown';\n\nexport type MDCTabScrollerFactory = (el: Element, foundation?: MDCTabScrollerFoundation) => MDCTabScroller;\n\nexport class MDCTabScroller extends MDCComponent {\n static attachTo(root: Element): MDCTabScroller {\n return new MDCTabScroller(root);\n }\n\n private content_!: HTMLElement; // assigned in initialize()\n private area_!: HTMLElement; // assigned in initialize()\n private handleInteraction_!: SpecificEventListener; // assigned in initialSyncWithDOM()\n private handleTransitionEnd_!: SpecificEventListener<'transitionend'>; // assigned in initialSyncWithDOM()\n\n initialize() {\n this.area_ = this.root_.querySelector(MDCTabScrollerFoundation.strings.AREA_SELECTOR)!;\n this.content_ = this.root_.querySelector(MDCTabScrollerFoundation.strings.CONTENT_SELECTOR)!;\n }\n\n initialSyncWithDOM() {\n this.handleInteraction_ = () => this.foundation_.handleInteraction();\n this.handleTransitionEnd_ = (evt) => this.foundation_.handleTransitionEnd(evt);\n\n this.area_.addEventListener('wheel', this.handleInteraction_);\n this.area_.addEventListener('touchstart', this.handleInteraction_);\n this.area_.addEventListener('pointerdown', this.handleInteraction_);\n this.area_.addEventListener('mousedown', this.handleInteraction_);\n this.area_.addEventListener('keydown', this.handleInteraction_);\n this.content_.addEventListener('transitionend', this.handleTransitionEnd_);\n }\n\n destroy() {\n super.destroy();\n\n this.area_.removeEventListener('wheel', this.handleInteraction_);\n this.area_.removeEventListener('touchstart', this.handleInteraction_);\n this.area_.removeEventListener('pointerdown', this.handleInteraction_);\n this.area_.removeEventListener('mousedown', this.handleInteraction_);\n this.area_.removeEventListener('keydown', this.handleInteraction_);\n this.content_.removeEventListener('transitionend', this.handleTransitionEnd_);\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCTabScrollerAdapter = {\n eventTargetMatchesSelector: (evtTarget, selector) => ponyfill.matches(evtTarget as Element, selector),\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n addScrollAreaClass: (className) => this.area_.classList.add(className),\n setScrollAreaStyleProperty: (prop, value) => this.area_.style.setProperty(prop, value),\n setScrollContentStyleProperty: (prop, value) => this.content_.style.setProperty(prop, value),\n getScrollContentStyleValue: (propName) => window.getComputedStyle(this.content_).getPropertyValue(propName),\n setScrollAreaScrollLeft: (scrollX) => this.area_.scrollLeft = scrollX,\n getScrollAreaScrollLeft: () => this.area_.scrollLeft,\n getScrollContentOffsetWidth: () => this.content_.offsetWidth,\n getScrollAreaOffsetWidth: () => this.area_.offsetWidth,\n computeScrollAreaClientRect: () => this.area_.getBoundingClientRect(),\n computeScrollContentClientRect: () => this.content_.getBoundingClientRect(),\n computeHorizontalScrollbarHeight: () => util.computeHorizontalScrollbarHeight(document),\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCTabScrollerFoundation(adapter);\n }\n\n /**\n * Returns the current visual scroll position\n */\n getScrollPosition(): number {\n return this.foundation_.getScrollPosition();\n }\n\n /**\n * Returns the width of the scroll content\n */\n getScrollContentWidth(): number {\n return this.content_.offsetWidth;\n }\n\n /**\n * Increments the scroll value by the given amount\n * @param scrollXIncrement The pixel value by which to increment the scroll value\n */\n incrementScroll(scrollXIncrement: number) {\n this.foundation_.incrementScroll(scrollXIncrement);\n }\n\n /**\n * Scrolls to the given pixel position\n * @param scrollX The pixel value to scroll to\n */\n scrollTo(scrollX: number) {\n this.foundation_.scrollTo(scrollX);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCTabScrollerRTL} from './rtl-scroller';\nimport {MDCTabScrollerAnimation, MDCTabScrollerHorizontalEdges} from './types';\n\nexport class MDCTabScrollerRTLDefault extends MDCTabScrollerRTL {\n getScrollPositionRTL(): number {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n const {right} = this.calculateScrollEdges_();\n // Scroll values on most browsers are ints instead of floats so we round\n return Math.round(right - currentScrollLeft);\n }\n\n scrollToRTL(scrollX: number): MDCTabScrollerAnimation {\n const edges = this.calculateScrollEdges_();\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n const clampedScrollLeft = this.clampScrollValue_(edges.right - scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft,\n };\n }\n\n incrementScrollRTL(scrollX: number): MDCTabScrollerAnimation {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n const clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft,\n };\n }\n\n getAnimatingScrollPosition(scrollX: number): number {\n return scrollX;\n }\n\n private calculateScrollEdges_(): MDCTabScrollerHorizontalEdges {\n const contentWidth = this.adapter_.getScrollContentOffsetWidth();\n const rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return {\n left: 0,\n right: contentWidth - rootWidth,\n };\n }\n\n private clampScrollValue_(scrollX: number): number {\n const edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.left, scrollX), edges.right);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTabScrollerRTLDefault;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/rtl-default-scroller.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCTabScrollerRTL} from './rtl-scroller';\nimport {MDCTabScrollerAnimation, MDCTabScrollerHorizontalEdges} from './types';\n\nexport class MDCTabScrollerRTLNegative extends MDCTabScrollerRTL {\n getScrollPositionRTL(translateX: number): number {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n return Math.round(translateX - currentScrollLeft);\n }\n\n scrollToRTL(scrollX: number): MDCTabScrollerAnimation {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n const clampedScrollLeft = this.clampScrollValue_(-scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft,\n };\n }\n\n incrementScrollRTL(scrollX: number): MDCTabScrollerAnimation {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n const clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft,\n };\n }\n\n getAnimatingScrollPosition(scrollX: number, translateX: number): number {\n return scrollX - translateX;\n }\n\n private calculateScrollEdges_(): MDCTabScrollerHorizontalEdges {\n const contentWidth = this.adapter_.getScrollContentOffsetWidth();\n const rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return {\n left: rootWidth - contentWidth,\n right: 0,\n };\n }\n\n private clampScrollValue_(scrollX: number): number {\n const edges = this.calculateScrollEdges_();\n return Math.max(Math.min(edges.right, scrollX), edges.left);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTabScrollerRTLNegative;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/rtl-negative-scroller.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCTabScrollerRTL} from './rtl-scroller';\nimport {MDCTabScrollerAnimation, MDCTabScrollerHorizontalEdges} from './types';\n\nexport class MDCTabScrollerRTLReverse extends MDCTabScrollerRTL {\n getScrollPositionRTL(translateX: number): number {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n // Scroll values on most browsers are ints instead of floats so we round\n return Math.round(currentScrollLeft - translateX);\n }\n\n scrollToRTL(scrollX: number): MDCTabScrollerAnimation {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n const clampedScrollLeft = this.clampScrollValue_(scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: currentScrollLeft - clampedScrollLeft,\n };\n }\n\n incrementScrollRTL(scrollX: number): MDCTabScrollerAnimation {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n const clampedScrollLeft = this.clampScrollValue_(currentScrollLeft + scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: currentScrollLeft - clampedScrollLeft,\n };\n }\n\n getAnimatingScrollPosition(scrollX: number, translateX: number): number {\n return scrollX + translateX;\n }\n\n private calculateScrollEdges_(): MDCTabScrollerHorizontalEdges {\n const contentWidth = this.adapter_.getScrollContentOffsetWidth();\n const rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return {\n left: contentWidth - rootWidth,\n right: 0,\n };\n }\n\n private clampScrollValue_(scrollX: number): number {\n const edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.right, scrollX), edges.left);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTabScrollerRTLReverse;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/rtl-reverse-scroller.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCRipple, MDCRippleCapableSurface, MDCRippleFactory, MDCRippleFoundation} from '@material/ripple/index';\nimport {MDCTabIndicator, MDCTabIndicatorFactory} from '@material/tab-indicator/index';\nimport {MDCTabAdapter} from './adapter';\nimport {MDCTabFoundation} from './foundation';\nimport {MDCTabDimensions, MDCTabInteractionEventDetail} from './types';\n\nexport type MDCTabFactory = (el: Element, foundation?: MDCTabFoundation) => MDCTab;\n\nexport class MDCTab extends MDCComponent implements MDCRippleCapableSurface {\n static attachTo(root: Element): MDCTab {\n return new MDCTab(root);\n }\n\n id!: string; // assigned in initialize();\n\n // Public visibility for this property is required by MDCRippleCapableSurface.\n root_!: HTMLElement; // assigned in MDCComponent constructor\n\n private ripple_!: MDCRipple; // assigned in initialize();\n private tabIndicator_!: MDCTabIndicator; // assigned in initialize();\n private content_!: HTMLElement; // assigned in initialize();\n private handleClick_!: SpecificEventListener<'click'>; // assigned in initialize();\n\n initialize(\n rippleFactory: MDCRippleFactory = (el, foundation) => new MDCRipple(el, foundation),\n tabIndicatorFactory: MDCTabIndicatorFactory = (el) => new MDCTabIndicator(el),\n ) {\n this.id = this.root_.id;\n const rippleSurface = this.root_.querySelector(MDCTabFoundation.strings.RIPPLE_SELECTOR)!;\n const rippleAdapter = {\n ...MDCRipple.createAdapter(this),\n addClass: (className: string) => rippleSurface.classList.add(className),\n removeClass: (className: string) => rippleSurface.classList.remove(className),\n updateCssVariable: (varName: string, value: string) => rippleSurface.style.setProperty(varName, value),\n };\n const rippleFoundation = new MDCRippleFoundation(rippleAdapter);\n this.ripple_ = rippleFactory(this.root_, rippleFoundation);\n\n const tabIndicatorElement = this.root_.querySelector(MDCTabFoundation.strings.TAB_INDICATOR_SELECTOR)!;\n this.tabIndicator_ = tabIndicatorFactory(tabIndicatorElement);\n this.content_ = this.root_.querySelector(MDCTabFoundation.strings.CONTENT_SELECTOR)!;\n }\n\n initialSyncWithDOM() {\n this.handleClick_ = () => this.foundation_.handleClick();\n this.listen('click', this.handleClick_);\n }\n\n destroy() {\n this.unlisten('click', this.handleClick_);\n this.ripple_.destroy();\n super.destroy();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCTabAdapter = {\n setAttr: (attr, value) => this.root_.setAttribute(attr, value),\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n hasClass: (className) => this.root_.classList.contains(className),\n activateIndicator: (previousIndicatorClientRect) => this.tabIndicator_.activate(previousIndicatorClientRect),\n deactivateIndicator: () => this.tabIndicator_.deactivate(),\n notifyInteracted: () => this.emit(\n MDCTabFoundation.strings.INTERACTED_EVENT, {tabId: this.id}, true /* bubble */),\n getOffsetLeft: () => this.root_.offsetLeft,\n getOffsetWidth: () => this.root_.offsetWidth,\n getContentOffsetLeft: () => this.content_.offsetLeft,\n getContentOffsetWidth: () => this.content_.offsetWidth,\n focus: () => this.root_.focus(),\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCTabFoundation(adapter);\n }\n\n /**\n * Getter for the active state of the tab\n */\n get active(): boolean {\n return this.foundation_.isActive();\n }\n\n set focusOnActivate(focusOnActivate: boolean) {\n this.foundation_.setFocusOnActivate(focusOnActivate);\n }\n\n /**\n * Activates the tab\n */\n activate(computeIndicatorClientRect?: ClientRect) {\n this.foundation_.activate(computeIndicatorClientRect);\n }\n\n /**\n * Deactivates the tab\n */\n deactivate() {\n this.foundation_.deactivate();\n }\n\n /**\n * Returns the indicator's client rect\n */\n computeIndicatorClientRect(): ClientRect {\n return this.tabIndicator_.computeContentClientRect();\n }\n\n computeDimensions(): MDCTabDimensions {\n return this.foundation_.computeDimensions();\n }\n\n /**\n * Focuses the tab\n */\n focus() {\n this.root_.focus();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\n\nimport {MDCTabIndicatorAdapter} from './adapter';\nimport {MDCFadingTabIndicatorFoundation} from './fading-foundation';\nimport {MDCTabIndicatorFoundation} from './foundation';\nimport {MDCSlidingTabIndicatorFoundation} from './sliding-foundation';\n\nexport type MDCTabIndicatorFactory = (el: Element, foundation?: MDCTabIndicatorFoundation) => MDCTabIndicator;\n\nexport class MDCTabIndicator extends MDCComponent {\n static attachTo(root: Element): MDCTabIndicator {\n return new MDCTabIndicator(root);\n }\n\n private content_!: HTMLElement; // assigned in initialize()\n\n initialize() {\n this.content_ = this.root_.querySelector(MDCTabIndicatorFoundation.strings.CONTENT_SELECTOR)!;\n }\n\n computeContentClientRect(): ClientRect {\n return this.foundation_.computeContentClientRect();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCTabIndicatorAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n computeContentClientRect: () => this.content_.getBoundingClientRect(),\n setContentStyleProperty: (prop, value) => this.content_.style.setProperty(prop, value),\n };\n // tslint:enable:object-literal-sort-keys\n\n if (this.root_.classList.contains(MDCTabIndicatorFoundation.cssClasses.FADE)) {\n return new MDCFadingTabIndicatorFoundation(adapter);\n }\n\n // Default to the sliding indicator\n return new MDCSlidingTabIndicatorFoundation(adapter);\n }\n\n activate(previousIndicatorClientRect?: ClientRect) {\n this.foundation_.activate(previousIndicatorClientRect);\n }\n\n deactivate() {\n this.foundation_.deactivate();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n ACTIVE: 'mdc-tab-indicator--active',\n FADE: 'mdc-tab-indicator--fade',\n NO_TRANSITION: 'mdc-tab-indicator--no-transition',\n};\n\nconst strings = {\n CONTENT_SELECTOR: '.mdc-tab-indicator__content',\n};\n\nexport {\n cssClasses,\n strings,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/constants.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n ACTIVE: 'mdc-tab--active',\n};\n\nconst strings = {\n ARIA_SELECTED: 'aria-selected',\n CONTENT_SELECTOR: '.mdc-tab__content',\n INTERACTED_EVENT: 'MDCTab:interacted',\n RIPPLE_SELECTOR: '.mdc-tab__ripple',\n TABINDEX: 'tabIndex',\n TAB_INDICATOR_SELECTOR: '.mdc-tab-indicator',\n};\n\nexport {\n cssClasses,\n strings,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab/constants.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst strings = {\n ARROW_LEFT_KEY: 'ArrowLeft',\n ARROW_RIGHT_KEY: 'ArrowRight',\n END_KEY: 'End',\n ENTER_KEY: 'Enter',\n HOME_KEY: 'Home',\n SPACE_KEY: 'Space',\n TAB_ACTIVATED_EVENT: 'MDCTabBar:activated',\n TAB_SCROLLER_SELECTOR: '.mdc-tab-scroller',\n TAB_SELECTOR: '.mdc-tab',\n};\n\nconst numbers = {\n ARROW_LEFT_KEYCODE: 37,\n ARROW_RIGHT_KEYCODE: 39,\n END_KEYCODE: 35,\n ENTER_KEYCODE: 13,\n EXTRA_SCROLL_AMOUNT: 20,\n HOME_KEYCODE: 36,\n SPACE_KEYCODE: 32,\n};\n\nexport {numbers, strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-bar/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\nexport * from './character-counter/index';\nexport * from './helper-text/index';\nexport * from './icon/index';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/index.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport * as ponyfill from '@material/dom/ponyfill';\nimport {MDCFloatingLabel, MDCFloatingLabelFactory} from '@material/floating-label/index';\nimport {MDCLineRipple, MDCLineRippleFactory} from '@material/line-ripple/index';\nimport {MDCNotchedOutline, MDCNotchedOutlineFactory} from '@material/notched-outline/index';\nimport {MDCRippleAdapter} from '@material/ripple/adapter';\nimport {MDCRipple, MDCRippleFactory} from '@material/ripple/component';\nimport {MDCRippleFoundation} from '@material/ripple/foundation';\nimport {MDCRippleCapableSurface} from '@material/ripple/types';\nimport {\n MDCTextFieldAdapter,\n MDCTextFieldInputAdapter,\n MDCTextFieldLabelAdapter,\n MDCTextFieldLineRippleAdapter,\n MDCTextFieldOutlineAdapter,\n MDCTextFieldRootAdapter,\n} from './adapter';\nimport {\n MDCTextFieldCharacterCounter,\n MDCTextFieldCharacterCounterFactory,\n MDCTextFieldCharacterCounterFoundation,\n} from './character-counter/index';\nimport {cssClasses, strings} from './constants';\nimport {MDCTextFieldFoundation} from './foundation';\nimport {\n MDCTextFieldHelperText,\n MDCTextFieldHelperTextFactory,\n MDCTextFieldHelperTextFoundation,\n} from './helper-text/index';\nimport {MDCTextFieldIcon, MDCTextFieldIconFactory} from './icon/index';\nimport {MDCTextFieldFoundationMap} from './types';\n\nexport class MDCTextField extends MDCComponent implements MDCRippleCapableSurface {\n static attachTo(root: Element): MDCTextField {\n return new MDCTextField(root);\n }\n\n // Public visibility for this property is required by MDCRippleCapableSurface.\n root_!: HTMLElement; // assigned in MDCComponent constructor\n\n ripple!: MDCRipple | null; // assigned in initialize()\n\n // The only required sub-element.\n private input_!: HTMLInputElement; // assigned in initialize()\n\n // Optional sub-elements.\n private characterCounter_!: MDCTextFieldCharacterCounter | null; // assigned in initialize()\n private helperText_!: MDCTextFieldHelperText | null; // assigned in initialize()\n private label_!: MDCFloatingLabel | null; // assigned in initialize()\n private leadingIcon_!: MDCTextFieldIcon | null; // assigned in initialize()\n private lineRipple_!: MDCLineRipple | null; // assigned in initialize()\n private outline_!: MDCNotchedOutline | null; // assigned in initialize()\n private trailingIcon_!: MDCTextFieldIcon | null; // assigned in initialize()\n\n initialize(\n rippleFactory: MDCRippleFactory = (el, foundation) => new MDCRipple(el, foundation),\n lineRippleFactory: MDCLineRippleFactory = (el) => new MDCLineRipple(el),\n helperTextFactory: MDCTextFieldHelperTextFactory = (el) => new MDCTextFieldHelperText(el),\n characterCounterFactory: MDCTextFieldCharacterCounterFactory = (el) => new MDCTextFieldCharacterCounter(el),\n iconFactory: MDCTextFieldIconFactory = (el) => new MDCTextFieldIcon(el),\n labelFactory: MDCFloatingLabelFactory = (el) => new MDCFloatingLabel(el),\n outlineFactory: MDCNotchedOutlineFactory = (el) => new MDCNotchedOutline(el),\n ) {\n this.input_ = this.root_.querySelector(strings.INPUT_SELECTOR)!;\n\n const labelElement = this.root_.querySelector(strings.LABEL_SELECTOR);\n this.label_ = labelElement ? labelFactory(labelElement) : null;\n\n const lineRippleElement = this.root_.querySelector(strings.LINE_RIPPLE_SELECTOR);\n this.lineRipple_ = lineRippleElement ? lineRippleFactory(lineRippleElement) : null;\n\n const outlineElement = this.root_.querySelector(strings.OUTLINE_SELECTOR);\n this.outline_ = outlineElement ? outlineFactory(outlineElement) : null;\n\n // Helper text\n const helperTextStrings = MDCTextFieldHelperTextFoundation.strings;\n const nextElementSibling = this.root_.nextElementSibling;\n const hasHelperLine = (nextElementSibling && nextElementSibling.classList.contains(cssClasses.HELPER_LINE));\n const helperTextEl =\n hasHelperLine && nextElementSibling && nextElementSibling.querySelector(helperTextStrings.ROOT_SELECTOR);\n this.helperText_ = helperTextEl ? helperTextFactory(helperTextEl) : null;\n\n // Character counter\n const characterCounterStrings = MDCTextFieldCharacterCounterFoundation.strings;\n let characterCounterEl = this.root_.querySelector(characterCounterStrings.ROOT_SELECTOR);\n // If character counter is not found in root element search in sibling element.\n if (!characterCounterEl && hasHelperLine && nextElementSibling) {\n characterCounterEl = nextElementSibling.querySelector(characterCounterStrings.ROOT_SELECTOR);\n }\n this.characterCounter_ = characterCounterEl ? characterCounterFactory(characterCounterEl) : null;\n\n this.leadingIcon_ = null;\n this.trailingIcon_ = null;\n const iconElements = this.root_.querySelectorAll(strings.ICON_SELECTOR);\n if (iconElements.length > 0) {\n if (iconElements.length > 1) { // Has both icons.\n this.leadingIcon_ = iconFactory(iconElements[0]);\n this.trailingIcon_ = iconFactory(iconElements[1]);\n } else {\n if (this.root_.classList.contains(cssClasses.WITH_LEADING_ICON)) {\n this.leadingIcon_ = iconFactory(iconElements[0]);\n } else {\n this.trailingIcon_ = iconFactory(iconElements[0]);\n }\n }\n }\n\n this.ripple = this.createRipple_(rippleFactory);\n }\n\n destroy() {\n if (this.ripple) {\n this.ripple.destroy();\n }\n if (this.lineRipple_) {\n this.lineRipple_.destroy();\n }\n if (this.helperText_) {\n this.helperText_.destroy();\n }\n if (this.characterCounter_) {\n this.characterCounter_.destroy();\n }\n if (this.leadingIcon_) {\n this.leadingIcon_.destroy();\n }\n if (this.trailingIcon_) {\n this.trailingIcon_.destroy();\n }\n if (this.label_) {\n this.label_.destroy();\n }\n if (this.outline_) {\n this.outline_.destroy();\n }\n super.destroy();\n }\n\n /**\n * Initializes the Text Field's internal state based on the environment's\n * state.\n */\n initialSyncWithDOM() {\n this.disabled = this.input_.disabled;\n }\n\n get value(): string {\n return this.foundation_.getValue();\n }\n\n /**\n * @param value The value to set on the input.\n */\n set value(value: string) {\n this.foundation_.setValue(value);\n }\n\n get disabled(): boolean {\n return this.foundation_.isDisabled();\n }\n\n /**\n * @param disabled Sets the Text Field disabled or enabled.\n */\n set disabled(disabled: boolean) {\n this.foundation_.setDisabled(disabled);\n }\n\n get valid(): boolean {\n return this.foundation_.isValid();\n }\n\n /**\n * @param valid Sets the Text Field valid or invalid.\n */\n set valid(valid: boolean) {\n this.foundation_.setValid(valid);\n }\n\n get required(): boolean {\n return this.input_.required;\n }\n\n /**\n * @param required Sets the Text Field to required.\n */\n set required(required: boolean) {\n this.input_.required = required;\n }\n\n get pattern(): string {\n return this.input_.pattern;\n }\n\n /**\n * @param pattern Sets the input element's validation pattern.\n */\n set pattern(pattern: string) {\n this.input_.pattern = pattern;\n }\n\n get minLength(): number {\n return this.input_.minLength;\n }\n\n /**\n * @param minLength Sets the input element's minLength.\n */\n set minLength(minLength: number) {\n this.input_.minLength = minLength;\n }\n\n get maxLength(): number {\n return this.input_.maxLength;\n }\n\n /**\n * @param maxLength Sets the input element's maxLength.\n */\n set maxLength(maxLength: number) {\n // Chrome throws exception if maxLength is set to a value less than zero\n if (maxLength < 0) {\n this.input_.removeAttribute('maxLength');\n } else {\n this.input_.maxLength = maxLength;\n }\n }\n\n get min(): string {\n return this.input_.min;\n }\n\n /**\n * @param min Sets the input element's min.\n */\n set min(min: string) {\n this.input_.min = min;\n }\n\n get max(): string {\n return this.input_.max;\n }\n\n /**\n * @param max Sets the input element's max.\n */\n set max(max: string) {\n this.input_.max = max;\n }\n\n get step(): string {\n return this.input_.step;\n }\n\n /**\n * @param step Sets the input element's step.\n */\n set step(step: string) {\n this.input_.step = step;\n }\n\n /**\n * Sets the helper text element content.\n */\n set helperTextContent(content: string) {\n this.foundation_.setHelperTextContent(content);\n }\n\n /**\n * Sets the aria label of the leading icon.\n */\n set leadingIconAriaLabel(label: string) {\n this.foundation_.setLeadingIconAriaLabel(label);\n }\n\n /**\n * Sets the text content of the leading icon.\n */\n set leadingIconContent(content: string) {\n this.foundation_.setLeadingIconContent(content);\n }\n\n /**\n * Sets the aria label of the trailing icon.\n */\n set trailingIconAriaLabel(label: string) {\n this.foundation_.setTrailingIconAriaLabel(label);\n }\n\n /**\n * Sets the text content of the trailing icon.\n */\n set trailingIconContent(content: string) {\n this.foundation_.setTrailingIconContent(content);\n }\n\n /**\n * Enables or disables the use of native validation. Use this for custom validation.\n * @param useNativeValidation Set this to false to ignore native input validation.\n */\n set useNativeValidation(useNativeValidation: boolean) {\n this.foundation_.setUseNativeValidation(useNativeValidation);\n }\n\n /**\n * Focuses the input element.\n */\n focus() {\n this.input_.focus();\n }\n\n /**\n * Recomputes the outline SVG path for the outline element.\n */\n layout() {\n const openNotch = this.foundation_.shouldFloat;\n this.foundation_.notchOutline(openNotch);\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCTextFieldAdapter = {\n ...this.getRootAdapterMethods_(),\n ...this.getInputAdapterMethods_(),\n ...this.getLabelAdapterMethods_(),\n ...this.getLineRippleAdapterMethods_(),\n ...this.getOutlineAdapterMethods_(),\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCTextFieldFoundation(adapter, this.getFoundationMap_());\n }\n\n private getRootAdapterMethods_(): MDCTextFieldRootAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n hasClass: (className) => this.root_.classList.contains(className),\n registerTextFieldInteractionHandler: (evtType, handler) => this.listen(evtType, handler),\n deregisterTextFieldInteractionHandler: (evtType, handler) => this.unlisten(evtType, handler),\n registerValidationAttributeChangeHandler: (handler) => {\n const getAttributesList = (mutationsList: MutationRecord[]): string[] => {\n return mutationsList\n .map((mutation) => mutation.attributeName)\n .filter((attributeName) => attributeName) as string[];\n };\n const observer = new MutationObserver((mutationsList) => handler(getAttributesList(mutationsList)));\n const config = {attributes: true};\n observer.observe(this.input_, config);\n return observer;\n },\n deregisterValidationAttributeChangeHandler: (observer) => observer.disconnect(),\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private getInputAdapterMethods_(): MDCTextFieldInputAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n getNativeInput: () => this.input_,\n isFocused: () => document.activeElement === this.input_,\n registerInputInteractionHandler: (evtType, handler) => this.input_.addEventListener(evtType, handler),\n deregisterInputInteractionHandler: (evtType, handler) => this.input_.removeEventListener(evtType, handler),\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private getLabelAdapterMethods_(): MDCTextFieldLabelAdapter {\n return {\n floatLabel: (shouldFloat) => this.label_ && this.label_.float(shouldFloat),\n getLabelWidth: () => this.label_ ? this.label_.getWidth() : 0,\n hasLabel: () => Boolean(this.label_),\n shakeLabel: (shouldShake) => this.label_ && this.label_.shake(shouldShake),\n };\n }\n\n private getLineRippleAdapterMethods_(): MDCTextFieldLineRippleAdapter {\n return {\n activateLineRipple: () => {\n if (this.lineRipple_) {\n this.lineRipple_.activate();\n }\n },\n deactivateLineRipple: () => {\n if (this.lineRipple_) {\n this.lineRipple_.deactivate();\n }\n },\n setLineRippleTransformOrigin: (normalizedX) => {\n if (this.lineRipple_) {\n this.lineRipple_.setRippleCenter(normalizedX);\n }\n },\n };\n }\n\n private getOutlineAdapterMethods_(): MDCTextFieldOutlineAdapter {\n return {\n closeOutline: () => this.outline_ && this.outline_.closeNotch(),\n hasOutline: () => Boolean(this.outline_),\n notchOutline: (labelWidth) => this.outline_ && this.outline_.notch(labelWidth),\n };\n }\n\n /**\n * @return A map of all subcomponents to subfoundations.\n */\n private getFoundationMap_(): Partial {\n return {\n characterCounter: this.characterCounter_ ? this.characterCounter_.foundation : undefined,\n helperText: this.helperText_ ? this.helperText_.foundation : undefined,\n leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined,\n trailingIcon: this.trailingIcon_ ? this.trailingIcon_.foundation : undefined,\n };\n }\n\n private createRipple_(rippleFactory: MDCRippleFactory): MDCRipple | null {\n const isTextArea = this.root_.classList.contains(cssClasses.TEXTAREA);\n const isOutlined = this.root_.classList.contains(cssClasses.OUTLINED);\n\n if (isTextArea || isOutlined) {\n return null;\n }\n\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCRippleAdapter = {\n ...MDCRipple.createAdapter(this),\n isSurfaceActive: () => ponyfill.matches(this.input_, ':active'),\n registerInteractionHandler: (evtType, handler) => this.input_.addEventListener(evtType, handler),\n deregisterInteractionHandler: (evtType, handler) => this.input_.removeEventListener(evtType, handler),\n };\n // tslint:enable:object-literal-sort-keys\n return rippleFactory(this.root_, new MDCRippleFoundation(adapter));\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/component.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCTextFieldCharacterCounterAdapter} from './adapter';\nimport {MDCTextFieldCharacterCounterFoundation} from './foundation';\n\nexport type MDCTextFieldCharacterCounterFactory =\n (el: Element, foundation?: MDCTextFieldCharacterCounterFoundation) => MDCTextFieldCharacterCounter;\n\nexport class MDCTextFieldCharacterCounter extends MDCComponent {\n static attachTo(root: Element): MDCTextFieldCharacterCounter {\n return new MDCTextFieldCharacterCounter(root);\n }\n\n get foundation(): MDCTextFieldCharacterCounterFoundation {\n return this.foundation_;\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCTextFieldCharacterCounterAdapter = {\n setContent: (content) => {\n this.root_.textContent = content;\n },\n };\n return new MDCTextFieldCharacterCounterFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/character-counter/component.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n ROOT: 'mdc-text-field-character-counter',\n};\n\nconst strings = {\n ROOT_SELECTOR: `.${cssClasses.ROOT}`,\n};\n\nexport {strings, cssClasses};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/character-counter/constants.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCTextFieldHelperTextAdapter} from './adapter';\nimport {MDCTextFieldHelperTextFoundation} from './foundation';\n\nexport type MDCTextFieldHelperTextFactory =\n (el: Element, foundation?: MDCTextFieldHelperTextFoundation) => MDCTextFieldHelperText;\n\nexport class MDCTextFieldHelperText extends MDCComponent {\n static attachTo(root: Element): MDCTextFieldHelperText {\n return new MDCTextFieldHelperText(root);\n }\n\n get foundation(): MDCTextFieldHelperTextFoundation {\n return this.foundation_;\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCTextFieldHelperTextAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n hasClass: (className) => this.root_.classList.contains(className),\n setAttr: (attr, value) => this.root_.setAttribute(attr, value),\n removeAttr: (attr) => this.root_.removeAttribute(attr),\n setContent: (content) => {\n this.root_.textContent = content;\n },\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCTextFieldHelperTextFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/helper-text/component.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst cssClasses = {\n HELPER_TEXT_PERSISTENT: 'mdc-text-field-helper-text--persistent',\n HELPER_TEXT_VALIDATION_MSG: 'mdc-text-field-helper-text--validation-msg',\n ROOT: 'mdc-text-field-helper-text',\n};\n\nconst strings = {\n ARIA_HIDDEN: 'aria-hidden',\n ROLE: 'role',\n ROOT_SELECTOR: `.${cssClasses.ROOT}`,\n};\n\nexport {strings, cssClasses};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/helper-text/constants.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCTextFieldIconAdapter} from './adapter';\nimport {MDCTextFieldIconFoundation} from './foundation';\n\nexport type MDCTextFieldIconFactory = (el: Element, foundation?: MDCTextFieldIconFoundation) => MDCTextFieldIcon;\n\nexport class MDCTextFieldIcon extends MDCComponent {\n static attachTo(root: Element): MDCTextFieldIcon {\n return new MDCTextFieldIcon(root);\n }\n\n get foundation(): MDCTextFieldIconFoundation {\n return this.foundation_;\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCTextFieldIconAdapter = {\n getAttr: (attr) => this.root_.getAttribute(attr),\n setAttr: (attr, value) => this.root_.setAttribute(attr, value),\n removeAttr: (attr) => this.root_.removeAttribute(attr),\n setContent: (content) => {\n this.root_.textContent = content;\n },\n registerInteractionHandler: (evtType, handler) => this.listen(evtType, handler),\n deregisterInteractionHandler: (evtType, handler) => this.unlisten(evtType, handler),\n notifyIconAction: () => this.emit(\n MDCTextFieldIconFoundation.strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */),\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCTextFieldIconFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/icon/component.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst strings = {\n ICON_EVENT: 'MDCTextField:icon',\n ICON_ROLE: 'button',\n};\n\nexport {strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/icon/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-toolbar/index.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCRipple} from '@material/ripple/component';\nimport {MDCToolbarAdapter} from './adapter';\nimport {MDCToolbarFoundation} from './foundation';\nimport {MDCToolbarEventDetail} from './types';\n\nconst {strings} = MDCToolbarFoundation;\n\nexport class MDCToolbar extends MDCComponent {\n static attachTo(root: Element) {\n return new MDCToolbar(root);\n }\n\n protected root_!: HTMLElement; // assigned in MDCComponent constructor\n\n private ripples_!: MDCRipple[]; // assigned in initialize()\n private firstRowElement_!: HTMLElement; // assigned in initialize()\n private fixedAdjustElement_!: HTMLElement | null; // assigned in initialize()\n private titleElement_!: HTMLElement | null; // assigned in initialize()\n\n initialize() {\n this.ripples_ = [];\n this.fixedAdjustElement_ = null;\n this.titleElement_ = this.root_.querySelector(strings.TITLE_SELECTOR);\n const firstRowElement = this.root_.querySelector(strings.FIRST_ROW_SELECTOR);\n if (!firstRowElement) {\n throw new Error(`MDCToolbar: Required sub-element '${strings.FIRST_ROW_SELECTOR}' is missing`);\n }\n this.firstRowElement_ = firstRowElement;\n\n [].forEach.call(this.root_.querySelectorAll(strings.ICON_SELECTOR), (icon: HTMLElement) => {\n const ripple = MDCRipple.attachTo(icon);\n ripple.unbounded = true;\n this.ripples_.push(ripple);\n });\n }\n\n destroy() {\n this.ripples_.forEach((ripple) => {\n ripple.destroy();\n });\n super.destroy();\n }\n\n set fixedAdjustElement(element: HTMLElement | null) {\n this.fixedAdjustElement_ = element;\n this.foundation_.updateAdjustElementStyles();\n }\n\n get fixedAdjustElement(): HTMLElement | null {\n return this.fixedAdjustElement_;\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCToolbarAdapter = {\n hasClass: (className) => this.root_.classList.contains(className),\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n registerScrollHandler: (handler) => window.addEventListener('scroll', handler),\n deregisterScrollHandler: (handler) => window.removeEventListener('scroll', handler),\n registerResizeHandler: (handler) => window.addEventListener('resize', handler),\n deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler),\n getViewportWidth: () => window.innerWidth,\n getViewportScrollY: () => window.pageYOffset,\n getOffsetHeight: () => this.root_.offsetHeight,\n getFirstRowElementOffsetHeight: () => this.firstRowElement_.offsetHeight,\n notifyChange: (evtData) => this.emit(strings.CHANGE_EVENT, evtData),\n setStyle: (property, value) => this.root_.style.setProperty(property, value),\n setStyleForTitleElement: (property, value) => {\n if (this.titleElement_) {\n this.titleElement_.style.setProperty(property, value);\n }\n },\n setStyleForFlexibleRowElement: (property, value) => this.firstRowElement_.style.setProperty(property, value),\n setStyleForFixedAdjustElement: (property, value) => {\n if (this.fixedAdjustElement) {\n this.fixedAdjustElement.style.setProperty(property, value);\n }\n },\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCToolbarFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-toolbar/component.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport const cssClasses = {\n FIXED: 'mdc-toolbar--fixed',\n FIXED_AT_LAST_ROW: 'mdc-toolbar--fixed-at-last-row',\n FIXED_LASTROW: 'mdc-toolbar--fixed-lastrow-only',\n FLEXIBLE_DEFAULT_BEHAVIOR: 'mdc-toolbar--flexible-default-behavior',\n FLEXIBLE_MAX: 'mdc-toolbar--flexible-space-maximized',\n FLEXIBLE_MIN: 'mdc-toolbar--flexible-space-minimized',\n TOOLBAR_ROW_FLEXIBLE: 'mdc-toolbar--flexible',\n};\n\nexport const strings = {\n CHANGE_EVENT: 'MDCToolbar:change',\n FIRST_ROW_SELECTOR: '.mdc-toolbar__row:first-child',\n ICON_SELECTOR: '.mdc-toolbar__icon',\n TITLE_SELECTOR: '.mdc-toolbar__title',\n};\n\nexport const numbers = {\n MAX_TITLE_SIZE: 2.125,\n MIN_TITLE_SIZE: 1.25,\n TOOLBAR_MOBILE_BREAKPOINT: 600,\n TOOLBAR_ROW_HEIGHT: 64,\n TOOLBAR_ROW_MOBILE_HEIGHT: 56,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-toolbar/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './foundation';\nexport * from './fixed/foundation';\nexport * from './short/foundation';\nexport * from './standard/foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/index.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCRipple, MDCRippleFactory} from '@material/ripple/component';\nimport {MDCTopAppBarAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\nimport {MDCFixedTopAppBarFoundation} from './fixed/foundation';\nimport {MDCTopAppBarBaseFoundation} from './foundation';\nimport {MDCShortTopAppBarFoundation} from './short/foundation';\nimport {MDCTopAppBarFoundation} from './standard/foundation';\n\nexport class MDCTopAppBar extends MDCComponent {\n static attachTo(root: Element): MDCTopAppBar {\n return new MDCTopAppBar(root);\n }\n\n private navIcon_!: Element | null;\n private iconRipples_!: MDCRipple[];\n private scrollTarget_!: EventTarget;\n\n initialize(rippleFactory: MDCRippleFactory = (el) => MDCRipple.attachTo(el)) {\n this.navIcon_ = this.root_.querySelector(strings.NAVIGATION_ICON_SELECTOR);\n\n // Get all icons in the toolbar and instantiate the ripples\n const icons: Element[] = [].slice.call(this.root_.querySelectorAll(strings.ACTION_ITEM_SELECTOR));\n if (this.navIcon_) {\n icons.push(this.navIcon_);\n }\n\n this.iconRipples_ = icons.map((icon) => {\n const ripple = rippleFactory(icon);\n ripple.unbounded = true;\n return ripple;\n });\n\n this.scrollTarget_ = window;\n }\n\n destroy() {\n this.iconRipples_.forEach((iconRipple) => iconRipple.destroy());\n super.destroy();\n }\n\n setScrollTarget(target: EventTarget) {\n // Remove scroll handler from the previous scroll target\n this.foundation_.destroyScrollHandler();\n\n this.scrollTarget_ = target;\n\n // Initialize scroll handler on the new scroll target\n this.foundation_.initScrollHandler();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCTopAppBarAdapter = {\n hasClass: (className) => this.root_.classList.contains(className),\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n setStyle: (property, value) => (this.root_ as HTMLElement).style.setProperty(property, value),\n getTopAppBarHeight: () => this.root_.clientHeight,\n registerNavigationIconInteractionHandler: (evtType, handler) => {\n if (this.navIcon_) {\n this.navIcon_.addEventListener(evtType, handler);\n }\n },\n deregisterNavigationIconInteractionHandler: (evtType, handler) => {\n if (this.navIcon_) {\n this.navIcon_.removeEventListener(evtType, handler);\n }\n },\n notifyNavigationIconClicked: () => this.emit(strings.NAVIGATION_EVENT, {}),\n registerScrollHandler: (handler) => this.scrollTarget_.addEventListener('scroll', handler as EventListener),\n deregisterScrollHandler: (handler) => this.scrollTarget_.removeEventListener('scroll', handler as EventListener),\n registerResizeHandler: (handler) => window.addEventListener('resize', handler),\n deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler),\n getViewportScrollY: () => {\n const win = this.scrollTarget_ as Window;\n const el = this.scrollTarget_ as Element;\n return win.pageYOffset !== undefined ? win.pageYOffset : el.scrollTop;\n },\n getTotalActionItems: () => this.root_.querySelectorAll(strings.ACTION_ITEM_SELECTOR).length,\n };\n // tslint:enable:object-literal-sort-keys\n\n let foundation: MDCTopAppBarBaseFoundation;\n if (this.root_.classList.contains(cssClasses.SHORT_CLASS)) {\n foundation = new MDCShortTopAppBarFoundation(adapter);\n } else if (this.root_.classList.contains(cssClasses.FIXED_CLASS)) {\n foundation = new MDCFixedTopAppBarFoundation(adapter);\n } else {\n foundation = new MDCTopAppBarFoundation(adapter);\n }\n\n return foundation;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/component.ts"],"sourceRoot":""}