material-components-web.min.js.map 1.8 MB

1
  1. {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///material-components-web.min.js","webpack:///webpack/bootstrap 5759e1d18f415f982a34","webpack:///./packages/mdc-base/foundation.ts","webpack:///./packages/mdc-base/component.ts","webpack:///./packages/mdc-ripple/component.ts","webpack:///./packages/mdc-dom/ponyfill.ts","webpack:///./packages/mdc-ripple/foundation.ts","webpack:///./packages/mdc-list/foundation.ts","webpack:///./packages/mdc-menu-surface/constants.ts","webpack:///./packages/mdc-top-app-bar/constants.ts","webpack:///./packages/mdc-menu-surface/foundation.ts","webpack:///./packages/mdc-tab-indicator/foundation.ts","webpack:///./packages/mdc-animation/util.ts","webpack:///./packages/mdc-ripple/util.ts","webpack:///./packages/mdc-chips/chip/foundation.ts","webpack:///./packages/mdc-list/component.ts","webpack:///./packages/mdc-drawer/dismissible/foundation.ts","webpack:///./packages/mdc-floating-label/component.ts","webpack:///./packages/mdc-floating-label/foundation.ts","webpack:///./packages/mdc-line-ripple/component.ts","webpack:///./packages/mdc-menu/constants.ts","webpack:///./packages/mdc-notched-outline/component.ts","webpack:///./packages/mdc-snackbar/constants.ts","webpack:///./packages/mdc-tab-scroller/rtl-scroller.ts","webpack:///./packages/mdc-tab/foundation.ts","webpack:///./packages/mdc-textfield/character-counter/foundation.ts","webpack:///./packages/mdc-textfield/helper-text/foundation.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/component.ts","webpack:///./packages/mdc-chips/chip/constants.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/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-menu-surface/util.ts","webpack:///./packages/mdc-menu-surface/component.ts","webpack:///./packages/mdc-menu/component.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/component.ts","webpack:///./packages/mdc-select/helper-text/foundation.ts","webpack:///./packages/mdc-select/icon/component.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/component.ts","webpack:///./packages/mdc-tab-scroller/foundation.ts","webpack:///./packages/mdc-tab-scroller/constants.ts","webpack:///./packages/mdc-tab-scroller/util.ts","webpack:///./packages/mdc-tab/component.ts","webpack:///./packages/mdc-tab-indicator/component.ts","webpack:///./packages/mdc-tab-indicator/fading-foundation.ts","webpack:///./packages/mdc-tab-indicator/sliding-foundation.ts","webpack:///./packages/mdc-tab-bar/foundation.ts","webpack:///./packages/mdc-textfield/character-counter/component.ts","webpack:///./packages/mdc-textfield/constants.ts","webpack:///./packages/mdc-textfield/foundation.ts","webpack:///./packages/mdc-textfield/helper-text/component.ts","webpack:///./packages/mdc-textfield/icon/component.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/index.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-dom/index.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/index.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/index.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-list/index.ts","webpack:///./packages/mdc-menu-surface/index.ts","webpack:///./packages/mdc-menu/index.ts","webpack:///./packages/mdc-notched-outline/index.ts","webpack:///./packages/mdc-radio/index.ts","webpack:///./packages/mdc-radio/component.ts","webpack:///./packages/mdc-radio/constants.ts","webpack:///./packages/mdc-ripple/index.ts","webpack:///./packages/mdc-select/index.ts","webpack:///./packages/mdc-select/component.ts","webpack:///./packages/mdc-select/helper-text/constants.ts","webpack:///./packages/mdc-select/icon/constants.ts","webpack:///./packages/mdc-select/helper-text/index.ts","webpack:///./packages/mdc-select/icon/index.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/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-indicator/constants.ts","webpack:///./packages/mdc-tab/constants.ts","webpack:///./packages/mdc-tab-bar/constants.ts","webpack:///./packages/mdc-tab-indicator/index.ts","webpack:///./packages/mdc-tab-scroller/index.ts","webpack:///./packages/mdc-tab/index.ts","webpack:///./packages/mdc-textfield/index.ts","webpack:///./packages/mdc-textfield/component.ts","webpack:///./packages/mdc-textfield/character-counter/constants.ts","webpack:///./packages/mdc-textfield/helper-text/constants.ts","webpack:///./packages/mdc-textfield/icon/constants.ts","webpack:///./packages/mdc-textfield/character-counter/index.ts","webpack:///./packages/mdc-textfield/helper-text/index.ts","webpack:///./packages/mdc-textfield/icon/index.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","mdc","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","default","object","property","prototype","hasOwnProperty","p","s","value","MDCFoundation","adapter","adapter_","init","destroy","__read","Symbol","iterator","r","e","ar","next","done","push","error","return","__spread","arguments","length","concat","foundation_1","MDCComponent","foundation","args","_i","root_","initialize","apply","foundation_","getDefaultFoundation","initialSyncWithDOM","attachTo","_args","Error","listen","evtType","handler","addEventListener","unlisten","removeEventListener","emit","evtData","shouldBubble","evt","CustomEvent","bubbles","detail","document","createEvent","initCustomEvent","dispatchEvent","__extends","_extendStatics","b","setPrototypeOf","__proto__","Array","__","constructor","create","__importStar","mod","result","k","component_1","ponyfill_1","util","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","closest","element","selector","el","parentElement","webkitMatchesSelector","msMatchesSelector","__assign","assign","t","constants_1","util_1","ACTIVATION_EVENT_TYPES","POINTER_DEACTIVATION_EVENT_TYPES","activatedTargets","defaultAdapter","activationAnimationHasEnded_","activationTimer_","fgDeactivationRemovalTimer_","fgScale_","frame_","width","height","initialSize_","layoutFrame_","maxRadius_","unboundedCoords_","left","top","activationState_","defaultActivationState_","activationTimerCallback_","runDeactivationUXLogicIfReady_","activateHandler_","activate_","deactivateHandler_","deactivate_","focusHandler_","handleFocus","blurHandler_","handleBlur","resizeHandler_","cssClasses","strings","numbers","right","bottom","supportsPressRipple","supportsPressRipple_","registerRootHandlers_","_a","ROOT_1","ROOT","UNBOUNDED_1","UNBOUNDED","requestAnimationFrame","layoutInternal_","clearTimeout","FG_ACTIVATION","FG_DEACTIVATION","ROOT_2","UNBOUNDED_2","removeCssVars_","deregisterRootHandlers_","deregisterDeactivationHandlers_","cancelAnimationFrame","BG_FOCUSED","activationEvent","hasDeactivationUXRun","isActivated","isProgrammatic","wasActivatedByPointer","wasElementMadeActive","forEach","registerDeactivationHandlers_","type","rippleStrings","keys","key","indexOf","activationState","previousActivationEvent","previousActivationEvent_","some","resetActivationState_","checkElementMadeActive_","animateActivation_","keyCode","VAR_FG_TRANSLATE_START","VAR_FG_TRANSLATE_END","_b","DEACTIVATION_TIMEOUT_MS","translateStart","translateEnd","_c","getFgTranslationCoordinates_","startPoint","endPoint","rmBoundedActivationClasses_","setTimeout","getNormalizedEventCoords","FG_DEACTIVATION_MS","TAP_DELAY_MS","state","animateDeactivation_","maxDim","Math","max","sqrt","pow","PADDING","floor","INITIAL_ORIGIN_SCALE","updateLayoutCssVars_","VAR_FG_SIZE","VAR_LEFT","VAR_TOP","VAR_FG_SCALE","round","isNumberArray","selectedIndex","ELEMENTS_KEY_ALLOWED_IN","MDCListFoundation","wrapFocus_","isVertical_","isSingleSelectionList_","selectedIndex_","UNSET_INDEX","focusedItemIndex_","useActivatedClass_","ariaCurrentAttrValue_","isCheckboxList_","isRadioList_","addClassForElementIndex","focusItemAtIndex","getAttributeForElementIndex","getFocusedElementIndex","getListItemCount","hasCheckboxAtIndex","hasRadioAtIndex","isCheckboxCheckedAtIndex","isFocusInsideList","isRootFocused","notifyAction","removeClassForElementIndex","setAttributeForElementIndex","setCheckedCheckboxOrRadioAtIndex","setTabIndexForListItemChildren","setWrapFocus","setVerticalOrientation","setSingleSelection","setUseActivatedClass","useActivated","getSelectedIndex","setSelectedIndex","index","isIndexValid_","setCheckboxAtIndex_","setRadioAtIndex_","setSingleSelectionAtIndex_","handleFocusIn","_","listItemIndex","handleFocusOut","setTabindexToFirstSelectedItem_","handleKeydown","isRootListItem","isArrowLeft","isArrowUp","isArrowRight","isArrowDown","isHome","isEnd","isEnter","isSpace","preventDefault","focusLastElement","focusFirstElement","currentIndex","nextIndex","preventDefaultEvent_","focusNextElement","focusPrevElement","tagName","isSelectableList_","setSelectedIndexOnAction_","setTabindexAtIndex_","handleClick","toggleCheckbox","count","prevIndex","lastIndex","toLowerCase","selectedClassName","LIST_ITEM_SELECTED_CLASS","LIST_ITEM_ACTIVATED_CLASS","setAriaForSingleSelectionAtIndex_","ARIA_CURRENT","isAriaCurrent","ariaAttribute","ARIA_SELECTED","ariaAttributeValue","ARIA_CHECKED","isChecked","targetIndex","reduce","minIndex","min","isIndexInRange_","listSize","toggleCheckboxAtIndex_","selectedIndexes","slice","filter","ANCHOR","ANIMATING_CLOSED","ANIMATING_OPEN","FIXED","OPEN","CLOSED_EVENT","OPENED_EVENT","FOCUSABLE_ELEMENTS","join","TRANSITION_OPEN_DURATION","TRANSITION_CLOSE_DURATION","MARGIN_TO_EDGE","ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO","CornerBit","BOTTOM","CENTER","RIGHT","FLIP_RTL","Corner","TOP_LEFT","TOP_RIGHT","BOTTOM_LEFT","BOTTOM_RIGHT","TOP_START","TOP_END","BOTTOM_START","BOTTOM_END","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","__values","MDCMenuSurfaceFoundation","isOpen_","isQuickOpen_","isHoistedElement_","isFixedPosition_","openAnimationEndTimerId_","closeAnimationEndTimerId_","animationRequestId_","anchorCorner_","anchorMargin_","position_","hasClass","hasAnchor","isElementInContainer","isFocused","isFirstElementFocused","isLastElementFocused","isRtl","getInnerDimensions","getAnchorDimensions","getWindowDimensions","getBodyDimensions","getWindowScroll","setPosition","setMaxHeight","setTransformOrigin","saveFocus","restoreFocus","notifyClose","notifyOpen","setAnchorCorner","corner","setAnchorMargin","margin","setIsHoisted","isHoisted","setFixedPosition","isFixedPosition","setAbsolutePosition","isFinite_","setQuickOpen","quickOpen","isOpen","open","dimensions_","autoPosition_","close","maybeRestoreFocus_","handleBodyClick","shiftKey","isEscape","isTab","measurements_","getAutoLayoutMeasurements_","getOriginCorner_","maxMenuSurfaceHeight","getMenuSurfaceMaxHeight_","verticalAlignment","hasBit_","horizontalAlignment","horizontalOffset","getHorizontalOriginOffset_","verticalOffset","getVerticalOriginOffset_","anchorSize","surfaceSize","position","adjustPositionForHoistedElement_","anchorRect","bodySize","viewportSize","windowScroll","viewportDistance","isBottomAligned","availableTop","availableBottom","topOverflow","bottomOverflow","setBit_","isFlipRtl","avoidHorizontalOverlap","isAlignedRight","availableLeft","availableRight","leftOverflow","rightOverflow","maxHeight","isBottomAnchored","isRightAligned","rightOffset","avoidVerticalOverlap","e_1","props","props_1","props_1_1","prop","e_1_1","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","detectEdgePseudoVarBug","node","body","appendChild","computedStyle","getComputedStyle","hasPseudoVarBug","borderTopStyle","parentNode","removeChild","forceRefresh","CSS","supportsCssVars","supportsCssVariables_","supports","explicitlySupportsCssVars","weAreFeatureDetectingSafari10plus","globalObj","supportsPassive_","isSupported_1","passive","pageOffset","clientRect","normalizedX","normalizedY","documentX","documentY","touchEvent","changedTouches","pageX","pageY","mouseEvent","emptyClientRect","MDCChipFoundation","shouldRemoveOnTrailingIconClick_","addClassToLeadingIcon","eventTargetHasClass","getCheckmarkBoundingClientRect","getComputedStyleValue","getRootBoundingClientRect","hasLeadingIcon","notifyInteraction","notifyRemoval","notifySelection","notifyTrailingIconInteraction","removeClassFromLeadingIcon","setStyleProperty","isSelected","SELECTED","setSelected","selected","getShouldRemoveOnTrailingIconClick","setShouldRemoveOnTrailingIconClick","shouldRemove","getDimensions","getRootRect","checkmarkRect","rootRect","beginExit","CHIP_EXIT","handleInteraction","handleTransitionEnd","propertyName","chipWidth_1","LEADING_ICON","HIDDEN_LEADING_ICON","CHECKMARK","handleTrailingIconInteraction","stopPropagation","MDCList","querySelectorAll","LIST_ITEM_CLASS","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","querySelector","radioSelectedListItem","ARIA_CHECKED_RADIO_SELECTOR","preselectedItems","ARIA_CHECKED_CHECKBOX_SELECTOR","map","listItem","listElements","singleSelection","focus","attr","CHECKBOX_SELECTOR","RADIO_SELECTOR","checked","ACTION_EVENT","toggleEl","CHECKBOX_RADIO_SELECTOR","event","initEvent","tabIndexValue","CHILD_ELEMENTS_TO_TOGGLE_TABINDEX","getListItemIndex_","eventTarget","nearestParent","MDCDismissibleDrawerFoundation","animationFrame_","animationTimer_","elementHasClass","focusActiveNavigationItem","trapFocus","releaseFocus","isOpening","isClosing","ANIMATE","runNextAnimationFrame_","OPENING","CLOSING","isElement_","closed_","opened_","callback","MDCFloatingLabel","shake","shouldShake","float","shouldFloat","getWidth","scrollWidth","MDCFloatingLabelFoundation","shakeAnimationEndHandler_","handleShakeAnimationEnd_","LABEL_SHAKE","LABEL_FLOAT_ABOVE","MDCLineRipple","setRippleCenter","xCoordinate","setStyle","registerEventHandler","deregisterEventHandler","MDCLineRippleFoundation","MENU_SELECTED_LIST_ITEM","MENU_SELECTION_GROUP","ARIA_SELECTED_ATTR","LIST_SELECTOR","SELECTED_EVENT","FOCUS_ROOT_INDEX","DefaultFocusState","NONE","LIST_ROOT","FIRST_ITEM","LAST_ITEM","foundation_2","MDCNotchedOutline","notchElement_","NOTCH_ELEMENT_SELECTOR","label","transitionDuration","OUTLINE_UPGRADED","NO_LABEL","notch","notchWidth","closeNotch","setNotchWidthProperty","removeNotchWidthProperty","removeProperty","MDCNotchedOutlineFoundation","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","MDCTabFoundation","focusOnActivate_","setAttr","activateIndicator","deactivateIndicator","notifyInteracted","getOffsetLeft","getOffsetWidth","getContentOffsetLeft","getContentOffsetWidth","isActive","ACTIVE","setFocusOnActivate","focusOnActivate","previousIndicatorClientRect","TABINDEX","computeDimensions","rootWidth","rootLeft","contentWidth","contentLeft","contentRight","rootRight","MDCTextFieldCharacterCounterFoundation","setContent","setCounterValue","currentLength","maxLength","MDCTextFieldHelperTextFoundation","removeAttr","content","setPersistent","isPersistent","HELPER_TEXT_PERSISTENT","setValidation","isValidation","HELPER_TEXT_VALIDATION_MSG","showToScreenReader","ARIA_HIDDEN","setValidity","inputIsValid","helperTextIsPersistent","helperTextIsValidationMsg","validationMsgNeedsDisplay","ROLE","hide_","INITIAL_VALUE","MDCTopAppBarFoundation","wasDocked_","isDockedShowing_","currentAppBarOffsetTop_","isCurrentlyBeingResized_","resizeThrottleId_","resizeDebounceId_","lastScrollPosition_","getViewportScrollY","topAppBarHeight_","getTopAppBarHeight","scrollHandler_","topAppBarScrollHandler_","topAppBarResizeHandler_","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","TRANSITION_STATE_UNCHECKED","getTransitionAnimationClass_","TRANSITION_STATE_INDETERMINATE","TRANSITION_STATE_CHECKED","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","component_2","INTERACTION_EVENTS","MDCChip","ripple_","id","rippleFactory","leadingIcon_","LEADING_ICON_SELECTOR","trailingIcon_","TRAILING_ICON_SELECTOR","checkmark_","CHECKMARK_SELECTOR","rippleAdapter","handleInteraction_","handleTransitionEnd_","handleTrailingIconInteraction_","getPropertyValue","INTERACTION_EVENT","chipId","REMOVAL_EVENT","SELECTION_EVENT","TRAILING_ICON_INTERACTION_EVENT","ENTRY_ANIMATION_NAME","TRAILING_ICON","MDCChipSetFoundation","selectedChipIds_","removeChip","getSelectedChipIds","select","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","capture","checkClick","checkKey","getNodeForOption","optionName","optionValue","container","firstTabbableNode","tabbable","isFocusable","Document","stopImmediatePropagation","mostRecentlyFocusedNode","isEscapeEvent","isTabEvent","checkTab","lastTabbableNode","tabbableNodes","isSelectableInput","xtend","fn","trapQueue","activeTrap","trapIndex","LIST_ITEM_DISABLED_CLASS","MDCModalDrawerFoundation","handleScrimClick","MDCFormFieldFoundation","clickHandler_","activateInputRipple","deactivateInputRipple","MDCGridListFoundation","resizeFrame_","alignCenter","getNumberOfTiles","getOffsetWidthForTileAtIndex","setStyleForTilesElement","alignCenter_","gridWidth","itemWidth","tilesWidth","MDCIconButtonToggleFoundation","notifyChange","ARIA_PRESSED","isOn","toggle","ICON_BUTTON_ON","transitionEndHandler_","LINE_RIPPLE_DEACTIVATING","LINE_RIPPLE_ACTIVE","isDeactivating","MDCLinearProgressFoundation","getBuffer","getPrimaryBar","isDeterminate_","INDETERMINATE_CLASS","isReversed_","REVERSED_CLASS","progress_","setDeterminate","isDeterminate","setScale_","setProgress","setBuffer","setReverse","isReversed","CLOSED_CLASS","scaleValue","getTransformPropertyName","cachedCssTransformPropertyName_","MDCMenuSurface","parentEl","anchorElement","handleBodyClick_","registerBodyClickListener_","deregisterBodyClickListener_","focusableElements","firstFocusableElement_","lastFocusableElement_","hoistMenuToBody","setMenuSurfaceAnchorElement","isFixed","origin","previousFocus_","offsetWidth","innerWidth","innerHeight","clientWidth","clientHeight","component_3","foundation_3","MDCMenu","menuSurfaceFactory","listFactory","menuSurfaceFactory_","listFactory_","menuSurface_","list","list_","wrapFocus","handleItemAction_","handleItemAction","items","handleMenuSurfaceOpened_","handleMenuSurfaceOpened","setDefaultFocusState","focusState","getOptionByIndex","setAnchorElement","addClassToElementAtIndex","removeClassFromElementAtIndex","addAttributeToElementAtIndex","removeAttributeFromElementAtIndex","removeAttribute","elementContainsClass","closeSurface","getElementIndex","getParentElement","getSelectedElementIndex","selectionGroup","selectedListItem","notifySelected","item","getMenuItemCount","focusListRoot","MDCMenuFoundation","defaultFocusState_","getSelectionGroup_","handleSelectionGroup_","parent","isGroup","NOTCH_ELEMENT_PADDING","OUTLINE_NOTCHED","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","helperText_","helperText","activateBottomLine","deactivateBottomLine","setValue","getValue","floatLabel","getLabelWidth","hasOutline","notchOutline","closeOutline","openMenu","closeMenu","isMenuOpen","checkValidity","setValid","isDisabled","setHelperTextContent","openNotch","didChange","optionHasValue","isRequired","isValid","arrowUp","arrowDown","labelScale","labelWidth","setLeadingIconAriaLabel","setAriaLabel","setLeadingIconContent","MDCSelectHelperText","textContent","MDCSelectHelperTextFoundation","selectIsValid","MDCSelectIcon","getAttr","notifyIconAction","MDCSelectIconFoundation","ICON_EVENT","savedTabIndex_","interactionHandler_","ICON_ROLE","isEnterKey","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_","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","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","MDCTabScroller","area_","MDCTabScrollerFoundation","AREA_SELECTOR","content_","CONTENT_SELECTOR","eventTargetMatchesSelector","evtTarget","addScrollAreaClass","setScrollAreaStyleProperty","setScrollContentStyleProperty","getScrollContentStyleValue","propName","setScrollAreaScrollLeft","scrollX","scrollLeft","getScrollAreaScrollLeft","getScrollContentOffsetWidth","getScrollAreaOffsetWidth","computeScrollAreaClientRect","computeScrollContentClientRect","computeHorizontalScrollbarHeight","getScrollPosition","getScrollContentWidth","incrementScroll","scrollXIncrement","scrollTo","rtl_default_scroller_1","rtl_negative_scroller_1","rtl_reverse_scroller_1","isAnimating_","horizontalScrollbarHeight","SCROLL_AREA_SCROLL","isRTL_","computeCurrentScrollPositionRTL_","currentTranslateX","calculateCurrentTranslateX_","stopScrollAnimation_","ANIMATING","incrementScrollRTL_","incrementScroll_","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_","getAnimatingScrollPosition","initialScrollLeft","newScrollLeft","MDCTabScrollerRTLNegative","rootClientRect","contentClientRect","rightEdgeDelta","MDCTabScrollerRTLReverse","MDCTabScrollerRTLDefault","SCROLL_TEST","documentObj","shouldCacheResult","horizontalScrollbarHeight_","MDCTab","tabIndicatorFactory","MDCTabIndicator","rippleSurface","RIPPLE_SELECTOR","rippleFoundation","tabIndicatorElement","TAB_INDICATOR_SELECTOR","tabIndicator_","INTERACTED_EVENT","tabId","offsetLeft","computeIndicatorClientRect","fading_foundation_1","sliding_foundation_1","FADE","MDCFadingTabIndicatorFoundation","MDCSlidingTabIndicatorFoundation","currentClientRect","widthDelta","xPosition","NO_TRANSITION","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_","setActiveTab","activateTabAtIndex","deactivateTabAtIndex","focusTabAtIndex","getTabIndicatorClientRectAtIndex","getTabDimensionsAtIndex","getPreviousActiveTabIndex","getFocusedTabIndex","getIndexOfTabById","getTabListLength","notifyTabActivated","setUseAutomaticActivation","useAutomaticActivation","activateTab","previousActiveIndex","indexIsInRange_","previousClientRect","scrollIntoView","getKeyFromEvent_","isActivationKey_","determineTargetFromKey_","focusedTabIndex","handleTabInteraction","scrollIntoViewRTL_","scrollIntoView_","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","MDCTextFieldCharacterCounter","ICON_SELECTOR","INPUT_SELECTOR","DENSE","FULLWIDTH","HELPER_LINE","TEXTAREA","WITH_TRAILING_ICON","DENSE_LABEL_SCALE","VALIDATION_ATTR_WHITELIST","ALWAYS_FLOAT_TYPES","POINTERDOWN_EVENTS","MDCTextFieldFoundation","isFocused_","receivedUserInput_","isValid_","useNativeValidation_","characterCounter_","characterCounter","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","MDCTextFieldHelperText","MDCTextFieldIcon","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_","index_1","autoInit","base","checkbox","chips","dialog","dom","drawer","floatingLabel","formField","gridList","iconButton","lineRipple","linearProgress","menuSurface","menu","notchedOutline","radio","slider","snackbar","switchControl","tabBar","tabIndicator","tabScroller","tab","textField","toolbar","topAppBar","register","MDCCheckbox","MDCChipSet","MDCDialog","MDCDrawer","MDCFormField","MDCGridList","MDCIconButtonToggle","MDCLinearProgress","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","__export","validDescriptor","inputPropDesc","CB_PROTO_PROPS","createRipple_","nativeControl_","indeterminate","handleChange_","handleAnimationEnd_","installPropertyChangeHooks_","uninstallPropertyChangeHooks_","nativeCb","cbProto","getPrototypeOf","controlState","desc","nativeGetter","nativeCbDesc","BACKGROUND","CHECKMARK_PATH","INDETERMINATE","MIXEDMARK","NATIVE_CONTROL","CHIP_SELECTOR","idCounter","chips_","chipFactory","chipFactory_","instantiateChips_","chip","handleChipInteraction_","handleChipSelection_","handleChipRemoval_","addChip","chipEl","findChipIndex_","options","regularTabbables","orderedTabbables","candidates","candidateSelector","includeContainer","unshift","candidate","candidateTabindex","isNodeMatchingSelectorTabbable","getTabindex","documentOrder","tabIndex","sort","sortOrderedTabbables","a","isNodeMatchingSelectorFocusable","isNonTabbableRadio","isTabbable","isHiddenInput","isHidden","focusableCandidateSelector","tabindexAttr","parseInt","isContentEditable","contentEditable","isInput","isRadio","isTabbableRadio","getCheckedRadio","radioSet","ownerDocument","offsetParent","visibility","candidateSelectors","Element","extend","source","CONTAINER_SELECTOR","container_","buttons_","BUTTON_SELECTOR","defaultButton_","DEFAULT_BUTTON_SELECTOR","focusTrapFactory_","initialFocusEl_","buttonRipples_","buttonEl","focusTrap_","handleDocumentKeydown_","handleLayout_","LAYOUT_EVENTS","handleOpening_","handleClosing_","click","ACTION_ATTRIBUTE","reverse","button","ponyfill","listEl","MODAL","scrim_","handleScrimClick_","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","menuSurfaceConstants","component_4","menuConstants","component_5","component_6","component_7","component_8","labelFactory","lineRippleFactory","outlineFactory","menuFactory","iconFactory","helperTextFactory","isMenuOpen_","selectedText_","targetElement","targetElement_","hasAttribute","helperTextElement","getElementById","enhancedSelectSetup_","labelElement","lineRippleElement","lineRipple_","outlineElement","outline_","menuElement_","initialSyncRequiredState_","addMutationObserverForRequired_","getNormalizedXCoordinate_","handleMenuSelected_","handleMenuOpened_","menu_","focusItemIndex","handleMenuClosed_","hiddenInput_","enhancedAdapterMethods","getEnhancedSelectAdapterMethods_","disconnect","selectedEl","required","toString","getNativeSelectAdapterMethods_","getCommonAdapterMethods_","getOutlineAdapterMethods_","getLabelAdapterMethods_","getFoundationMap_","setEnhancedSelectedIndex_","isTouchEvent_","selectedItem","previouslySelected","observerHandler","getAttributesList","mutationsList","mutation","observer","observe","attributes","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","tabIdCounter","tabList_","tabFactory","tabScrollerFactory","instantiateTabs_","tabScroller_","instantiateTabScroller_","handleTabInteraction_","tabElements","getTabElements_","TAB_ACTIVATED_EVENT","TAB_SELECTOR","tabScrollerElement","TAB_SCROLLER_SELECTOR","rtl_scroller_1","currentScrollLeft","clampedScrollLeft","foundation_4","characterCounterFactory","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","(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 = 78);\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 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 ponyfill_1 = __webpack_require__(3);\nvar foundation_1 = __webpack_require__(4);\nvar util = __importStar(__webpack_require__(11));\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 ponyfill_1.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/* 3 */\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/* 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 __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__(83);\nvar util_1 = __webpack_require__(11);\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/* 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\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__(35);\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 isRootFocused: function isRootFocused() {\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 isArrowLeft = evt.key === 'ArrowLeft' || evt.keyCode === 37;\n var isArrowUp = evt.key === 'ArrowUp' || evt.keyCode === 38;\n var isArrowRight = evt.key === 'ArrowRight' || evt.keyCode === 39;\n var isArrowDown = 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 if (this.adapter_.isRootFocused()) {\n if (isArrowUp || isEnd) {\n evt.preventDefault();\n this.focusLastElement();\n } else if (isArrowDown || isHome) {\n evt.preventDefault();\n this.focusFirstElement();\n }\n return;\n }\n var currentIndex = this.adapter_.getFocusedElementIndex();\n if (currentIndex === -1) {\n currentIndex = listItemIndex;\n if (currentIndex < 0) {\n // If this event doesn't have a mdc-list-item ancestor from the\n // current list (not from a sublist), return early.\n return;\n }\n }\n var nextIndex;\n if (this.isVertical_ && isArrowDown || !this.isVertical_ && isArrowRight) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusNextElement(currentIndex);\n } else if (this.isVertical_ && isArrowUp || !this.isVertical_ && isArrowLeft) {\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 !== undefined) {\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/* 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 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/* 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\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/* 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__(6);\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__(144);\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\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 if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\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/* 12 */\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__(29);\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/* 13 */\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 ponyfill_1 = __webpack_require__(3);\nvar constants_1 = __webpack_require__(35);\nvar foundation_1 = __webpack_require__(5);\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.cssClasses.LIST_ITEM_CLASS));\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<MDCFooAdapter>.\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 isRootFocused: function isRootFocused() {\n return document.activeElement === _this.root_;\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 = ponyfill_1.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 && ponyfill_1.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 this.foundation_.handleKeydown(evt, target.classList.contains(constants_1.cssClasses.LIST_ITEM_CLASS), index);\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 = !ponyfill_1.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/* 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__(101);\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 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<MDCFooAdapter>.\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/* 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__(103);\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 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__(40);\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<MDCFooAdapter>.\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/* 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;\nvar numbers = {\n FOCUS_ROOT_INDEX: -1\n};\nexports.numbers = numbers;\nvar DefaultFocusState;\n(function (DefaultFocusState) {\n DefaultFocusState[DefaultFocusState[\"NONE\"] = 0] = \"NONE\";\n DefaultFocusState[DefaultFocusState[\"LIST_ROOT\"] = 1] = \"LIST_ROOT\";\n DefaultFocusState[DefaultFocusState[\"FIRST_ITEM\"] = 2] = \"FIRST_ITEM\";\n DefaultFocusState[DefaultFocusState[\"LAST_ITEM\"] = 3] = \"LAST_ITEM\";\n})(DefaultFocusState || (DefaultFocusState = {}));\nexports.DefaultFocusState = DefaultFocusState;\n\n/***/ }),\n/* 19 */\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<MDCFooAdapter>.\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/* 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}();\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__(145);\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/* 23 */\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__(152);\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/* 24 */\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__(153);\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/* 25 */\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__(7);\nvar foundation_1 = __webpack_require__(26);\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/* 26 */\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__(7);\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/* 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__(84);\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 var TRANSITION_STATE_UNCHECKED = constants_1.strings.TRANSITION_STATE_UNCHECKED;\n var SELECTED = constants_1.cssClasses.SELECTED;\n if (newState === TRANSITION_STATE_UNCHECKED) {\n this.adapter_.removeClass(SELECTED);\n } else {\n this.adapter_.addClass(SELECTED);\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 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/* 28 */\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 component_2 = __webpack_require__(2);\nvar foundation_1 = __webpack_require__(4);\nvar constants_1 = __webpack_require__(29);\nvar foundation_2 = __webpack_require__(12);\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 component_2.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<MDCFooAdapter>.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var rippleAdapter = __assign({}, component_2.MDCRipple.createAdapter(this), { computeBoundingRect: function computeBoundingRect() {\n return _this.foundation_.getDimensions();\n } });\n this.ripple_ = rippleFactory(this.root_, new foundation_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<MDCFooAdapter>.\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_2.MDCChipFoundation(adapter);\n };\n return MDCChip;\n}(component_1.MDCComponent);\nexports.MDCChip = MDCChip;\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\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/* 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__(89);\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/* 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__(91));\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/* 32 */\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__(95);\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/* 33 */\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__(34));\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/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar tabbable = __webpack_require__(98);\nvar xtend = __webpack_require__(99);\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 updateTabbableNodes();\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 // 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, {\n capture: true,\n passive: false\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkKey, {\n capture: true,\n passive: false\n });\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/* 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\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_DISABLED_CLASS: 'mdc-list-item--disabled',\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 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/* 36 */\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/* 37 */\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__(106);\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/* 38 */\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__(109);\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/* 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__(112);\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/* 40 */\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 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/* 41 */\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__(117);\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/* 42 */\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/* 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\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__(6);\nvar foundation_1 = __webpack_require__(8);\nvar util = __importStar(__webpack_require__(42));\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<MDCFooAdapter>.\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/* 44 */\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__(13);\nvar foundation_1 = __webpack_require__(5);\nvar component_3 = __webpack_require__(43);\nvar foundation_2 = __webpack_require__(8);\nvar constants_1 = __webpack_require__(18);\nvar foundation_3 = __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 component_3.MDCMenuSurface(el);\n };\n }\n if (listFactory === void 0) {\n listFactory = function listFactory(el) {\n return new component_2.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.handleMenuSurfaceOpened_ = function () {\n return _this.foundation_.handleMenuSurfaceOpened();\n };\n this.menuSurface_.listen(foundation_2.MDCMenuSurfaceFoundation.strings.OPENED_EVENT, this.handleMenuSurfaceOpened_);\n this.listen('keydown', this.handleKeydown_);\n this.listen(foundation_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_2.MDCMenuSurfaceFoundation.strings.OPENED_EVENT, this.handleMenuSurfaceOpened_);\n this.unlisten('keydown', this.handleKeydown_);\n this.unlisten(foundation_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 * Sets default focus state where the menu should focus every time when menu\n * is opened. Focuses the list root (`DefaultFocusState.LIST_ROOT`) element by\n * default.\n * @param focusState Default focus state.\n */\n MDCMenu.prototype.setDefaultFocusState = function (focusState) {\n this.foundation_.setDefaultFocusState(focusState);\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<MDCFooAdapter>.\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 getMenuItemCount: function getMenuItemCount() {\n return _this.items.length;\n },\n focusItemAtIndex: function focusItemAtIndex(index) {\n return _this.items[index].focus();\n },\n focusListRoot: function focusListRoot() {\n return _this.root_.querySelector(constants_1.strings.LIST_SELECTOR).focus();\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_3.MDCMenuFoundation(adapter);\n };\n return MDCMenu;\n}(component_1.MDCComponent);\nexports.MDCMenu = MDCMenu;\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__(5);\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 _this.defaultFocusState_ = constants_1.DefaultFocusState.LIST_ROOT;\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, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\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 getMenuItemCount: function getMenuItemCount() {\n return 0;\n },\n focusItemAtIndex: function focusItemAtIndex() {\n return undefined;\n },\n focusListRoot: function focusListRoot() {\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 MDCMenuFoundation.prototype.handleMenuSurfaceOpened = function () {\n switch (this.defaultFocusState_) {\n case constants_1.DefaultFocusState.FIRST_ITEM:\n this.adapter_.focusItemAtIndex(0);\n break;\n case constants_1.DefaultFocusState.LAST_ITEM:\n this.adapter_.focusItemAtIndex(this.adapter_.getMenuItemCount() - 1);\n break;\n case constants_1.DefaultFocusState.NONE:\n // Do nothing.\n break;\n default:\n this.adapter_.focusListRoot();\n break;\n }\n };\n /**\n * Sets default focus state where the menu should focus every time when menu\n * is opened. Focuses the list root (`DefaultFocusState.LIST_ROOT`) element by\n * default.\n */\n MDCMenuFoundation.prototype.setDefaultFocusState = function (focusState) {\n this.defaultFocusState_ = focusState;\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__(124);\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 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<MDCFooAdapter>.\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/* 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__(128);\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 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<MDCFooAdapter>.\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/* 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__(129);\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 `&nbsp;` (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 = '&nbsp;'` is required for Chrome + JAWS and NVDA\n //\n // All other browser/screen reader combinations support both methods.\n //\n // The wrapper `<span>` 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 = '<span style=\"display: inline-block; width: 0; height: 1px;\">&nbsp;</span>';\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 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 ponyfill_1 = __webpack_require__(3);\nvar foundation_1 = __webpack_require__(61);\nvar util = __importStar(__webpack_require__(63));\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<MDCFooAdapter>.\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 ponyfill_1.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/* 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\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__(141);\nvar rtl_negative_scroller_1 = __webpack_require__(142);\nvar rtl_reverse_scroller_1 = __webpack_require__(143);\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/* 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\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/* 64 */\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 component_2 = __webpack_require__(2);\nvar foundation_1 = __webpack_require__(4);\nvar component_3 = __webpack_require__(65);\nvar foundation_2 = __webpack_require__(22);\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 component_2.MDCRipple(el, foundation);\n };\n }\n if (tabIndicatorFactory === void 0) {\n tabIndicatorFactory = function tabIndicatorFactory(el) {\n return new component_3.MDCTabIndicator(el);\n };\n }\n this.id = this.root_.id;\n var rippleSurface = this.root_.querySelector(foundation_2.MDCTabFoundation.strings.RIPPLE_SELECTOR);\n var rippleAdapter = __assign({}, component_2.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 foundation_1.MDCRippleFoundation(rippleAdapter);\n this.ripple_ = rippleFactory(this.root_, rippleFoundation);\n var tabIndicatorElement = this.root_.querySelector(foundation_2.MDCTabFoundation.strings.TAB_INDICATOR_SELECTOR);\n this.tabIndicator_ = tabIndicatorFactory(tabIndicatorElement);\n this.content_ = this.root_.querySelector(foundation_2.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<MDCFooAdapter>.\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_2.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_2.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/* 65 */\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<MDCFooAdapter>.\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/* 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__(146);\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 var previousClientRect;\n if (previousActiveIndex !== -1) {\n this.adapter_.deactivateTabAtIndex(previousActiveIndex);\n previousClientRect = this.adapter_.getTabIndicatorClientRectAtIndex(previousActiveIndex);\n }\n this.adapter_.activateTabAtIndex(index, previousClientRect);\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/* 69 */\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__(23);\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<MDCFooAdapter>.\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/* 70 */\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 FULLWIDTH: 'mdc-text-field--fullwidth',\n HELPER_LINE: 'mdc-text-field-helper-line',\n INVALID: 'mdc-text-field--invalid',\n NO_LABEL: 'mdc-text-field--no-label',\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 WITH_TRAILING_ICON: 'mdc-text-field--with-trailing-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/* 71 */\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__(70);\nvar POINTERDOWN_EVENTS = ['mousedown', 'touchstart'];\nvar INTERACTION_EVENTS = ['click', 'keydown'];\nvar MDCTextFieldFoundation = /** @class */function (_super) {\n __extends(MDCTextFieldFoundation, _super);\n /**\n * @param adapter\n * @param foundationMap Map from subcomponent names to their subfoundations.\n */\n function MDCTextFieldFoundation(adapter, foundationMap) {\n if (foundationMap === void 0) {\n foundationMap = {};\n }\n var _this = _super.call(this, __assign({}, MDCTextFieldFoundation.defaultAdapter, adapter)) || this;\n _this.isFocused_ = false;\n _this.receivedUserInput_ = false;\n _this.isValid_ = true;\n _this.useNativeValidation_ = true;\n _this.helperText_ = foundationMap.helperText;\n _this.characterCounter_ = foundationMap.characterCounter;\n _this.leadingIcon_ = foundationMap.leadingIcon;\n _this.trailingIcon_ = foundationMap.trailingIcon;\n _this.inputFocusHandler_ = function () {\n return _this.activateFocus();\n };\n _this.inputBlurHandler_ = function () {\n return _this.deactivateFocus();\n };\n _this.inputInputHandler_ = function () {\n return _this.handleInput();\n };\n _this.setPointerXOffset_ = function (evt) {\n return _this.setTransformOrigin(evt);\n };\n _this.textFieldInteractionHandler_ = function () {\n return _this.handleTextFieldInteraction();\n };\n _this.validationAttributeChangeHandler_ = function (attributesList) {\n return _this.handleValidationAttributeChange(attributesList);\n };\n return _this;\n }\n Object.defineProperty(MDCTextFieldFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation.prototype, \"shouldAlwaysFloat_\", {\n get: function get() {\n var type = this.getNativeInput_().type;\n return constants_1.ALWAYS_FLOAT_TYPES.indexOf(type) >= 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation.prototype, \"shouldFloat\", {\n get: function get() {\n return this.shouldAlwaysFloat_ || this.isFocused_ || Boolean(this.getValue()) || this.isBadInput_();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation.prototype, \"shouldShake\", {\n get: function get() {\n return !this.isFocused_ && !this.isValid() && Boolean(this.getValue());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCTextFieldAdapter} for typing information on parameters and return types.\n */\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n hasClass: function hasClass() {\n return true;\n },\n registerTextFieldInteractionHandler: function registerTextFieldInteractionHandler() {\n return undefined;\n },\n deregisterTextFieldInteractionHandler: function deregisterTextFieldInteractionHandler() {\n return undefined;\n },\n registerInputInteractionHandler: function registerInputInteractionHandler() {\n return undefined;\n },\n deregisterInputInteractionHandler: function deregisterInputInteractionHandler() {\n return undefined;\n },\n registerValidationAttributeChangeHandler: function registerValidationAttributeChangeHandler() {\n return new MutationObserver(function () {\n return undefined;\n });\n },\n deregisterValidationAttributeChangeHandler: function deregisterValidationAttributeChangeHandler() {\n return undefined;\n },\n getNativeInput: function getNativeInput() {\n return null;\n },\n isFocused: function isFocused() {\n return false;\n },\n activateLineRipple: function activateLineRipple() {\n return undefined;\n },\n deactivateLineRipple: function deactivateLineRipple() {\n return undefined;\n },\n setLineRippleTransformOrigin: function setLineRippleTransformOrigin() {\n return undefined;\n },\n shakeLabel: function shakeLabel() {\n return undefined;\n },\n floatLabel: function floatLabel() {\n return undefined;\n },\n hasLabel: function hasLabel() {\n return false;\n },\n getLabelWidth: function getLabelWidth() {\n return 0;\n },\n hasOutline: function hasOutline() {\n return false;\n },\n notchOutline: function notchOutline() {\n return undefined;\n },\n closeOutline: function closeOutline() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCTextFieldFoundation.prototype.init = function () {\n var _this = this;\n if (this.adapter_.isFocused()) {\n this.inputFocusHandler_();\n } else if (this.adapter_.hasLabel() && this.shouldFloat) {\n this.notchOutline(true);\n this.adapter_.floatLabel(true);\n }\n this.adapter_.registerInputInteractionHandler('focus', this.inputFocusHandler_);\n this.adapter_.registerInputInteractionHandler('blur', this.inputBlurHandler_);\n this.adapter_.registerInputInteractionHandler('input', this.inputInputHandler_);\n POINTERDOWN_EVENTS.forEach(function (evtType) {\n _this.adapter_.registerInputInteractionHandler(evtType, _this.setPointerXOffset_);\n });\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.adapter_.registerTextFieldInteractionHandler(evtType, _this.textFieldInteractionHandler_);\n });\n this.validationObserver_ = this.adapter_.registerValidationAttributeChangeHandler(this.validationAttributeChangeHandler_);\n this.setCharacterCounter_(this.getValue().length);\n };\n MDCTextFieldFoundation.prototype.destroy = function () {\n var _this = this;\n this.adapter_.deregisterInputInteractionHandler('focus', this.inputFocusHandler_);\n this.adapter_.deregisterInputInteractionHandler('blur', this.inputBlurHandler_);\n this.adapter_.deregisterInputInteractionHandler('input', this.inputInputHandler_);\n POINTERDOWN_EVENTS.forEach(function (evtType) {\n _this.adapter_.deregisterInputInteractionHandler(evtType, _this.setPointerXOffset_);\n });\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.adapter_.deregisterTextFieldInteractionHandler(evtType, _this.textFieldInteractionHandler_);\n });\n this.adapter_.deregisterValidationAttributeChangeHandler(this.validationObserver_);\n };\n /**\n * Handles user interactions with the Text Field.\n */\n MDCTextFieldFoundation.prototype.handleTextFieldInteraction = function () {\n var nativeInput = this.adapter_.getNativeInput();\n if (nativeInput && nativeInput.disabled) {\n return;\n }\n this.receivedUserInput_ = true;\n };\n /**\n * Handles validation attribute changes\n */\n MDCTextFieldFoundation.prototype.handleValidationAttributeChange = function (attributesList) {\n var _this = this;\n attributesList.some(function (attributeName) {\n if (constants_1.VALIDATION_ATTR_WHITELIST.indexOf(attributeName) > -1) {\n _this.styleValidity_(true);\n return true;\n }\n return false;\n });\n if (attributesList.indexOf('maxlength') > -1) {\n this.setCharacterCounter_(this.getValue().length);\n }\n };\n /**\n * Opens/closes the notched outline.\n */\n MDCTextFieldFoundation.prototype.notchOutline = function (openNotch) {\n if (!this.adapter_.hasOutline()) {\n return;\n }\n if (openNotch) {\n var isDense = this.adapter_.hasClass(constants_1.cssClasses.DENSE);\n var labelScale = isDense ? constants_1.numbers.DENSE_LABEL_SCALE : constants_1.numbers.LABEL_SCALE;\n var labelWidth = this.adapter_.getLabelWidth() * labelScale;\n this.adapter_.notchOutline(labelWidth);\n } else {\n this.adapter_.closeOutline();\n }\n };\n /**\n * Activates the text field focus state.\n */\n MDCTextFieldFoundation.prototype.activateFocus = function () {\n this.isFocused_ = true;\n this.styleFocused_(this.isFocused_);\n this.adapter_.activateLineRipple();\n if (this.adapter_.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter_.floatLabel(this.shouldFloat);\n this.adapter_.shakeLabel(this.shouldShake);\n }\n if (this.helperText_) {\n this.helperText_.showToScreenReader();\n }\n };\n /**\n * Sets the line ripple's transform origin, so that the line ripple activate\n * animation will animate out from the user's click location.\n */\n MDCTextFieldFoundation.prototype.setTransformOrigin = function (evt) {\n var touches = evt.touches;\n var targetEvent = touches ? touches[0] : evt;\n var targetClientRect = targetEvent.target.getBoundingClientRect();\n var normalizedX = targetEvent.clientX - targetClientRect.left;\n this.adapter_.setLineRippleTransformOrigin(normalizedX);\n };\n /**\n * Handles input change of text input and text area.\n */\n MDCTextFieldFoundation.prototype.handleInput = function () {\n this.autoCompleteFocus();\n this.setCharacterCounter_(this.getValue().length);\n };\n /**\n * Activates the Text Field's focus state in cases when the input value\n * changes without user input (e.g. programmatically).\n */\n MDCTextFieldFoundation.prototype.autoCompleteFocus = function () {\n if (!this.receivedUserInput_) {\n this.activateFocus();\n }\n };\n /**\n * Deactivates the Text Field's focus state.\n */\n MDCTextFieldFoundation.prototype.deactivateFocus = function () {\n this.isFocused_ = false;\n this.adapter_.deactivateLineRipple();\n var isValid = this.isValid();\n this.styleValidity_(isValid);\n this.styleFocused_(this.isFocused_);\n if (this.adapter_.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter_.floatLabel(this.shouldFloat);\n this.adapter_.shakeLabel(this.shouldShake);\n }\n if (!this.shouldFloat) {\n this.receivedUserInput_ = false;\n }\n };\n MDCTextFieldFoundation.prototype.getValue = function () {\n return this.getNativeInput_().value;\n };\n /**\n * @param value The value to set on the input Element.\n */\n MDCTextFieldFoundation.prototype.setValue = function (value) {\n // Prevent Safari from moving the caret to the end of the input when the value has not changed.\n if (this.getValue() !== value) {\n this.getNativeInput_().value = value;\n }\n this.setCharacterCounter_(value.length);\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/* 72 */\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__(24);\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<MDCFooAdapter>.\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/* 73 */\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__(74);\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<MDCFooAdapter>.\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/* 74 */\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__(154);\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, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\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/* 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__(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/* 76 */\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__(7);\nvar foundation_1 = __webpack_require__(25);\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/* 77 */\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__(7);\nvar foundation_1 = __webpack_require__(26);\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/* 78 */\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__(79));\nexports.autoInit = index_1.default;\nvar base = __importStar(__webpack_require__(80));\nexports.base = base;\nvar checkbox = __importStar(__webpack_require__(81));\nexports.checkbox = checkbox;\nvar chips = __importStar(__webpack_require__(85));\nexports.chips = chips;\nvar dialog = __importStar(__webpack_require__(90));\nexports.dialog = dialog;\nvar dom = __importStar(__webpack_require__(96));\nexports.dom = dom;\nvar drawer = __importStar(__webpack_require__(97));\nexports.drawer = drawer;\nvar floatingLabel = __importStar(__webpack_require__(102));\nexports.floatingLabel = floatingLabel;\nvar formField = __importStar(__webpack_require__(104));\nexports.formField = formField;\nvar gridList = __importStar(__webpack_require__(107));\nexports.gridList = gridList;\nvar iconButton = __importStar(__webpack_require__(110));\nexports.iconButton = iconButton;\nvar lineRipple = __importStar(__webpack_require__(113));\nexports.lineRipple = lineRipple;\nvar linearProgress = __importStar(__webpack_require__(115));\nexports.linearProgress = linearProgress;\nvar list = __importStar(__webpack_require__(118));\nexports.list = list;\nvar menuSurface = __importStar(__webpack_require__(119));\nexports.menuSurface = menuSurface;\nvar menu = __importStar(__webpack_require__(120));\nexports.menu = menu;\nvar notchedOutline = __importStar(__webpack_require__(121));\nexports.notchedOutline = notchedOutline;\nvar radio = __importStar(__webpack_require__(122));\nexports.radio = radio;\nvar ripple = __importStar(__webpack_require__(125));\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__(147));\nexports.tabIndicator = tabIndicator;\nvar tabScroller = __importStar(__webpack_require__(148));\nexports.tabScroller = tabScroller;\nvar tab = __importStar(__webpack_require__(149));\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/* 79 */\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/* 80 */\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/* 81 */\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__(82));\n__export(__webpack_require__(27));\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 __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 ponyfill_1 = __webpack_require__(3);\nvar component_2 = __webpack_require__(2);\nvar foundation_1 = __webpack_require__(4);\nvar foundation_2 = __webpack_require__(27);\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<MDCFooAdapter>.\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_2.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<MDCFooAdapter>.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = __assign({}, component_2.MDCRipple.createAdapter(this), { deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return _this.nativeControl_.removeEventListener(evtType, handler);\n }, isSurfaceActive: function isSurfaceActive() {\n return ponyfill_1.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 component_2.MDCRipple(this.root_, new foundation_1.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_2.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/* 83 */\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/* 84 */\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 BACKGROUND: 'mdc-checkbox__background',\n CHECKED: 'mdc-checkbox--checked',\n CHECKMARK: 'mdc-checkbox__checkmark',\n CHECKMARK_PATH: 'mdc-checkbox__checkmark-path',\n DISABLED: 'mdc-checkbox--disabled',\n INDETERMINATE: 'mdc-checkbox--indeterminate',\n MIXEDMARK: 'mdc-checkbox__mixedmark',\n NATIVE_CONTROL: 'mdc-checkbox__native-control',\n ROOT: 'mdc-checkbox',\n SELECTED: 'mdc-checkbox--selected',\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/* 85 */\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__(86));\n__export(__webpack_require__(87));\n\n/***/ }),\n/* 86 */\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__(28));\n__export(__webpack_require__(12));\n\n/***/ }),\n/* 87 */\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__(88));\n__export(__webpack_require__(30));\n\n/***/ }),\n/* 88 */\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 component_2 = __webpack_require__(28);\nvar foundation_1 = __webpack_require__(12);\nvar foundation_2 = __webpack_require__(30);\nvar _a = foundation_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_2.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 component_2.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<MDCFooAdapter>.\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_2.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/* 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\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/* 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}\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__(94));\n__export(__webpack_require__(32));\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar tabbable = __webpack_require__(92);\nvar xtend = __webpack_require__(93);\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 updateTabbableNodes();\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 // 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, {\n capture: true,\n passive: false\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkKey, {\n capture: true,\n passive: false\n });\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/* 92 */\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 regularTabbables = [];\n var orderedTabbables = [];\n\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)) 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) {\n if (\n !isNodeMatchingSelectorFocusable(node)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node);\n}\n\nfunction isNodeMatchingSelectorFocusable(node) {\n if (\n node.disabled\n || isHiddenInput(node)\n || isHidden(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node);\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\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\nfunction isHidden(node) {\n // offsetParent being null will allow detecting cases where an element is invisible or inside an invisible element,\n // as long as the element does not use position: fixed. For them, their visibility has to be checked directly as well.\n return node.offsetParent === null || getComputedStyle(node).visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\n\n\n/***/ }),\n/* 93 */\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/* 94 */\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__(3);\nvar component_2 = __webpack_require__(2);\nvar foundation_1 = __webpack_require__(32);\nvar util = __importStar(__webpack_require__(31));\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<MDCFooAdapter>.\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/* 95 */\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/* 96 */\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__(3));\nexports.ponyfill = ponyfill;\n\n/***/ }),\n/* 97 */\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__(33));\nexports.util = util;\n__export(__webpack_require__(100));\n__export(__webpack_require__(14));\n__export(__webpack_require__(36));\n\n/***/ }),\n/* 98 */\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 regularTabbables = [];\n var orderedTabbables = [];\n\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)) 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) {\n if (\n !isNodeMatchingSelectorFocusable(node)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node);\n}\n\nfunction isNodeMatchingSelectorFocusable(node) {\n if (\n node.disabled\n || isHiddenInput(node)\n || isHidden(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node);\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\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\nfunction isHidden(node) {\n // offsetParent being null will allow detecting cases where an element is invisible or inside an invisible element,\n // as long as the element does not use position: fixed. For them, their visibility has to be checked directly as well.\n return node.offsetParent === null || getComputedStyle(node).visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\n\n\n/***/ }),\n/* 99 */\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/* 100 */\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__(13);\nvar foundation_1 = __webpack_require__(5);\nvar focus_trap_1 = __importDefault(__webpack_require__(34));\nvar foundation_2 = __webpack_require__(14);\nvar foundation_3 = __webpack_require__(36);\nvar util = __importStar(__webpack_require__(33));\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<MDCFooAdapter>.\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/* 101 */\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/* 102 */\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__(15));\n__export(__webpack_require__(16));\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 });\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/* 104 */\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__(105));\n__export(__webpack_require__(37));\n\n/***/ }),\n/* 105 */\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__(37);\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<MDCFooAdapter>.\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/* 106 */\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/* 107 */\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__(108));\n__export(__webpack_require__(38));\n\n/***/ }),\n/* 108 */\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__(38);\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<MDCFooAdapter>.\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/* 109 */\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/* 110 */\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__(111));\n__export(__webpack_require__(39));\n\n/***/ }),\n/* 111 */\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__(2);\nvar foundation_1 = __webpack_require__(39);\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<MDCFooAdapter>.\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/* 112 */\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/* 113 */\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__(17));\n__export(__webpack_require__(40));\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 });\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/* 115 */\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__(116));\n__export(__webpack_require__(41));\n\n/***/ }),\n/* 116 */\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__(41);\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<MDCFooAdapter>.\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/* 117 */\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/* 118 */\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__(13));\n__export(__webpack_require__(5));\n\n/***/ }),\n/* 119 */\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__(42));\nexports.util = util;\nvar constants_1 = __webpack_require__(6);\nexports.Corner = constants_1.Corner;\nexports.CornerBit = constants_1.CornerBit;\n__export(__webpack_require__(43));\n__export(__webpack_require__(8));\n\n/***/ }),\n/* 120 */\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__(6); // for backward compatibility\nexports.Corner = constants_1.Corner;\n__export(__webpack_require__(44));\n__export(__webpack_require__(45));\n\n/***/ }),\n/* 121 */\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__(19));\n__export(__webpack_require__(47));\n\n/***/ }),\n/* 122 */\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__(123));\n__export(__webpack_require__(48));\n\n/***/ }),\n/* 123 */\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 component_2 = __webpack_require__(2);\nvar foundation_1 = __webpack_require__(4);\nvar foundation_2 = __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<MDCFooAdapter>.\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_2.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<MDCFooAdapter>.\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), { 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 component_2.MDCRipple(this.root_, new foundation_1.MDCRippleFoundation(adapter));\n };\n Object.defineProperty(MDCRadio.prototype, \"nativeControl_\", {\n get: function get() {\n var NATIVE_CONTROL_SELECTOR = foundation_2.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/* 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\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/* 125 */\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__(11));\nexports.util = util;\n__export(__webpack_require__(2));\n__export(__webpack_require__(4));\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__(130));\n__export(__webpack_require__(131));\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 component_2 = __webpack_require__(15);\nvar component_3 = __webpack_require__(17);\nvar menuSurfaceConstants = __importStar(__webpack_require__(6));\nvar component_4 = __webpack_require__(44);\nvar menuConstants = __importStar(__webpack_require__(18));\nvar component_5 = __webpack_require__(19);\nvar component_6 = __webpack_require__(2);\nvar foundation_1 = __webpack_require__(4);\nvar constants_1 = __webpack_require__(49);\nvar foundation_2 = __webpack_require__(50);\nvar component_7 = __webpack_require__(51);\nvar component_8 = __webpack_require__(53);\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 component_2.MDCFloatingLabel(el);\n };\n }\n if (lineRippleFactory === void 0) {\n lineRippleFactory = function lineRippleFactory(el) {\n return new component_3.MDCLineRipple(el);\n };\n }\n if (outlineFactory === void 0) {\n outlineFactory = function outlineFactory(el) {\n return new component_5.MDCNotchedOutline(el);\n };\n }\n if (menuFactory === void 0) {\n menuFactory = function menuFactory(el) {\n return new component_4.MDCMenu(el);\n };\n }\n if (iconFactory === void 0) {\n iconFactory = function iconFactory(el) {\n return new component_8.MDCSelectIcon(el);\n };\n }\n if (helperTextFactory === void 0) {\n helperTextFactory = function helperTextFactory(el) {\n return new component_7.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 if (_this.menu_.items.length === 0) {\n return;\n }\n // Menu should open to the last selected element, should open to first menu item otherwise.\n var focusItemIndex = _this.selectedIndex >= 0 ? _this.selectedIndex : 0;\n var focusItemEl = _this.menu_.items[focusItemIndex];\n focusItemEl.focus();\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 this.targetElement_.addEventListener('click', this.handleClick_);\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 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 this.targetElement_.removeEventListener('click', this.handleClick_);\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<MDCFooAdapter>.\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_2.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<MDCFooAdapter>.\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_6.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 component_6.MDCRipple(this.root_, new foundation_1.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\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/* 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 ICON_EVENT: 'MDCSelect:icon',\n ICON_ROLE: 'button'\n};\nexports.strings = strings;\n\n/***/ }),\n/* 130 */\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__(51));\n__export(__webpack_require__(52));\n\n/***/ }),\n/* 131 */\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__(53));\n__export(__webpack_require__(54));\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<MDCFooAdapter>.\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 ponyfill_1 = __webpack_require__(3);\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<MDCFooAdapter>.\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(ponyfill_1.closest(target, ACTION_SELECTOR));\n };\n MDCSnackbar.prototype.isActionIcon_ = function (target) {\n return Boolean(ponyfill_1.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 ponyfill_1 = __webpack_require__(3);\nvar component_2 = __webpack_require__(2);\nvar foundation_1 = __webpack_require__(4);\nvar foundation_2 = __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<MDCFooAdapter>.\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_2.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_2.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<MDCFooAdapter>.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = __assign({}, component_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 ponyfill_1.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 component_2.MDCRipple(this.root_, new foundation_1.MDCRippleFoundation(adapter));\n };\n Object.defineProperty(MDCSwitch.prototype, \"nativeControl_\", {\n get: function get() {\n var NATIVE_CONTROL_SELECTOR = foundation_2.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__(68));\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 component_2 = __webpack_require__(60);\nvar component_3 = __webpack_require__(64);\nvar foundation_1 = __webpack_require__(22);\nvar foundation_2 = __webpack_require__(68);\nvar strings = foundation_2.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 component_3.MDCTab(el);\n };\n }\n if (tabScrollerFactory === void 0) {\n tabScrollerFactory = function tabScrollerFactory(el) {\n return new component_2.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(foundation_1.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(foundation_1.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<MDCFooAdapter>.\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_2.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}();\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/* 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 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/* 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 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/* 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\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/* 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\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/* 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\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/* 147 */\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__(65));\n__export(__webpack_require__(9));\n__export(__webpack_require__(66));\n__export(__webpack_require__(67));\n\n/***/ }),\n/* 148 */\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__(63));\nexports.util = util;\n__export(__webpack_require__(60));\n__export(__webpack_require__(61));\n\n/***/ }),\n/* 149 */\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__(64));\n__export(__webpack_require__(22));\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__(71));\n__export(__webpack_require__(155));\n__export(__webpack_require__(156));\n__export(__webpack_require__(157));\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__(3));\nvar component_2 = __webpack_require__(15);\nvar component_3 = __webpack_require__(17);\nvar component_4 = __webpack_require__(19);\nvar component_5 = __webpack_require__(2);\nvar foundation_1 = __webpack_require__(4);\nvar component_6 = __webpack_require__(69);\nvar foundation_2 = __webpack_require__(23);\nvar constants_1 = __webpack_require__(70);\nvar foundation_3 = __webpack_require__(71);\nvar component_7 = __webpack_require__(72);\nvar foundation_4 = __webpack_require__(24);\nvar component_8 = __webpack_require__(73);\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_5.MDCRipple(el, foundation);\n };\n }\n if (lineRippleFactory === void 0) {\n lineRippleFactory = function lineRippleFactory(el) {\n return new component_3.MDCLineRipple(el);\n };\n }\n if (helperTextFactory === void 0) {\n helperTextFactory = function helperTextFactory(el) {\n return new component_7.MDCTextFieldHelperText(el);\n };\n }\n if (characterCounterFactory === void 0) {\n characterCounterFactory = function characterCounterFactory(el) {\n return new component_6.MDCTextFieldCharacterCounter(el);\n };\n }\n if (iconFactory === void 0) {\n iconFactory = function iconFactory(el) {\n return new component_8.MDCTextFieldIcon(el);\n };\n }\n if (labelFactory === void 0) {\n labelFactory = function labelFactory(el) {\n return new component_2.MDCFloatingLabel(el);\n };\n }\n if (outlineFactory === void 0) {\n outlineFactory = function outlineFactory(el) {\n return new component_4.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 = foundation_4.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 = foundation_2.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<MDCFooAdapter>.\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_3.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<MDCFooAdapter>.\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_5.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\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/* 153 */\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/* 154 */\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;\nvar cssClasses = {\n ROOT: 'mdc-text-field__icon'\n};\nexports.cssClasses = cssClasses;\n\n/***/ }),\n/* 155 */\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__(69));\n__export(__webpack_require__(23));\n\n/***/ }),\n/* 156 */\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__(72));\n__export(__webpack_require__(24));\n\n/***/ }),\n/* 157 */\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__(73));\n__export(__webpack_require__(74));\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__(75));\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__(2);\nvar foundation_1 = __webpack_require__(75);\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<MDCFooAdapter>.\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__(26));\n__export(__webpack_require__(76));\n__export(__webpack_require__(77));\n__export(__webpack_require__(25));\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__(2);\nvar constants_1 = __webpack_require__(7);\nvar foundation_1 = __webpack_require__(76);\nvar foundation_2 = __webpack_require__(77);\nvar foundation_3 = __webpack_require__(25);\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<MDCFooAdapter>.\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 = 78);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 5759e1d18f415f982a34","/**\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<AdapterType extends {} = {}> {\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<FoundationType extends MDCFoundation> {\n static attachTo(root: Element): MDCComponent<MDCFoundation<{}>> {\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<unknown>\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<unknown>) {\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<K extends EventType>(evtType: K, handler: SpecificEventListener<K>): void;\n listen<E extends Event>(evtType: string, handler: CustomEventListener<E>): 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<K extends EventType>(evtType: K, handler: SpecificEventListener<K>): void;\n unlisten<E extends Event>(evtType: string, handler: CustomEventListener<E>): 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<T extends object>(evtType: string, evtData: T, shouldBubble = false) {\n let evt: CustomEvent<T>;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent<T>(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 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 {matches} from '@material/dom/ponyfill';\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<MDCRippleFoundation> 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: () => 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\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 */\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<EventTarget | null> = [];\n\nexport class MDCRippleFoundation extends MDCFoundation<MDCRippleAdapter> {\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<MDCRippleAdapter>) {\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<keyof typeof rippleStrings>;\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 {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<MDCListAdapter> {\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 isRootFocused: () => 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<MDCListAdapter>) {\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 isArrowLeft = evt.key === 'ArrowLeft' || evt.keyCode === 37;\n const isArrowUp = evt.key === 'ArrowUp' || evt.keyCode === 38;\n const isArrowRight = evt.key === 'ArrowRight' || evt.keyCode === 39;\n const isArrowDown = 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 if (this.adapter_.isRootFocused()) {\n if (isArrowUp || isEnd) {\n evt.preventDefault();\n this.focusLastElement();\n } else if (isArrowDown || isHome) {\n evt.preventDefault();\n this.focusFirstElement();\n }\n\n return;\n }\n\n let currentIndex = this.adapter_.getFocusedElementIndex();\n if (currentIndex === -1) {\n currentIndex = listItemIndex;\n if (currentIndex < 0) {\n // If this event doesn't have a mdc-list-item ancestor from the\n // current list (not from a sublist), return early.\n return;\n }\n }\n\n let nextIndex;\n if ((this.isVertical_ && isArrowDown) || (!this.isVertical_ && isArrowRight)) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusNextElement(currentIndex);\n } else if ((this.isVertical_ && isArrowUp) || (!this.isVertical_ && isArrowLeft)) {\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 !== undefined) {\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\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 {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<MDCMenuSurfaceAdapter> {\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<MDCMenuSurfaceAdapter>) {\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<MDCMenuDistance>) {\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<MDCMenuDistance> = {\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<MDCMenuDistance>) {\n const {windowScroll, viewportDistance} = this.measurements_;\n\n const props = Object.keys(position) as Array<keyof Partial<MDCMenuDistance>>;\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<MDCTabIndicatorAdapter> {\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<MDCTabIndicatorAdapter>) {\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 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 if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\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 {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<MDCChipAdapter> {\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<MDCChipAdapter>) {\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 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 {closest, matches} from '@material/dom/ponyfill';\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<MDCListFoundation> {\n set vertical(value: boolean) {\n this.foundation_.setVerticalOrientation(value);\n }\n\n get listElements(): Element[] {\n return [].slice.call(this.root_.querySelectorAll(`.${cssClasses.LIST_ITEM_CLASS}`));\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<MDCFooAdapter>.\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<HTMLInputElement>(strings.CHECKBOX_SELECTOR);\n return toggleEl!.checked;\n },\n isFocusInsideList: () => {\n return this.root_.contains(document.activeElement);\n },\n isRootFocused: () => document.activeElement === this.root_,\n notifyAction: (index) => {\n this.emit<MDCListActionEventDetail>(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<HTMLInputElement>(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 = 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 && 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 this.foundation_.handleKeydown(evt, target.classList.contains(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 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 = !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\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCDrawerAdapter} from '../adapter';\nimport {cssClasses, strings} from '../constants';\n\nexport class MDCDismissibleDrawerFoundation extends MDCFoundation<MDCDrawerAdapter> {\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<MDCDrawerAdapter>) {\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 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<MDCFloatingLabelFoundation> {\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<MDCFooAdapter>.\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\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<MDCFloatingLabelAdapter> {\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<MDCFloatingLabelAdapter>) {\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 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<MDCLineRippleFoundation> {\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<MDCFooAdapter>.\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 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\nconst numbers = {\n FOCUS_ROOT_INDEX: -1,\n};\n\nenum DefaultFocusState {\n NONE = 0,\n LIST_ROOT = 1,\n FIRST_ITEM = 2,\n LAST_ITEM = 3,\n}\n\nexport {cssClasses, strings, numbers, DefaultFocusState};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu/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 {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<MDCNotchedOutlineFoundation> {\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<HTMLElement>(strings.NOTCH_ELEMENT_SELECTOR)!;\n\n const label = this.root_.querySelector<HTMLElement>('.' + 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<MDCFooAdapter>.\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 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 {MDCFoundation} from '@material/base/foundation';\nimport {MDCTabAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\nimport {MDCTabDimensions} from './types';\n\nexport class MDCTabFoundation extends MDCFoundation<MDCTabAdapter> {\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<MDCTabAdapter>) {\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 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<MDCTextFieldCharacterCounterAdapter> {\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<MDCTextFieldCharacterCounterAdapter>) {\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 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<MDCTextFieldHelperTextAdapter> {\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<MDCTextFieldHelperTextAdapter>) {\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 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<MDCTopAppBarAdapter>) {\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<MDCTopAppBarAdapter> {\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<MDCTopAppBarAdapter>) {\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<MDCCheckboxAdapter> {\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<MDCCheckboxAdapter>) {\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 const {TRANSITION_STATE_UNCHECKED} = strings;\n const {SELECTED} = cssClasses;\n if (newState === TRANSITION_STATE_UNCHECKED) {\n this.adapter_.removeClass(SELECTED);\n } else {\n this.adapter_.addClass(SELECTED);\n }\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 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 {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 {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<MDCChipFoundation> 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<InteractionType>; // assigned in initialSyncWithDOM()\n private handleTransitionEnd_!: SpecificEventListener<'transitionend'>; // assigned in initialSyncWithDOM()\n private handleTrailingIconInteraction_!: SpecificEventListener<InteractionType>; // 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<MDCFooAdapter>.\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<MDCFooAdapter>.\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<MDCChipInteractionEventDetail>(\n strings.INTERACTION_EVENT, {chipId: this.id}, true /* shouldBubble */),\n notifyRemoval: () => this.emit<MDCChipRemovalEventDetail>(\n strings.REMOVAL_EVENT, {chipId: this.id, root: this.root_}, true /* shouldBubble */),\n notifySelection: (selected) => this.emit<MDCChipSelectionEventDetail>(\n strings.SELECTION_EVENT, {chipId: this.id, selected}, true /* shouldBubble */),\n notifyTrailingIconInteraction: () => this.emit<MDCChipInteractionEventDetail>(\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 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 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<MDCChipSetAdapter> {\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<MDCChipSetAdapter>) {\n super({...MDCChipSetFoundation.defaultAdapter, ...adapter});\n }\n\n /**\n * Returns an array of the IDs of all selected chips.\n */\n getSelectedChipIds(): ReadonlyArray<string> {\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<MDCDialogAdapter> {\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<MDCDialogAdapter>) {\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 updateTabbableNodes();\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 // 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, {\n capture: true,\n passive: false\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkKey, {\n capture: true,\n passive: false\n });\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 = 34\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\nconst cssClasses = {\n LIST_ITEM_ACTIVATED_CLASS: 'mdc-list-item--activated',\n LIST_ITEM_CLASS: 'mdc-list-item',\n LIST_ITEM_DISABLED_CLASS: 'mdc-list-item--disabled',\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 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<MDCFormFieldAdapter> {\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<MDCFormFieldAdapter>) {\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<MDCGridListAdapter> {\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<MDCGridListAdapter>) {\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<MDCIconButtonToggleAdapter> {\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<MDCIconButtonToggleAdapter>) {\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<MDCLineRippleAdapter> {\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<MDCLineRippleAdapter>) {\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<MDCLinearProgressAdapter> {\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<MDCLinearProgressAdapter>) {\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 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 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<MDCMenuSurfaceFoundation> {\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<HTMLElement | SVGElement>(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<MDCMenuDistance>) {\n this.foundation_.setAnchorMargin(margin);\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.\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, MDCListFactory} from '@material/list/component';\nimport {MDCListFoundation} from '@material/list/foundation';\nimport {MDCListActionEvent} from '@material/list/types';\nimport {MDCMenuSurface, MDCMenuSurfaceFactory} from '@material/menu-surface/component';\nimport {Corner} from '@material/menu-surface/constants';\nimport {MDCMenuSurfaceFoundation} from '@material/menu-surface/foundation';\nimport {MDCMenuDistance} from '@material/menu-surface/types';\nimport {MDCMenuAdapter} from './adapter';\nimport {cssClasses, DefaultFocusState, 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<MDCMenuFoundation> {\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<MDCListActionEvent>; // assigned in initialSyncWithDOM()\n private handleMenuSurfaceOpened_!: 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.handleMenuSurfaceOpened_ = () => this.foundation_.handleMenuSurfaceOpened();\n\n this.menuSurface_.listen(MDCMenuSurfaceFoundation.strings.OPENED_EVENT, this.handleMenuSurfaceOpened_);\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.handleMenuSurfaceOpened_);\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 * Sets default focus state where the menu should focus every time when menu\n * is opened. Focuses the list root (`DefaultFocusState.LIST_ROOT`) element by\n * default.\n * @param focusState Default focus state.\n */\n setDefaultFocusState(focusState: DefaultFocusState) {\n this.foundation_.setDefaultFocusState(focusState);\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<MDCMenuDistance>) {\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<MDCFooAdapter>.\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<MDCMenuItemComponentEventDetail>(strings.SELECTED_EVENT, {\n index: evtData.index,\n item: this.items[evtData.index],\n }),\n getMenuItemCount: () => this.items.length,\n focusItemAtIndex: (index) => (this.items[index] as HTMLElement).focus(),\n focusListRoot: () => (this.root_.querySelector(strings.LIST_SELECTOR) as HTMLElement).focus(),\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCMenuFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu/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 {MDCFoundation} from '@material/base/foundation';\nimport {MDCListFoundation} from '@material/list/foundation';\nimport {MDCMenuSurfaceFoundation} from '@material/menu-surface/foundation';\nimport {MDCMenuAdapter} from './adapter';\nimport {cssClasses, DefaultFocusState, numbers, strings} from './constants';\n\nexport class MDCMenuFoundation extends MDCFoundation<MDCMenuAdapter> {\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 closeAnimationEndTimerId_ = 0;\n private defaultFocusState_ = DefaultFocusState.LIST_ROOT;\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 getMenuItemCount: () => 0,\n focusItemAtIndex: () => undefined,\n focusListRoot: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n constructor(adapter?: Partial<MDCMenuAdapter>) {\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 handleMenuSurfaceOpened() {\n switch (this.defaultFocusState_) {\n case DefaultFocusState.FIRST_ITEM:\n this.adapter_.focusItemAtIndex(0);\n break;\n case DefaultFocusState.LAST_ITEM:\n this.adapter_.focusItemAtIndex(this.adapter_.getMenuItemCount() - 1);\n break;\n case DefaultFocusState.NONE:\n // Do nothing.\n break;\n default:\n this.adapter_.focusListRoot();\n break;\n }\n }\n\n /**\n * Sets default focus state where the menu should focus every time when menu\n * is opened. Focuses the list root (`DefaultFocusState.LIST_ROOT`) element by\n * default.\n */\n setDefaultFocusState(focusState: DefaultFocusState) {\n this.defaultFocusState_ = focusState;\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<MDCNotchedOutlineAdapter> {\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<MDCNotchedOutlineAdapter>) {\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<MDCRadioAdapter> {\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<MDCRadioAdapter>) {\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<MDCSelectAdapter> {\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<MDCSelectAdapter>, foundationMap: Partial<MDCSelectFoundationMap> = {}) {\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 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<MDCSelectHelperTextFoundation> {\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<MDCFooAdapter>.\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\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCSelectHelperTextAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport class MDCSelectHelperTextFoundation extends MDCFoundation<MDCSelectHelperTextAdapter> {\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<MDCSelectHelperTextAdapter>) {\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 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<MDCSelectIconFoundation> {\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<MDCFooAdapter>.\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\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<MDCSelectIconAdapter> {\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<InteractionEventType>;\n\n constructor(adapter?: Partial<MDCSelectIconAdapter>) {\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<MDCSliderAdapter> {\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<DownEventType>;\n private readonly interactionStartHandler_: SpecificEventListener<DownEventType>;\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<MDCSliderAdapter>) {\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 `&nbsp;` (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 = '&nbsp;'` is required for Chrome + JAWS and NVDA\n //\n // All other browser/screen reader combinations support both methods.\n //\n // The wrapper `<span>` 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 = '<span style=\"display: inline-block; width: 0; height: 1px;\">&nbsp;</span>';\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<MDCSnackbarAdapter> {\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<MDCSnackbarAdapter>) {\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<MDCSwitchAdapter> {\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<MDCSwitchAdapter>) {\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 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 {matches} from '@material/dom/ponyfill';\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<MDCTabScrollerFoundation> {\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<InteractionEventType>; // assigned in initialSyncWithDOM()\n private handleTransitionEnd_!: SpecificEventListener<'transitionend'>; // assigned in initialSyncWithDOM()\n\n initialize() {\n this.area_ = this.root_.querySelector<HTMLElement>(MDCTabScrollerFoundation.strings.AREA_SELECTOR)!;\n this.content_ = this.root_.querySelector<HTMLElement>(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<MDCFooAdapter>.\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) => 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 {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<MDCTabScrollerAdapter> {\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<MDCTabScrollerAdapter>) {\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 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 {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\nimport {MDCComponent} from '@material/base/component';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCRipple, MDCRippleFactory} from '@material/ripple/component';\nimport {MDCRippleFoundation} from '@material/ripple/foundation';\nimport {MDCRippleCapableSurface} from '@material/ripple/types';\nimport {MDCTabIndicator, MDCTabIndicatorFactory} from '@material/tab-indicator/component';\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<MDCTabFoundation> 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<HTMLElement>(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<HTMLElement>(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<MDCFooAdapter>.\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<MDCTabInteractionEventDetail>(\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<MDCTabIndicatorFoundation> {\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<HTMLElement>(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<MDCFooAdapter>.\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\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 {MDCTabDimensions, MDCTabInteractionEvent} from '@material/tab/types';\nimport {MDCTabBarAdapter} from './adapter';\nimport {numbers, strings} from './constants';\n\nconst ACCEPTABLE_KEYS = new Set<string>();\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<number, string>();\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<MDCTabBarAdapter> {\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<MDCTabBarAdapter>) {\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 let previousClientRect;\n if (previousActiveIndex !== -1) {\n this.adapter_.deactivateTabAtIndex(previousActiveIndex);\n previousClientRect = this.adapter_.getTabIndicatorClientRectAtIndex(previousActiveIndex);\n }\n\n this.adapter_.activateTabAtIndex(index, previousClientRect);\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\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<MDCTextFieldCharacterCounterFoundation> {\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<MDCFooAdapter>.\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 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 FULLWIDTH: 'mdc-text-field--fullwidth',\n HELPER_LINE: 'mdc-text-field-helper-line',\n INVALID: 'mdc-text-field--invalid',\n NO_LABEL: 'mdc-text-field--no-label',\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 WITH_TRAILING_ICON: 'mdc-text-field--with-trailing-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<MDCTextFieldAdapter> {\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<PointerDownEventType>;\n private readonly textFieldInteractionHandler_: SpecificEventListener<InteractionEventType>;\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<MDCTextFieldAdapter>, foundationMap: Partial<MDCTextFieldFoundationMap> = {}) {\n super({...MDCTextFieldFoundation.defaultAdapter, ...adapter});\n\n this.helperText_ = foundationMap.helperText;\n this.characterCounter_ = foundationMap.characterCounter;\n this.leadingIcon_ = foundationMap.leadingIcon;\n this.trailingIcon_ = foundationMap.trailingIcon;\n\n this.inputFocusHandler_ = () => this.activateFocus();\n this.inputBlurHandler_ = () => this.deactivateFocus();\n this.inputInputHandler_ = () => this.handleInput();\n this.setPointerXOffset_ = (evt) => this.setTransformOrigin(evt);\n this.textFieldInteractionHandler_ = () => this.handleTextFieldInteraction();\n this.validationAttributeChangeHandler_ = (attributesList) => this.handleValidationAttributeChange(attributesList);\n }\n\n init() {\n if (this.adapter_.isFocused()) {\n this.inputFocusHandler_();\n } else if (this.adapter_.hasLabel() && this.shouldFloat) {\n this.notchOutline(true);\n this.adapter_.floatLabel(true);\n }\n\n this.adapter_.registerInputInteractionHandler('focus', this.inputFocusHandler_);\n this.adapter_.registerInputInteractionHandler('blur', this.inputBlurHandler_);\n this.adapter_.registerInputInteractionHandler('input', this.inputInputHandler_);\n POINTERDOWN_EVENTS.forEach((evtType) => {\n this.adapter_.registerInputInteractionHandler(evtType, this.setPointerXOffset_);\n });\n INTERACTION_EVENTS.forEach((evtType) => {\n this.adapter_.registerTextFieldInteractionHandler(evtType, this.textFieldInteractionHandler_);\n });\n this.validationObserver_ =\n this.adapter_.registerValidationAttributeChangeHandler(this.validationAttributeChangeHandler_);\n this.setCharacterCounter_(this.getValue().length);\n }\n\n destroy() {\n this.adapter_.deregisterInputInteractionHandler('focus', this.inputFocusHandler_);\n this.adapter_.deregisterInputInteractionHandler('blur', this.inputBlurHandler_);\n this.adapter_.deregisterInputInteractionHandler('input', this.inputInputHandler_);\n POINTERDOWN_EVENTS.forEach((evtType) => {\n this.adapter_.deregisterInputInteractionHandler(evtType, this.setPointerXOffset_);\n });\n INTERACTION_EVENTS.forEach((evtType) => {\n this.adapter_.deregisterTextFieldInteractionHandler(evtType, this.textFieldInteractionHandler_);\n });\n this.adapter_.deregisterValidationAttributeChangeHandler(this.validationObserver_);\n }\n\n /**\n * Handles user interactions with the Text Field.\n */\n handleTextFieldInteraction() {\n const nativeInput = this.adapter_.getNativeInput();\n if (nativeInput && nativeInput.disabled) {\n return;\n }\n this.receivedUserInput_ = true;\n }\n\n /**\n * Handles validation attribute changes\n */\n handleValidationAttributeChange(attributesList: string[]): void {\n attributesList.some((attributeName) => {\n if (VALIDATION_ATTR_WHITELIST.indexOf(attributeName) > -1) {\n this.styleValidity_(true);\n return true;\n }\n return false;\n });\n\n if (attributesList.indexOf('maxlength') > -1) {\n this.setCharacterCounter_(this.getValue().length);\n }\n }\n\n /**\n * Opens/closes the notched outline.\n */\n notchOutline(openNotch: boolean) {\n if (!this.adapter_.hasOutline()) {\n return;\n }\n\n if (openNotch) {\n const isDense = this.adapter_.hasClass(cssClasses.DENSE);\n const labelScale = isDense ? numbers.DENSE_LABEL_SCALE : numbers.LABEL_SCALE;\n const labelWidth = this.adapter_.getLabelWidth() * labelScale;\n this.adapter_.notchOutline(labelWidth);\n } else {\n this.adapter_.closeOutline();\n }\n }\n\n /**\n * Activates the text field focus state.\n */\n activateFocus() {\n this.isFocused_ = true;\n this.styleFocused_(this.isFocused_);\n this.adapter_.activateLineRipple();\n if (this.adapter_.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter_.floatLabel(this.shouldFloat);\n this.adapter_.shakeLabel(this.shouldShake);\n }\n if (this.helperText_) {\n this.helperText_.showToScreenReader();\n }\n }\n\n /**\n * Sets the line ripple's transform origin, so that the line ripple activate\n * animation will animate out from the user's click location.\n */\n setTransformOrigin(evt: TouchEvent | MouseEvent): void {\n const touches = (evt as TouchEvent).touches;\n const targetEvent = touches ? touches[0] : evt;\n const targetClientRect = (targetEvent.target as Element).getBoundingClientRect();\n const normalizedX = (targetEvent as MouseEvent).clientX - targetClientRect.left;\n this.adapter_.setLineRippleTransformOrigin(normalizedX);\n }\n\n /**\n * Handles input change of text input and text area.\n */\n handleInput() {\n this.autoCompleteFocus();\n this.setCharacterCounter_(this.getValue().length);\n }\n\n /**\n * Activates the Text Field's focus state in cases when the input value\n * changes without user input (e.g. programmatically).\n */\n autoCompleteFocus() {\n if (!this.receivedUserInput_) {\n this.activateFocus();\n }\n }\n\n /**\n * Deactivates the Text Field's focus state.\n */\n deactivateFocus() {\n this.isFocused_ = false;\n this.adapter_.deactivateLineRipple();\n const isValid = this.isValid();\n this.styleValidity_(isValid);\n this.styleFocused_(this.isFocused_);\n if (this.adapter_.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter_.floatLabel(this.shouldFloat);\n this.adapter_.shakeLabel(this.shouldShake);\n }\n if (!this.shouldFloat) {\n this.receivedUserInput_ = false;\n }\n }\n\n getValue(): string {\n return this.getNativeInput_().value;\n }\n\n /**\n * @param value The value to set on the input Element.\n */\n setValue(value: string): void {\n // Prevent Safari from moving the caret to the end of the input when the value has not changed.\n if (this.getValue() !== value) {\n this.getNativeInput_().value = value;\n }\n this.setCharacterCounter_(value.length);\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 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<MDCTextFieldHelperTextFoundation> {\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<MDCFooAdapter>.\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 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<MDCTextFieldIconFoundation> {\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<MDCFooAdapter>.\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 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 {cssClasses, strings} from './constants';\n\ntype InteractionEventType = 'click' | 'keydown';\n\nconst INTERACTION_EVENTS: InteractionEventType[] = ['click', 'keydown'];\n\nexport class MDCTextFieldIconFoundation extends MDCFoundation<MDCTextFieldIconAdapter> {\n static get strings() {\n return strings;\n }\n\n static get cssClasses() {\n return cssClasses;\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<InteractionEventType>;\n\n constructor(adapter?: Partial<MDCTextFieldIconAdapter>) {\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<MDCToolbarAdapter> {\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<MDCToolbarAdapter>) {\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<MDCTopAppBarAdapter>) {\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<MDCTopAppBarAdapter>) {\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<F extends MDCFoundation>(root: Element, foundation?: F, ...args: Array<unknown>): MDCComponent<F>;\n\n // Static method.\n attachTo<F extends MDCFoundation>(root: Element): MDCComponent<F>;\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<T extends object>(evtType: string, evtData: T, shouldBubble = false) {\n let evt;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent<T>(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 {matches} from '@material/dom/ponyfill';\nimport {MDCRippleAdapter} from '@material/ripple/adapter';\nimport {MDCRipple} from '@material/ripple/component';\nimport {MDCRippleFoundation} from '@material/ripple/foundation';\nimport {MDCRippleCapableSurface} from '@material/ripple/types';\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<MDCCheckboxFoundation> 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<MDCFooAdapter>.\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<MDCFooAdapter>.\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: () => 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<HTMLInputElement>(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 BACKGROUND: 'mdc-checkbox__background',\n CHECKED: 'mdc-checkbox--checked',\n CHECKMARK: 'mdc-checkbox__checkmark',\n CHECKMARK_PATH: 'mdc-checkbox__checkmark-path',\n DISABLED: 'mdc-checkbox--disabled',\n INDETERMINATE: 'mdc-checkbox--indeterminate',\n MIXEDMARK: 'mdc-checkbox__mixedmark',\n NATIVE_CONTROL: 'mdc-checkbox__native-control',\n ROOT: 'mdc-checkbox',\n SELECTED: 'mdc-checkbox--selected',\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 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 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} from '../chip/component';\nimport {MDCChipFoundation} from '../chip/foundation';\nimport {MDCChipInteractionEvent, MDCChipRemovalEvent, MDCChipSelectionEvent} from '../chip/types';\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<MDCChipSetFoundation> {\n static attachTo(root: Element) {\n return new MDCChipSet(root);\n }\n\n get chips(): ReadonlyArray<MDCChip> {\n return this.chips_.slice();\n }\n\n /**\n * @return An array of the IDs of all selected chips.\n */\n get selectedChipIds(): ReadonlyArray<string> {\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<MDCFooAdapter>.\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 updateTabbableNodes();\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 // 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, {\n capture: true,\n passive: false\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkKey, {\n capture: true,\n passive: false\n });\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 = 91\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 regularTabbables = [];\n var orderedTabbables = [];\n\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)) 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) {\n if (\n !isNodeMatchingSelectorFocusable(node)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node);\n}\n\nfunction isNodeMatchingSelectorFocusable(node) {\n if (\n node.disabled\n || isHiddenInput(node)\n || isHidden(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node);\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\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\nfunction isHidden(node) {\n // offsetParent being null will allow detecting cases where an element is invisible or inside an invisible element,\n // as long as the element does not use position: fixed. For them, their visibility has to be checked directly as well.\n return node.offsetParent === null || getComputedStyle(node).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 = 92\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 = 93\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<MDCDialogFoundation> {\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<HTMLElement>(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<HTMLElement>(strings.CONTENT_SELECTOR);\n this.buttons_ = [].slice.call(this.root_.querySelectorAll<HTMLElement>(strings.BUTTON_SELECTOR));\n this.defaultButton_ = this.root_.querySelector<HTMLElement>(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<MDCFooAdapter>.\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<MDCDialogCloseEventDetail>(strings.CLOSED_EVENT, action ? {action} : {}),\n notifyClosing: (action) => this.emit<MDCDialogCloseEventDetail>(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 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 './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 regularTabbables = [];\n var orderedTabbables = [];\n\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)) 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) {\n if (\n !isNodeMatchingSelectorFocusable(node)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node);\n}\n\nfunction isNodeMatchingSelectorFocusable(node) {\n if (\n node.disabled\n || isHiddenInput(node)\n || isHidden(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node);\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\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\nfunction isHidden(node) {\n // offsetParent being null will allow detecting cases where an element is invisible or inside an invisible element,\n // as long as the element does not use position: fixed. For them, their visibility has to be checked directly as well.\n return node.offsetParent === null || getComputedStyle(node).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 = 98\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 = 99\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<MDCDismissibleDrawerFoundation> {\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<HTMLElement>(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<MDCFooAdapter>.\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<HTMLElement>(`.${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 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\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<MDCFormFieldFoundation> {\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<MDCFooAdapter>.\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<MDCGridListFoundation> {\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<MDCFooAdapter>.\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<HTMLElement>(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<HTMLElement>(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<MDCIconButtonToggleFoundation> {\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<MDCFooAdapter>.\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<MDCIconButtonToggleEventDetail>(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 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 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<MDCLinearProgressFoundation> {\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<MDCFooAdapter>.\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 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 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 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 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 {MDCRippleAdapter} from '@material/ripple/adapter';\nimport {MDCRipple} from '@material/ripple/component';\nimport {MDCRippleFoundation} from '@material/ripple/foundation';\nimport {MDCRippleCapableSurface} from '@material/ripple/types';\nimport {MDCRadioAdapter} from './adapter';\nimport {MDCRadioFoundation} from './foundation';\n\nexport class MDCRadio extends MDCComponent<MDCRadioFoundation> 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<MDCFooAdapter>.\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<MDCFooAdapter>.\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<HTMLInputElement>(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\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 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/component';\nimport {MDCLineRipple, MDCLineRippleFactory} from '@material/line-ripple/component';\nimport * as menuSurfaceConstants from '@material/menu-surface/constants';\nimport {MDCMenu, MDCMenuFactory} from '@material/menu/component';\nimport * as menuConstants from '@material/menu/constants';\nimport {MDCMenuItemEvent} from '@material/menu/types';\nimport {MDCNotchedOutline, MDCNotchedOutlineFactory} from '@material/notched-outline/component';\nimport {MDCRippleAdapter} from '@material/ripple/adapter';\nimport {MDCRipple} from '@material/ripple/component';\nimport {MDCRippleFoundation} from '@material/ripple/foundation';\nimport {MDCRippleCapableSurface} from '@material/ripple/types';\nimport {MDCSelectAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\nimport {MDCSelectFoundation} from './foundation';\nimport {MDCSelectHelperText, MDCSelectHelperTextFactory} from './helper-text/component';\nimport {MDCSelectIcon, MDCSelectIconFactory} from './icon/component';\nimport {MDCSelectEventDetail, MDCSelectFoundationMap} from './types';\n\nconst VALIDATION_ATTR_WHITELIST = ['required', 'aria-required'];\n\nexport class MDCSelect extends MDCComponent<MDCSelectFoundation> 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<'click'>; // 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<MDCMenuItemEvent>; // 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 if (this.menu_!.items.length === 0) {\n return;\n }\n\n // Menu should open to the last selected element, should open to first menu item otherwise.\n const focusItemIndex = this.selectedIndex >= 0 ? this.selectedIndex : 0;\n const focusItemEl = this.menu_!.items[focusItemIndex] as HTMLElement;\n focusItemEl.focus();\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 this.targetElement_.addEventListener('click', this.handleClick_ as EventListener);\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 this.targetElement_.removeEventListener('click', this.handleClick_ as EventListener);\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<MDCFooAdapter>.\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<MDCFooAdapter>.\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<MDCSelectEventDetail>(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<MDCSelectFoundationMap> {\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\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\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-select/helper-text/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-select/icon/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-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<MDCSliderFoundation> {\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<HTMLElement>(strings.THUMB_CONTAINER_SELECTOR)!;\n this.track_ = this.root_.querySelector<HTMLElement>(strings.TRACK_SELECTOR)!;\n this.pinValueMarker_ = this.root_.querySelector<HTMLElement>(strings.PIN_VALUE_MARKER_SELECTOR)!;\n this.trackMarkerContainer_ = this.root_.querySelector<HTMLElement>(strings.TRACK_MARKER_CONTAINER_SELECTOR)!;\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.\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<MDCSlider>(strings.INPUT_EVENT, this), // TODO(acdvorak): Create detail interface\n notifyChange: () => this.emit<MDCSlider>(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<HTMLElement>(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 {closest} from '@material/dom/ponyfill';\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<MDCSnackbarFoundation> {\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<MDCFooAdapter>.\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<MDCSnackbarCloseEventDetail>(CLOSED_EVENT, reason ? {reason} : {}),\n notifyClosing: (reason) => this.emit<MDCSnackbarCloseEventDetail>(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(closest(target, ACTION_SELECTOR));\n }\n\n private isActionIcon_(target: Element): boolean {\n return Boolean(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 {matches} from '@material/dom/ponyfill';\nimport {MDCRippleAdapter} from '@material/ripple/adapter';\nimport {MDCRipple} from '@material/ripple/component';\nimport {MDCRippleFoundation} from '@material/ripple/foundation';\nimport {MDCRippleCapableSurface} from '@material/ripple/types';\nimport {MDCSwitchAdapter} from './adapter';\nimport {MDCSwitchFoundation} from './foundation';\n\nexport class MDCSwitch extends MDCComponent<MDCSwitchFoundation> 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<MDCFooAdapter>.\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<MDCFooAdapter>.\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: () => 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/component';\nimport {MDCTab, MDCTabFactory} from '@material/tab/component';\nimport {MDCTabFoundation} from '@material/tab/foundation';\nimport {MDCTabInteractionEvent} from '@material/tab/types';\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<MDCTabBarFoundation> {\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<MDCTabInteractionEvent>; // 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<MDCFooAdapter>.\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<MDCTabBarActivatedEventDetail>(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 {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\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 './fading-foundation';\nexport * from './sliding-foundation';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/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-tab-scroller/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 './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 './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/component';\nimport {MDCLineRipple, MDCLineRippleFactory} from '@material/line-ripple/component';\nimport {MDCNotchedOutline, MDCNotchedOutlineFactory} from '@material/notched-outline/component';\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} from './character-counter/component';\nimport {MDCTextFieldCharacterCounterFoundation} from './character-counter/foundation';\nimport {cssClasses, strings} from './constants';\nimport {MDCTextFieldFoundation} from './foundation';\nimport {\n MDCTextFieldHelperText,\n MDCTextFieldHelperTextFactory,\n} from './helper-text/component';\nimport {MDCTextFieldHelperTextFoundation} from './helper-text/foundation';\nimport {MDCTextFieldIcon, MDCTextFieldIconFactory} from './icon/component';\nimport {MDCTextFieldFoundationMap} from './types';\n\nexport class MDCTextField extends MDCComponent<MDCTextFieldFoundation> 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<HTMLInputElement>(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<MDCFooAdapter>.\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<MDCTextFieldFoundationMap> {\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<MDCFooAdapter>.\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\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 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 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\nconst cssClasses = {\n ROOT: 'mdc-text-field__icon',\n};\n\nexport {strings, cssClasses};\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';\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\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 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 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<MDCToolbarFoundation> {\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<HTMLElement>(strings.TITLE_SELECTOR);\n const firstRowElement = this.root_.querySelector<HTMLElement>(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<MDCFooAdapter>.\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<MDCToolbarEventDetail>(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<MDCTopAppBarBaseFoundation> {\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<MDCFooAdapter>.\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":""}