{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///material-components-web.min.js","webpack:///webpack/bootstrap 1f2e5d25cccfe971e3ca","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_","UNSET_INDEX","focusedItemIndex_","useActivatedClass_","ariaCurrentAttrValue_","isCheckboxList_","isRadioList_","addClassForElementIndex","focusItemAtIndex","getAttributeForElementIndex","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","setAriaForSingleSelectionAtIndex_","ARIA_CURRENT","isAriaCurrent","ariaAttribute","ARIA_SELECTED","ariaAttributeValue","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","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","attr","RADIO_SELECTOR","checked","ACTION_EVENT","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","list_","listFactory","listEl","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_ = constants_1.numbers.UNSET_INDEX;\n _this.focusedItemIndex_ = constants_1.numbers.UNSET_INDEX;\n _this.useActivatedClass_ = false;\n _this.ariaCurrentAttrValue_ = null;\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, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\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 getAttributeForElementIndex: function getAttributeForElementIndex() {\n return null;\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 = constants_1.numbers.UNSET_INDEX;\n if (currentIndex === constants_1.numbers.UNSET_INDEX) {\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 === constants_1.numbers.UNSET_INDEX) {\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 if (this.selectedIndex_ === index) {\n return;\n }\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_ !== constants_1.numbers.UNSET_INDEX) {\n this.adapter_.removeClassForElementIndex(this.selectedIndex_, selectedClassName);\n }\n this.adapter_.addClassForElementIndex(index, selectedClassName);\n this.setAriaForSingleSelectionAtIndex_(index);\n this.selectedIndex_ = index;\n };\n /**\n * Sets aria attribute for single selection at given index.\n */\n MDCListFoundation.prototype.setAriaForSingleSelectionAtIndex_ = function (index) {\n // Detect the presence of aria-current and get the value only during list initialization when it is in unset state.\n if (this.selectedIndex_ === constants_1.numbers.UNSET_INDEX) {\n this.ariaCurrentAttrValue_ = this.adapter_.getAttributeForElementIndex(index, constants_1.strings.ARIA_CURRENT);\n }\n var isAriaCurrent = this.ariaCurrentAttrValue_ !== null;\n var ariaAttribute = isAriaCurrent ? constants_1.strings.ARIA_CURRENT : constants_1.strings.ARIA_SELECTED;\n if (this.selectedIndex_ !== constants_1.numbers.UNSET_INDEX) {\n this.adapter_.setAttributeForElementIndex(this.selectedIndex_, ariaAttribute, 'false');\n }\n var ariaAttributeValue = isAriaCurrent ? this.ariaCurrentAttrValue_ : 'true';\n this.adapter_.setAttributeForElementIndex(index, ariaAttribute, ariaAttributeValue);\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_ !== constants_1.numbers.UNSET_INDEX) {\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_ === constants_1.numbers.UNSET_INDEX && 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_ !== constants_1.numbers.UNSET_INDEX) {\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_ === constants_1.numbers.UNSET_INDEX ? [] : 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 // 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 return {\n bottom: rootRect.bottom,\n height: rootRect.height,\n left: rootRect.left,\n right: rootRect.right,\n top: rootRect.top,\n width: rootRect.width + checkmarkRect.height\n };\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 getAttributeForElementIndex: function getAttributeForElementIndex(index, attr) {\n return _this.listElements[index].getAttribute(attr);\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_CURRENT: 'aria-current',\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;\nvar numbers = {\n UNSET_INDEX: -1\n};\nexports.numbers = numbers;\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 this.setCharacterCounter_(value.length);\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 Object.defineProperty(MDCDrawer.prototype, \"list\", {\n get: function get() {\n return this.list_;\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 1f2e5d25cccfe971e3ca","/**\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, numbers, 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 numbers() {\n return numbers;\n }\n\n static get defaultAdapter(): MDCListAdapter {\n return {\n addClassForElementIndex: () => undefined,\n focusItemAtIndex: () => undefined,\n getAttributeForElementIndex: () => null,\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 = numbers.UNSET_INDEX;\n private focusedItemIndex_ = numbers.UNSET_INDEX;\n private useActivatedClass_ = false;\n private ariaCurrentAttrValue_: string | null = null;\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 = numbers.UNSET_INDEX;\n if (currentIndex === numbers.UNSET_INDEX) {\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 === numbers.UNSET_INDEX) {\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 if (this.selectedIndex_ === index) {\n return;\n }\n\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_ !== numbers.UNSET_INDEX) {\n this.adapter_.removeClassForElementIndex(this.selectedIndex_ as number, selectedClassName);\n }\n this.adapter_.addClassForElementIndex(index, selectedClassName);\n this.setAriaForSingleSelectionAtIndex_(index);\n\n this.selectedIndex_ = index;\n }\n\n /**\n * Sets aria attribute for single selection at given index.\n */\n private setAriaForSingleSelectionAtIndex_(index: number) {\n // Detect the presence of aria-current and get the value only during list initialization when it is in unset state.\n if (this.selectedIndex_ === numbers.UNSET_INDEX) {\n this.ariaCurrentAttrValue_ =\n this.adapter_.getAttributeForElementIndex(index, strings.ARIA_CURRENT);\n }\n\n const isAriaCurrent = this.ariaCurrentAttrValue_ !== null;\n const ariaAttribute = isAriaCurrent ? strings.ARIA_CURRENT : strings.ARIA_SELECTED;\n\n if (this.selectedIndex_ !== numbers.UNSET_INDEX) {\n this.adapter_.setAttributeForElementIndex(this.selectedIndex_ as number, ariaAttribute, 'false');\n }\n\n const ariaAttributeValue = isAriaCurrent ? this.ariaCurrentAttrValue_ : 'true';\n this.adapter_.setAttributeForElementIndex(index, ariaAttribute, ariaAttributeValue as string);\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_ !== numbers.UNSET_INDEX) {\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_ === numbers.UNSET_INDEX && 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_ !== numbers.UNSET_INDEX) {\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_ === numbers.UNSET_INDEX ? [] : (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 // 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 return {\n bottom: rootRect.bottom,\n height: rootRect.height,\n left: rootRect.left,\n right: rootRect.right,\n top: rootRect.top,\n width: rootRect.width + checkmarkRect.height,\n };\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 getAttributeForElementIndex: (index, attr) => this.listElements[index].getAttribute(attr),\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_CURRENT: 'aria-current',\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\nconst numbers = {\n UNSET_INDEX: -1,\n};\n\nexport {strings, cssClasses, numbers};\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 this.setCharacterCounter_(value.length);\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 get list(): MDCList | undefined {\n return this.list_;\n }\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":""}