1 |
- {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///material-components-web.min.js","webpack:///webpack/bootstrap cfe37351a35b5fc8ba58","webpack:///./packages/mdc-base/foundation.js","webpack:///./packages/mdc-base/component.js","webpack:///./packages/mdc-ripple/index.js","webpack:///./packages/mdc-selection-control/index.js","webpack:///./packages/mdc-tab-scroller/adapter.js","webpack:///./packages/mdc-ripple/util.js","webpack:///./packages/mdc-top-app-bar/adapter.js","webpack:///./packages/mdc-top-app-bar/constants.js","webpack:///./packages/mdc-dom/ponyfill.js","webpack:///./packages/mdc-floating-label/index.js","webpack:///./packages/mdc-tab/adapter.js","webpack:///./packages/mdc-tab-scroller/rtl-scroller.js","webpack:///./packages/mdc-top-app-bar/foundation.js","webpack:///./packages/mdc-animation/index.js","webpack:///./packages/mdc-list/index.js","webpack:///./packages/mdc-list/foundation.js","webpack:///./packages/mdc-line-ripple/index.js","webpack:///./packages/mdc-menu/constants.js","webpack:///./packages/mdc-menu-surface/foundation.js","webpack:///./packages/mdc-menu-surface/constants.js","webpack:///./packages/mdc-notched-outline/index.js","webpack:///./packages/mdc-select/icon/index.js","webpack:///./packages/mdc-select/helper-text/index.js","webpack:///./packages/mdc-snackbar/constants.js","webpack:///./packages/mdc-tab-indicator/foundation.js","webpack:///./packages/mdc-textfield/helper-text/foundation.js","webpack:///./packages/mdc-textfield/character-counter/foundation.js","webpack:///./packages/mdc-textfield/icon/foundation.js","webpack:///./packages/mdc-ripple/adapter.js","webpack:///./packages/mdc-chips/chip/index.js","webpack:///./packages/mdc-chips/chip/adapter.js","webpack:///./packages/mdc-chips/chip/foundation.js","webpack:///./packages/mdc-chips/chip/constants.js","webpack:///./packages/mdc-chips/chip-set/adapter.js","webpack:///./packages/mdc-dialog/node_modules/focus-trap/index.js","webpack:///./packages/mdc-drawer/dismissible/foundation.js","webpack:///./packages/mdc-drawer/adapter.js","webpack:///./packages/mdc-drawer/constants.js","webpack:///./packages/mdc-list/adapter.js","webpack:///./packages/mdc-list/constants.js","webpack:///./packages/mdc-drawer/node_modules/focus-trap/index.js","webpack:///./packages/mdc-floating-label/adapter.js","webpack:///./packages/mdc-line-ripple/adapter.js","webpack:///./packages/mdc-menu/index.js","webpack:///./packages/mdc-menu-surface/adapter.js","webpack:///./packages/mdc-menu-surface/index.js","webpack:///./packages/mdc-notched-outline/adapter.js","webpack:///./packages/mdc-notched-outline/constants.js","webpack:///./packages/mdc-select/adapter.js","webpack:///./packages/mdc-select/icon/adapter.js","webpack:///./packages/mdc-select/helper-text/adapter.js","webpack:///./packages/mdc-select/constants.js","webpack:///./packages/mdc-slider/constants.js","webpack:///./packages/mdc-slider/adapter.js","webpack:///./packages/mdc-tab/index.js","webpack:///./packages/mdc-tab-indicator/index.js","webpack:///./packages/mdc-tab-indicator/adapter.js","webpack:///./packages/mdc-tab-scroller/index.js","webpack:///./packages/mdc-tab-scroller/constants.js","webpack:///./packages/mdc-tab-bar/adapter.js","webpack:///./packages/mdc-textfield/constants.js","webpack:///./packages/mdc-textfield/adapter.js","webpack:///./packages/mdc-textfield/helper-text/adapter.js","webpack:///./packages/mdc-textfield/character-counter/adapter.js","webpack:///./packages/mdc-textfield/icon/adapter.js","webpack:///./packages/material-components-web/index.js","webpack:///./packages/mdc-auto-init/index.js","webpack:///./packages/mdc-base/index.js","webpack:///./packages/mdc-checkbox/index.js","webpack:///./packages/mdc-ripple/foundation.js","webpack:///./packages/mdc-ripple/constants.js","webpack:///./packages/mdc-checkbox/foundation.js","webpack:///./packages/mdc-checkbox/adapter.js","webpack:///./packages/mdc-checkbox/constants.js","webpack:///./packages/mdc-chips/index.js","webpack:///./packages/mdc-chips/chip-set/index.js","webpack:///./packages/mdc-chips/chip-set/foundation.js","webpack:///./packages/mdc-chips/chip-set/constants.js","webpack:///./packages/mdc-dialog/index.js","webpack:///./packages/mdc-dialog/foundation.js","webpack:///./packages/mdc-dialog/adapter.js","webpack:///./packages/mdc-dialog/constants.js","webpack:///./packages/mdc-dialog/util.js","webpack:///./packages/mdc-dialog/node_modules/tabbable/index.js","webpack:///./packages/mdc-dialog/node_modules/xtend/immutable.js","webpack:///./packages/mdc-dom/index.js","webpack:///./packages/mdc-drawer/index.js","webpack:///./packages/mdc-drawer/modal/foundation.js","webpack:///./packages/mdc-drawer/util.js","webpack:///./packages/mdc-drawer/node_modules/tabbable/index.js","webpack:///./packages/mdc-drawer/node_modules/xtend/immutable.js","webpack:///./packages/mdc-floating-label/foundation.js","webpack:///./packages/mdc-floating-label/constants.js","webpack:///./packages/mdc-form-field/index.js","webpack:///./packages/mdc-form-field/foundation.js","webpack:///./packages/mdc-form-field/adapter.js","webpack:///./packages/mdc-form-field/constants.js","webpack:///./packages/mdc-grid-list/index.js","webpack:///./packages/mdc-grid-list/foundation.js","webpack:///./packages/mdc-grid-list/constants.js","webpack:///./packages/mdc-icon-button/index.js","webpack:///./packages/mdc-icon-button/foundation.js","webpack:///./packages/mdc-icon-button/adapter.js","webpack:///./packages/mdc-icon-button/constants.js","webpack:///./packages/mdc-icon-toggle/index.js","webpack:///./packages/mdc-icon-toggle/foundation.js","webpack:///./packages/mdc-icon-toggle/adapter.js","webpack:///./packages/mdc-icon-toggle/constants.js","webpack:///./packages/mdc-linear-progress/index.js","webpack:///./packages/mdc-linear-progress/foundation.js","webpack:///./packages/mdc-linear-progress/constants.js","webpack:///./packages/mdc-line-ripple/foundation.js","webpack:///./packages/mdc-line-ripple/constants.js","webpack:///./packages/mdc-menu/foundation.js","webpack:///./packages/mdc-menu/adapter.js","webpack:///./packages/mdc-menu-surface/util.js","webpack:///./packages/mdc-notched-outline/foundation.js","webpack:///./packages/mdc-radio/index.js","webpack:///./packages/mdc-radio/foundation.js","webpack:///./packages/mdc-radio/adapter.js","webpack:///./packages/mdc-radio/constants.js","webpack:///./packages/mdc-select/index.js","webpack:///./packages/mdc-select/foundation.js","webpack:///./packages/mdc-select/icon/foundation.js","webpack:///./packages/mdc-select/icon/constants.js","webpack:///./packages/mdc-select/helper-text/foundation.js","webpack:///./packages/mdc-select/helper-text/constants.js","webpack:///./packages/mdc-slider/index.js","webpack:///./packages/mdc-slider/foundation.js","webpack:///./packages/mdc-snackbar/index.js","webpack:///./packages/mdc-snackbar/foundation.js","webpack:///./packages/mdc-snackbar/adapter.js","webpack:///./packages/mdc-snackbar/util.js","webpack:///./packages/mdc-switch/index.js","webpack:///./packages/mdc-switch/foundation.js","webpack:///./packages/mdc-switch/adapter.js","webpack:///./packages/mdc-switch/constants.js","webpack:///./packages/mdc-tab-indicator/constants.js","webpack:///./packages/mdc-tab-indicator/sliding-foundation.js","webpack:///./packages/mdc-tab-indicator/fading-foundation.js","webpack:///./packages/mdc-tab/foundation.js","webpack:///./packages/mdc-tab/constants.js","webpack:///./packages/mdc-tab-bar/index.js","webpack:///./packages/mdc-tab-scroller/foundation.js","webpack:///./packages/mdc-tab-scroller/rtl-default-scroller.js","webpack:///./packages/mdc-tab-scroller/rtl-negative-scroller.js","webpack:///./packages/mdc-tab-scroller/rtl-reverse-scroller.js","webpack:///./packages/mdc-tab-scroller/util.js","webpack:///./packages/mdc-tab-bar/foundation.js","webpack:///./packages/mdc-tab-bar/constants.js","webpack:///./packages/mdc-textfield/index.js","webpack:///./packages/mdc-textfield/helper-text/constants.js","webpack:///./packages/mdc-textfield/character-counter/constants.js","webpack:///./packages/mdc-textfield/icon/constants.js","webpack:///./packages/mdc-textfield/foundation.js","webpack:///./packages/mdc-textfield/helper-text/index.js","webpack:///./packages/mdc-textfield/character-counter/index.js","webpack:///./packages/mdc-textfield/icon/index.js","webpack:///./packages/mdc-toolbar/index.js","webpack:///./packages/mdc-toolbar/foundation.js","webpack:///./packages/mdc-toolbar/constants.js","webpack:///./packages/mdc-top-app-bar/index.js","webpack:///./packages/mdc-top-app-bar/fixed/foundation.js","webpack:///./packages/mdc-top-app-bar/short/foundation.js","webpack:///./packages/mdc-top-app-bar/standard/foundation.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","length","descriptor","writable","key","protoProps","staticProps","MDCFoundation","adapter","arguments","undefined","adapter_","value","__WEBPACK_IMPORTED_MODULE_0__foundation__","MDCComponent","foundation","root_","_len","args","Array","_key","initialize","apply","foundation_","getDefaultFoundation","init","initialSyncWithDOM","Error","destroy","evtType","handler","addEventListener","removeEventListener","evtData","shouldBubble","evt","CustomEvent","detail","bubbles","document","createEvent","initCustomEvent","dispatchEvent","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","constructor","setPrototypeOf","__proto__","MDCRipple","RippleCapableSurface","__WEBPACK_IMPORTED_MODULE_0__material_base_component__","__WEBPACK_IMPORTED_MODULE_2__foundation__","__WEBPACK_IMPORTED_MODULE_3__util__","_MDCComponent","_ref","_this","getPrototypeOf","concat","disabled","unbounded_","setUnbounded","activate","deactivate","layout","createAdapter","unbounded","dataset","set","Boolean","setUnbounded_","_ref2","_ref2$isUnbounded","isUnbounded","ripple","MATCHES","HTMLElement","browserSupportsCssVars","window","isSurfaceActive","isSurfaceDisabled","addClass","className","classList","add","removeClass","remove","containsEventTarget","contains","registerInteractionHandler","deregisterInteractionHandler","registerDocumentInteractionHandler","documentElement","deregisterDocumentInteractionHandler","registerResizeHandler","deregisterResizeHandler","updateCssVariable","varName","style","setProperty","computeBoundingRect","getBoundingClientRect","getWindowPageOffset","x","pageXOffset","y","pageYOffset","MDCSelectionControlState","MDCSelectionControl","MDCTabScrollerAdapter","evtTarget","selector","propName","propertyName","scrollLeft","detectEdgePseudoVarBug","windowObj","node","createElement","body","appendChild","computedStyle","getComputedStyle","hasPseudoVarBug","borderTopStyle","supportsCssVariables","forceRefresh","supportsCssVariables_","CSS","supports","explicitlySupportsCssVars","weAreFeatureDetectingSafari10plus","applyPassive","globalObj","supportsPassive_","isSupported","passive","e","getMatchesProperty","HTMLElementPrototype","matchesMethods","method","matchesMethod","getNormalizedEventCoords","ev","pageOffset","clientRect","documentX","left","documentY","top","normalizedX","normalizedY","type","changedTouches","pageX","pageY","MDCTopAppBarAdapter","strings","cssClasses","numbers","FIXED_CLASS","FIXED_SCROLLED_CLASS","SHORT_CLASS","SHORT_HAS_ACTION_ITEM_CLASS","SHORT_COLLAPSED_CLASS","DEBOUNCE_THROTTLE_RESIZE_TIME_MS","MAX_TOP_APP_BAR_HEIGHT","ACTION_ITEM_SELECTOR","NAVIGATION_EVENT","NAVIGATION_ICON_SELECTOR","ROOT_SELECTOR","TITLE_SELECTOR","closest","element","el","matches","parentElement","webkitMatchesSelector","msMatchesSelector","MDCFloatingLabel","shouldShake","shake","shouldFloat","float","getWidth","_this2","scrollWidth","MDCTabAdapter","attr","previousIndicatorClientRect","MDCTabScrollerRTL","translateX","scrollX","__WEBPACK_IMPORTED_MODULE_0__constants__","__WEBPACK_IMPORTED_MODULE_2__material_base_foundation__","_extends","assign","source","MDCTopAppBarBaseFoundation","_MDCFoundation","defaultAdapter","navClickHandler_","notifyNavigationIconClicked","scrollHandler_","hasClass","setStyle","getTopAppBarHeight","registerNavigationIconInteractionHandler","deregisterNavigationIconInteractionHandler","registerScrollHandler","deregisterScrollHandler","getViewportScrollY","getTotalActionItems","hasProperShape","eventFoundInMaps","eventType","eventTypeMap","cssPropertyMap","getJavaScriptEventName","map","styleProperty","noPrefix","webkitPrefix","getAnimationName","getCorrectEventName","getCorrectPropertyName","transformStyleProperties","animationstart","animationend","animationiteration","transitionend","animation","transform","transition","MDCList","__WEBPACK_IMPORTED_MODULE_1__foundation__","__WEBPACK_IMPORTED_MODULE_3__material_dom_ponyfill__","__WEBPACK_IMPORTED_MODULE_4__constants__","handleKeydown_","handleClick_","focusInEventListener_","focusOutEventListener_","handleClickEvent_","bind","handleKeydownEvent_","handleFocusInEvent_","handleFocusOutEvent_","initializeListType","direction","getAttribute","ARIA_ORIENTATION","vertical","ARIA_ORIENTATION_HORIZONTAL","slice","querySelectorAll","forEach","ele","setAttribute","FOCUSABLE_CHILD_ELEMENTS","eventTarget","index","LIST_ITEM_CLASS","ROOT","listElements","indexOf","getListItemIndex_","handleFocusIn","handleFocusOut","handleKeydown","toggleCheckbox","CHECKBOX_RADIO_SELECTOR","handleClick","checkboxListItems","ARIA_ROLE_CHECKBOX_SELECTOR","singleSelectedListItem","querySelector","LIST_ITEM_ACTIVATED_CLASS","LIST_ITEM_SELECTED_CLASS","radioSelectedListItem","ARIA_CHECKED_RADIO_SELECTOR","preselectedItems","ARIA_CHECKED_CHECKBOX_SELECTOR","selectedIndex","listItem","setUseActivatedClass","singleSelection","_this3","getListItemCount","getFocusedElementIndex","activeElement","setAttributeForElementIndex","removeAttributeForElementIndex","removeAttribute","addClassForElementIndex","removeClassForElementIndex","focusItemAtIndex","focus","setTabIndexForListItemChildren","listItemIndex","tabIndexValue","CHILD_ELEMENTS_TO_TOGGLE_TABINDEX","hasCheckboxAtIndex","CHECKBOX_SELECTOR","hasRadioAtIndex","RADIO_SELECTOR","isCheckboxCheckedAtIndex","checked","setCheckedCheckboxOrRadioAtIndex","isChecked","toggleEl","event","initEvent","notifyAction","emit","ACTION_EVENT","isFocusInsideList","setVerticalOrientation","ENABLED_ITEMS_SELECTOR","setWrapFocus","isSingleSelectionList","setSingleSelection","getSelectedIndex","setSelectedIndex","__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__","__WEBPACK_IMPORTED_MODULE_2__constants__","ELEMENTS_KEY_ALLOWED_IN","MDCListFoundation","wrapFocus_","isVertical_","isSingleSelectionList_","selectedIndex_","focusedItemIndex_","useActivatedClass_","isCheckboxList_","isRadioList_","useActivated","isIndexValid_","setCheckboxAtIndex_","setRadioAtIndex_","setSingleSelectionAtIndex_","setTimeout","setTabindexToFirstSelectedItem_","isRootListItem","arrowLeft","keyCode","arrowUp","arrowRight","arrowDown","isHome","isEnd","isEnter","isSpace","currentIndex","nextIndex","preventDefaultEvent_","focusNextElement","focusPrevElement","focusFirstElement","focusLastElement","tagName","isSelectableList_","setSelectedIndexOnAction_","setTabindexAtIndex_","toLowerCase","preventDefault","count","prevIndex","lastIndex","selectedClassName","ARIA_SELECTED","ARIA_CHECKED","targetIndex","reduce","minIndex","Math","min","some","isIndexInRange_","listSize","toggleCheckboxAtIndex_","push","filter","MDCLineRipple","xCoordinate","setRippleCenter","registerEventHandler","deregisterEventHandler","MENU_SELECTED_LIST_ITEM","MENU_SELECTION_GROUP","SELECTED_EVENT","ARIA_SELECTED_ATTR","LIST_SELECTOR","_defineProperty","obj","MDCMenuSurfaceFoundation","AnchorMargin","isOpen_","openAnimationEndTimerId_","closeAnimationEndTimerId_","animationRequestId_","dimensions_","anchorCorner_","TOP_START","anchorMargin_","right","bottom","measures_","quickOpen_","hoistedElement_","isFixedPosition_","position_","hasAnchor","notifyClose","notifyOpen","isElementInContainer","isRtl","setTransformOrigin","isFocused","saveFocus","restoreFocus","isFirstElementFocused","isLastElementFocused","getInnerDimensions","getAnchorDimensions","getWindowDimensions","getBodyDimensions","getWindowScroll","setPosition","setMaxHeight","_MDCMenuSurfaceFounda","OPEN","clearTimeout","cancelAnimationFrame","corner","margin","isHoisted","isFixedPosition","typeCheckisFinite_","quickOpen","close","shiftKey","isEscape","isTab","anchorRect","viewport","bodyDimensions","windowScroll","height","width","viewportDistance","anchorHeight","anchorWidth","surfaceHeight","surfaceWidth","TOP_LEFT","_measures_","isBottomAligned","BOTTOM","availableTop","availableBottom","topOverflow","bottomOverflow","isFlipRtl","FLIP_RTL","avoidHorizontalOverlap","RIGHT","isAlignedRight","availableLeft","availableRight","leftOverflow","rightOverflow","isRightAligned","rightOffset","avoidVerticalOverlap","maxHeight","MARGIN_TO_EDGE","_position","getAutoLayoutMeasurements_","getOriginCorner_","maxMenuSurfaceHeight","getMenuSurfaceMaxHeight_","verticalAlignment","horizontalAlignment","horizontalOffset","getHorizontalOriginOffset_","verticalOffset","getVerticalOriginOffset_","position","_measures_2","ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO","adjustPositionForHoistedElement_","prop","parseInt","_measures_3","ANIMATING_OPEN","requestAnimationFrame","autoPosition_","TRANSITION_OPEN_DURATION","ANIMATING_CLOSED","TRANSITION_CLOSE_DURATION","maybeRestoreFocus_","num","isFinite","CornerBit","Corner","ANCHOR","FIXED","CLOSED_EVENT","OPENED_EVENT","FOCUSABLE_ELEMENTS","CENTER","TOP_RIGHT","BOTTOM_LEFT","BOTTOM_RIGHT","TOP_END","BOTTOM_START","BOTTOM_END","MDCNotchedOutline","__WEBPACK_IMPORTED_MODULE_3__material_floating_label_index__","notchElement_","label","NOTCH_ELEMENT_SELECTOR","transitionDuration","OUTLINE_UPGRADED","NO_LABEL","notchWidth","notch","closeNotch","setNotchWidthProperty","removeNotchWidthProperty","removeProperty","MDCSelectIcon","getAttr","setAttr","removeAttr","setContent","content","textContent","notifyIconAction","ICON_EVENT","MDCSelectHelperText","OPENING","CLOSING","SURFACE_SELECTOR","LABEL_SELECTOR","ACTION_SELECTOR","DISMISS_SELECTOR","OPENING_EVENT","CLOSING_EVENT","REASON_ACTION","REASON_DISMISS","ARIA_LIVE_LABEL_TEXT_ATTR","MIN_AUTO_DISMISS_TIMEOUT_MS","MAX_AUTO_DISMISS_TIMEOUT_MS","DEFAULT_AUTO_DISMISS_TIMEOUT_MS","SNACKBAR_ANIMATION_OPEN_TIME_MS","SNACKBAR_ANIMATION_CLOSE_TIME_MS","ARIA_LIVE_DELAY_MS","MDCTabIndicatorFoundation","computeContentClientRect","setContentStyleProperty","MDCTextFieldHelperTextFoundation","isPersistent","HELPER_TEXT_PERSISTENT","isValidation","HELPER_TEXT_VALIDATION_MSG","ARIA_HIDDEN","inputIsValid","helperTextIsPersistent","helperTextIsValidationMsg","validationMsgNeedsDisplay","ROLE","hide_","MDCTextFieldCharacterCounterFoundation","currentLength","maxLength","MDCTextFieldIconFoundation","savedTabIndex_","interactionHandler_","handleInteraction","ICON_ROLE","MDCRippleAdapter","MDCChip","__WEBPACK_IMPORTED_MODULE_1__material_ripple_index__","__WEBPACK_IMPORTED_MODULE_3__foundation__","_get","receiver","Function","desc","getOwnPropertyDescriptor","parent","INTERACTION_EVENTS","id","leadingIcon_","trailingIcon_","checkmark_","ripple_","handleInteraction_","handleTransitionEnd_","handleTrailingIconInteraction_","rippleFactory","LEADING_ICON_SELECTOR","TRAILING_ICON_SELECTOR","CHECKMARK_SELECTOR","getDimensions","handleTransitionEnd","handleTrailingIconInteraction","_this4","beginExit","_this5","addClassToLeadingIcon","removeClassFromLeadingIcon","eventTargetHasClass","notifyInteraction","INTERACTION_EVENT","chipId","notifySelection","selected","SELECTION_EVENT","notifyTrailingIconInteraction","TRAILING_ICON_INTERACTION_EVENT","notifyRemoval","REMOVAL_EVENT","getComputedStyleValue","getPropertyValue","setStyleProperty","hasLeadingIcon","getRootBoundingClientRect","getCheckmarkBoundingClientRect","isSelected","setSelected","getShouldRemoveOnTrailingIconClick","shouldRemove","setShouldRemoveOnTrailingIconClick","MDCChipAdapter","MDCChipFoundation","shouldRemoveOnTrailingIconClick_","SELECTED","CHIP_EXIT","chipWidth","LEADING_ICON","HIDDEN_LEADING_ICON","CHECKMARK","stopPropagation","ENTRY_ANIMATION_NAME","TRAILING_ICON","MDCChipSetAdapter","focusTrap","userOptions","activateOptions","state","active","updateTabbableNodes","paused","nodeFocusedBeforeActivation","doc","onActivate","config","addListeners","trap","deactivateOptions","removeListeners","activeFocusTraps","deactivateTrap","onDeactivate","returnFocus","returnFocusOnDeactivate","delay","tryFocus","pause","unpause","activateTrap","getInitialFocusNode","checkFocusIn","checkPointerDown","checkClick","checkKey","getNodeForOption","optionName","optionValue","container","firstTabbableNode","clickOutsideDeactivates","tabbable","isFocusable","Document","stopImmediatePropagation","mostRecentlyFocusedNode","escapeDeactivates","isEscapeEvent","isTabEvent","checkTab","lastTabbableNode","tabbableNodes","isSelectableInput","select","xtend","fn","trapQueue","activeTrap","trapIndex","splice","__WEBPACK_IMPORTED_MODULE_1__material_base_foundation__","MDCDismissibleDrawerFoundation","animationFrame_","animationTimer_","elementHasClass","focusActiveNavigationItem","trapFocus","releaseFocus","isOpen","isOpening","isClosing","ANIMATE","runNextAnimationFrame_","Element","closed","opened","callback","MDCDrawerAdapter","DISMISSIBLE","MODAL","APP_CONTENT_SELECTOR","SCRIM_SELECTOR","CLOSE_EVENT","OPEN_EVENT","MDCListAdapter","attribute","MDCFloatingLabelAdapter","MDCLineRippleAdapter","MDCMenu","__WEBPACK_IMPORTED_MODULE_3__material_menu_surface_index__","__WEBPACK_IMPORTED_MODULE_4__material_menu_surface_foundation__","__WEBPACK_IMPORTED_MODULE_5__material_list_index__","menuSurface_","list_","handleItemAction_","afterOpenedCallback_","menuSurfaceFactory","listFactory","list","wrapFocus","handleAfterOpened_","handleItemAction","items","listen","unlisten","setAnchorCorner","setAnchorMargin","isFixed","setFixedPosition","hoistMenuToBody","setIsHoisted","setAbsolutePosition","anchorElement","addClassToElementAtIndex","removeClassFromElementAtIndex","addAttributeToElementAtIndex","removeAttributeFromElementAtIndex","elementContainsClass","closeSurface","open","getElementIndex","getParentElement","getSelectedElementIndex","selectionGroup","notifySelected","item","MDCMenuSurfaceAdapter","origin","MDCMenuSurface","__WEBPACK_IMPORTED_MODULE_1__util__","previousFocus_","firstFocusableElement_","lastFocusableElement_","handleBodyClick_","registerBodyClickListener_","deregisterBodyClickListener_","handleBodyClick","removeChild","getFocusAdapterMethods_","getDimensionAdapterMethods_","offsetWidth","offsetHeight","innerWidth","innerHeight","clientWidth","clientHeight","focusableElements","setQuickOpen","MDCNotchedOutlineAdapter","NOTCH_ELEMENT_PADDING","OUTLINE_NOTCHED","MDCSelectAdapter","labelWidth","isDisabled","isValid","MDCSelectIconAdapter","MDCSelectHelperTextAdapter","DISABLED","OUTLINED","FOCUSED","SELECTED_ITEM_CLASS","WITH_LEADING_ICON","INVALID","REQUIRED","ARIA_CONTROLS","CHANGE_EVENT","SELECTED_ITEM_SELECTOR","SELECTED_TEXT_SELECTOR","HIDDEN_INPUT_SELECTOR","MENU_SELECTOR","LINE_RIPPLE_SELECTOR","NATIVE_CONTROL_SELECTOR","OUTLINE_SELECTOR","ENHANCED_VALUE_ATTR","LABEL_SCALE","ACTIVE","DISCRETE","FOCUS","IN_TRANSIT","IS_DISCRETE","HAS_TRACK_MARKER","TRACK_SELECTOR","TRACK_MARKER_CONTAINER_SELECTOR","LAST_TRACK_MARKER_SELECTOR","THUMB_CONTAINER_SELECTOR","PIN_VALUE_MARKER_SELECTOR","ARIA_VALUEMIN","ARIA_VALUEMAX","ARIA_VALUENOW","ARIA_DISABLED","STEP_DATA_ATTR","INPUT_EVENT","PAGE_FACTOR","MDCSliderAdapter","numMarkers","MDCTab","__WEBPACK_IMPORTED_MODULE_2__material_tab_indicator_index__","__WEBPACK_IMPORTED_MODULE_4__foundation__","tabIndicator_","content_","tabIndicatorFactory","rippleSurface","RIPPLE_SELECTOR","rippleAdapter","rippleFoundation","tabIndicatorElement","TAB_INDICATOR_SELECTOR","CONTENT_SELECTOR","activateIndicator","deactivateIndicator","notifyInteracted","INTERACTED_EVENT","tabId","getOffsetLeft","offsetLeft","getOffsetWidth","getContentOffsetLeft","getContentOffsetWidth","computeIndicatorClientRect","computeDimensions","isActive","focusOnActivate","setFocusOnActivate","MDCTabIndicator","__WEBPACK_IMPORTED_MODULE_3__sliding_foundation__","__WEBPACK_IMPORTED_MODULE_4__fading_foundation__","FADE","MDCTabIndicatorAdapter","MDCTabScroller","area_","AREA_SELECTOR","eventTargetMatchesSelector","addScrollAreaClass","setScrollAreaStyleProperty","setScrollContentStyleProperty","getScrollContentStyleValue","setScrollAreaScrollLeft","getScrollAreaScrollLeft","getScrollContentOffsetWidth","getScrollAreaOffsetWidth","computeScrollAreaClientRect","computeScrollContentClientRect","computeHorizontalScrollbarHeight","getScrollPosition","scrollXIncrement","incrementScroll","scrollTo","ANIMATING","SCROLL_TEST","SCROLL_AREA_SCROLL","MDCTabBarAdapter","VALIDATION_ATTR_WHITELIST","ALWAYS_FLOAT_TYPES","INPUT_SELECTOR","ICON_SELECTOR","DENSE","TEXTAREA","HELPER_LINE","DENSE_LABEL_SCALE","MDCTextFieldAdapter","observer","MDCTextFieldHelperTextAdapter","MDCTextFieldCharacterCounterAdapter","MDCTextFieldIconAdapter","__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__","__WEBPACK_IMPORTED_MODULE_1__material_base_index__","__WEBPACK_IMPORTED_MODULE_2__material_checkbox_index__","__WEBPACK_IMPORTED_MODULE_3__material_chips_index__","__WEBPACK_IMPORTED_MODULE_4__material_dialog_index__","__WEBPACK_IMPORTED_MODULE_5__material_dom_index__","__WEBPACK_IMPORTED_MODULE_6__material_drawer_index__","__WEBPACK_IMPORTED_MODULE_7__material_floating_label_index__","__WEBPACK_IMPORTED_MODULE_8__material_form_field_index__","__WEBPACK_IMPORTED_MODULE_9__material_grid_list_index__","__WEBPACK_IMPORTED_MODULE_10__material_icon_button_index__","__WEBPACK_IMPORTED_MODULE_11__material_icon_toggle_index__","__WEBPACK_IMPORTED_MODULE_12__material_linear_progress_index__","__WEBPACK_IMPORTED_MODULE_13__material_line_ripple_index__","__WEBPACK_IMPORTED_MODULE_14__material_list_index__","__WEBPACK_IMPORTED_MODULE_15__material_menu_index__","__WEBPACK_IMPORTED_MODULE_16__material_menu_surface_index__","__WEBPACK_IMPORTED_MODULE_17__material_notched_outline_index__","__WEBPACK_IMPORTED_MODULE_18__material_radio_index__","__WEBPACK_IMPORTED_MODULE_19__material_ripple_index__","__WEBPACK_IMPORTED_MODULE_20__material_select_index__","__WEBPACK_IMPORTED_MODULE_21__material_selection_control_index__","__WEBPACK_IMPORTED_MODULE_22__material_slider_index__","__WEBPACK_IMPORTED_MODULE_23__material_snackbar_index__","__WEBPACK_IMPORTED_MODULE_24__material_switch_index__","__WEBPACK_IMPORTED_MODULE_25__material_tab_index__","__WEBPACK_IMPORTED_MODULE_26__material_tab_bar_index__","__WEBPACK_IMPORTED_MODULE_27__material_tab_indicator_index__","__WEBPACK_IMPORTED_MODULE_28__material_tab_scroller_index__","__WEBPACK_IMPORTED_MODULE_29__material_textfield_index__","__WEBPACK_IMPORTED_MODULE_30__material_toolbar_index__","__WEBPACK_IMPORTED_MODULE_31__material_top_app_bar_index__","register","_emit","mdcAutoInit","warn","CONSOLE_WARN","components","nodes","ctorName","Ctor","registry","component","attachTo","console","componentName","deregister","deregisterAll","keys","__WEBPACK_IMPORTED_MODULE_1__component__","validDescriptor","inputPropDesc","MDCCheckbox","__WEBPACK_IMPORTED_MODULE_0__material_animation_index__","__WEBPACK_IMPORTED_MODULE_1__material_base_component__","__WEBPACK_IMPORTED_MODULE_4__material_ripple_index__","__WEBPACK_IMPORTED_MODULE_5__material_ripple_util__","CB_PROTO_PROPS","initRipple_","handleChange_","handleAnimationEnd_","handleChange","handleAnimationEnd","nativeCb_","installPropertyChangeHooks_","nativeCb","cbProto","controlState","nativeCbDesc","setNativeControlAttr","removeNativeControlAttr","isIndeterminate","indeterminate","hasNativeControl","setNativeControlDisabled","forceLayout","isAttachedToDOM","parentNode","uninstallPropertyChangeHooks_","setDisabled","ACTIVATION_EVENT_TYPES","POINTER_DEACTIVATION_EVENT_TYPES","activatedTargets","MDCRippleFoundation","layoutFrame_","frame_","activationState_","defaultActivationState_","initialSize_","maxRadius_","activateHandler_","activate_","deactivateHandler_","deactivate_","focusHandler_","handleFocus","blurHandler_","handleBlur","resizeHandler_","unboundedCoords_","fgScale_","activationTimer_","fgDeactivationRemovalTimer_","activationAnimationHasEnded_","activationTimerCallback_","runDeactivationUXLogicIfReady_","previousActivationEvent_","isActivated","hasDeactivationUXRun","wasActivatedByPointer","wasElementMadeActive","activationEvent","isProgrammatic","supportsPressRipple","supportsPressRipple_","registerRootHandlers_","_MDCRippleFoundation$","UNBOUNDED","layoutInternal_","FG_ACTIVATION","FG_DEACTIVATION","_MDCRippleFoundation$2","removeCssVars_","deregisterRootHandlers_","deregisterDeactivationHandlers_","_this6","_this7","_this8","k","_this9","activationState","previousActivationEvent","resetActivationState_","registerDeactivationHandlers_","checkElementMadeActive_","animateActivation_","_this10","_MDCRippleFoundation$3","VAR_FG_TRANSLATE_START","VAR_FG_TRANSLATE_END","_MDCRippleFoundation$4","DEACTIVATION_TIMEOUT_MS","translateStart","translateEnd","_getFgTranslationCoor","getFgTranslationCoordinates_","startPoint","endPoint","rmBoundedActivationClasses_","_activationState_","_this11","_activationState_2","FG_DEACTIVATION_MS","_this12","TAP_DELAY_MS","_this13","animateDeactivation_","_this14","_this15","maxDim","max","sqrt","pow","PADDING","floor","INITIAL_ORIGIN_SCALE","updateLayoutCssVars_","_MDCRippleFoundation$5","VAR_FG_SIZE","VAR_LEFT","VAR_TOP","VAR_FG_SCALE","round","_this16","BG_FOCUSED","_this17","__WEBPACK_IMPORTED_MODULE_3__constants__","MDCCheckboxFoundation","currentCheckState_","TRANSITION_STATE_INIT","currentAnimationClass_","animEndLatchTimer_","enableAnimationEndHandler_","determineCheckState_","updateAriaChecked_","UPGRADED","ANIM_END_LATCH_MS","transitionCheckState_","oldState","newState","getTransitionAnimationClass_","TRANSITION_STATE_INDETERMINATE","TRANSITION_STATE_CHECKED","TRANSITION_STATE_UNCHECKED","_MDCCheckboxFoundatio","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","MDCCheckboxAdapter","CHECKED","INDETERMINATE","__WEBPACK_IMPORTED_MODULE_0__chip_index__","__WEBPACK_IMPORTED_MODULE_1__chip_set_index__","MDCChipSet","__WEBPACK_IMPORTED_MODULE_3__chip_index__","idCounter","chips","chipFactory_","handleChipInteraction_","handleChipSelection_","handleChipRemoval_","chipFactory","instantiateChips_","chip","handleChipInteraction","handleChipSelection","handleChipRemoval","chipEl","removeChip","findChipIndex_","CHIP_SELECTOR","getSelectedChipIds","MDCChipSetFoundation","selectedChipIds_","deselect_","CHOICE","previouslySelectedChip","FILTER","toggleSelect_","chipIsSelected","MDCDialog","__WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__","__WEBPACK_IMPORTED_MODULE_5_focus_trap__","__WEBPACK_IMPORTED_MODULE_5_focus_trap___default","buttonRipples_","buttons_","defaultButton_","container_","initialFocusEl_","focusTrapFactory_","focusTrap_","handleDocumentKeydown_","handleOpening_","handleClosing_","layout_","focusTrapFactory","a","initialFocusEl","CONTAINER_SELECTOR","BUTTON_SELECTOR","DEFAULT_BUTTON_SELECTOR","buttonEl","handleDocumentKeydown","LAYOUT_EVENTS","action","addBodyClass","removeBodyClass","eventTargetMatches","isContentScrollable","areButtonsStacked","getActionFromEvent","ACTION_ATTRIBUTE","clickDefaultButton","click","reverseButtons","reverse","button","notifyOpening","notifyOpened","notifyClosing","notifyClosed","getEscapeKeyAction","setEscapeKeyAction","getScrimClickAction","setScrimClickAction","getAutoStackButtons","autoStack","setAutoStackButtons","MDCDialogFoundation","escapeKeyAction_","CLOSE_ACTION","scrimClickAction_","autoStackButtons_","areButtonsStacked_","STACKED","DESTROY_ACTION","handleAnimationTimerEnd_","SCROLL_LOCK","DIALOG_ANIMATION_OPEN_TIME_MS","DIALOG_ANIMATION_CLOSE_TIME_MS","detectStackedButtons_","detectScrollableContent_","SCROLLABLE","isClick","SUPPRESS_DEFAULT_PRESS_SELECTOR","MDCDialogAdapter","join","createFocusTrapInstance","surfaceEl","__WEBPACK_IMPORTED_MODULE_0_focus_trap___default","initialFocus","isScrollable","scrollHeight","areTopsMisaligned","els","tops","Set","offsetTop","size","__WEBPACK_IMPORTED_MODULE_0_focus_trap__","options","elementDocument","ownerDocument","regularTabbables","orderedTabbables","untouchabilityChecker","UntouchabilityChecker","candidates","candidateSelector","includeContainer","unshift","candidate","candidateTabindex","isNodeMatchingSelectorTabbable","getTabindex","documentOrder","tabIndex","sort","sortOrderedTabbables","isNodeMatchingSelectorFocusable","isNonTabbableRadio","isTabbable","isHiddenInput","isUntouchable","focusableCandidateSelector","tabindexAttr","isNaN","isContentEditable","b","find","predicate","contentEditable","isInput","isRadio","isTabbableRadio","getCheckedRadio","radioSet","cache","candidateSelectors","hasDisplayNone","nodeComputedStyle","nodeType","Node","ELEMENT_NODE","cached","defaultView","result","display","visibility","extend","__WEBPACK_IMPORTED_MODULE_0__ponyfill__","MDCDrawer","__WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__","__WEBPACK_IMPORTED_MODULE_2__modal_foundation__","__WEBPACK_IMPORTED_MODULE_4__material_list_index__","__WEBPACK_IMPORTED_MODULE_5__material_list_foundation__","__WEBPACK_IMPORTED_MODULE_6__constants__","__WEBPACK_IMPORTED_MODULE_7__util__","__WEBPACK_IMPORTED_MODULE_8_focus_trap__","__WEBPACK_IMPORTED_MODULE_8_focus_trap___default","scrim_","handleScrimClick_","listEl","handleScrimClick","previousFocus","activeNavItemEl","_MDCDismissibleDrawer","__WEBPACK_IMPORTED_MODULE_0__dismissible_foundation__","MDCModalDrawerFoundation","MDCFloatingLabelFoundation","shakeAnimationEndHandler_","handleShakeAnimationEnd_","LABEL_SHAKE","_MDCFloatingLabelFoun","LABEL_FLOAT_ABOVE","MDCFormField","input_","input","label_","activateInputRipple","deactivateInputRipple","MDCFormFieldFoundation","clickHandler_","MDCFormFieldAdapter","MDCGridList","getNumberOfTiles","TILE_SELECTOR","getOffsetWidthForTileAtIndex","setStyleForTilesElement","TILES_SELECTOR","__WEBPACK_IMPORTED_MODULE_1__constants__","MDCGridListFoundation","alignCenter","resizeFrame_","alignCenter_","gridWidth","itemWidth","tilesWidth","MDCIconButtonToggle","__WEBPACK_IMPORTED_MODULE_2__material_ripple_index__","attrName","attrValue","notifyChange","isOn","toggle","MDCIconButtonToggleFoundation","disabled_","ARIA_PRESSED","ICON_BUTTON_ON","MDCIconButtonToggleAdapter","MDCIconToggle","isKeyboardActivated","iconEl_","setText","text","getTabIndex","setTabIndex","rmAttr","on","refreshToggleData","sel","keyboardKey","MDCIconToggleFoundation","on_","toggleOnData_","toggleOffData_","toggleFromEvt_","isHandlingKeydown_","keydownHandler_","keyupHandler_","_MDCIconToggleFoundat","DATA_TOGGLE_ON","DATA_TOGGLE_OFF","parseJsonDataAttr_","_MDCIconToggleFoundat2","ARIA_LABEL","classToRemove","cssClass","dataAttr","val","JSON","parse","IconToggleState","MDCIconToggleAdapter","MDCLinearProgress","getPrimaryBar","PRIMARY_BAR_SELECTOR","getBuffer","BUFFER_SELECTOR","setDeterminate","setProgress","setBuffer","setReverse","__WEBPACK_IMPORTED_MODULE_1__material_animation_index__","MDCLinearProgressFoundation","determinate_","INDETERMINATE_CLASS","reverse_","REVERSED_CLASS","progress_","isDeterminate","setScale_","isReversed","CLOSED_CLASS","scaleValue","transformStyleProperty","MDCLineRippleFoundation","transitionEndHandler_","LINE_RIPPLE_DEACTIVATING","LINE_RIPPLE_ACTIVE","isDeactivating","MDCMenuFoundation","__WEBPACK_IMPORTED_MODULE_3__material_menu_surface_foundation__","__WEBPACK_IMPORTED_MODULE_4__material_list_foundation__","getSelectionGroup_","handleSelectionGroup_","isGroup","isListItem","MDCMenuAdapter","getTransformPropertyName","storedTransformPropertyName_","transformPropertyName","MDCNotchedOutlineFoundation","MDCRadio","__WEBPACK_IMPORTED_MODULE_3__material_ripple_index__","nativeControl_","MDCRadioFoundation","MDCRadioAdapter","MDCSelect","__WEBPACK_IMPORTED_MODULE_1__material_floating_label_index__","__WEBPACK_IMPORTED_MODULE_2__material_line_ripple_index__","__WEBPACK_IMPORTED_MODULE_3__material_menu_index__","__WEBPACK_IMPORTED_MODULE_5__material_notched_outline_index__","__WEBPACK_IMPORTED_MODULE_6__foundation__","__WEBPACK_IMPORTED_MODULE_7__constants__","__WEBPACK_IMPORTED_MODULE_9__icon_index__","__WEBPACK_IMPORTED_MODULE_10__helper_text_index__","__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__","__WEBPACK_IMPORTED_MODULE_12__material_menu_constants__","selectedText_","hiddenInput_","helperText_","menuElement_","menu_","lineRipple_","outline_","handleFocus_","handleBlur_","handleMenuOpened_","handleMenuClosed_","handleMenuSelected_","menuOpened_","validationObserver_","labelFactory","lineRippleFactory","outlineFactory","menuFactory","iconFactory","helperTextFactory","enhancedSelectSetup_","labelElement","lineRippleElement","outlineElement","leadingIcon","hasAttribute","helperTextElement","getElementById","initialSyncRequiredState_","addMutationObserverForRequired_","setAnchorElement","getNormalizedXCoordinate_","enhancedAdapterMethods","getEnhancedSelectAdapterMethods_","setValue","getValue","disconnect","getNativeSelectAdapterMethods_","getCommonAdapterMethods_","getOutlineAdapterMethods_","getLabelAdapterMethods_","getFoundationMap_","openMenu","closeMenu","isMenuOpen","setValid","checkValidity","setEnhancedSelectedIndex_","toString","activateBottomLine","deactivateBottomLine","hasOutline","notchOutline","closeOutline","floatLabel","getLabelWidth","targetClientRect","clientX","helperText","selectedItem","trim","previouslySelected","required","observerHandler","attributesList","attributeName","getAttributesList","mutationsList","mutation","MutationObserver","observe","attributes","selectedEl","setLeadingIconAriaLabel","setLeadingIconContent","setHelperTextContent","isRequired","MDCSelectFoundation","foundationMap","openNotch","didChange","optionHasValue","setValidity","showToScreenReader","labelScale","setAriaLabel","MDCSelectIconFoundation","MDCSelectHelperTextFoundation","selectIsValid","MDCSlider","thumbContainer_","track_","pinValueMarker_","trackMarkerContainer_","registerThumbContainerInteractionHandler","deregisterThumbContainerInteractionHandler","registerBodyInteractionHandler","deregisterBodyInteractionHandler","notifyInput","setThumbContainerStyleProperty","setTrackStyleProperty","setMarkerValue","innerText","appendTrackMarkers","frag","createDocumentFragment","marker","removeTrackMarkers","firstChild","setLastTrackMarkersStyleProperty","isRTL","origValueNow","parseFloat","step","setupTrackMarker","amount","getMin","setMin","getMax","setMax","getStep","setStep","__WEBPACK_IMPORTED_MODULE_2__material_animation_index__","__WEBPACK_IMPORTED_MODULE_3__material_base_foundation__","KEY_IDS","ARROW_LEFT","ARROW_RIGHT","ARROW_UP","ARROW_DOWN","HOME","END","PAGE_UP","PAGE_DOWN","MOVE_EVENT_MAP","mousedown","touchstart","pointerdown","DOWN_EVENTS","UP_EVENTS","MDCSliderFoundation","rect_","NaN","active_","inTransit_","isDiscrete_","hasTrackMarker_","handlingThumbTargetEvt_","min_","max_","step_","value_","preventFocusState_","updateUIFrame_","thumbContainerPointerHandler_","interactionStartHandler_","handleDown_","evtName","indivisible","ceil","lastStepRatio","flex","String","updateUIForCurrentValue_","setValue_","toggleClass_","setInTransit_","setActive_","moveHandler","handleMove_","upHandler","handleUp_","setValueFromEvt_","targetTouches","getPageX_","computeValueFromPageX_","xPos","pctComplete","keyId","getKeyId_","getValueForKeyId_","kbdEvt","delta","shouldFireInput","force","valueSetToBoundary","quantize_","translatePx","transformProp","transitionendEvtName","onTransitionEnd","inTransit","shouldBePresent","MDCSnackbar","surfaceEl_","labelEl_","actionEl_","announce_","handleKeyDown_","handleSurfaceClick_","announceFactory","handleKeyDown","isActionButton_","handleActionButtonClick","isActionIcon_","handleActionIconClick","registerKeyDownHandler_","registerSurfaceClickHandler_","deregisterKeyDownHandler_","deregisterSurfaceClickHandler_","reason","announce","getTimeoutMs","timeoutMs","setTimeoutMs","getCloseOnEscape","closeOnEscape","setCloseOnEscape","labelText","actionButtonText","MDCSnackbarFoundation","autoDismissTimer_","autoDismissTimeoutMs_","closeOnEscape_","clearAutoDismissTimer_","minValue","maxValue","MDCSnackbarAdapter","ariaEl","labelEl","priority","innerHTML","MDCSwitch","__WEBPACK_IMPORTED_MODULE_4__material_ripple_util__","changeHandler_","RIPPLE_SURFACE_SELECTOR","setNativeControlChecked","setChecked","MDCSwitchFoundation","updateCheckedStyling_","MDCSwitchAdapter","NO_TRANSITION","MDCSlidingTabIndicatorFoundation","_MDCTabIndicatorFound","currentClientRect","widthDelta","xPosition","MDCFadingTabIndicatorFoundation","MDCTabFoundation","focusOnActivate_","TABINDEX","rootWidth","rootLeft","contentWidth","contentLeft","rootRight","contentRight","MDCTabBar","__WEBPACK_IMPORTED_MODULE_1__material_tab_index__","__WEBPACK_IMPORTED_MODULE_2__material_tab_scroller_index__","tabIdCounter","tabList_","tabScroller_","handleTabInteraction_","tabFactory","tabScrollerFactory","instantiateTabs_","instantiateTabScroller_","handleTabInteraction","scrollIntoView","tab","getScrollContentWidth","setActiveTab","activateTab","activateTabAtIndex","deactivateTabAtIndex","focusTabAtIndex","getTabIndicatorClientRectAtIndex","getTabDimensionsAtIndex","getPreviousActiveTabIndex","getFocusedTabIndex","tabElements","getTabElements_","getIndexOfTabById","getTabListLength","notifyTabActivated","TAB_ACTIVATED_EVENT","TAB_SELECTOR","tabScrollerElement","TAB_SCROLLER_SELECTOR","useAutomaticActivation","setUseAutomaticActivation","__WEBPACK_IMPORTED_MODULE_4__rtl_default_scroller__","__WEBPACK_IMPORTED_MODULE_5__rtl_negative_scroller__","__WEBPACK_IMPORTED_MODULE_6__rtl_reverse_scroller__","MDCTabScrollerFoundation","isAnimating_","rtlScrollerInstance_","horizontalScrollbarHeight","isRTL_","computeCurrentScrollPositionRTL_","currentTranslateX","calculateCurrentTranslateX_","stopScrollAnimation_","incrementScrollRTL_","incrementScroll_","scrollToRTL_","scrollTo_","rtlScrollerFactory_","transformValue","results","exec","parts","split","edges","calculateScrollEdges_","getRTLScroller","getScrollPositionRTL","currentScrollX","safeScrollX","clampScrollValue_","scrollDelta","animate_","finalScrollPosition","scrollToRTL","targetScrollX","incrementScrollRTL","currentScrollPosition","getAnimatingScrollPosition_","getAnimatingScrollPosition","initialScrollLeft","newScrollLeft","rootClientRect","contentClientRect","rightEdgeDelta","__WEBPACK_IMPORTED_MODULE_0__rtl_scroller__","MDCTabScrollerRTLDefault","_MDCTabScrollerRTL","currentScrollLeft","_calculateScrollEdges","clampedScrollLeft","MDCTabScrollerRTLNegative","MDCTabScrollerRTLReverse","documentObj","shouldCacheResult","horizontalScrollbarHeight_","pop","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_","previousActiveIndex","indexIsInRange_","getKeyFromEvent_","isActivationKey_","determineTargetFromKey_","focusedTabIndex","scrollIntoViewRTL_","scrollIntoView_","maxIndex","shouldGoToEnd","shouldDecrement","shouldIncrement","scrollPosition","barWidth","nextTabDimensions","relativeContentLeft","relativeContentRight","leftIncrement","EXTRA_SCROLL_AMOUNT","rightIncrement","scrollContentWidth","tabDimensions","relativeRootLeft","relativeRootRight","relativeRootDelta","leftEdgeIsCloser","rightEdgeIsCloser","rootDelta","has","findAdjacentTabIndexClosestToEdge_","scrollIncrement","calculateScrollIncrement_","findAdjacentTabIndexClosestToEdgeRTL_","calculateScrollIncrementRTL_","MDCTextField","__WEBPACK_IMPORTED_MODULE_2__material_ripple_util__","__WEBPACK_IMPORTED_MODULE_5__foundation__","__WEBPACK_IMPORTED_MODULE_6__material_line_ripple_index__","__WEBPACK_IMPORTED_MODULE_7__helper_text_index__","__WEBPACK_IMPORTED_MODULE_8__character_counter_index__","__WEBPACK_IMPORTED_MODULE_10__material_floating_label_index__","__WEBPACK_IMPORTED_MODULE_11__material_notched_outline_index__","characterCounter_","characterCounterFactory","helperTextStrings","nextElementSibling","hasHelperLine","helperTextEl","characterCounterStrings","characterCounterEl","iconElements","registerTextFieldInteractionHandler","deregisterTextFieldInteractionHandler","registerValidationAttributeChangeHandler","targetNode","deregisterValidationAttributeChangeHandler","getInputAdapterMethods_","getLineRippleAdapterMethods_","shakeLabel","hasLabel","activateLineRipple","deactivateLineRipple","setLineRippleTransformOrigin","registerInputInteractionHandler","deregisterInputInteractionHandler","getNativeInput","characterCounter","trailingIcon","valid","pattern","minLength","setTrailingIconAriaLabel","setTrailingIconContent","useNativeValidation","setUseNativeValidation","__WEBPACK_IMPORTED_MODULE_5__constants__","MDCTextFieldFoundation","isFocused_","receivedUserInput_","useCustomValidityChecking_","isValid_","useNativeValidation_","inputFocusHandler_","activateFocus","inputBlurHandler_","deactivateFocus","inputInputHandler_","handleInput","setPointerXOffset_","textFieldInteractionHandler_","handleTextFieldInteraction","validationAttributeChangeHandler_","handleValidationAttributeChange","getNativeInput_","shouldAlwaysFloat_","isBadInput_","setCharacterCounter_","styleValidity_","isDense","styleFocused_","targetEvent","touches","autoCompleteFocus","isNativeInputValid_","styleDisabled_","setCounterValue","validity","badInput","_MDCTextFieldFoundati","MDCTextFieldHelperText","MDCTextFieldCharacterCounter","MDCTextFieldIcon","MDCToolbar","ripples_","icon","getViewportWidth","getOffsetHeight","getFirstRowElementOffsetHeight","firstRowElement_","setStyleForTitleElement","titleElement_","setStyleForFlexibleRowElement","setStyleForFixedAdjustElement","fixedAdjustElement","FIRST_ROW_SELECTOR","fixedAdjustElement_","updateAdjustElementStyles","MDCToolbarFoundation","checkRowHeight_","updateToolbarStyles_","checkRowHeightFrame_","scrollFrame_","executedLastChange_","calculations_","toolbarRowHeight","toolbarRatio","flexibleExpansionRatio","maxTranslateYRatio","scrollThresholdRatio","toolbarHeight","flexibleExpansionHeight","maxTranslateYDistance","scrollThreshold","fixed_","fixedLastrow_","hasFlexibleRow_","useFlexDefaultBehavior_","FIXED_LASTROW","TOOLBAR_ROW_FLEXIBLE","FLEXIBLE_DEFAULT_BEHAVIOR","initKeyRatio_","setKeyHeights_","scrollTop","newToolbarRowHeight","getRowHeight_","hasScrolledOutOfThreshold","scrolledOutOfThreshold_","getFlexibleExpansionRatio_","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","MDCTopAppBar","__WEBPACK_IMPORTED_MODULE_5__fixed_foundation__","__WEBPACK_IMPORTED_MODULE_6__short_foundation__","__WEBPACK_IMPORTED_MODULE_7__standard_foundation__","navIcon_","iconRipples_","scrollTarget_","icons","iconRipple","destroyScrollHandler","initScrollHandler","MDCFixedTopAppBarFoundation","_MDCTopAppBarFoundati","wasScrolled_","fixedScrollHandler_","MDCShortTopAppBarFoundation","_MDCTopAppBarBaseFoun","isCollapsed","shortAppBarScrollHandler_","isAlwaysCollapsed","INITIAL_VALUE","MDCTopAppBarFoundation","lastScrollPosition_","topAppBarHeight_","wasDocked_","isDockedShowing_","currentAppBarOffsetTop_","isCurrentlyBeingResized_","resizeThrottleId_","resizeDebounceId_","topAppBarScrollHandler_","topAppBarResizeHandler_","offscreenBoundaryTop","hasAnyPixelsOffscreen","hasAnyPixelsOnscreen","partiallyShowing","checkForUpdate_","offset","abs","diff","moveTopAppBar_","throttledResizeHandler_","currentHeight"],"mappings":"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","file":"material-components-web.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mdc\"] = factory();\n\telse\n\t\troot[\"mdc\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","/*!\n Material Components for the Web\n Copyright (c) 2019 Google Inc.\n License: MIT\n*/\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mdc\"] = factory();\n\telse\n\t\troot[\"mdc\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 65);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/**\n * @template A\n */\nvar MDCFoundation = function () {\n _createClass(MDCFoundation, null, [{\n key: \"cssClasses\",\n\n /** @return enum{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\n /** @return enum{strings} */\n\n }, {\n key: \"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\n /** @return enum{numbers} */\n\n }, {\n key: \"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\n /** @return {!Object} */\n\n }, {\n key: \"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\n /**\n * @param {A=} adapter\n */\n\n }]);\n\n function MDCFoundation() {\n var adapter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, MDCFoundation);\n\n /** @protected {!A} */\n this.adapter_ = adapter;\n }\n\n _createClass(MDCFoundation, [{\n key: \"init\",\n value: function init() {\n // Subclasses should override this method to perform initialization routines (registering events, etc.)\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n // Subclasses should override this method to perform de-initialization routines (de-registering events, etc.)\n }\n }]);\n\n return MDCFoundation;\n}();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCFoundation);\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(0);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n\n\n/**\n * @template F\n */\n\nvar MDCComponent = function () {\n _createClass(MDCComponent, null, [{\n key: 'attachTo',\n\n /**\n * @param {!Element} root\n * @return {!MDCComponent}\n */\n value: function attachTo(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 __WEBPACK_IMPORTED_MODULE_0__foundation__[\"a\" /* default */]());\n }\n\n /**\n * @param {!Element} root\n * @param {F=} foundation\n * @param {...?} args\n */\n\n }]);\n\n function MDCComponent(root) {\n var foundation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n _classCallCheck(this, MDCComponent);\n\n /** @protected {!Element} */\n this.root_ = root;\n\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n this.initialize.apply(this, 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 /** @protected {!F} */\n this.foundation_ = foundation === undefined ? this.getDefaultFoundation() : foundation;\n this.foundation_.init();\n this.initialSyncWithDOM();\n }\n\n _createClass(MDCComponent, [{\n key: 'initialize',\n value: function initialize() /* ...args */{}\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 /**\n * @return {!F} foundation\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\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 }, {\n key: 'initialSyncWithDOM',\n value: function 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 key: 'destroy',\n value: function 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 * @param {string} evtType\n * @param {!Function} handler\n */\n\n }, {\n key: 'listen',\n value: function listen(evtType, handler) {\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 * @param {string} evtType\n * @param {!Function} handler\n */\n\n }, {\n key: 'unlisten',\n value: function unlisten(evtType, handler) {\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,\n * with the given data.\n * @param {string} evtType\n * @param {!Object} evtData\n * @param {boolean=} shouldBubble\n */\n\n }, {\n key: 'emit',\n value: function emit(evtType, evtData) {\n var shouldBubble = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var evt = void 0;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent(evtType, {\n detail: evtData,\n bubbles: shouldBubble\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 return MDCComponent;\n}();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCComponent);\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCRipple\", function() { return MDCRipple; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RippleCapableSurface\", function() { return RippleCapableSurface; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(69);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(5);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCRippleFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"util\", function() { return __WEBPACK_IMPORTED_MODULE_3__util__; });\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n/**\n * @extends MDCComponent<!MDCRippleFoundation>\n */\n\nvar MDCRipple = function (_MDCComponent) {\n _inherits(MDCRipple, _MDCComponent);\n\n /** @param {...?} args */\n function MDCRipple() {\n var _ref;\n\n _classCallCheck(this, MDCRipple);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @type {boolean} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCRipple.__proto__ || Object.getPrototypeOf(MDCRipple)).call.apply(_ref, [this].concat(args)));\n\n _this.disabled = false;\n\n /** @private {boolean} */\n _this.unbounded_;\n return _this;\n }\n\n /**\n * @param {!Element} root\n * @param {{isUnbounded: (boolean|undefined)}=} options\n * @return {!MDCRipple}\n */\n\n\n _createClass(MDCRipple, [{\n key: 'setUnbounded_',\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 * @private\n */\n value: function setUnbounded_() {\n this.foundation_.setUnbounded(this.unbounded_);\n }\n }, {\n key: 'activate',\n value: function activate() {\n this.foundation_.activate();\n }\n }, {\n key: 'deactivate',\n value: function deactivate() {\n this.foundation_.deactivate();\n }\n }, {\n key: 'layout',\n value: function layout() {\n this.foundation_.layout();\n }\n\n /**\n * @return {!MDCRippleFoundation}\n * @override\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */](MDCRipple.createAdapter(this));\n }\n\n /** @override */\n\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n this.unbounded = 'mdcRippleIsUnbounded' in this.root_.dataset;\n }\n }, {\n key: 'unbounded',\n\n\n /** @return {boolean} */\n get: function get() {\n return this.unbounded_;\n }\n\n /** @param {boolean} unbounded */\n ,\n set: function set(unbounded) {\n this.unbounded_ = Boolean(unbounded);\n this.setUnbounded_();\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$isUnbounded = _ref2.isUnbounded,\n isUnbounded = _ref2$isUnbounded === undefined ? undefined : _ref2$isUnbounded;\n\n var ripple = new MDCRipple(root);\n // Only override unbounded behavior if option is explicitly specified\n if (isUnbounded !== undefined) {\n ripple.unbounded = /** @type {boolean} */isUnbounded;\n }\n return ripple;\n }\n\n /**\n * @param {!RippleCapableSurface} instance\n * @return {!MDCRippleAdapter}\n */\n\n }, {\n key: 'createAdapter',\n value: function createAdapter(instance) {\n var MATCHES = __WEBPACK_IMPORTED_MODULE_3__util__[\"getMatchesProperty\"](HTMLElement.prototype);\n\n return {\n browserSupportsCssVars: function browserSupportsCssVars() {\n return __WEBPACK_IMPORTED_MODULE_3__util__[\"supportsCssVariables\"](window);\n },\n isUnbounded: function isUnbounded() {\n return instance.unbounded;\n },\n isSurfaceActive: function isSurfaceActive() {\n return instance.root_[MATCHES](':active');\n },\n isSurfaceDisabled: function isSurfaceDisabled() {\n return instance.disabled;\n },\n addClass: function addClass(className) {\n return instance.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return instance.root_.classList.remove(className);\n },\n containsEventTarget: function containsEventTarget(target) {\n return instance.root_.contains(target);\n },\n registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return instance.root_.addEventListener(evtType, handler, __WEBPACK_IMPORTED_MODULE_3__util__[\"applyPassive\"]());\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return instance.root_.removeEventListener(evtType, handler, __WEBPACK_IMPORTED_MODULE_3__util__[\"applyPassive\"]());\n },\n registerDocumentInteractionHandler: function registerDocumentInteractionHandler(evtType, handler) {\n return document.documentElement.addEventListener(evtType, handler, __WEBPACK_IMPORTED_MODULE_3__util__[\"applyPassive\"]());\n },\n deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler(evtType, handler) {\n return document.documentElement.removeEventListener(evtType, handler, __WEBPACK_IMPORTED_MODULE_3__util__[\"applyPassive\"]());\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 updateCssVariable: function updateCssVariable(varName, value) {\n return instance.root_.style.setProperty(varName, value);\n },\n computeBoundingRect: function computeBoundingRect() {\n return instance.root_.getBoundingClientRect();\n },\n getWindowPageOffset: function getWindowPageOffset() {\n return { x: window.pageXOffset, y: window.pageYOffset };\n }\n };\n }\n }]);\n\n return MDCRipple;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n/**\n * See Material Design spec for more details on when to use ripples.\n * https://material.io/guidelines/motion/choreography.html#choreography-creation\n * @record\n */\n\n\nvar RippleCapableSurface = function RippleCapableSurface() {\n _classCallCheck(this, RippleCapableSurface);\n};\n\n/** @protected {!Element} */\n\n\nRippleCapableSurface.prototype.root_;\n\n/**\n * Whether or not the ripple bleeds out of the bounds of the element.\n * @type {boolean|undefined}\n */\nRippleCapableSurface.prototype.unbounded;\n\n/**\n * Whether or not the ripple is attached to a disabled component.\n * @type {boolean|undefined}\n */\nRippleCapableSurface.prototype.disabled;\n\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSelectionControlState\", function() { return MDCSelectionControlState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSelectionControl\", function() { return MDCSelectionControl; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_ripple_index__ = __webpack_require__(2);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint-disable no-unused-vars */\n\n/* eslint-enable no-unused-vars */\n\n/**\n * @typedef {{\n * checked: boolean,\n * indeterminate: boolean,\n * disabled: boolean,\n * value: ?string\n * }}\n */\nvar MDCSelectionControlState = void 0;\n\n/**\n * @record\n */\n\nvar MDCSelectionControl = function () {\n function MDCSelectionControl() {\n _classCallCheck(this, MDCSelectionControl);\n }\n\n _createClass(MDCSelectionControl, [{\n key: 'ripple',\n\n /** @return {?MDCRipple} */\n get: function get() {}\n }]);\n\n return MDCSelectionControl;\n}();\n\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export MDCTabScrollerAnimation */\n/* unused harmony export MDCTabScrollerHorizontalEdges */\n/* unused harmony export MDCTabScrollerAdapter */\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * MDCTabScrollerAnimation contains the values required for animating from the\n * current scroll position to the new scroll position. The \"finalScrollPosition\"\n * value represents the new scroll position while the \"scrollDelta\" value is the\n * corresponding transformation that is applied to the scroll content. Together,\n * they create the animation by first updating the scroll value then applying\n * the transformation and animating the transition. Both pieces are necessary\n * for the scroll animation to work. The values are used as-is by the tab\n * scroller animation method, ensuring that all logic for determining scroll\n * position or transformation is abstracted away from the animation method.\n * @typedef {{finalScrollPosition: number, scrollDelta: number}}\n */\nvar MDCTabScrollerAnimation = void 0;\n\n/**\n * MDCTabScrollerHorizontalEdges represents the left and right edges of the\n * scroll content. These values vary depending on how scrolling in RTL is\n * implemented by the browser. One value is always 0 and one value is always\n * the max scrollable value as either a positive or negative integer.\n * @typedef {{left: number, right: number}}\n */\nvar MDCTabScrollerHorizontalEdges = void 0;\n\n/**\n * Adapter for MDC Tab Scroller.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Tab into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\n\nvar MDCTabScrollerAdapter = function () {\n function MDCTabScrollerAdapter() {\n _classCallCheck(this, MDCTabScrollerAdapter);\n }\n\n _createClass(MDCTabScrollerAdapter, [{\n key: \"addClass\",\n\n /**\n * Adds the given className to the root element.\n * @param {string} className The className to add\n */\n value: function addClass(className) {}\n\n /**\n * Removes the given className from the root element.\n * @param {string} className The className to remove\n */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * Adds the given className to the scroll area element.\n * @param {string} className The className to add\n */\n\n }, {\n key: \"addScrollAreaClass\",\n value: function addScrollAreaClass(className) {}\n\n /**\n * Returns whether the event target matches given className.\n * @param {EventTarget} evtTarget The event target\n * @param {string} selector The selector to check\n * @return {boolean}\n */\n\n }, {\n key: \"eventTargetMatchesSelector\",\n value: function eventTargetMatchesSelector(evtTarget, selector) {}\n\n /**\n * Sets a style property of the area element to the passed value.\n * @param {string} propName The style property name to set\n * @param {string} value The style property value\n */\n\n }, {\n key: \"setScrollAreaStyleProperty\",\n value: function setScrollAreaStyleProperty(propName, value) {}\n\n /**\n * Sets a style property of the content element to the passed value.\n * @param {string} propName The style property name to set\n * @param {string} value The style property value\n */\n\n }, {\n key: \"setScrollContentStyleProperty\",\n value: function setScrollContentStyleProperty(propName, value) {}\n\n /**\n * Returns the scroll content element's computed style value of the given css property `propertyName`.\n * We achieve this via `getComputedStyle(...).getPropertyValue(propertyName)`.\n * @param {string} propertyName\n * @return {string}\n */\n\n }, {\n key: \"getScrollContentStyleValue\",\n value: function getScrollContentStyleValue(propertyName) {}\n\n /**\n * Sets the scrollLeft value of the scroll area element to the passed value.\n * @param {number} scrollLeft The new scrollLeft value\n */\n\n }, {\n key: \"setScrollAreaScrollLeft\",\n value: function setScrollAreaScrollLeft(scrollLeft) {}\n\n /**\n * Returns the scrollLeft value of the scroll area element.\n * @return {number}\n */\n\n }, {\n key: \"getScrollAreaScrollLeft\",\n value: function getScrollAreaScrollLeft() {}\n\n /**\n * Returns the offsetWidth of the scroll content element.\n * @return {number}\n */\n\n }, {\n key: \"getScrollContentOffsetWidth\",\n value: function getScrollContentOffsetWidth() {}\n\n /**\n * Returns the offsetWitdth of the scroll area element.\n * @return {number}\n */\n\n }, {\n key: \"getScrollAreaOffsetWidth\",\n value: function getScrollAreaOffsetWidth() {}\n\n /**\n * Returns the bounding client rect of the scroll area element.\n * @return {!ClientRect}\n */\n\n }, {\n key: \"computeScrollAreaClientRect\",\n value: function computeScrollAreaClientRect() {}\n\n /**\n * Returns the bounding client rect of the scroll content element.\n * @return {!ClientRect}\n */\n\n }, {\n key: \"computeScrollContentClientRect\",\n value: function computeScrollContentClientRect() {}\n\n /**\n * Returns the height of the browser's horizontal scrollbars (in px).\n * @return {number}\n */\n\n }, {\n key: \"computeHorizontalScrollbarHeight\",\n value: function computeHorizontalScrollbarHeight() {}\n }]);\n\n return MDCTabScrollerAdapter;\n}();\n\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"supportsCssVariables\", function() { return supportsCssVariables; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyPassive\", function() { return applyPassive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMatchesProperty\", function() { return getMatchesProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNormalizedEventCoords\", function() { return getNormalizedEventCoords; });\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\n/**\n * Stores result from supportsCssVariables to avoid redundant processing to detect CSS custom variable support.\n * @private {boolean|undefined}\n */\nvar supportsCssVariables_ = void 0;\n\n/**\n * Stores result from applyPassive to avoid redundant processing to detect passive event listener support.\n * @private {boolean|undefined}\n */\nvar supportsPassive_ = void 0;\n\n/**\n * @param {!Window} windowObj\n * @return {boolean}\n */\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\n // The bug exists if ::before style ends up propagating to the parent element.\n // Additionally, getComputedStyle returns null in iframes with display: \"none\" in Firefox,\n // but Firefox is known to support CSS custom properties correctly.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n var computedStyle = windowObj.getComputedStyle(node);\n var hasPseudoVarBug = computedStyle !== null && computedStyle.borderTopStyle === 'solid';\n node.remove();\n return hasPseudoVarBug;\n}\n\n/**\n * @param {!Window} windowObj\n * @param {boolean=} forceRefresh\n * @return {boolean|undefined}\n */\n\nfunction supportsCssVariables(windowObj) {\n var forceRefresh = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var supportsCssVariables = supportsCssVariables_;\n if (typeof supportsCssVariables_ === 'boolean' && !forceRefresh) {\n return supportsCssVariables;\n }\n\n var supportsFunctionPresent = windowObj.CSS && typeof windowObj.CSS.supports === 'function';\n if (!supportsFunctionPresent) {\n return;\n }\n\n var explicitlySupportsCssVars = windowObj.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 = windowObj.CSS.supports('(--css-vars: yes)') && windowObj.CSS.supports('color', '#00000000');\n\n if (explicitlySupportsCssVars || weAreFeatureDetectingSafari10plus) {\n supportsCssVariables = !detectEdgePseudoVarBug(windowObj);\n } else {\n supportsCssVariables = false;\n }\n\n if (!forceRefresh) {\n supportsCssVariables_ = supportsCssVariables;\n }\n return supportsCssVariables;\n}\n\n//\n/**\n * Determine whether the current browser supports passive event listeners, and if so, use them.\n * @param {!Window=} globalObj\n * @param {boolean=} forceRefresh\n * @return {boolean|!EventListenerOptions}\n */\nfunction applyPassive() {\n var globalObj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;\n var forceRefresh = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (supportsPassive_ === undefined || forceRefresh) {\n var isSupported = false;\n try {\n globalObj.document.addEventListener('test', null, { get passive() {\n isSupported = true;\n return isSupported;\n } });\n } catch (e) {}\n\n supportsPassive_ = isSupported;\n }\n\n return supportsPassive_ ? /** @type {!EventListenerOptions} */{ passive: true } : false;\n}\n\n/**\n * @param {!Object} HTMLElementPrototype\n * @return {string}\n */\nfunction getMatchesProperty(HTMLElementPrototype) {\n /**\n * Order is important because we return the first existing method we find.\n * Do not change the order of the items in the below array.\n */\n var matchesMethods = ['matches', 'webkitMatchesSelector', 'msMatchesSelector'];\n var method = 'matches';\n for (var i = 0; i < matchesMethods.length; i++) {\n var matchesMethod = matchesMethods[i];\n if (matchesMethod in HTMLElementPrototype) {\n method = matchesMethod;\n break;\n }\n }\n\n return method;\n}\n\n/**\n * @param {!Event} ev\n * @param {{x: number, y: number}} pageOffset\n * @param {!ClientRect} clientRect\n * @return {{x: number, y: number}}\n */\nfunction getNormalizedEventCoords(ev, pageOffset, clientRect) {\n var x = pageOffset.x,\n y = pageOffset.y;\n\n var documentX = x + clientRect.left;\n var documentY = y + clientRect.top;\n\n var normalizedX = void 0;\n var normalizedY = void 0;\n // Determine touch point relative to the ripple container.\n if (ev.type === 'touchstart') {\n ev = /** @type {!TouchEvent} */ev;\n normalizedX = ev.changedTouches[0].pageX - documentX;\n normalizedY = ev.changedTouches[0].pageY - documentY;\n } else {\n ev = /** @type {!MouseEvent} */ev;\n normalizedX = ev.pageX - documentX;\n normalizedY = ev.pageY - documentY;\n }\n\n return { x: normalizedX, y: normalizedY };\n}\n\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Top App Bar\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Top App Bar into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCTopAppBarAdapter = function () {\n function MDCTopAppBarAdapter() {\n _classCallCheck(this, MDCTopAppBarAdapter);\n }\n\n _createClass(MDCTopAppBarAdapter, [{\n key: \"addClass\",\n\n /**\n * Adds a class to the root Element.\n * @param {string} className\n */\n value: function addClass(className) {}\n\n /**\n * Removes a class from the root Element.\n * @param {string} className\n */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * Returns true if the root Element contains the given class.\n * @param {string} className\n * @return {boolean}\n */\n\n }, {\n key: \"hasClass\",\n value: function hasClass(className) {}\n\n /**\n * Sets the specified inline style property on the root Element to the given value.\n * @param {string} property\n * @param {string} value\n */\n\n }, {\n key: \"setStyle\",\n value: function setStyle(property, value) {}\n\n /**\n * Gets the height of the top app bar.\n * @return {number}\n */\n\n }, {\n key: \"getTopAppBarHeight\",\n value: function getTopAppBarHeight() {}\n\n /**\n * Registers an event handler on the navigation icon element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"registerNavigationIconInteractionHandler\",\n value: function registerNavigationIconInteractionHandler(type, handler) {}\n\n /**\n * Deregisters an event handler on the navigation icon element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"deregisterNavigationIconInteractionHandler\",\n value: function deregisterNavigationIconInteractionHandler(type, handler) {}\n\n /**\n * Emits an event when the navigation icon is clicked.\n */\n\n }, {\n key: \"notifyNavigationIconClicked\",\n value: function notifyNavigationIconClicked() {}\n\n /** @param {function(!Event)} handler */\n\n }, {\n key: \"registerScrollHandler\",\n value: function registerScrollHandler(handler) {}\n\n /** @param {function(!Event)} handler */\n\n }, {\n key: \"deregisterScrollHandler\",\n value: function deregisterScrollHandler(handler) {}\n\n /** @param {function(!Event)} handler */\n\n }, {\n key: \"registerResizeHandler\",\n value: function registerResizeHandler(handler) {}\n\n /** @param {function(!Event)} handler */\n\n }, {\n key: \"deregisterResizeHandler\",\n value: function deregisterResizeHandler(handler) {}\n\n /** @return {number} */\n\n }, {\n key: \"getViewportScrollY\",\n value: function getViewportScrollY() {}\n\n /** @return {number} */\n\n }, {\n key: \"getTotalActionItems\",\n value: function getTotalActionItems() {}\n }]);\n\n return MDCTopAppBarAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCTopAppBarAdapter);\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return numbers; });\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\n/** @enum {string} */\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_HAS_ACTION_ITEM_CLASS: 'mdc-top-app-bar--short-has-action-item',\n SHORT_COLLAPSED_CLASS: 'mdc-top-app-bar--short-collapsed'\n};\n\n/** @enum {number} */\nvar numbers = {\n DEBOUNCE_THROTTLE_RESIZE_TIME_MS: 100,\n MAX_TOP_APP_BAR_HEIGHT: 128\n};\n\n/** @enum {string} */\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};\n\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closest\", function() { return closest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"matches\", function() { return matches; });\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\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\n/**\n * @param {!Element} element\n * @param {string} selector\n * @return {?Element}\n */\nfunction closest(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\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}\n\n/**\n * @param {!Element} element\n * @param {string} selector\n * @return {boolean}\n */\nfunction matches(element, selector) {\n var nativeMatches = element.matches || element.webkitMatchesSelector || element.msMatchesSelector;\n return nativeMatches.call(element, selector);\n}\n\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCFloatingLabel\", function() { return MDCFloatingLabel; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(91);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCFloatingLabelFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCFloatingLabelFoundation>}\n * @final\n */\n\nvar MDCFloatingLabel = function (_MDCComponent) {\n _inherits(MDCFloatingLabel, _MDCComponent);\n\n function MDCFloatingLabel() {\n _classCallCheck(this, MDCFloatingLabel);\n\n return _possibleConstructorReturn(this, (MDCFloatingLabel.__proto__ || Object.getPrototypeOf(MDCFloatingLabel)).apply(this, arguments));\n }\n\n _createClass(MDCFloatingLabel, [{\n key: 'shake',\n\n\n /**\n * Styles the label to produce the label shake for errors.\n * @param {boolean} shouldShake styles the label to shake by adding shake class\n * if true, otherwise will stop shaking by removing shake class.\n */\n value: function shake(shouldShake) {\n this.foundation_.shake(shouldShake);\n }\n\n /**\n * Styles label to float/dock.\n * @param {boolean} shouldFloat styles the label to float by adding float class\n * if true, otherwise docks the label by removing the float class.\n */\n\n }, {\n key: 'float',\n value: function float(shouldFloat) {\n this.foundation_.float(shouldFloat);\n }\n\n /**\n * @return {number}\n */\n\n }, {\n key: 'getWidth',\n value: function getWidth() {\n return this.foundation_.getWidth();\n }\n\n /**\n * @return {!MDCFloatingLabelFoundation}\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */]({\n addClass: function addClass(className) {\n return _this2.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this2.root_.classList.remove(className);\n },\n getWidth: function getWidth() {\n return _this2.root_.scrollWidth;\n },\n registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return _this2.root_.addEventListener(evtType, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return _this2.root_.removeEventListener(evtType, handler);\n }\n });\n }\n }], [{\n key: 'attachTo',\n\n /**\n * @param {!Element} root\n * @return {!MDCFloatingLabel}\n */\n value: function attachTo(root) {\n return new MDCFloatingLabel(root);\n }\n }]);\n\n return MDCFloatingLabel;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export MDCTabDimensions */\n/* unused harmony export MDCTabInteractionEventType */\n/* unused harmony export MDCTabAdapter */\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * MDCTabDimensions provides details about the left and right edges of the Tab\n * root element and the Tab content element. These values are used to determine\n * the visual position of the Tab with respect it's parent container.\n * @typedef {{rootLeft: number, rootRight: number, contentLeft: number, contentRight: number}}\n */\nvar MDCTabDimensions = void 0;\n\n/**\n * @typedef {{\n * detail: {\n * tabId: string,\n * },\n * bubbles: boolean,\n * }}\n */\nvar MDCTabInteractionEventType = void 0;\n\n/**\n * Adapter for MDC Tab.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Tab into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\n\nvar MDCTabAdapter = function () {\n function MDCTabAdapter() {\n _classCallCheck(this, MDCTabAdapter);\n }\n\n _createClass(MDCTabAdapter, [{\n key: \"addClass\",\n\n /**\n * Adds the given className to the root element.\n * @param {string} className The className to add\n */\n value: function addClass(className) {}\n\n /**\n * Removes the given className from the root element.\n * @param {string} className The className to remove\n */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * Returns whether the root element has the given className.\n * @param {string} className The className to remove\n * @return {boolean}\n */\n\n }, {\n key: \"hasClass\",\n value: function hasClass(className) {}\n\n /**\n * Sets the given attrName of the root element to the given value.\n * @param {string} attr The attribute name to set\n * @param {string} value The value so give the attribute\n */\n\n }, {\n key: \"setAttr\",\n value: function setAttr(attr, value) {}\n\n /**\n * Activates the indicator element.\n * @param {!ClientRect=} previousIndicatorClientRect The client rect of the previously activated indicator\n */\n\n }, {\n key: \"activateIndicator\",\n value: function activateIndicator(previousIndicatorClientRect) {}\n\n /** Deactivates the indicator. */\n\n }, {\n key: \"deactivateIndicator\",\n value: function deactivateIndicator() {}\n\n /**\n * Emits the MDCTab:interacted event for use by parent components\n */\n\n }, {\n key: \"notifyInteracted\",\n value: function notifyInteracted() {}\n\n /**\n * Returns the offsetLeft value of the root element.\n * @return {number}\n */\n\n }, {\n key: \"getOffsetLeft\",\n value: function getOffsetLeft() {}\n\n /**\n * Returns the offsetWidth value of the root element.\n * @return {number}\n */\n\n }, {\n key: \"getOffsetWidth\",\n value: function getOffsetWidth() {}\n\n /**\n * Returns the offsetLeft of the content element.\n * @return {number}\n */\n\n }, {\n key: \"getContentOffsetLeft\",\n value: function getContentOffsetLeft() {}\n\n /**\n * Returns the offsetWidth of the content element.\n * @return {number}\n */\n\n }, {\n key: \"getContentOffsetWidth\",\n value: function getContentOffsetWidth() {}\n\n /**\n * Applies focus to the root element\n */\n\n }, {\n key: \"focus\",\n value: function focus() {}\n }]);\n\n return MDCTabAdapter;\n}();\n\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(4);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/* eslint-disable no-unused-vars */\n\n/* eslint-enable no-unused-vars */\n\n/**\n * @abstract\n */\n\nvar MDCTabScrollerRTL = function () {\n /** @param {!MDCTabScrollerAdapter} adapter */\n function MDCTabScrollerRTL(adapter) {\n _classCallCheck(this, MDCTabScrollerRTL);\n\n /** @private */\n this.adapter_ = adapter;\n }\n\n /**\n * @param {number} translateX The current translateX position\n * @return {number}\n * @abstract\n */\n\n\n _createClass(MDCTabScrollerRTL, [{\n key: 'getScrollPositionRTL',\n value: function getScrollPositionRTL(translateX) {}\n\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n * @abstract\n */\n\n }, {\n key: 'scrollToRTL',\n value: function scrollToRTL(scrollX) {}\n\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n * @abstract\n */\n\n }, {\n key: 'incrementScrollRTL',\n value: function incrementScrollRTL(scrollX) {}\n\n /**\n * @param {number} scrollX The current scrollX position\n * @param {number} translateX The current translateX position\n * @return {number}\n * @abstract\n */\n\n }, {\n key: 'getAnimatingScrollPosition',\n value: function getAnimatingScrollPosition(scrollX, translateX) {}\n }]);\n\n return MDCTabScrollerRTL;\n}();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTabScrollerRTL);\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_base_foundation__ = __webpack_require__(0);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCTopAppBarAdapter>}\n */\n\nvar MDCTopAppBarBaseFoundation = function (_MDCFoundation) {\n _inherits(MDCTopAppBarBaseFoundation, _MDCFoundation);\n\n _createClass(MDCTopAppBarBaseFoundation, null, [{\n key: 'strings',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_0__constants__[\"c\" /* strings */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum {number} */\n\n }, {\n key: 'numbers',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_0__constants__[\"b\" /* numbers */];\n }\n\n /**\n * {@see MDCTopAppBarAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCTopAppBarAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCTopAppBarAdapter} */{\n hasClass: function hasClass() /* className: string */{},\n addClass: function addClass() /* className: string */{},\n removeClass: function removeClass() /* className: string */{},\n setStyle: function setStyle() /* property: string, value: string */{},\n getTopAppBarHeight: function getTopAppBarHeight() {},\n registerNavigationIconInteractionHandler: function registerNavigationIconInteractionHandler() /* type: string, handler: EventListener */{},\n deregisterNavigationIconInteractionHandler: function deregisterNavigationIconInteractionHandler() /* type: string, handler: EventListener */{},\n notifyNavigationIconClicked: function notifyNavigationIconClicked() {},\n registerScrollHandler: function registerScrollHandler() /* handler: EventListener */{},\n deregisterScrollHandler: function deregisterScrollHandler() /* handler: EventListener */{},\n registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},\n deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{},\n getViewportScrollY: function getViewportScrollY() {\n return (/* number */0\n );\n },\n getTotalActionItems: function getTotalActionItems() {\n return (/* number */0\n );\n }\n }\n );\n }\n\n /**\n * @param {!MDCTopAppBarAdapter} adapter\n */\n\n }]);\n\n function MDCTopAppBarBaseFoundation( /** @type {!MDCTopAppBarAdapter} */adapter) {\n _classCallCheck(this, MDCTopAppBarBaseFoundation);\n\n var _this = _possibleConstructorReturn(this, (MDCTopAppBarBaseFoundation.__proto__ || Object.getPrototypeOf(MDCTopAppBarBaseFoundation)).call(this, _extends(MDCTopAppBarBaseFoundation.defaultAdapter, adapter)));\n\n _this.navClickHandler_ = function () {\n return _this.adapter_.notifyNavigationIconClicked();\n };\n\n _this.scrollHandler_ = function () {};\n return _this;\n }\n\n _createClass(MDCTopAppBarBaseFoundation, [{\n key: 'init',\n value: function init() {\n this.adapter_.registerNavigationIconInteractionHandler('click', this.navClickHandler_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.adapter_.deregisterNavigationIconInteractionHandler('click', this.navClickHandler_);\n }\n }, {\n key: 'initScrollHandler',\n value: function initScrollHandler() {\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n }\n }, {\n key: 'destroyScrollHandler',\n value: function destroyScrollHandler() {\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n }\n }]);\n\n return MDCTopAppBarBaseFoundation;\n}(__WEBPACK_IMPORTED_MODULE_2__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTopAppBarBaseFoundation);\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return transformStyleProperties; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return getCorrectEventName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return getCorrectPropertyName; });\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\n/**\n * @typedef {{\n * noPrefix: string,\n * webkitPrefix: string,\n * styleProperty: string\n * }}\n */\nvar VendorPropertyMapType = void 0;\n\n/** @const {Object<string, !VendorPropertyMapType>} */\nvar eventTypeMap = {\n 'animationstart': {\n noPrefix: 'animationstart',\n webkitPrefix: 'webkitAnimationStart',\n styleProperty: 'animation'\n },\n 'animationend': {\n noPrefix: 'animationend',\n webkitPrefix: 'webkitAnimationEnd',\n styleProperty: 'animation'\n },\n 'animationiteration': {\n noPrefix: 'animationiteration',\n webkitPrefix: 'webkitAnimationIteration',\n styleProperty: 'animation'\n },\n 'transitionend': {\n noPrefix: 'transitionend',\n webkitPrefix: 'webkitTransitionEnd',\n styleProperty: 'transition'\n }\n};\n\n/** @const {Object<string, !VendorPropertyMapType>} */\nvar cssPropertyMap = {\n 'animation': {\n noPrefix: 'animation',\n webkitPrefix: '-webkit-animation'\n },\n 'transform': {\n noPrefix: 'transform',\n webkitPrefix: '-webkit-transform'\n },\n 'transition': {\n noPrefix: 'transition',\n webkitPrefix: '-webkit-transition'\n }\n};\n\n/**\n * @param {!Object} windowObj\n * @return {boolean}\n */\nfunction hasProperShape(windowObj) {\n return windowObj['document'] !== undefined && typeof windowObj['document']['createElement'] === 'function';\n}\n\n/**\n * @param {string} eventType\n * @return {boolean}\n */\nfunction eventFoundInMaps(eventType) {\n return eventType in eventTypeMap || eventType in cssPropertyMap;\n}\n\n/**\n * @param {string} eventType\n * @param {!Object<string, !VendorPropertyMapType>} map\n * @param {!Element} el\n * @return {string}\n */\nfunction getJavaScriptEventName(eventType, map, el) {\n return map[eventType].styleProperty in el.style ? map[eventType].noPrefix : map[eventType].webkitPrefix;\n}\n\n/**\n * Helper function to determine browser prefix for CSS3 animation events\n * and property names.\n * @param {!Object} windowObj\n * @param {string} eventType\n * @return {string}\n */\nfunction getAnimationName(windowObj, eventType) {\n if (!hasProperShape(windowObj) || !eventFoundInMaps(eventType)) {\n return eventType;\n }\n\n var map = /** @type {!Object<string, !VendorPropertyMapType>} */eventType in eventTypeMap ? eventTypeMap : cssPropertyMap;\n var el = windowObj['document']['createElement']('div');\n var eventName = '';\n\n if (map === eventTypeMap) {\n eventName = getJavaScriptEventName(eventType, map, el);\n } else {\n eventName = map[eventType].noPrefix in el.style ? map[eventType].noPrefix : map[eventType].webkitPrefix;\n }\n\n return eventName;\n}\n\n// Public functions to access getAnimationName() for JavaScript events or CSS\n// property names.\n\nvar transformStyleProperties = ['transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'MSTransform'];\n\n/**\n * @param {!Object} windowObj\n * @param {string} eventType\n * @return {string}\n */\nfunction getCorrectEventName(windowObj, eventType) {\n return getAnimationName(windowObj, eventType);\n}\n\n/**\n * @param {!Object} windowObj\n * @param {string} eventType\n * @return {string}\n */\nfunction getCorrectPropertyName(windowObj, eventType) {\n return getAnimationName(windowObj, eventType);\n}\n\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCList\", function() { return MDCList; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(38);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_dom_ponyfill__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(39);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCListFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n // eslint-disable-line no-unused-vars\n\n/**\n * @extends MDCComponent<!MDCListFoundation>\n */\n\nvar MDCList = function (_MDCComponent) {\n _inherits(MDCList, _MDCComponent);\n\n /** @param {...?} args */\n function MDCList() {\n var _ref;\n\n _classCallCheck(this, MDCList);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {!Function} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCList.__proto__ || Object.getPrototypeOf(MDCList)).call.apply(_ref, [this].concat(args)));\n\n _this.handleKeydown_;\n /** @private {!Function} */\n _this.handleClick_;\n /** @private {!Function} */\n _this.focusInEventListener_;\n /** @private {!Function} */\n _this.focusOutEventListener_;\n return _this;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCList}\n */\n\n\n _createClass(MDCList, [{\n key: 'destroy',\n value: function destroy() {\n this.root_.removeEventListener('keydown', this.handleKeydown_);\n this.root_.removeEventListener('click', this.handleClick_);\n this.root_.removeEventListener('focusin', this.focusInEventListener_);\n this.root_.removeEventListener('focusout', this.focusOutEventListener_);\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function 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.root_.addEventListener('keydown', this.handleKeydown_);\n this.root_.addEventListener('focusin', this.focusInEventListener_);\n this.root_.addEventListener('focusout', this.focusOutEventListener_);\n this.root_.addEventListener('click', this.handleClick_);\n this.layout();\n this.initializeListType();\n }\n }, {\n key: 'layout',\n value: function layout() {\n var direction = this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].ARIA_ORIENTATION);\n this.vertical = direction !== __WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* 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])')).forEach(function (ele) {\n ele.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(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].FOCUSABLE_CHILD_ELEMENTS)).forEach(function (ele) {\n return ele.setAttribute('tabindex', -1);\n });\n\n this.foundation_.layout();\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 * @param {Event} evt\n * @private\n */\n\n }, {\n key: 'getListItemIndex_',\n value: function getListItemIndex_(evt) {\n var eventTarget = /** @type {HTMLElement} */evt.target;\n var index = -1;\n\n // Find the first ancestor that is a list item or the list.\n while (!eventTarget.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].LIST_ITEM_CLASS) && !eventTarget.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].ROOT)) {\n eventTarget = eventTarget.parentElement;\n }\n\n // Get the index of the element if it is a list item.\n if (eventTarget.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].LIST_ITEM_CLASS)) {\n index = this.listElements.indexOf(eventTarget);\n }\n\n return index;\n }\n\n /**\n * Used to figure out which element was clicked before sending the event to the foundation.\n * @param {Event} evt\n * @private\n */\n\n }, {\n key: 'handleFocusInEvent_',\n value: function handleFocusInEvent_(evt) {\n var 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 * @param {Event} evt\n * @private\n */\n\n }, {\n key: 'handleFocusOutEvent_',\n value: function handleFocusOutEvent_(evt) {\n var 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 * @param {Event} evt\n * @private\n */\n\n }, {\n key: 'handleKeydownEvent_',\n value: function handleKeydownEvent_(evt) {\n var index = this.getListItemIndex_(evt);\n\n if (index >= 0) {\n this.foundation_.handleKeydown(evt, evt.target.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].LIST_ITEM_CLASS), index);\n }\n }\n\n /**\n * Used to figure out which element was clicked before sending the event to the foundation.\n * @param {Event} evt\n * @private\n */\n\n }, {\n key: 'handleClickEvent_',\n value: function handleClickEvent_(evt) {\n var index = this.getListItemIndex_(evt);\n\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 = !Object(__WEBPACK_IMPORTED_MODULE_3__material_dom_ponyfill__[\"matches\"])( /** @type {!Element} */evt.target, __WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].CHECKBOX_RADIO_SELECTOR);\n this.foundation_.handleClick(index, toggleCheckbox);\n }\n\n /**\n * Initialize selectedIndex value based on pre-selected checkbox list items, single selection or radio.\n */\n\n }, {\n key: 'initializeListType',\n value: function initializeListType() {\n var _this2 = this;\n\n var checkboxListItems = this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].ARIA_ROLE_CHECKBOX_SELECTOR);\n var singleSelectedListItem = this.root_.querySelector('.' + __WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].LIST_ITEM_ACTIVATED_CLASS + ',\\n .' + __WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].LIST_ITEM_SELECTED_CLASS);\n var radioSelectedListItem = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].ARIA_CHECKED_RADIO_SELECTOR);\n\n if (checkboxListItems.length) {\n var preselectedItems = this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].ARIA_CHECKED_CHECKBOX_SELECTOR);\n this.selectedIndex = [].map.call(preselectedItems, function (listItem) {\n return _this2.listElements.indexOf(listItem);\n });\n } else if (singleSelectedListItem) {\n if (singleSelectedListItem.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* 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 /** @param {boolean} value */\n\n }, {\n key: 'getDefaultFoundation',\n\n\n /** @return {!MDCListFoundation} */\n value: function getDefaultFoundation() {\n var _this3 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */]( /** @type {!MDCListAdapter} */_extends({\n getListItemCount: function getListItemCount() {\n return _this3.listElements.length;\n },\n getFocusedElementIndex: function getFocusedElementIndex() {\n return _this3.listElements.indexOf(document.activeElement);\n },\n setAttributeForElementIndex: function setAttributeForElementIndex(index, attr, value) {\n var element = _this3.listElements[index];\n if (element) {\n element.setAttribute(attr, value);\n }\n },\n removeAttributeForElementIndex: function removeAttributeForElementIndex(index, attr) {\n var element = _this3.listElements[index];\n if (element) {\n element.removeAttribute(attr);\n }\n },\n addClassForElementIndex: function addClassForElementIndex(index, className) {\n var element = _this3.listElements[index];\n if (element) {\n element.classList.add(className);\n }\n },\n removeClassForElementIndex: function removeClassForElementIndex(index, className) {\n var element = _this3.listElements[index];\n if (element) {\n element.classList.remove(className);\n }\n },\n focusItemAtIndex: function focusItemAtIndex(index) {\n var element = _this3.listElements[index];\n if (element) {\n element.focus();\n }\n },\n setTabIndexForListItemChildren: function setTabIndexForListItemChildren(listItemIndex, tabIndexValue) {\n var element = _this3.listElements[listItemIndex];\n var listItemChildren = [].slice.call(element.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].CHILD_ELEMENTS_TO_TOGGLE_TABINDEX));\n listItemChildren.forEach(function (ele) {\n return ele.setAttribute('tabindex', tabIndexValue);\n });\n },\n hasCheckboxAtIndex: function hasCheckboxAtIndex(index) {\n var listItem = _this3.listElements[index];\n return !!listItem.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].CHECKBOX_SELECTOR);\n },\n hasRadioAtIndex: function hasRadioAtIndex(index) {\n var listItem = _this3.listElements[index];\n return !!listItem.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].RADIO_SELECTOR);\n },\n isCheckboxCheckedAtIndex: function isCheckboxCheckedAtIndex(index) {\n var listItem = _this3.listElements[index];\n var toggleEl = listItem.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].CHECKBOX_SELECTOR);\n return toggleEl.checked;\n },\n setCheckedCheckboxOrRadioAtIndex: function setCheckedCheckboxOrRadioAtIndex(index, isChecked) {\n var listItem = _this3.listElements[index];\n var toggleEl = listItem.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].CHECKBOX_RADIO_SELECTOR);\n toggleEl.checked = isChecked;\n\n var event = document.createEvent('Event');\n event.initEvent('change', true, true);\n toggleEl.dispatchEvent(event);\n },\n notifyAction: function notifyAction(index) {\n _this3.emit(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].ACTION_EVENT, index, /** shouldBubble */true);\n },\n isFocusInsideList: function isFocusInsideList() {\n return _this3.root_.contains(document.activeElement);\n }\n }));\n }\n }, {\n key: 'vertical',\n set: function set(value) {\n this.foundation_.setVerticalOrientation(value);\n }\n\n /** @return Array<!Element>*/\n\n }, {\n key: 'listElements',\n get: function get() {\n return [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].ENABLED_ITEMS_SELECTOR));\n }\n\n /** @param {boolean} value */\n\n }, {\n key: 'wrapFocus',\n set: function set(value) {\n this.foundation_.setWrapFocus(value);\n }\n\n /** @param {boolean} isSingleSelectionList */\n\n }, {\n key: 'singleSelection',\n set: function set(isSingleSelectionList) {\n this.foundation_.setSingleSelection(isSingleSelectionList);\n }\n\n /** @return {!Index} */\n\n }, {\n key: 'selectedIndex',\n get: function get() {\n return this.foundation_.getSelectedIndex();\n }\n\n /** @param {!Index} index */\n ,\n set: function set(index) {\n this.foundation_.setSelectedIndex(index);\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCList(root);\n }\n }]);\n\n return MDCList;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(38);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(39);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n // eslint-disable-line no-unused-vars\n\nvar ELEMENTS_KEY_ALLOWED_IN = ['input', 'button', 'textarea', 'select'];\n\nvar MDCListFoundation = function (_MDCFoundation) {\n _inherits(MDCListFoundation, _MDCFoundation);\n\n _createClass(MDCListFoundation, null, [{\n key: 'strings',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n\n /**\n * {@see MDCListAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCListAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCListAdapter} */{\n getListItemCount: function getListItemCount() {},\n getFocusedElementIndex: function getFocusedElementIndex() {},\n setAttributeForElementIndex: function setAttributeForElementIndex() {},\n removeAttributeForElementIndex: function removeAttributeForElementIndex() {},\n addClassForElementIndex: function addClassForElementIndex() {},\n removeClassForElementIndex: function removeClassForElementIndex() {},\n focusItemAtIndex: function focusItemAtIndex() {},\n setTabIndexForListItemChildren: function setTabIndexForListItemChildren() {},\n hasRadioAtIndex: function hasRadioAtIndex() {},\n hasCheckboxAtIndex: function hasCheckboxAtIndex() {},\n isCheckboxCheckedAtIndex: function isCheckboxCheckedAtIndex() {},\n setCheckedCheckboxOrRadioAtIndex: function setCheckedCheckboxOrRadioAtIndex() {},\n notifyAction: function notifyAction() {},\n isFocusInsideList: function isFocusInsideList() {}\n }\n );\n }\n\n /**\n * @param {!MDCListAdapter=} adapter\n */\n\n }]);\n\n function MDCListFoundation(adapter) {\n _classCallCheck(this, MDCListFoundation);\n\n /** @private {boolean} */\n var _this = _possibleConstructorReturn(this, (MDCListFoundation.__proto__ || Object.getPrototypeOf(MDCListFoundation)).call(this, _extends(MDCListFoundation.defaultAdapter, adapter)));\n\n _this.wrapFocus_ = false;\n\n /** @private {boolean} */\n _this.isVertical_ = true;\n\n /** @private {boolean} */\n _this.isSingleSelectionList_ = false;\n\n /** @private {!Index} */\n _this.selectedIndex_ = -1;\n\n /** @private {number} */\n _this.focusedItemIndex_ = -1;\n\n /** @private {boolean} */\n _this.useActivatedClass_ = false;\n\n /** @private {boolean} */\n _this.isCheckboxList_ = false;\n\n /** @private {boolean} */\n _this.isRadioList_ = false;\n return _this;\n }\n\n _createClass(MDCListFoundation, [{\n key: 'layout',\n value: function layout() {\n if (this.adapter_.getListItemCount() === 0) 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 /**\n * Sets the private wrapFocus_ variable.\n * @param {boolean} value\n */\n\n }, {\n key: 'setWrapFocus',\n value: function setWrapFocus(value) {\n this.wrapFocus_ = value;\n }\n\n /**\n * Sets the isVertical_ private variable.\n * @param {boolean} value\n */\n\n }, {\n key: 'setVerticalOrientation',\n value: function setVerticalOrientation(value) {\n this.isVertical_ = value;\n }\n\n /**\n * Sets the isSingleSelectionList_ private variable.\n * @param {boolean} value\n */\n\n }, {\n key: 'setSingleSelection',\n value: function setSingleSelection(value) {\n this.isSingleSelectionList_ = value;\n }\n\n /**\n * Sets the useActivatedClass_ private variable.\n * @param {boolean} useActivated\n */\n\n }, {\n key: 'setUseActivatedClass',\n value: function setUseActivatedClass(useActivated) {\n this.useActivatedClass_ = useActivated;\n }\n\n /** @return {!Index} */\n\n }, {\n key: 'getSelectedIndex',\n value: function getSelectedIndex() {\n return this.selectedIndex_;\n }\n\n /** @param {!Index} index */\n\n }, {\n key: 'setSelectedIndex',\n value: function setSelectedIndex(index) {\n if (!this.isIndexValid_(index)) return;\n\n if (this.isCheckboxList_) {\n this.setCheckboxAtIndex_( /** @type {!Array<number>} */index);\n } else if (this.isRadioList_) {\n this.setRadioAtIndex_( /** @type {number} */index);\n } else {\n this.setSingleSelectionAtIndex_( /** @type {number} */index);\n }\n }\n\n /**\n * Focus in handler for the list items.\n * @param evt\n * @param {number} listItemIndex\n */\n\n }, {\n key: 'handleFocusIn',\n value: function handleFocusIn(evt, listItemIndex) {\n if (listItemIndex >= 0) {\n this.adapter_.setTabIndexForListItemChildren(listItemIndex, 0);\n }\n }\n\n /**\n * Focus out handler for the list items.\n * @param {Event} evt\n * @param {number} listItemIndex\n */\n\n }, {\n key: 'handleFocusOut',\n value: function handleFocusOut(evt, listItemIndex) {\n var _this2 = this;\n\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(function () {\n if (!_this2.adapter_.isFocusInsideList()) {\n _this2.setTabindexToFirstSelectedItem_();\n }\n }, 0);\n }\n\n /**\n * Key handler for the list.\n * @param {Event} evt\n * @param {boolean} isRootListItem\n * @param {number} listItemIndex\n */\n\n }, {\n key: 'handleKeydown',\n value: function handleKeydown(evt, isRootListItem, listItemIndex) {\n var arrowLeft = evt.key === 'ArrowLeft' || evt.keyCode === 37;\n var arrowUp = evt.key === 'ArrowUp' || evt.keyCode === 38;\n var arrowRight = evt.key === 'ArrowRight' || evt.keyCode === 39;\n var arrowDown = evt.key === 'ArrowDown' || evt.keyCode === 40;\n var isHome = evt.key === 'Home' || evt.keyCode === 36;\n var isEnd = evt.key === 'End' || evt.keyCode === 35;\n var isEnter = evt.key === 'Enter' || evt.keyCode === 13;\n var isSpace = evt.key === 'Space' || evt.keyCode === 32;\n\n var currentIndex = this.adapter_.getFocusedElementIndex();\n var nextIndex = -1;\n if (currentIndex === -1) {\n currentIndex = listItemIndex;\n if (currentIndex < 0) {\n // If this event doesn't have a mdc-list-item ancestor from the\n // current list (not from a sublist), return early.\n return;\n }\n }\n\n if (this.isVertical_ && arrowDown || !this.isVertical_ && arrowRight) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusNextElement(currentIndex);\n } else if (this.isVertical_ && arrowUp || !this.isVertical_ && arrowLeft) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusPrevElement(currentIndex);\n } else if (isHome) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusFirstElement();\n } else if (isEnd) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusLastElement();\n } else if (isEnter || isSpace) {\n if (isRootListItem) {\n // Return early if enter key is pressed on anchor element which triggers synthetic MouseEvent event.\n if (evt.target.tagName === 'A' && isEnter) return;\n this.preventDefaultEvent_(evt);\n\n if (this.isSelectableList_()) {\n this.setSelectedIndexOnAction_(currentIndex);\n }\n\n this.adapter_.notifyAction(currentIndex);\n }\n }\n\n this.focusedItemIndex_ = currentIndex;\n\n if (nextIndex >= 0) {\n this.setTabindexAtIndex_(nextIndex);\n this.focusedItemIndex_ = nextIndex;\n }\n }\n\n /**\n * Click handler for the list.\n * @param {number} index\n * @param {boolean} toggleCheckbox\n */\n\n }, {\n key: 'handleClick',\n value: function handleClick(index, toggleCheckbox) {\n if (index === -1) return;\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 * Ensures that preventDefault is only called if the containing element doesn't\n * consume the event, and it will cause an unintended scroll.\n * @param {Event} evt\n * @private\n */\n\n }, {\n key: 'preventDefaultEvent_',\n value: function preventDefaultEvent_(evt) {\n var tagName = ('' + evt.target.tagName).toLowerCase();\n if (ELEMENTS_KEY_ALLOWED_IN.indexOf(tagName) === -1) {\n evt.preventDefault();\n }\n }\n\n /**\n * Focuses the next element on the list.\n * @param {number} index\n * @return {number}\n */\n\n }, {\n key: 'focusNextElement',\n value: function focusNextElement(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\n return nextIndex;\n }\n\n /**\n * Focuses the previous element on the list.\n * @param {number} index\n * @return {number}\n */\n\n }, {\n key: 'focusPrevElement',\n value: function focusPrevElement(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\n return prevIndex;\n }\n\n /**\n * @return {number}\n */\n\n }, {\n key: 'focusFirstElement',\n value: function focusFirstElement() {\n this.adapter_.focusItemAtIndex(0);\n return 0;\n }\n\n /**\n * @return {number}\n */\n\n }, {\n key: 'focusLastElement',\n value: function focusLastElement() {\n var lastIndex = this.adapter_.getListItemCount() - 1;\n this.adapter_.focusItemAtIndex(lastIndex);\n return lastIndex;\n }\n\n /**\n * @param {number} index\n * @private\n */\n\n }, {\n key: 'setSingleSelectionAtIndex_',\n value: function setSingleSelectionAtIndex_(index) {\n var selectedClassName = __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].LIST_ITEM_SELECTED_CLASS;\n if (this.useActivatedClass_) {\n selectedClassName = __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].LIST_ITEM_ACTIVATED_CLASS;\n }\n\n if (this.selectedIndex_ >= 0 && this.selectedIndex_ !== index) {\n this.adapter_.removeClassForElementIndex(this.selectedIndex_, selectedClassName);\n this.adapter_.setAttributeForElementIndex(this.selectedIndex_, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_SELECTED, 'false');\n }\n\n this.adapter_.addClassForElementIndex(index, selectedClassName);\n this.adapter_.setAttributeForElementIndex(index, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_SELECTED, 'true');\n\n this.selectedIndex_ = index;\n }\n\n /**\n * Toggles radio at give index. Radio doesn't change the checked state if it is already checked.\n * @param {number} index\n * @private\n */\n\n }, {\n key: 'setRadioAtIndex_',\n value: function setRadioAtIndex_(index) {\n this.adapter_.setCheckedCheckboxOrRadioAtIndex(index, true);\n\n if (this.selectedIndex_ >= 0) {\n this.adapter_.setAttributeForElementIndex(this.selectedIndex_, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_CHECKED, 'false');\n }\n\n this.adapter_.setAttributeForElementIndex(index, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_CHECKED, 'true');\n\n this.selectedIndex_ = index;\n }\n\n /**\n * @param {!Array<number>} index\n * @private\n */\n\n }, {\n key: 'setCheckboxAtIndex_',\n value: function setCheckboxAtIndex_(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\n this.adapter_.setCheckedCheckboxOrRadioAtIndex(i, isChecked);\n this.adapter_.setAttributeForElementIndex(i, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_CHECKED, isChecked ? 'true' : 'false');\n }\n\n this.selectedIndex_ = index;\n }\n\n /**\n * @param {number} index\n * @private\n */\n\n }, {\n key: 'setTabindexAtIndex_',\n value: function setTabindexAtIndex_(index) {\n if (this.focusedItemIndex_ === -1 && index !== 0) {\n // If no list item was selected set first list item's tabindex to -1.\n // Generally, tabindex is set to 0 on first list item of list that has no preselected items.\n this.adapter_.setAttributeForElementIndex(0, 'tabindex', -1);\n } else if (this.focusedItemIndex_ >= 0 && this.focusedItemIndex_ !== index) {\n this.adapter_.setAttributeForElementIndex(this.focusedItemIndex_, 'tabindex', -1);\n }\n\n this.adapter_.setAttributeForElementIndex(index, 'tabindex', 0);\n }\n\n /**\n * @return {boolean} Return true if it is single selectin list, checkbox list or radio list.\n * @private\n */\n\n }, {\n key: 'isSelectableList_',\n value: function isSelectableList_() {\n return this.isSingleSelectionList_ || this.isCheckboxList_ || this.isRadioList_;\n }\n\n /** @private */\n\n }, {\n key: 'setTabindexToFirstSelectedItem_',\n value: function setTabindexToFirstSelectedItem_() {\n var targetIndex = 0;\n\n if (this.isSelectableList_()) {\n if (typeof this.selectedIndex_ === 'number' && this.selectedIndex_ !== -1) {\n targetIndex = this.selectedIndex_;\n } else if (this.selectedIndex_ instanceof Array && this.selectedIndex_.length > 0) {\n targetIndex = this.selectedIndex_.reduce(function (currentIndex, minIndex) {\n return Math.min(currentIndex, minIndex);\n });\n }\n }\n\n this.setTabindexAtIndex_(targetIndex);\n }\n\n /**\n * @param {!Index} index\n * @return {boolean}\n * @private\n */\n\n }, {\n key: 'isIndexValid_',\n value: function isIndexValid_(index) {\n var _this3 = this;\n\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(function (i) {\n return _this3.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\n /**\n * @param {number} index\n * @return {boolean}\n * @private\n */\n\n }, {\n key: 'isIndexInRange_',\n value: function isIndexInRange_(index) {\n var listSize = this.adapter_.getListItemCount();\n return index >= 0 && index < listSize;\n }\n\n /**\n * @param {number} index\n * @param {boolean=} toggleCheckbox\n * @private\n */\n\n }, {\n key: 'setSelectedIndexOnAction_',\n value: function setSelectedIndexOnAction_(index) {\n var toggleCheckbox = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (this.isCheckboxList_) {\n this.toggleCheckboxAtIndex_(index, toggleCheckbox);\n } else {\n this.setSelectedIndex(index);\n }\n }\n\n /**\n * @param {number} index\n * @param {boolean} toggleCheckbox\n * @private\n */\n\n }, {\n key: 'toggleCheckboxAtIndex_',\n value: function toggleCheckboxAtIndex_(index, toggleCheckbox) {\n var 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, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* 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 if (this.selectedIndex_ === -1) {\n this.selectedIndex_ = [];\n }\n\n if (isChecked) {\n this.selectedIndex_.push(index);\n } else {\n this.selectedIndex_ = this.selectedIndex_.filter(function (i) {\n return i !== index;\n });\n }\n }\n }]);\n\n return MDCListFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCListFoundation);\n\n/***/ }),\n/* 16 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCLineRipple\", function() { return MDCLineRipple; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(111);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCLineRippleFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCLineRippleFoundation>}\n * @final\n */\n\nvar MDCLineRipple = function (_MDCComponent) {\n _inherits(MDCLineRipple, _MDCComponent);\n\n function MDCLineRipple() {\n _classCallCheck(this, MDCLineRipple);\n\n return _possibleConstructorReturn(this, (MDCLineRipple.__proto__ || Object.getPrototypeOf(MDCLineRipple)).apply(this, arguments));\n }\n\n _createClass(MDCLineRipple, [{\n key: 'activate',\n\n\n /**\n * Activates the line ripple\n */\n value: function activate() {\n this.foundation_.activate();\n }\n\n /**\n * Deactivates the line ripple\n */\n\n }, {\n key: 'deactivate',\n value: function deactivate() {\n this.foundation_.deactivate();\n }\n\n /**\n * Sets the transform origin given a user's click location. The `rippleCenter` is the\n * x-coordinate of the middle of the ripple.\n * @param {number} xCoordinate\n */\n\n }, {\n key: 'setRippleCenter',\n value: function setRippleCenter(xCoordinate) {\n this.foundation_.setRippleCenter(xCoordinate);\n }\n\n /**\n * @return {!MDCLineRippleFoundation}\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */]( /** @type {!MDCLineRippleAdapter} */_extends({\n addClass: function addClass(className) {\n return _this2.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this2.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this2.root_.classList.contains(className);\n },\n setStyle: function setStyle(propertyName, value) {\n return _this2.root_.style[propertyName] = value;\n },\n registerEventHandler: function registerEventHandler(evtType, handler) {\n return _this2.root_.addEventListener(evtType, handler);\n },\n deregisterEventHandler: function deregisterEventHandler(evtType, handler) {\n return _this2.root_.removeEventListener(evtType, handler);\n }\n }));\n }\n }], [{\n key: 'attachTo',\n\n /**\n * @param {!Element} root\n * @return {!MDCLineRipple}\n */\n value: function attachTo(root) {\n return new MDCLineRipple(root);\n }\n }]);\n\n return MDCLineRipple;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\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\n/** @enum {string} */\nvar cssClasses = {\n ROOT: 'mdc-menu',\n MENU_SELECTED_LIST_ITEM: 'mdc-menu-item--selected',\n MENU_SELECTION_GROUP: 'mdc-menu__selection-group'\n};\n\n/** @enum {string} */\nvar strings = {\n SELECTED_EVENT: 'MDCMenu:selected',\n ARIA_SELECTED_ATTR: 'aria-selected',\n LIST_SELECTOR: '.mdc-list',\n CHECKBOX_SELECTOR: 'input[type=\"checkbox\"]'\n};\n\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return MDCMenuSurfaceFoundation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return AnchorMargin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(19);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n/**\n * @typedef {{\n * top: number,\n * right: number,\n * bottom: number,\n * left: number\n * }}\n */\nvar AnchorMargin = void 0;\n\n/* eslint-disable no-unused-vars */\n/**\n * @typedef {{\n * viewport: { width: number, height: number },\n * viewportDistance: {top: number, right: number, bottom: number, left: number},\n * anchorHeight: number,\n * anchorWidth: number,\n * surfaceHeight: number,\n * surfaceWidth: number,\n * bodyDimensions,\n * windowScroll,\n * }}\n */\nvar AutoLayoutMeasurements = void 0;\n/* eslint-enable no-unused-vars */\n\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCMenuSurfaceAdapter>}\n */\n\nvar MDCMenuSurfaceFoundation = function (_MDCFoundation) {\n _inherits(MDCMenuSurfaceFoundation, _MDCFoundation);\n\n _createClass(MDCMenuSurfaceFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum{cssClasses} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* cssClasses */];\n }\n\n /** @return enum{string} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"e\" /* strings */];\n }\n\n /** @return enum {number} */\n\n }, {\n key: 'numbers',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"d\" /* numbers */];\n }\n\n /** @return enum{number} */\n\n }, {\n key: 'Corner',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* Corner */];\n }\n\n /**\n * {@see MDCMenuSurfaceAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCMenuSurfaceAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCMenuSurfaceAdapter} */{\n addClass: function addClass() {},\n removeClass: function removeClass() {},\n hasClass: function hasClass() {\n return false;\n },\n hasAnchor: function hasAnchor() {\n return false;\n },\n notifyClose: function notifyClose() {},\n notifyOpen: function notifyOpen() {},\n isElementInContainer: function isElementInContainer() {\n return false;\n },\n isRtl: function isRtl() {\n return false;\n },\n setTransformOrigin: function setTransformOrigin() {},\n isFocused: function isFocused() {\n return false;\n },\n saveFocus: function saveFocus() {},\n restoreFocus: function restoreFocus() {},\n isFirstElementFocused: function isFirstElementFocused() {},\n isLastElementFocused: function isLastElementFocused() {},\n focusFirstElement: function focusFirstElement() {},\n focusLastElement: function focusLastElement() {},\n getInnerDimensions: function getInnerDimensions() {\n return {};\n },\n getAnchorDimensions: function getAnchorDimensions() {\n return {};\n },\n getWindowDimensions: function getWindowDimensions() {\n return {};\n },\n getBodyDimensions: function getBodyDimensions() {\n return {};\n },\n getWindowScroll: function getWindowScroll() {\n return {};\n },\n setPosition: function setPosition() {},\n setMaxHeight: function setMaxHeight() {}\n }\n );\n }\n\n /** @param {!MDCMenuSurfaceAdapter} adapter */\n\n }]);\n\n function MDCMenuSurfaceFoundation(adapter) {\n _classCallCheck(this, MDCMenuSurfaceFoundation);\n\n /** @private {boolean} */\n var _this = _possibleConstructorReturn(this, (MDCMenuSurfaceFoundation.__proto__ || Object.getPrototypeOf(MDCMenuSurfaceFoundation)).call(this, _extends(MDCMenuSurfaceFoundation.defaultAdapter, adapter)));\n\n _this.isOpen_ = false;\n /** @private {number} */\n _this.openAnimationEndTimerId_ = 0;\n /** @private {number} */\n _this.closeAnimationEndTimerId_ = 0;\n /** @private {number} */\n _this.animationRequestId_ = 0;\n /** @private {!{ width: number, height: number }} */\n _this.dimensions_;\n /** @private {!Corner} */\n _this.anchorCorner_ = __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* Corner */].TOP_START;\n /** @private {!AnchorMargin} */\n _this.anchorMargin_ = { top: 0, right: 0, bottom: 0, left: 0 };\n /** @private {?AutoLayoutMeasurements} */\n _this.measures_ = null;\n /** @private {boolean} */\n _this.quickOpen_ = false;\n /** @private {boolean} */\n _this.hoistedElement_ = false;\n /** @private {boolean} */\n _this.isFixedPosition_ = false;\n /** @private {!{x: number, y: number}} */\n _this.position_ = { x: 0, y: 0 };\n return _this;\n }\n\n _createClass(MDCMenuSurfaceFoundation, [{\n key: 'init',\n value: function init() {\n var _MDCMenuSurfaceFounda = MDCMenuSurfaceFoundation.cssClasses,\n ROOT = _MDCMenuSurfaceFounda.ROOT,\n OPEN = _MDCMenuSurfaceFounda.OPEN;\n\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 key: 'destroy',\n value: function 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} corner Default anchor corner alignment of top-left menu surface corner.\n */\n\n }, {\n key: 'setAnchorCorner',\n value: function setAnchorCorner(corner) {\n this.anchorCorner_ = corner;\n }\n\n /**\n * @param {!AnchorMargin} margin set of margin values from anchor.\n */\n\n }, {\n key: 'setAnchorMargin',\n value: function setAnchorMargin(margin) {\n this.anchorMargin_.top = typeof margin.top === 'number' ? margin.top : 0;\n this.anchorMargin_.right = typeof margin.right === 'number' ? margin.right : 0;\n this.anchorMargin_.bottom = typeof margin.bottom === 'number' ? margin.bottom : 0;\n this.anchorMargin_.left = typeof margin.left === 'number' ? margin.left : 0;\n }\n\n /**\n * Used to indicate if the menu-surface is hoisted to the body.\n * @param {boolean} isHoisted\n */\n\n }, {\n key: 'setIsHoisted',\n value: function setIsHoisted(isHoisted) {\n this.hoistedElement_ = isHoisted;\n }\n\n /**\n * Used to set the menu-surface calculations based on a fixed position menu.\n * @param {boolean} isFixedPosition\n */\n\n }, {\n key: 'setFixedPosition',\n value: function setFixedPosition(isFixedPosition) {\n this.isFixedPosition_ = isFixedPosition;\n }\n\n /**\n * Sets the menu-surface position on the page.\n * @param {number} x\n * @param {number} y\n */\n\n }, {\n key: 'setAbsolutePosition',\n value: function setAbsolutePosition(x, y) {\n this.position_.x = this.typeCheckisFinite_(x) ? x : 0;\n this.position_.y = this.typeCheckisFinite_(y) ? y : 0;\n }\n\n /** @param {boolean} quickOpen */\n\n }, {\n key: 'setQuickOpen',\n value: function setQuickOpen(quickOpen) {\n this.quickOpen_ = quickOpen;\n }\n\n /**\n * Handle clicks and close if not within menu-surface element.\n * @param {!Event} evt\n */\n\n }, {\n key: 'handleBodyClick',\n value: function handleBodyClick(evt) {\n var el = evt.target;\n\n if (this.adapter_.isElementInContainer(el)) {\n return;\n }\n\n this.close();\n }\n }, {\n key: 'handleKeydown',\n\n\n /**\n * Handle keys that close the surface.\n * @param {!Event} evt\n */\n value: function handleKeydown(evt) {\n var keyCode = evt.keyCode,\n key = evt.key,\n shiftKey = evt.shiftKey;\n\n\n var isEscape = key === 'Escape' || keyCode === 27;\n var 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 /**\n * @return {!AutoLayoutMeasurements} Measurements used to position menu surface popup.\n */\n\n }, {\n key: 'getAutoLayoutMeasurements_',\n value: function getAutoLayoutMeasurements_() {\n var anchorRect = this.adapter_.getAnchorDimensions();\n var viewport = this.adapter_.getWindowDimensions();\n var bodyDimensions = this.adapter_.getBodyDimensions();\n var windowScroll = this.adapter_.getWindowScroll();\n\n if (!anchorRect) {\n anchorRect = /** @type {ClientRect} */{\n x: this.position_.x,\n y: this.position_.y,\n top: this.position_.y,\n bottom: this.position_.y,\n left: this.position_.x,\n right: this.position_.x,\n height: 0,\n width: 0\n };\n }\n\n return {\n viewport: viewport,\n bodyDimensions: bodyDimensions,\n windowScroll: windowScroll,\n viewportDistance: {\n top: anchorRect.top,\n right: viewport.width - anchorRect.right,\n left: anchorRect.left,\n bottom: viewport.height - anchorRect.bottom\n },\n anchorHeight: anchorRect.height,\n anchorWidth: anchorRect.width,\n surfaceHeight: this.dimensions_.height,\n surfaceWidth: this.dimensions_.width\n };\n }\n\n /**\n * Computes the corner of the anchor from which to animate and position the menu surface.\n * @return {!Corner}\n * @private\n */\n\n }, {\n key: 'getOriginCorner_',\n value: function getOriginCorner_() {\n // Defaults: open from the top left.\n var corner = __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* Corner */].TOP_LEFT;\n\n var _measures_ = this.measures_,\n viewportDistance = _measures_.viewportDistance,\n anchorHeight = _measures_.anchorHeight,\n anchorWidth = _measures_.anchorWidth,\n surfaceHeight = _measures_.surfaceHeight,\n surfaceWidth = _measures_.surfaceWidth;\n\n var isBottomAligned = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].BOTTOM);\n var availableTop = isBottomAligned ? viewportDistance.top + anchorHeight + this.anchorMargin_.bottom : viewportDistance.top + this.anchorMargin_.top;\n var availableBottom = isBottomAligned ? viewportDistance.bottom - this.anchorMargin_.bottom : viewportDistance.bottom + anchorHeight - this.anchorMargin_.top;\n\n var topOverflow = surfaceHeight - availableTop;\n var bottomOverflow = surfaceHeight - availableBottom;\n if (bottomOverflow > 0 && topOverflow < bottomOverflow) {\n corner |= __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].BOTTOM;\n }\n\n var isRtl = this.adapter_.isRtl();\n var isFlipRtl = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].FLIP_RTL);\n var avoidHorizontalOverlap = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].RIGHT);\n var isAlignedRight = avoidHorizontalOverlap && !isRtl || !avoidHorizontalOverlap && isFlipRtl && isRtl;\n var availableLeft = isAlignedRight ? viewportDistance.left + anchorWidth + this.anchorMargin_.right : viewportDistance.left + this.anchorMargin_.left;\n var availableRight = isAlignedRight ? viewportDistance.right - this.anchorMargin_.right : viewportDistance.right + anchorWidth - this.anchorMargin_.left;\n\n var leftOverflow = surfaceWidth - availableLeft;\n var rightOverflow = surfaceWidth - availableRight;\n\n if (leftOverflow < 0 && isAlignedRight && isRtl || avoidHorizontalOverlap && !isAlignedRight && leftOverflow < 0 || rightOverflow > 0 && leftOverflow < rightOverflow) {\n corner |= __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].RIGHT;\n }\n\n return (/** @type {Corner} */corner\n );\n }\n\n /**\n * @param {!Corner} corner Origin corner of the menu surface.\n * @return {number} Horizontal offset of menu surface origin corner from corresponding anchor corner.\n * @private\n */\n\n }, {\n key: 'getHorizontalOriginOffset_',\n value: function getHorizontalOriginOffset_(corner) {\n var anchorWidth = this.measures_.anchorWidth;\n // isRightAligned corresponds to using the 'right' property on the surface.\n\n var isRightAligned = Boolean(corner & __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].RIGHT);\n var avoidHorizontalOverlap = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].RIGHT);\n\n if (isRightAligned) {\n var rightOffset = avoidHorizontalOverlap ? anchorWidth - 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.hoistedElement_ || this.isFixedPosition_) {\n return rightOffset - (this.measures_.viewport.width - this.measures_.bodyDimensions.width);\n }\n\n return rightOffset;\n }\n\n return avoidHorizontalOverlap ? anchorWidth - this.anchorMargin_.right : this.anchorMargin_.left;\n }\n\n /**\n * @param {!Corner} corner Origin corner of the menu surface.\n * @return {number} Vertical offset of menu surface origin corner from corresponding anchor corner.\n * @private\n */\n\n }, {\n key: 'getVerticalOriginOffset_',\n value: function getVerticalOriginOffset_(corner) {\n var anchorHeight = this.measures_.anchorHeight;\n\n var isBottomAligned = Boolean(corner & __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].BOTTOM);\n var avoidVerticalOverlap = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].BOTTOM);\n var y = 0;\n\n if (isBottomAligned) {\n y = avoidVerticalOverlap ? anchorHeight - this.anchorMargin_.top : -this.anchorMargin_.bottom;\n } else {\n y = avoidVerticalOverlap ? anchorHeight + this.anchorMargin_.bottom : this.anchorMargin_.top;\n }\n return y;\n }\n\n /**\n * @param {!Corner} corner Origin corner of the menu surface.\n * @return {number} Maximum height of the menu surface, based on available space. 0 indicates should not be set.\n * @private\n */\n\n }, {\n key: 'getMenuSurfaceMaxHeight_',\n value: function getMenuSurfaceMaxHeight_(corner) {\n var maxHeight = 0;\n var viewportDistance = this.measures_.viewportDistance;\n\n var isBottomAligned = Boolean(corner & __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].BOTTOM);\n var MARGIN_TO_EDGE = MDCMenuSurfaceFoundation.numbers.MARGIN_TO_EDGE;\n\n // When maximum height is not specified, it is handled from css.\n\n if (isBottomAligned) {\n maxHeight = viewportDistance.top + this.anchorMargin_.top - MARGIN_TO_EDGE;\n if (!(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].BOTTOM)) {\n maxHeight += this.measures_.anchorHeight;\n }\n } else {\n maxHeight = viewportDistance.bottom - this.anchorMargin_.bottom + this.measures_.anchorHeight - MARGIN_TO_EDGE;\n if (this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].BOTTOM) {\n maxHeight -= this.measures_.anchorHeight;\n }\n }\n\n return maxHeight;\n }\n\n /** @private */\n\n }, {\n key: 'autoPosition_',\n value: function autoPosition_() {\n var _position;\n\n // Compute measurements for autoposition methods reuse.\n this.measures_ = this.getAutoLayoutMeasurements_();\n\n var corner = this.getOriginCorner_();\n var maxMenuSurfaceHeight = this.getMenuSurfaceMaxHeight_(corner);\n var verticalAlignment = corner & __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].BOTTOM ? 'bottom' : 'top';\n var horizontalAlignment = corner & __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* CornerBit */].RIGHT ? 'right' : 'left';\n var horizontalOffset = this.getHorizontalOriginOffset_(corner);\n var verticalOffset = this.getVerticalOriginOffset_(corner);\n var position = (_position = {}, _defineProperty(_position, horizontalAlignment, horizontalOffset ? horizontalOffset : '0'), _defineProperty(_position, verticalAlignment, verticalOffset ? verticalOffset : '0'), _position);\n var _measures_2 = this.measures_,\n anchorWidth = _measures_2.anchorWidth,\n surfaceWidth = _measures_2.surfaceWidth;\n // Center align when anchor width is comparable or greater than menu surface, otherwise keep corner.\n\n if (anchorWidth / surfaceWidth > __WEBPACK_IMPORTED_MODULE_2__constants__[\"d\" /* 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.hoistedElement_ || this.isFixedPosition_) {\n position = this.adjustPositionForHoistedElement_(position);\n }\n\n for (var prop in position) {\n if (position.hasOwnProperty(prop) && position[prop] !== '0') {\n position[prop] = parseInt(position[prop], 10) + 'px';\n }\n }\n\n this.adapter_.setTransformOrigin(horizontalAlignment + ' ' + verticalAlignment);\n this.adapter_.setPosition(position);\n this.adapter_.setMaxHeight(maxMenuSurfaceHeight ? maxMenuSurfaceHeight + 'px' : '');\n\n // Clear measures after positioning is complete.\n this.measures_ = null;\n }\n\n /**\n * Calculates the offsets for positioning the menu-surface when the menu-surface has been\n * hoisted to the body.\n * @param {!{\n * top: (string|undefined),\n * right: (string|undefined),\n * bottom: (string|undefined),\n * left: (string|undefined)\n * }} position\n * @return {!{\n * top: (string|undefined),\n * right: (string|undefined),\n * bottom: (string|undefined),\n * left: (string|undefined)\n * }} position\n * @private\n */\n\n }, {\n key: 'adjustPositionForHoistedElement_',\n value: function adjustPositionForHoistedElement_(position) {\n var _measures_3 = this.measures_,\n windowScroll = _measures_3.windowScroll,\n viewportDistance = _measures_3.viewportDistance;\n\n\n for (var prop in position) {\n if (position.hasOwnProperty(prop)) {\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 if (viewportDistance.hasOwnProperty(prop)) {\n position[prop] = parseInt(position[prop], 10) + viewportDistance[prop];\n }\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 position[prop] = parseInt(position[prop], 10) + windowScroll.y;\n } else if (prop === 'bottom') {\n position[prop] = parseInt(position[prop], 10) - windowScroll.y;\n } else if (prop === 'left') {\n position[prop] = parseInt(position[prop], 10) + windowScroll.x;\n } else if (prop === 'right') {\n position[prop] = parseInt(position[prop], 10) - windowScroll.x;\n }\n }\n }\n }\n\n return position;\n }\n\n /**\n * Open the menu surface.\n */\n\n }, {\n key: 'open',\n value: function open() {\n var _this2 = this;\n\n this.adapter_.saveFocus();\n\n if (!this.quickOpen_) {\n this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);\n }\n\n this.animationRequestId_ = requestAnimationFrame(function () {\n _this2.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n _this2.dimensions_ = _this2.adapter_.getInnerDimensions();\n _this2.autoPosition_();\n if (_this2.quickOpen_) {\n _this2.adapter_.notifyOpen();\n } else {\n _this2.openAnimationEndTimerId_ = setTimeout(function () {\n _this2.openAnimationEndTimerId_ = 0;\n _this2.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);\n _this2.adapter_.notifyOpen();\n }, __WEBPACK_IMPORTED_MODULE_2__constants__[\"d\" /* numbers */].TRANSITION_OPEN_DURATION);\n }\n });\n this.isOpen_ = true;\n }\n\n /**\n * Closes the menu surface.\n */\n\n }, {\n key: 'close',\n value: function close() {\n var _this3 = this;\n\n if (!this.quickOpen_) {\n this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);\n }\n\n requestAnimationFrame(function () {\n _this3.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n if (_this3.quickOpen_) {\n _this3.adapter_.notifyClose();\n } else {\n _this3.closeAnimationEndTimerId_ = setTimeout(function () {\n _this3.closeAnimationEndTimerId_ = 0;\n _this3.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);\n _this3.adapter_.notifyClose();\n }, __WEBPACK_IMPORTED_MODULE_2__constants__[\"d\" /* numbers */].TRANSITION_CLOSE_DURATION);\n }\n });\n\n this.isOpen_ = false;\n this.maybeRestoreFocus_();\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 * @private\n */\n\n }, {\n key: 'maybeRestoreFocus_',\n value: function maybeRestoreFocus_() {\n if (this.adapter_.isFocused() || this.adapter_.isElementInContainer(document.activeElement)) {\n this.adapter_.restoreFocus();\n }\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'isOpen',\n value: function isOpen() {\n return this.isOpen_;\n }\n\n /**\n * isFinite that doesn't force conversion to number type.\n * Equivalent to Number.isFinite in ES2015, but is not included in IE11.\n * @param {number} num\n * @return {boolean}\n * @private\n */\n\n }, {\n key: 'typeCheckisFinite_',\n value: function typeCheckisFinite_(num) {\n return typeof num === 'number' && isFinite(num);\n }\n }]);\n\n return MDCMenuSurfaceFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return numbers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return CornerBit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Corner; });\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\n/** @enum {string} */\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};\n\n/** @enum {string} */\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\"])'\n};\n\n/** @enum {number} */\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};\n\n/**\n * Enum for bits in the {@see Corner) bitmap.\n * @enum {number}\n */\nvar 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 *\n * @enum {number}\n */\nvar Corner = {\n TOP_LEFT: 0,\n TOP_RIGHT: CornerBit.RIGHT,\n BOTTOM_LEFT: CornerBit.BOTTOM,\n BOTTOM_RIGHT: CornerBit.BOTTOM | CornerBit.RIGHT,\n TOP_START: CornerBit.FLIP_RTL,\n TOP_END: CornerBit.FLIP_RTL | CornerBit.RIGHT,\n BOTTOM_START: CornerBit.BOTTOM | CornerBit.FLIP_RTL,\n BOTTOM_END: CornerBit.BOTTOM | CornerBit.RIGHT | CornerBit.FLIP_RTL\n};\n\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCNotchedOutline\", function() { return MDCNotchedOutline; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(116);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_floating_label_index__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(47);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCNotchedOutlineFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCNotchedOutlineFoundation>}\n * @final\n */\n\nvar MDCNotchedOutline = function (_MDCComponent) {\n _inherits(MDCNotchedOutline, _MDCComponent);\n\n _createClass(MDCNotchedOutline, null, [{\n key: 'attachTo',\n\n /**\n * @param {!Element} root\n * @return {!MDCNotchedOutline}\n */\n value: function attachTo(root) {\n return new MDCNotchedOutline(root);\n }\n /** @param {...?} args */\n\n }]);\n\n function MDCNotchedOutline() {\n var _ref;\n\n _classCallCheck(this, MDCNotchedOutline);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {Element} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCNotchedOutline.__proto__ || Object.getPrototypeOf(MDCNotchedOutline)).call.apply(_ref, [this].concat(args)));\n\n _this.notchElement_;\n return _this;\n }\n\n _createClass(MDCNotchedOutline, [{\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n var label = this.root_.querySelector('.' + __WEBPACK_IMPORTED_MODULE_3__material_floating_label_index__[\"MDCFloatingLabelFoundation\"].cssClasses.ROOT);\n this.notchElement_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__[\"c\" /* strings */].NOTCH_ELEMENT_SELECTOR);\n\n if (label) {\n label.style.transitionDuration = '0s';\n this.root_.classList.add(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].OUTLINE_UPGRADED);\n requestAnimationFrame(function () {\n label.style.transitionDuration = '';\n });\n } else {\n this.root_.classList.add(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].NO_LABEL);\n }\n }\n\n /**\n * Updates classes and styles to open the notch to the specified width.\n * @param {number} notchWidth The notch width in the outline.\n */\n\n }, {\n key: 'notch',\n value: function notch(notchWidth) {\n this.foundation_.notch(notchWidth);\n }\n\n /**\n * Updates classes and styles to close the notch.\n */\n\n }, {\n key: 'closeNotch',\n value: function closeNotch() {\n this.foundation_.closeNotch();\n }\n\n /**\n * @return {!MDCNotchedOutlineFoundation}\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */](\n /** @type {!MDCNotchedOutlineAdapter} */_extends({\n addClass: function addClass(className) {\n return _this2.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this2.root_.classList.remove(className);\n },\n setNotchWidthProperty: function setNotchWidthProperty(width) {\n return _this2.notchElement_.style.setProperty('width', width + 'px');\n },\n removeNotchWidthProperty: function removeNotchWidthProperty() {\n return _this2.notchElement_.style.removeProperty('width');\n }\n }));\n }\n }]);\n\n return MDCNotchedOutline;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return MDCSelectIcon; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(123);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCSelectIconFoundation>}\n * @final\n */\n\nvar MDCSelectIcon = function (_MDCComponent) {\n _inherits(MDCSelectIcon, _MDCComponent);\n\n function MDCSelectIcon() {\n _classCallCheck(this, MDCSelectIcon);\n\n return _possibleConstructorReturn(this, (MDCSelectIcon.__proto__ || Object.getPrototypeOf(MDCSelectIcon)).apply(this, arguments));\n }\n\n _createClass(MDCSelectIcon, [{\n key: 'getDefaultFoundation',\n\n\n /**\n * @return {!MDCSelectIconFoundation}\n */\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */]( /** @type {!MDCSelectIconAdapter} */_extends({\n getAttr: function getAttr(attr) {\n return _this2.root_.getAttribute(attr);\n },\n setAttr: function setAttr(attr, value) {\n return _this2.root_.setAttribute(attr, value);\n },\n removeAttr: function removeAttr(attr) {\n return _this2.root_.removeAttribute(attr);\n },\n setContent: function setContent(content) {\n _this2.root_.textContent = content;\n },\n registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return _this2.root_.addEventListener(evtType, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return _this2.root_.removeEventListener(evtType, handler);\n },\n notifyIconAction: function notifyIconAction() {\n return _this2.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */);\n }\n }));\n }\n }, {\n key: 'foundation',\n\n\n /**\n * @return {!MDCSelectIconFoundation}\n */\n get: function get() {\n return this.foundation_;\n }\n }], [{\n key: 'attachTo',\n\n /**\n * @param {!Element} root\n * @return {!MDCSelectIcon}\n */\n value: function attachTo(root) {\n return new MDCSelectIcon(root);\n }\n }]);\n\n return MDCSelectIcon;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return MDCSelectHelperText; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(50);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(125);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCSelectHelperTextFoundation>}\n * @final\n */\n\nvar MDCSelectHelperText = function (_MDCComponent) {\n _inherits(MDCSelectHelperText, _MDCComponent);\n\n function MDCSelectHelperText() {\n _classCallCheck(this, MDCSelectHelperText);\n\n return _possibleConstructorReturn(this, (MDCSelectHelperText.__proto__ || Object.getPrototypeOf(MDCSelectHelperText)).apply(this, arguments));\n }\n\n _createClass(MDCSelectHelperText, [{\n key: 'getDefaultFoundation',\n\n\n /**\n * @return {!MDCSelectHelperTextFoundation}\n */\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */]( /** @type {!MDCSelectHelperTextAdapter} */_extends({\n addClass: function addClass(className) {\n return _this2.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this2.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this2.root_.classList.contains(className);\n },\n setAttr: function setAttr(attr, value) {\n return _this2.root_.setAttribute(attr, value);\n },\n removeAttr: function removeAttr(attr) {\n return _this2.root_.removeAttribute(attr);\n },\n setContent: function setContent(content) {\n _this2.root_.textContent = content;\n }\n }));\n }\n }, {\n key: 'foundation',\n\n\n /**\n * @return {!MDCSelectHelperTextFoundation}\n */\n get: function get() {\n return this.foundation_;\n }\n }], [{\n key: 'attachTo',\n\n /**\n * @param {!Element} root\n * @return {!MDCSelectHelperText}\n */\n value: function attachTo(root) {\n return new MDCSelectHelperText(root);\n }\n }]);\n\n return MDCSelectHelperText;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return numbers; });\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 cssClasses = {\n OPENING: 'mdc-snackbar--opening',\n OPEN: 'mdc-snackbar--open',\n CLOSING: 'mdc-snackbar--closing'\n};\n\nvar strings = {\n SURFACE_SELECTOR: '.mdc-snackbar__surface',\n LABEL_SELECTOR: '.mdc-snackbar__label',\n ACTION_SELECTOR: '.mdc-snackbar__action',\n DISMISS_SELECTOR: '.mdc-snackbar__dismiss',\n\n OPENING_EVENT: 'MDCSnackbar:opening',\n OPENED_EVENT: 'MDCSnackbar:opened',\n CLOSING_EVENT: 'MDCSnackbar:closing',\n CLOSED_EVENT: 'MDCSnackbar:closed',\n\n REASON_ACTION: 'action',\n REASON_DISMISS: 'dismiss',\n\n ARIA_LIVE_LABEL_TEXT_ATTR: 'data-mdc-snackbar-label-text'\n};\n\nvar numbers = {\n MIN_AUTO_DISMISS_TIMEOUT_MS: 4000,\n MAX_AUTO_DISMISS_TIMEOUT_MS: 10000,\n DEFAULT_AUTO_DISMISS_TIMEOUT_MS: 5000,\n\n // These variables need to be kept in sync with the values in _variables.scss.\n SNACKBAR_ANIMATION_OPEN_TIME_MS: 150,\n SNACKBAR_ANIMATION_CLOSE_TIME_MS: 75,\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\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(137);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCTabIndicatorAdapter>}\n * @abstract\n */\n\nvar MDCTabIndicatorFoundation = function (_MDCFoundation) {\n _inherits(MDCTabIndicatorFoundation, _MDCFoundation);\n\n _createClass(MDCTabIndicatorFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n\n /**\n * @see MDCTabIndicatorAdapter for typing information\n * @return {!MDCTabIndicatorAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCTabIndicatorAdapter} */{\n addClass: function addClass() {},\n removeClass: function removeClass() {},\n computeContentClientRect: function computeContentClientRect() {},\n setContentStyleProperty: function setContentStyleProperty() {}\n }\n );\n }\n\n /** @param {!MDCTabIndicatorAdapter} adapter */\n\n }]);\n\n function MDCTabIndicatorFoundation(adapter) {\n _classCallCheck(this, MDCTabIndicatorFoundation);\n\n return _possibleConstructorReturn(this, (MDCTabIndicatorFoundation.__proto__ || Object.getPrototypeOf(MDCTabIndicatorFoundation)).call(this, _extends(MDCTabIndicatorFoundation.defaultAdapter, adapter)));\n }\n\n /** @return {!ClientRect} */\n\n\n _createClass(MDCTabIndicatorFoundation, [{\n key: 'computeContentClientRect',\n value: function computeContentClientRect() {\n return this.adapter_.computeContentClientRect();\n }\n\n /**\n * Activates the indicator\n * @param {!ClientRect=} previousIndicatorClientRect\n * @abstract\n */\n\n }, {\n key: 'activate',\n value: function activate(previousIndicatorClientRect) {} // eslint-disable-line no-unused-vars\n\n /** @abstract */\n\n }, {\n key: 'deactivate',\n value: function deactivate() {}\n }]);\n\n return MDCTabIndicatorFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTabIndicatorFoundation);\n\n/***/ }),\n/* 25 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(151);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCTextFieldHelperTextAdapter>}\n * @final\n */\n\nvar MDCTextFieldHelperTextFoundation = function (_MDCFoundation) {\n _inherits(MDCTextFieldHelperTextFoundation, _MDCFoundation);\n\n _createClass(MDCTextFieldHelperTextFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n\n /**\n * {@see MDCTextFieldHelperTextAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCTextFieldHelperTextAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCTextFieldHelperTextAdapter} */{\n addClass: function addClass() {},\n removeClass: function removeClass() {},\n hasClass: function hasClass() {},\n setAttr: function setAttr() {},\n removeAttr: function removeAttr() {},\n setContent: function setContent() {}\n }\n );\n }\n\n /**\n * @param {!MDCTextFieldHelperTextAdapter} adapter\n */\n\n }]);\n\n function MDCTextFieldHelperTextFoundation(adapter) {\n _classCallCheck(this, MDCTextFieldHelperTextFoundation);\n\n return _possibleConstructorReturn(this, (MDCTextFieldHelperTextFoundation.__proto__ || Object.getPrototypeOf(MDCTextFieldHelperTextFoundation)).call(this, _extends(MDCTextFieldHelperTextFoundation.defaultAdapter, adapter)));\n }\n\n /**\n * Sets the content of the helper text field.\n * @param {string} content\n */\n\n\n _createClass(MDCTextFieldHelperTextFoundation, [{\n key: 'setContent',\n value: function setContent(content) {\n this.adapter_.setContent(content);\n }\n\n /** @param {boolean} isPersistent Sets the persistency of the helper text. */\n\n }, {\n key: 'setPersistent',\n value: function setPersistent(isPersistent) {\n if (isPersistent) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].HELPER_TEXT_PERSISTENT);\n } else {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].HELPER_TEXT_PERSISTENT);\n }\n }\n\n /**\n * @param {boolean} isValidation True to make the helper text act as an\n * error validation message.\n */\n\n }, {\n key: 'setValidation',\n value: function setValidation(isValidation) {\n if (isValidation) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);\n } else {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);\n }\n }\n\n /** Makes the helper text visible to the screen reader. */\n\n }, {\n key: 'showToScreenReader',\n value: function showToScreenReader() {\n this.adapter_.removeAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_HIDDEN);\n }\n\n /**\n * Sets the validity of the helper text based on the input validity.\n * @param {boolean} inputIsValid\n */\n\n }, {\n key: 'setValidity',\n value: function setValidity(inputIsValid) {\n var helperTextIsPersistent = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].HELPER_TEXT_PERSISTENT);\n var helperTextIsValidationMsg = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);\n var validationMsgNeedsDisplay = helperTextIsValidationMsg && !inputIsValid;\n\n if (validationMsgNeedsDisplay) {\n this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ROLE, 'alert');\n } else {\n this.adapter_.removeAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ROLE);\n }\n\n if (!helperTextIsPersistent && !validationMsgNeedsDisplay) {\n this.hide_();\n }\n }\n\n /**\n * Hides the help text from screen readers.\n * @private\n */\n\n }, {\n key: 'hide_',\n value: function hide_() {\n this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_HIDDEN, 'true');\n }\n }]);\n\n return MDCTextFieldHelperTextFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTextFieldHelperTextFoundation);\n\n/***/ }),\n/* 26 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(63);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(152);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCTextFieldCharacterCounterAdapter>}\n * @final\n */\n\nvar MDCTextFieldCharacterCounterFoundation = function (_MDCFoundation) {\n _inherits(MDCTextFieldCharacterCounterFoundation, _MDCFoundation);\n\n _createClass(MDCTextFieldCharacterCounterFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n\n /**\n * {@see MDCTextFieldCharacterCounterAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCTextFieldCharacterCounterAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCTextFieldCharacterCounterAdapter} */{\n setContent: function setContent() {}\n }\n );\n }\n\n /**\n * @param {!MDCTextFieldCharacterCounterAdapter} adapter\n */\n\n }]);\n\n function MDCTextFieldCharacterCounterFoundation(adapter) {\n _classCallCheck(this, MDCTextFieldCharacterCounterFoundation);\n\n return _possibleConstructorReturn(this, (MDCTextFieldCharacterCounterFoundation.__proto__ || Object.getPrototypeOf(MDCTextFieldCharacterCounterFoundation)).call(this, _extends(MDCTextFieldCharacterCounterFoundation.defaultAdapter, adapter)));\n }\n\n /**\n * @param {number} currentLength\n * @param {number} maxLength\n */\n\n\n _createClass(MDCTextFieldCharacterCounterFoundation, [{\n key: 'setCounterValue',\n value: function setCounterValue(currentLength, maxLength) {\n currentLength = Math.min(currentLength, maxLength);\n this.adapter_.setContent(currentLength + ' / ' + maxLength);\n }\n }]);\n\n return MDCTextFieldCharacterCounterFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTextFieldCharacterCounterFoundation);\n\n/***/ }),\n/* 27 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(64);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(153);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCTextFieldIconAdapter>}\n * @final\n */\n\nvar MDCTextFieldIconFoundation = function (_MDCFoundation) {\n _inherits(MDCTextFieldIconFoundation, _MDCFoundation);\n\n _createClass(MDCTextFieldIconFoundation, null, [{\n key: 'strings',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* strings */];\n }\n\n /**\n * {@see MDCTextFieldIconAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCTextFieldIconAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCTextFieldIconAdapter} */{\n getAttr: function getAttr() {},\n setAttr: function setAttr() {},\n removeAttr: function removeAttr() {},\n setContent: function setContent() {},\n registerInteractionHandler: function registerInteractionHandler() {},\n deregisterInteractionHandler: function deregisterInteractionHandler() {},\n notifyIconAction: function notifyIconAction() {}\n }\n );\n }\n\n /**\n * @param {!MDCTextFieldIconAdapter} adapter\n */\n\n }]);\n\n function MDCTextFieldIconFoundation(adapter) {\n _classCallCheck(this, MDCTextFieldIconFoundation);\n\n /** @private {string?} */\n var _this = _possibleConstructorReturn(this, (MDCTextFieldIconFoundation.__proto__ || Object.getPrototypeOf(MDCTextFieldIconFoundation)).call(this, _extends(MDCTextFieldIconFoundation.defaultAdapter, adapter)));\n\n _this.savedTabIndex_ = null;\n\n /** @private {function(!Event): undefined} */\n _this.interactionHandler_ = function (evt) {\n return _this.handleInteraction(evt);\n };\n return _this;\n }\n\n _createClass(MDCTextFieldIconFoundation, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n this.savedTabIndex_ = this.adapter_.getAttr('tabindex');\n\n ['click', 'keydown'].forEach(function (evtType) {\n _this2.adapter_.registerInteractionHandler(evtType, _this2.interactionHandler_);\n });\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n ['click', 'keydown'].forEach(function (evtType) {\n _this3.adapter_.deregisterInteractionHandler(evtType, _this3.interactionHandler_);\n });\n }\n\n /** @param {boolean} disabled */\n\n }, {\n key: 'setDisabled',\n value: function setDisabled(disabled) {\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', __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* strings */].ICON_ROLE);\n }\n }\n\n /** @param {string} label */\n\n }, {\n key: 'setAriaLabel',\n value: function setAriaLabel(label) {\n this.adapter_.setAttr('aria-label', label);\n }\n\n /** @param {string} content */\n\n }, {\n key: 'setContent',\n value: function setContent(content) {\n this.adapter_.setContent(content);\n }\n\n /**\n * Handles an interaction event\n * @param {!Event} evt\n */\n\n }, {\n key: 'handleInteraction',\n value: function handleInteraction(evt) {\n if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {\n this.adapter_.notifyIconAction();\n }\n }\n }]);\n\n return MDCTextFieldIconFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTextFieldIconFoundation);\n\n/***/ }),\n/* 28 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Ripple. Provides an interface for managing\n * - classes\n * - dom\n * - CSS variables\n * - position\n * - dimensions\n * - scroll position\n * - event handlers\n * - unbounded, active and disabled states\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nvar MDCRippleAdapter = function () {\n function MDCRippleAdapter() {\n _classCallCheck(this, MDCRippleAdapter);\n }\n\n _createClass(MDCRippleAdapter, [{\n key: \"browserSupportsCssVars\",\n\n /** @return {boolean} */\n value: function browserSupportsCssVars() {}\n\n /** @return {boolean} */\n\n }, {\n key: \"isUnbounded\",\n value: function isUnbounded() {}\n\n /** @return {boolean} */\n\n }, {\n key: \"isSurfaceActive\",\n value: function isSurfaceActive() {}\n\n /** @return {boolean} */\n\n }, {\n key: \"isSurfaceDisabled\",\n value: function isSurfaceDisabled() {}\n\n /** @param {string} className */\n\n }, {\n key: \"addClass\",\n value: function addClass(className) {}\n\n /** @param {string} className */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /** @param {!EventTarget} target */\n\n }, {\n key: \"containsEventTarget\",\n value: function containsEventTarget(target) {}\n\n /**\n * @param {string} evtType\n * @param {!Function} handler\n */\n\n }, {\n key: \"registerInteractionHandler\",\n value: function registerInteractionHandler(evtType, handler) {}\n\n /**\n * @param {string} evtType\n * @param {!Function} handler\n */\n\n }, {\n key: \"deregisterInteractionHandler\",\n value: function deregisterInteractionHandler(evtType, handler) {}\n\n /**\n * @param {string} evtType\n * @param {!Function} handler\n */\n\n }, {\n key: \"registerDocumentInteractionHandler\",\n value: function registerDocumentInteractionHandler(evtType, handler) {}\n\n /**\n * @param {string} evtType\n * @param {!Function} handler\n */\n\n }, {\n key: \"deregisterDocumentInteractionHandler\",\n value: function deregisterDocumentInteractionHandler(evtType, handler) {}\n\n /**\n * @param {!Function} handler\n */\n\n }, {\n key: \"registerResizeHandler\",\n value: function registerResizeHandler(handler) {}\n\n /**\n * @param {!Function} handler\n */\n\n }, {\n key: \"deregisterResizeHandler\",\n value: function deregisterResizeHandler(handler) {}\n\n /**\n * @param {string} varName\n * @param {?number|string} value\n */\n\n }, {\n key: \"updateCssVariable\",\n value: function updateCssVariable(varName, value) {}\n\n /** @return {!ClientRect} */\n\n }, {\n key: \"computeBoundingRect\",\n value: function computeBoundingRect() {}\n\n /** @return {{x: number, y: number}} */\n\n }, {\n key: \"getWindowPageOffset\",\n value: function getWindowPageOffset() {}\n }]);\n\n return MDCRippleAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCRippleAdapter);\n\n/***/ }),\n/* 29 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return MDCChip; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation__ = __webpack_require__(31);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(32);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_3__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n\nvar INTERACTION_EVENTS = ['click', 'keydown'];\n\n/**\n * @extends {MDCComponent<!MDCChipFoundation>}\n * @final\n */\n\nvar MDCChip = function (_MDCComponent) {\n _inherits(MDCChip, _MDCComponent);\n\n /**\n * @param {...?} args\n */\n function MDCChip() {\n var _ref;\n\n _classCallCheck(this, MDCChip);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @type {string} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCChip.__proto__ || Object.getPrototypeOf(MDCChip)).call.apply(_ref, [this].concat(args)));\n\n _this.id;\n /** @private {?Element} */\n _this.leadingIcon_;\n /** @private {?Element} */\n _this.trailingIcon_;\n /** @private {?Element} */\n _this.checkmark_;\n /** @private {!MDCRipple} */\n _this.ripple_;\n\n /** @private {?function(?Event): undefined} */\n _this.handleInteraction_;\n /** @private {?function(!Event): undefined} */\n _this.handleTransitionEnd_;\n /** @private {function(!Event): undefined} */\n _this.handleTrailingIconInteraction_;\n return _this;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCChip}\n */\n\n\n _createClass(MDCChip, [{\n key: 'initialize',\n value: function initialize() {\n var _this2 = this;\n\n var rippleFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el, foundation) {\n return new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__[\"MDCRipple\"](el, foundation);\n };\n\n this.id = this.root_.id;\n this.leadingIcon_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].LEADING_ICON_SELECTOR);\n this.trailingIcon_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].TRAILING_ICON_SELECTOR);\n this.checkmark_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].CHECKMARK_SELECTOR);\n\n var adapter = _extends(__WEBPACK_IMPORTED_MODULE_1__material_ripple_index__[\"MDCRipple\"].createAdapter(this), {\n computeBoundingRect: function computeBoundingRect() {\n return _this2.foundation_.getDimensions();\n }\n });\n this.ripple_ = rippleFactory(this.root_, new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__[\"MDCRippleFoundation\"](adapter));\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n var _this3 = this;\n\n this.handleInteraction_ = function (evt) {\n return _this3.foundation_.handleInteraction(evt);\n };\n this.handleTransitionEnd_ = function (evt) {\n return _this3.foundation_.handleTransitionEnd(evt);\n };\n this.handleTrailingIconInteraction_ = function (evt) {\n return _this3.foundation_.handleTrailingIconInteraction(evt);\n };\n\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this3.root_.addEventListener(evtType, _this3.handleInteraction_);\n });\n this.root_.addEventListener('transitionend', this.handleTransitionEnd_);\n\n if (this.trailingIcon_) {\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this3.trailingIcon_.addEventListener(evtType, _this3.handleTrailingIconInteraction_);\n });\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this4 = this;\n\n this.ripple_.destroy();\n\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this4.root_.removeEventListener(evtType, _this4.handleInteraction_);\n });\n this.root_.removeEventListener('transitionend', this.handleTransitionEnd_);\n\n if (this.trailingIcon_) {\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this4.trailingIcon_.removeEventListener(evtType, _this4.handleTrailingIconInteraction_);\n });\n }\n\n _get(MDCChip.prototype.__proto__ || Object.getPrototypeOf(MDCChip.prototype), 'destroy', this).call(this);\n }\n\n /**\n * Returns whether the chip is selected.\n * @return {boolean}\n */\n\n }, {\n key: 'beginExit',\n\n\n /**\n * Begins the exit animation which leads to removal of the chip.\n */\n value: function beginExit() {\n this.foundation_.beginExit();\n }\n\n /**\n * @return {!MDCChipFoundation}\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this5 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_3__foundation__[\"a\" /* MDCChipFoundation */]( /** @type {!MDCChipAdapter} */_extends({\n addClass: function addClass(className) {\n return _this5.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this5.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this5.root_.classList.contains(className);\n },\n addClassToLeadingIcon: function addClassToLeadingIcon(className) {\n if (_this5.leadingIcon_) {\n _this5.leadingIcon_.classList.add(className);\n }\n },\n removeClassFromLeadingIcon: function removeClassFromLeadingIcon(className) {\n if (_this5.leadingIcon_) {\n _this5.leadingIcon_.classList.remove(className);\n }\n },\n eventTargetHasClass: function eventTargetHasClass(target, className) {\n return target.classList.contains(className);\n },\n notifyInteraction: function notifyInteraction() {\n return _this5.emit(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].INTERACTION_EVENT, { chipId: _this5.id }, true /* shouldBubble */);\n },\n notifySelection: function notifySelection(selected) {\n return _this5.emit(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].SELECTION_EVENT, { chipId: _this5.id, selected: selected }, true /* shouldBubble */);\n },\n notifyTrailingIconInteraction: function notifyTrailingIconInteraction() {\n return _this5.emit(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].TRAILING_ICON_INTERACTION_EVENT, { chipId: _this5.id }, true /* shouldBubble */);\n },\n notifyRemoval: function notifyRemoval() {\n return _this5.emit(__WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* strings */].REMOVAL_EVENT, { chipId: _this5.id, root: _this5.root_ }, true /* shouldBubble */);\n },\n getComputedStyleValue: function getComputedStyleValue(propertyName) {\n return window.getComputedStyle(_this5.root_).getPropertyValue(propertyName);\n },\n setStyleProperty: function setStyleProperty(propertyName, value) {\n return _this5.root_.style.setProperty(propertyName, value);\n },\n hasLeadingIcon: function hasLeadingIcon() {\n return !!_this5.leadingIcon_;\n },\n getRootBoundingClientRect: function getRootBoundingClientRect() {\n return _this5.root_.getBoundingClientRect();\n },\n getCheckmarkBoundingClientRect: function getCheckmarkBoundingClientRect() {\n return _this5.checkmark_ ? _this5.checkmark_.getBoundingClientRect() : null;\n }\n }));\n }\n\n /** @return {!MDCRipple} */\n\n }, {\n key: 'selected',\n get: function get() {\n return this.foundation_.isSelected();\n }\n\n /**\n * Sets selected state on the chip.\n * @param {boolean} selected\n */\n ,\n set: function set(selected) {\n this.foundation_.setSelected(selected);\n }\n\n /**\n * Returns whether a trailing icon click should trigger exit/removal of the chip.\n * @return {boolean}\n */\n\n }, {\n key: 'shouldRemoveOnTrailingIconClick',\n get: function get() {\n return this.foundation_.getShouldRemoveOnTrailingIconClick();\n }\n\n /**\n * Sets whether a trailing icon click should trigger exit/removal of the chip.\n * @param {boolean} shouldRemove\n */\n ,\n set: function set(shouldRemove) {\n this.foundation_.setShouldRemoveOnTrailingIconClick(shouldRemove);\n }\n }, {\n key: 'ripple',\n get: function get() {\n return this.ripple_;\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCChip(root);\n }\n }]);\n\n return MDCChip;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Chip.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Chip into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCChipAdapter = function () {\n function MDCChipAdapter() {\n _classCallCheck(this, MDCChipAdapter);\n }\n\n _createClass(MDCChipAdapter, [{\n key: \"addClass\",\n\n /**\n * Adds a class to the root element.\n * @param {string} className\n */\n value: function addClass(className) {}\n\n /**\n * Removes a class from the root element.\n * @param {string} className\n */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * Returns true if the root element contains the given class.\n * @param {string} className\n * @return {boolean}\n */\n\n }, {\n key: \"hasClass\",\n value: function hasClass(className) {}\n\n /**\n * Adds a class to the leading icon element.\n * @param {string} className\n */\n\n }, {\n key: \"addClassToLeadingIcon\",\n value: function addClassToLeadingIcon(className) {}\n\n /**\n * Removes a class from the leading icon element.\n * @param {string} className\n */\n\n }, {\n key: \"removeClassFromLeadingIcon\",\n value: function removeClassFromLeadingIcon(className) {}\n\n /**\n * Returns true if target has className, false otherwise.\n * @param {!EventTarget} target\n * @param {string} className\n * @return {boolean}\n */\n\n }, {\n key: \"eventTargetHasClass\",\n value: function eventTargetHasClass(target, className) {}\n\n /**\n * Emits a custom \"MDCChip:interaction\" event denoting the chip has been\n * interacted with (typically on click or keydown).\n */\n\n }, {\n key: \"notifyInteraction\",\n value: function notifyInteraction() {}\n\n /**\n * Emits a custom \"MDCChip:selection\" event denoting the chip has been selected or deselected.\n * @param {boolean} selected\n */\n\n }, {\n key: \"notifySelection\",\n value: function notifySelection(selected) {}\n\n /**\n * Emits a custom \"MDCChip:trailingIconInteraction\" event denoting the trailing icon has been\n * interacted with (typically on click or keydown).\n */\n\n }, {\n key: \"notifyTrailingIconInteraction\",\n value: function notifyTrailingIconInteraction() {}\n\n /**\n * Emits a custom event \"MDCChip:removal\" denoting the chip will be removed.\n */\n\n }, {\n key: \"notifyRemoval\",\n value: function notifyRemoval() {}\n\n /**\n * Returns the computed property value of the given style property on the root element.\n * @param {string} propertyName\n * @return {string}\n */\n\n }, {\n key: \"getComputedStyleValue\",\n value: function getComputedStyleValue(propertyName) {}\n\n /**\n * Sets the property value of the given style property on the root element.\n * @param {string} propertyName\n * @param {string} value\n */\n\n }, {\n key: \"setStyleProperty\",\n value: function setStyleProperty(propertyName, value) {}\n\n /**\n * Returns whether the chip has a leading icon.\n * @return {boolean}\n */\n\n }, {\n key: \"hasLeadingIcon\",\n value: function hasLeadingIcon() {}\n\n /**\n * Returns the bounding client rect of the root element.\n * @return {!ClientRect}\n */\n\n }, {\n key: \"getRootBoundingClientRect\",\n value: function getRootBoundingClientRect() {}\n\n /**\n * Returns the bounding client rect of the checkmark element or null if it doesn't exist.\n * @return {?ClientRect}\n */\n\n }, {\n key: \"getCheckmarkBoundingClientRect\",\n value: function getCheckmarkBoundingClientRect() {}\n }]);\n\n return MDCChipAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCChipAdapter);\n\n/***/ }),\n/* 31 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return MDCChipFoundation; });\n/* unused harmony export MDCChipInteractionEventType */\n/* unused harmony export MDCChipSelectionEventType */\n/* unused harmony export MDCChipRemovalEventType */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(32);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCChipAdapter>}\n * @final\n */\n\nvar MDCChipFoundation = function (_MDCFoundation) {\n _inherits(MDCChipFoundation, _MDCFoundation);\n\n _createClass(MDCChipFoundation, null, [{\n key: 'strings',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n\n /**\n * {@see MDCChipAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCChipAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCChipAdapter} */{\n addClass: function addClass() {},\n removeClass: function removeClass() {},\n hasClass: function hasClass() {},\n addClassToLeadingIcon: function addClassToLeadingIcon() {},\n removeClassFromLeadingIcon: function removeClassFromLeadingIcon() {},\n eventTargetHasClass: function eventTargetHasClass() {},\n notifyInteraction: function notifyInteraction() {},\n notifySelection: function notifySelection() {},\n notifyTrailingIconInteraction: function notifyTrailingIconInteraction() {},\n notifyRemoval: function notifyRemoval() {},\n getComputedStyleValue: function getComputedStyleValue() {},\n setStyleProperty: function setStyleProperty() {},\n hasLeadingIcon: function hasLeadingIcon() {},\n getRootBoundingClientRect: function getRootBoundingClientRect() {},\n getCheckmarkBoundingClientRect: function getCheckmarkBoundingClientRect() {}\n }\n );\n }\n\n /**\n * @param {!MDCChipAdapter} adapter\n */\n\n }]);\n\n function MDCChipFoundation(adapter) {\n _classCallCheck(this, MDCChipFoundation);\n\n /**\n * Whether a trailing icon click should immediately trigger exit/removal of the chip.\n * @private {boolean}\n * */\n var _this = _possibleConstructorReturn(this, (MDCChipFoundation.__proto__ || Object.getPrototypeOf(MDCChipFoundation)).call(this, _extends(MDCChipFoundation.defaultAdapter, adapter)));\n\n _this.shouldRemoveOnTrailingIconClick_ = true;\n return _this;\n }\n\n /**\n * @return {boolean}\n */\n\n\n _createClass(MDCChipFoundation, [{\n key: 'isSelected',\n value: function isSelected() {\n return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].SELECTED);\n }\n\n /**\n * @param {boolean} selected\n */\n\n }, {\n key: 'setSelected',\n value: function setSelected(selected) {\n if (selected) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].SELECTED);\n } else {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].SELECTED);\n }\n this.adapter_.notifySelection(selected);\n }\n\n /**\n * @return {boolean}\n */\n\n }, {\n key: 'getShouldRemoveOnTrailingIconClick',\n value: function getShouldRemoveOnTrailingIconClick() {\n return this.shouldRemoveOnTrailingIconClick_;\n }\n\n /**\n * @param {boolean} shouldRemove\n */\n\n }, {\n key: 'setShouldRemoveOnTrailingIconClick',\n value: function setShouldRemoveOnTrailingIconClick(shouldRemove) {\n this.shouldRemoveOnTrailingIconClick_ = shouldRemove;\n }\n\n /** @return {!ClientRect} */\n\n }, {\n key: 'getDimensions',\n value: function getDimensions() {\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() && this.adapter_.getCheckmarkBoundingClientRect() !== null) {\n var height = this.adapter_.getRootBoundingClientRect().height;\n // The checkmark's width is initially set to 0, so use the checkmark's height as a proxy since the checkmark\n // should always be square.\n var width = this.adapter_.getRootBoundingClientRect().width + this.adapter_.getCheckmarkBoundingClientRect().height;\n return (/** @type {!ClientRect} */{ height: height, width: width }\n );\n } else {\n return this.adapter_.getRootBoundingClientRect();\n }\n }\n\n /**\n * Begins the exit animation which leads to removal of the chip.\n */\n\n }, {\n key: 'beginExit',\n value: function beginExit() {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CHIP_EXIT);\n }\n\n /**\n * Handles an interaction event on the root element.\n * @param {!Event} evt\n */\n\n }, {\n key: 'handleInteraction',\n value: function handleInteraction(evt) {\n if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {\n this.adapter_.notifyInteraction();\n }\n }\n\n /**\n * Handles a transition end event on the root element.\n * @param {!Event} evt\n */\n\n }, {\n key: 'handleTransitionEnd',\n value: function handleTransitionEnd(evt) {\n var _this2 = this;\n\n // Handle transition end event on the chip when it is about to be removed.\n if (this.adapter_.eventTargetHasClass( /** @type {!EventTarget} */evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* 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 = 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(function () {\n _this2.adapter_.setStyleProperty('width', chipWidth);\n\n // To mitigate jitter, start transitioning padding and margin before width.\n _this2.adapter_.setStyleProperty('padding', '0');\n _this2.adapter_.setStyleProperty('margin', '0');\n\n // On the next frame (once width is explicitly set), transition width to 0.\n requestAnimationFrame(function () {\n _this2.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( /** @type {!EventTarget} */evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].LEADING_ICON) && this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].SELECTED)) {\n this.adapter_.addClassToLeadingIcon(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].HIDDEN_LEADING_ICON);\n } else if (this.adapter_.eventTargetHasClass( /** @type {!EventTarget} */evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CHECKMARK) && !this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].SELECTED)) {\n this.adapter_.removeClassFromLeadingIcon(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* 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 * @param {!Event} evt\n */\n\n }, {\n key: 'handleTrailingIconInteraction',\n value: function handleTrailingIconInteraction(evt) {\n evt.stopPropagation();\n if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {\n this.adapter_.notifyTrailingIconInteraction();\n if (this.shouldRemoveOnTrailingIconClick_) {\n this.beginExit();\n }\n }\n }\n }]);\n\n return MDCChipFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/**\n * @typedef {{\n * detail: {\n * chipId: string,\n * },\n * bubbles: boolean,\n * }}\n */\n\n\nvar MDCChipInteractionEventType = void 0;\n\n/**\n * @typedef {{\n * detail: {\n * chipId: string,\n * selected: boolean,\n * },\n * bubbles: boolean,\n * }}\n */\nvar MDCChipSelectionEventType = void 0;\n\n/**\n * @typedef {{\n * detail: {\n * chipId: string,\n * root: Element,\n * },\n * bubbles: boolean,\n * }}\n */\nvar MDCChipRemovalEventType = void 0;\n\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\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\n/** @enum {string} */\nvar strings = {\n ENTRY_ANIMATION_NAME: 'mdc-chip-entry',\n INTERACTION_EVENT: 'MDCChip:interaction',\n SELECTION_EVENT: 'MDCChip:selection',\n TRAILING_ICON_INTERACTION_EVENT: 'MDCChip:trailingIconInteraction',\n REMOVAL_EVENT: 'MDCChip:removal',\n CHECKMARK_SELECTOR: '.mdc-chip__checkmark',\n LEADING_ICON_SELECTOR: '.mdc-chip__icon--leading',\n TRAILING_ICON_SELECTOR: '.mdc-chip__icon--trailing'\n};\n\n/** @enum {string} */\nvar 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 TRAILING_ICON: 'mdc-chip__icon--trailing',\n SELECTED: 'mdc-chip--selected'\n};\n\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Chip Set.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Chip Set into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCChipSetAdapter = function () {\n function MDCChipSetAdapter() {\n _classCallCheck(this, MDCChipSetAdapter);\n }\n\n _createClass(MDCChipSetAdapter, [{\n key: \"hasClass\",\n\n /**\n * Returns true if the root element contains the given class name.\n * @param {string} className\n * @return {boolean}\n */\n value: function hasClass(className) {}\n\n /**\n * Removes the chip with the given id from the chip set.\n * @param {string} chipId\n */\n\n }, {\n key: \"removeChip\",\n value: function removeChip(chipId) {}\n\n /**\n * Sets the selected state of the chip with the given id.\n * @param {string} chipId\n * @param {boolean} selected\n */\n\n }, {\n key: \"setSelected\",\n value: function setSelected(chipId, selected) {}\n }]);\n\n return MDCChipSetAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCChipSetAdapter);\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar tabbable = __webpack_require__(83);\nvar xtend = __webpack_require__(84);\n\nvar activeFocusTraps = (function() {\n var trapQueue = [];\n return {\n activateTrap: function(trap) {\n if (trapQueue.length > 0) {\n var activeTrap = trapQueue[trapQueue.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex === -1) {\n trapQueue.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapQueue.splice(trapIndex, 1);\n trapQueue.push(trap);\n }\n },\n\n deactivateTrap: function(trap) {\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex !== -1) {\n trapQueue.splice(trapIndex, 1);\n }\n\n if (trapQueue.length > 0) {\n trapQueue[trapQueue.length - 1].unpause();\n }\n }\n };\n})();\n\nfunction focusTrap(element, userOptions) {\n var doc = document;\n var container =\n typeof element === 'string' ? doc.querySelector(element) : element;\n\n var config = xtend(\n {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true\n },\n userOptions\n );\n\n var state = {\n firstTabbableNode: null,\n lastTabbableNode: null,\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false\n };\n\n var trap = {\n activate: activate,\n deactivate: deactivate,\n pause: pause,\n unpause: unpause\n };\n\n return trap;\n\n function activate(activateOptions) {\n if (state.active) return;\n\n updateTabbableNodes();\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n var onActivate =\n activateOptions && activateOptions.onActivate\n ? activateOptions.onActivate\n : config.onActivate;\n if (onActivate) {\n onActivate();\n }\n\n addListeners();\n return trap;\n }\n\n function deactivate(deactivateOptions) {\n if (!state.active) return;\n\n removeListeners();\n state.active = false;\n state.paused = false;\n\n activeFocusTraps.deactivateTrap(trap);\n\n var onDeactivate =\n deactivateOptions && deactivateOptions.onDeactivate !== undefined\n ? deactivateOptions.onDeactivate\n : config.onDeactivate;\n if (onDeactivate) {\n onDeactivate();\n }\n\n var returnFocus =\n deactivateOptions && deactivateOptions.returnFocus !== undefined\n ? deactivateOptions.returnFocus\n : config.returnFocusOnDeactivate;\n if (returnFocus) {\n delay(function() {\n tryFocus(state.nodeFocusedBeforeActivation);\n });\n }\n\n return trap;\n }\n\n function pause() {\n if (state.paused || !state.active) return;\n state.paused = true;\n removeListeners();\n }\n\n function unpause() {\n if (!state.paused || !state.active) return;\n state.paused = false;\n addListeners();\n }\n\n function addListeners() {\n if (!state.active) return;\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trap);\n\n updateTabbableNodes();\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n delay(function() {\n tryFocus(getInitialFocusNode());\n });\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, true);\n doc.addEventListener('touchstart', checkPointerDown, true);\n doc.addEventListener('click', checkClick, true);\n doc.addEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function removeListeners() {\n if (!state.active) return;\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n var node = optionValue;\n if (!optionValue) {\n return null;\n }\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue);\n if (!node) {\n throw new Error('`' + optionName + '` refers to no known node');\n }\n }\n if (typeof optionValue === 'function') {\n node = optionValue();\n if (!node) {\n throw new Error('`' + optionName + '` did not return a node');\n }\n }\n return node;\n }\n\n function getInitialFocusNode() {\n var node;\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (container.contains(doc.activeElement)) {\n node = doc.activeElement;\n } else {\n node = state.firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error(\n \"You can't have a focus-trap without at least one focusable element\"\n );\n }\n\n return node;\n }\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n function checkPointerDown(e) {\n if (container.contains(e.target)) return;\n if (config.clickOutsideDeactivates) {\n deactivate({\n returnFocus: !tabbable.isFocusable(e.target)\n });\n } else {\n e.preventDefault();\n }\n }\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n function checkFocusIn(e) {\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (container.contains(e.target) || e.target instanceof Document) {\n return;\n }\n e.stopImmediatePropagation();\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n\n function checkKey(e) {\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n e.preventDefault();\n deactivate();\n return;\n }\n if (isTabEvent(e)) {\n checkTab(e);\n return;\n }\n }\n\n // Hijack Tab events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n function checkTab(e) {\n updateTabbableNodes();\n if (e.shiftKey && e.target === state.firstTabbableNode) {\n e.preventDefault();\n tryFocus(state.lastTabbableNode);\n return;\n }\n if (!e.shiftKey && e.target === state.lastTabbableNode) {\n e.preventDefault();\n tryFocus(state.firstTabbableNode);\n return;\n }\n }\n\n function checkClick(e) {\n if (config.clickOutsideDeactivates) return;\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n function updateTabbableNodes() {\n var tabbableNodes = tabbable(container);\n state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();\n state.lastTabbableNode =\n tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();\n }\n\n function tryFocus(node) {\n if (node === doc.activeElement) return;\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus();\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n }\n}\n\nfunction isSelectableInput(node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n}\n\nfunction isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction isTabEvent(e) {\n return e.key === 'Tab' || e.keyCode === 9;\n}\n\nfunction delay(fn) {\n return setTimeout(fn, 0);\n}\n\nmodule.exports = focusTrap;\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(36);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(37);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCDrawerAdapter>}\n */\n\nvar MDCDismissibleDrawerFoundation = function (_MDCFoundation) {\n _inherits(MDCDismissibleDrawerFoundation, _MDCFoundation);\n\n _createClass(MDCDismissibleDrawerFoundation, null, [{\n key: 'strings',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCDrawerAdapter} */{\n addClass: function addClass() /* className: string */{},\n removeClass: function removeClass() /* className: string */{},\n hasClass: function hasClass() /* className: string */{},\n elementHasClass: function elementHasClass() /* element: !Element, className: string */{},\n notifyClose: function notifyClose() {},\n notifyOpen: function notifyOpen() {},\n saveFocus: function saveFocus() {},\n restoreFocus: function restoreFocus() {},\n focusActiveNavigationItem: function focusActiveNavigationItem() {},\n trapFocus: function trapFocus() {},\n releaseFocus: function releaseFocus() {}\n }\n );\n }\n }]);\n\n function MDCDismissibleDrawerFoundation(adapter) {\n _classCallCheck(this, MDCDismissibleDrawerFoundation);\n\n /** @private {number} */\n var _this = _possibleConstructorReturn(this, (MDCDismissibleDrawerFoundation.__proto__ || Object.getPrototypeOf(MDCDismissibleDrawerFoundation)).call(this, _extends(MDCDismissibleDrawerFoundation.defaultAdapter, adapter)));\n\n _this.animationFrame_ = 0;\n\n /** @private {number} */\n _this.animationTimer_ = 0;\n return _this;\n }\n\n _createClass(MDCDismissibleDrawerFoundation, [{\n key: 'destroy',\n value: function destroy() {\n if (this.animationFrame_) {\n cancelAnimationFrame(this.animationFrame_);\n }\n if (this.animationTimer_) {\n clearTimeout(this.animationTimer_);\n }\n }\n\n /**\n * Function to open the drawer.\n */\n\n }, {\n key: 'open',\n value: function open() {\n var _this2 = this;\n\n if (this.isOpen() || this.isOpening() || this.isClosing()) {\n return;\n }\n\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPEN);\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].ANIMATE);\n\n // Wait a frame once display is no longer \"none\", to establish basis for animation\n this.runNextAnimationFrame_(function () {\n _this2.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPENING);\n });\n\n this.adapter_.saveFocus();\n }\n\n /**\n * Function to close the drawer.\n */\n\n }, {\n key: 'close',\n value: function close() {\n if (!this.isOpen() || this.isOpening() || this.isClosing()) {\n return;\n }\n\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CLOSING);\n }\n\n /**\n * Extension point for when drawer finishes open animation.\n * @protected\n */\n\n }, {\n key: 'opened',\n value: function opened() {}\n\n /**\n * Extension point for when drawer finishes close animation.\n * @protected\n */\n\n }, {\n key: 'closed',\n value: function closed() {}\n\n /**\n * Returns true if drawer is in open state.\n * @return {boolean}\n */\n\n }, {\n key: 'isOpen',\n value: function isOpen() {\n return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPEN);\n }\n\n /**\n * Returns true if drawer is animating open.\n * @return {boolean}\n */\n\n }, {\n key: 'isOpening',\n value: function isOpening() {\n return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPENING) || this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].ANIMATE);\n }\n\n /**\n * Returns true if drawer is animating closed.\n * @return {boolean}\n */\n\n }, {\n key: 'isClosing',\n value: function isClosing() {\n return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CLOSING);\n }\n\n /**\n * Keydown handler to close drawer when key is escape.\n * @param evt\n */\n\n }, {\n key: 'handleKeydown',\n value: function handleKeydown(evt) {\n var keyCode = evt.keyCode,\n key = evt.key;\n\n\n var 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 * @param {!Event} evt\n */\n\n }, {\n key: 'handleTransitionEnd',\n value: function handleTransitionEnd(evt) {\n var OPENING = __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPENING,\n CLOSING = __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CLOSING,\n OPEN = __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPEN,\n ANIMATE = __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].ANIMATE,\n ROOT = __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].ROOT;\n\n // In Edge, transitionend on ripple pseudo-elements yields a target without classList, so check for Element first.\n\n var isElement = evt.target instanceof Element;\n if (!isElement || !this.adapter_.elementHasClass( /** @type {!Element} */evt.target, ROOT)) {\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 * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.\n * @param {Function} callback\n * @private\n */\n\n }, {\n key: 'runNextAnimationFrame_',\n value: function runNextAnimationFrame_(callback) {\n var _this3 = this;\n\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = requestAnimationFrame(function () {\n _this3.animationFrame_ = 0;\n clearTimeout(_this3.animationTimer_);\n _this3.animationTimer_ = setTimeout(callback, 0);\n });\n }\n }]);\n\n return MDCDismissibleDrawerFoundation;\n}(__WEBPACK_IMPORTED_MODULE_1__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCDismissibleDrawerFoundation);\n\n/***/ }),\n/* 36 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Drawer\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Drawer into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCDrawerAdapter = function () {\n function MDCDrawerAdapter() {\n _classCallCheck(this, MDCDrawerAdapter);\n }\n\n _createClass(MDCDrawerAdapter, [{\n key: \"addClass\",\n\n /**\n * Adds a class to the root Element.\n * @param {string} className\n */\n value: function addClass(className) {}\n\n /**\n * Removes a class from the root Element.\n * @param {string} className\n */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * Returns true if the root Element contains the given class.\n * @param {string} className\n * @return {boolean}\n */\n\n }, {\n key: \"hasClass\",\n value: function hasClass(className) {}\n\n /**\n * @param {!Element} element target element to verify class name\n * @param {string} className class name\n */\n\n }, {\n key: \"elementHasClass\",\n value: function elementHasClass(element, className) {}\n\n /**\n * Saves the focus of currently active element.\n */\n\n }, {\n key: \"saveFocus\",\n value: function saveFocus() {}\n\n /**\n * Restores focus to element previously saved with 'saveFocus'.\n */\n\n }, {\n key: \"restoreFocus\",\n value: function restoreFocus() {}\n\n /**\n * Focuses the active / selected navigation item.\n */\n\n }, {\n key: \"focusActiveNavigationItem\",\n value: function focusActiveNavigationItem() {}\n\n /**\n * Emits a custom event \"MDCDrawer:closed\" denoting the drawer has closed.\n */\n\n }, {\n key: \"notifyClose\",\n value: function notifyClose() {}\n\n /**\n * Emits a custom event \"MDCDrawer:opened\" denoting the drawer has opened.\n */\n\n }, {\n key: \"notifyOpen\",\n value: function notifyOpen() {}\n\n /**\n * Traps focus on root element and focuses the active navigation element.\n */\n\n }, {\n key: \"trapFocus\",\n value: function trapFocus() {}\n\n /**\n * Releases focus trap from root element which was set by `trapFocus`\n * and restores focus to where it was prior to calling `trapFocus`.\n */\n\n }, {\n key: \"releaseFocus\",\n value: function releaseFocus() {}\n }]);\n\n return MDCDrawerAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCDrawerAdapter);\n\n/***/ }),\n/* 37 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\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/** @enum {string} */\nvar cssClasses = {\n ROOT: 'mdc-drawer',\n DISMISSIBLE: 'mdc-drawer--dismissible',\n MODAL: 'mdc-drawer--modal',\n OPEN: 'mdc-drawer--open',\n ANIMATE: 'mdc-drawer--animate',\n OPENING: 'mdc-drawer--opening',\n CLOSING: 'mdc-drawer--closing'\n};\n\n/** @enum {string} */\nvar strings = {\n APP_CONTENT_SELECTOR: '.mdc-drawer-app-content',\n SCRIM_SELECTOR: '.mdc-drawer-scrim',\n CLOSE_EVENT: 'MDCDrawer:closed',\n OPEN_EVENT: 'MDCDrawer:opened'\n};\n\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC List. Provides an interface for managing focus.\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nvar MDCListAdapter = function () {\n function MDCListAdapter() {\n _classCallCheck(this, MDCListAdapter);\n }\n\n _createClass(MDCListAdapter, [{\n key: \"getListItemCount\",\n\n /** @return {number} */\n value: function getListItemCount() {}\n\n /**\n * @return {number} */\n\n }, {\n key: \"getFocusedElementIndex\",\n value: function getFocusedElementIndex() {}\n\n /**\n * @param {number} index\n * @param {string} attribute\n * @param {string} value\n */\n\n }, {\n key: \"setAttributeForElementIndex\",\n value: function setAttributeForElementIndex(index, attribute, value) {}\n\n /**\n * @param {number} index\n * @param {string} attribute\n */\n\n }, {\n key: \"removeAttributeForElementIndex\",\n value: function removeAttributeForElementIndex(index, attribute) {}\n\n /**\n * @param {number} index\n * @param {string} className\n */\n\n }, {\n key: \"addClassForElementIndex\",\n value: function addClassForElementIndex(index, className) {}\n\n /**\n * @param {number} index\n * @param {string} className\n */\n\n }, {\n key: \"removeClassForElementIndex\",\n value: function removeClassForElementIndex(index, className) {}\n\n /**\n * Focuses list item at the index specified.\n * @param {number} index\n */\n\n }, {\n key: \"focusItemAtIndex\",\n value: function focusItemAtIndex(index) {}\n\n /**\n * Sets the tabindex to the value specified for all button/a element children of\n * the list item at the index specified.\n * @param {number} listItemIndex\n * @param {number} tabIndexValue\n */\n\n }, {\n key: \"setTabIndexForListItemChildren\",\n value: function setTabIndexForListItemChildren(listItemIndex, tabIndexValue) {}\n\n /**\n * @param {number} index\n * @return {boolean} Returns true if radio button is present at given list item index.\n */\n\n }, {\n key: \"hasRadioAtIndex\",\n value: function hasRadioAtIndex(index) {}\n\n /**\n * @param {number} index\n * @return {boolean} Returns true if checkbox is present at given list item index.\n */\n\n }, {\n key: \"hasCheckboxAtIndex\",\n value: function hasCheckboxAtIndex(index) {}\n\n /**\n * @param {number} index\n * @return {boolean} Returns true if checkbox inside a list item is checked.\n */\n\n }, {\n key: \"isCheckboxCheckedAtIndex\",\n value: function isCheckboxCheckedAtIndex(index) {}\n\n /**\n * Sets the checked status of checkbox or radio at given list item index.\n * @param {number} index\n * @param {boolean} isChecked\n */\n\n }, {\n key: \"setCheckedCheckboxOrRadioAtIndex\",\n value: function setCheckedCheckboxOrRadioAtIndex(index, isChecked) {}\n\n /**\n * Notifies user action on list item.\n */\n\n }, {\n key: \"notifyAction\",\n value: function notifyAction(index) {}\n\n /**\n * @return {boolean} Returns true when the current focused element is inside list root.\n */\n\n }, {\n key: \"isFocusInsideList\",\n value: function isFocusInsideList() {}\n }]);\n\n return MDCListAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCListAdapter);\n\n/***/ }),\n/* 39 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* unused harmony export Index */\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\n/** @enum {string} */\nvar cssClasses = {\n ROOT: 'mdc-list',\n LIST_ITEM_CLASS: 'mdc-list-item',\n LIST_ITEM_SELECTED_CLASS: 'mdc-list-item--selected',\n LIST_ITEM_ACTIVATED_CLASS: 'mdc-list-item--activated'\n};\n\n/** @enum {string} */\nvar strings = {\n ARIA_ORIENTATION: 'aria-orientation',\n ARIA_ORIENTATION_HORIZONTAL: 'horizontal',\n ARIA_SELECTED: 'aria-selected',\n ARIA_CHECKED: 'aria-checked',\n ARIA_CHECKED_RADIO_SELECTOR: '[role=\"radio\"][aria-checked=\"true\"]',\n ARIA_ROLE_CHECKBOX_SELECTOR: '[role=\"checkbox\"]',\n ARIA_CHECKED_CHECKBOX_SELECTOR: '[role=\"checkbox\"][aria-checked=\"true\"]',\n RADIO_SELECTOR: 'input[type=\"radio\"]:not(:disabled)',\n CHECKBOX_SELECTOR: 'input[type=\"checkbox\"]:not(:disabled)',\n CHECKBOX_RADIO_SELECTOR: 'input[type=\"checkbox\"]:not(:disabled), input[type=\"radio\"]:not(:disabled)',\n CHILD_ELEMENTS_TO_TOGGLE_TABINDEX: '.' + cssClasses.LIST_ITEM_CLASS + ' button:not(:disabled),\\n .' + cssClasses.LIST_ITEM_CLASS + ' a',\n FOCUSABLE_CHILD_ELEMENTS: '.' + cssClasses.LIST_ITEM_CLASS + ' button:not(:disabled), .' + 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 ENABLED_ITEMS_SELECTOR: '.mdc-list-item:not(.mdc-list-item--disabled)',\n ACTION_EVENT: 'MDCList:action'\n};\n\n/** @typedef {number|!Array<number>} */\nvar Index = void 0;\n\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar tabbable = __webpack_require__(89);\nvar xtend = __webpack_require__(90);\n\nvar activeFocusTraps = (function() {\n var trapQueue = [];\n return {\n activateTrap: function(trap) {\n if (trapQueue.length > 0) {\n var activeTrap = trapQueue[trapQueue.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex === -1) {\n trapQueue.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapQueue.splice(trapIndex, 1);\n trapQueue.push(trap);\n }\n },\n\n deactivateTrap: function(trap) {\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex !== -1) {\n trapQueue.splice(trapIndex, 1);\n }\n\n if (trapQueue.length > 0) {\n trapQueue[trapQueue.length - 1].unpause();\n }\n }\n };\n})();\n\nfunction focusTrap(element, userOptions) {\n var doc = document;\n var container =\n typeof element === 'string' ? doc.querySelector(element) : element;\n\n var config = xtend(\n {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true\n },\n userOptions\n );\n\n var state = {\n firstTabbableNode: null,\n lastTabbableNode: null,\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false\n };\n\n var trap = {\n activate: activate,\n deactivate: deactivate,\n pause: pause,\n unpause: unpause\n };\n\n return trap;\n\n function activate(activateOptions) {\n if (state.active) return;\n\n updateTabbableNodes();\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n var onActivate =\n activateOptions && activateOptions.onActivate\n ? activateOptions.onActivate\n : config.onActivate;\n if (onActivate) {\n onActivate();\n }\n\n addListeners();\n return trap;\n }\n\n function deactivate(deactivateOptions) {\n if (!state.active) return;\n\n removeListeners();\n state.active = false;\n state.paused = false;\n\n activeFocusTraps.deactivateTrap(trap);\n\n var onDeactivate =\n deactivateOptions && deactivateOptions.onDeactivate !== undefined\n ? deactivateOptions.onDeactivate\n : config.onDeactivate;\n if (onDeactivate) {\n onDeactivate();\n }\n\n var returnFocus =\n deactivateOptions && deactivateOptions.returnFocus !== undefined\n ? deactivateOptions.returnFocus\n : config.returnFocusOnDeactivate;\n if (returnFocus) {\n delay(function() {\n tryFocus(state.nodeFocusedBeforeActivation);\n });\n }\n\n return trap;\n }\n\n function pause() {\n if (state.paused || !state.active) return;\n state.paused = true;\n removeListeners();\n }\n\n function unpause() {\n if (!state.paused || !state.active) return;\n state.paused = false;\n addListeners();\n }\n\n function addListeners() {\n if (!state.active) return;\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trap);\n\n updateTabbableNodes();\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n delay(function() {\n tryFocus(getInitialFocusNode());\n });\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, true);\n doc.addEventListener('touchstart', checkPointerDown, true);\n doc.addEventListener('click', checkClick, true);\n doc.addEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function removeListeners() {\n if (!state.active) return;\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n var node = optionValue;\n if (!optionValue) {\n return null;\n }\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue);\n if (!node) {\n throw new Error('`' + optionName + '` refers to no known node');\n }\n }\n if (typeof optionValue === 'function') {\n node = optionValue();\n if (!node) {\n throw new Error('`' + optionName + '` did not return a node');\n }\n }\n return node;\n }\n\n function getInitialFocusNode() {\n var node;\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (container.contains(doc.activeElement)) {\n node = doc.activeElement;\n } else {\n node = state.firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error(\n \"You can't have a focus-trap without at least one focusable element\"\n );\n }\n\n return node;\n }\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n function checkPointerDown(e) {\n if (container.contains(e.target)) return;\n if (config.clickOutsideDeactivates) {\n deactivate({\n returnFocus: !tabbable.isFocusable(e.target)\n });\n } else {\n e.preventDefault();\n }\n }\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n function checkFocusIn(e) {\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (container.contains(e.target) || e.target instanceof Document) {\n return;\n }\n e.stopImmediatePropagation();\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n\n function checkKey(e) {\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n e.preventDefault();\n deactivate();\n return;\n }\n if (isTabEvent(e)) {\n checkTab(e);\n return;\n }\n }\n\n // Hijack Tab events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n function checkTab(e) {\n updateTabbableNodes();\n if (e.shiftKey && e.target === state.firstTabbableNode) {\n e.preventDefault();\n tryFocus(state.lastTabbableNode);\n return;\n }\n if (!e.shiftKey && e.target === state.lastTabbableNode) {\n e.preventDefault();\n tryFocus(state.firstTabbableNode);\n return;\n }\n }\n\n function checkClick(e) {\n if (config.clickOutsideDeactivates) return;\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n function updateTabbableNodes() {\n var tabbableNodes = tabbable(container);\n state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();\n state.lastTabbableNode =\n tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();\n }\n\n function tryFocus(node) {\n if (node === doc.activeElement) return;\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus();\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n }\n}\n\nfunction isSelectableInput(node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n}\n\nfunction isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction isTabEvent(e) {\n return e.key === 'Tab' || e.keyCode === 9;\n}\n\nfunction delay(fn) {\n return setTimeout(fn, 0);\n}\n\nmodule.exports = focusTrap;\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Floating Label.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the floating label into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCFloatingLabelAdapter = function () {\n function MDCFloatingLabelAdapter() {\n _classCallCheck(this, MDCFloatingLabelAdapter);\n }\n\n _createClass(MDCFloatingLabelAdapter, [{\n key: \"addClass\",\n\n /**\n * Adds a class to the label element.\n * @param {string} className\n */\n value: function addClass(className) {}\n\n /**\n * Removes a class from the label element.\n * @param {string} className\n */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * Returns the width of the label element.\n * @return {number}\n */\n\n }, {\n key: \"getWidth\",\n value: function getWidth() {}\n\n /**\n * Registers an event listener on the root element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"registerInteractionHandler\",\n value: function registerInteractionHandler(evtType, handler) {}\n\n /**\n * Deregisters an event listener on the root element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"deregisterInteractionHandler\",\n value: function deregisterInteractionHandler(evtType, handler) {}\n }]);\n\n return MDCFloatingLabelAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCFloatingLabelAdapter);\n\n/***/ }),\n/* 42 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC TextField Line Ripple.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the line ripple into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCLineRippleAdapter = function () {\n function MDCLineRippleAdapter() {\n _classCallCheck(this, MDCLineRippleAdapter);\n }\n\n _createClass(MDCLineRippleAdapter, [{\n key: \"addClass\",\n\n /**\n * Adds a class to the line ripple element.\n * @param {string} className\n */\n value: function addClass(className) {}\n\n /**\n * Removes a class from the line ripple element.\n * @param {string} className\n */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * @param {string} className\n * @return {boolean}\n */\n\n }, {\n key: \"hasClass\",\n value: function hasClass(className) {}\n\n /**\n * Sets the style property with propertyName to value on the root element.\n * @param {string} propertyName\n * @param {string} value\n */\n\n }, {\n key: \"setStyle\",\n value: function setStyle(propertyName, value) {}\n\n /**\n * Registers an event listener on the line ripple element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"registerEventHandler\",\n value: function registerEventHandler(evtType, handler) {}\n\n /**\n * Deregisters an event listener on the line ripple element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"deregisterEventHandler\",\n value: function deregisterEventHandler(evtType, handler) {}\n }]);\n\n return MDCLineRippleAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCLineRippleAdapter);\n\n/***/ }),\n/* 43 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCMenu\", function() { return MDCMenu; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(113);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_index__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_menu_surface_foundation__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_list_index__ = __webpack_require__(14);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCMenuFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"AnchorMargin\", function() { return __WEBPACK_IMPORTED_MODULE_4__material_menu_surface_foundation__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"Corner\", function() { return __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_index__[\"Corner\"]; });\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n\n/**\n * @extends MDCComponent<!MDCMenuFoundation>\n */\n\nvar MDCMenu = function (_MDCComponent) {\n _inherits(MDCMenu, _MDCComponent);\n\n /** @param {...?} args */\n function MDCMenu() {\n var _ref;\n\n _classCallCheck(this, MDCMenu);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {!MDCMenuSurface} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCMenu.__proto__ || Object.getPrototypeOf(MDCMenu)).call.apply(_ref, [this].concat(args)));\n\n _this.menuSurface_;\n /** @private {!MDCList} */\n _this.list_;\n /** @private {!Function} */\n _this.handleKeydown_;\n\n /** @private {!Function} */\n _this.handleItemAction_;\n\n /** @private {!Function} */\n _this.afterOpenedCallback_;\n return _this;\n }\n\n /**\n * @param {!HTMLElement} root\n * @return {!MDCMenu}\n */\n\n\n _createClass(MDCMenu, [{\n key: 'initialize',\n value: function initialize() {\n var menuSurfaceFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_index__[\"MDCMenuSurface\"](el);\n };\n var listFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_5__material_list_index__[\"MDCList\"](el);\n };\n\n this.menuSurface_ = menuSurfaceFactory(this.root_);\n\n var list = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].LIST_SELECTOR);\n if (list) {\n this.list_ = listFactory(list);\n this.list_.wrapFocus = true;\n }\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n var _this2 = this;\n\n this.afterOpenedCallback_ = function () {\n return _this2.handleAfterOpened_();\n };\n this.handleKeydown_ = function (evt) {\n return _this2.foundation_.handleKeydown(evt);\n };\n this.handleItemAction_ = function (evt) {\n return _this2.foundation_.handleItemAction(_this2.items[evt.detail]);\n };\n\n this.menuSurface_.listen(__WEBPACK_IMPORTED_MODULE_4__material_menu_surface_foundation__[\"b\" /* MDCMenuSurfaceFoundation */].strings.OPENED_EVENT, this.afterOpenedCallback_);\n this.listen('keydown', this.handleKeydown_);\n this.listen(__WEBPACK_IMPORTED_MODULE_5__material_list_index__[\"MDCListFoundation\"].strings.ACTION_EVENT, this.handleItemAction_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n if (this.list_) {\n this.list_.destroy();\n }\n\n this.menuSurface_.destroy();\n this.menuSurface_.unlisten(__WEBPACK_IMPORTED_MODULE_4__material_menu_surface_foundation__[\"b\" /* MDCMenuSurfaceFoundation */].strings.OPENED_EVENT, this.afterOpenedCallback_);\n this.unlisten('keydown', this.handleKeydown_);\n this.unlisten(__WEBPACK_IMPORTED_MODULE_5__material_list_index__[\"MDCListFoundation\"].strings.ACTION_EVENT, this.handleItemAction_);\n _get(MDCMenu.prototype.__proto__ || Object.getPrototypeOf(MDCMenu.prototype), 'destroy', this).call(this);\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'setAnchorCorner',\n\n\n /**\n * @param {!Corner} corner Default anchor corner alignment of top-left\n * menu corner.\n */\n value: function setAnchorCorner(corner) {\n this.menuSurface_.setAnchorCorner(corner);\n }\n\n /**\n * @param {!AnchorMargin} margin\n */\n\n }, {\n key: 'setAnchorMargin',\n value: function setAnchorMargin(margin) {\n this.menuSurface_.setAnchorMargin(margin);\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 * @return {!Array<!HTMLElement>}\n */\n\n }, {\n key: 'getOptionByIndex',\n\n\n /**\n * Return the item within the menu at the index specified.\n * @param {number} index\n * @return {?HTMLElement}\n */\n value: function getOptionByIndex(index) {\n var items = this.items;\n\n if (index < items.length) {\n return this.items[index];\n } else {\n return null;\n }\n }\n\n /** @param {boolean} quickOpen */\n\n }, {\n key: 'setFixedPosition',\n\n\n /** @param {boolean} isFixed */\n value: function setFixedPosition(isFixed) {\n this.menuSurface_.setFixedPosition(isFixed);\n }\n }, {\n key: 'hoistMenuToBody',\n value: function hoistMenuToBody() {\n this.menuSurface_.hoistMenuToBody();\n }\n\n /** @param {boolean} isHoisted */\n\n }, {\n key: 'setIsHoisted',\n value: function setIsHoisted(isHoisted) {\n this.menuSurface_.setIsHoisted(isHoisted);\n }\n\n /**\n * @param {number} x\n * @param {number} y\n */\n\n }, {\n key: 'setAbsolutePosition',\n value: function setAbsolutePosition(x, y) {\n this.menuSurface_.setAbsolutePosition(x, y);\n }\n\n /**\n * Sets the element that the menu-surface is anchored to.\n * @param {!HTMLElement} element\n */\n\n }, {\n key: 'setAnchorElement',\n value: function setAnchorElement(element) {\n this.menuSurface_.anchorElement = element;\n }\n }, {\n key: 'handleAfterOpened_',\n value: function handleAfterOpened_() {\n var list = this.items;\n if (list.length > 0) {\n list[0].focus();\n }\n }\n\n /** @return {!MDCMenuFoundation} */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this3 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* MDCMenuFoundation */]({\n addClassToElementAtIndex: function addClassToElementAtIndex(index, className) {\n var list = _this3.items;\n list[index].classList.add(className);\n },\n removeClassFromElementAtIndex: function removeClassFromElementAtIndex(index, className) {\n var list = _this3.items;\n list[index].classList.remove(className);\n },\n addAttributeToElementAtIndex: function addAttributeToElementAtIndex(index, attr, value) {\n var list = _this3.items;\n list[index].setAttribute(attr, value);\n },\n removeAttributeFromElementAtIndex: function removeAttributeFromElementAtIndex(index, attr) {\n var list = _this3.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 _this3.open = false;\n },\n getElementIndex: function getElementIndex(element) {\n return _this3.items.indexOf(element);\n },\n getParentElement: function getParentElement(element) {\n return element.parentElement;\n },\n getSelectedElementIndex: function getSelectedElementIndex(selectionGroup) {\n return _this3.items.indexOf(selectionGroup.querySelector('.' + __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].MENU_SELECTED_LIST_ITEM));\n },\n notifySelected: function notifySelected(evtData) {\n return _this3.emit(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].SELECTED_EVENT, {\n index: evtData.index,\n item: _this3.items[evtData.index]\n });\n }\n });\n }\n }, {\n key: 'open',\n get: function get() {\n return this.menuSurface_.open;\n }\n\n /** @param {boolean} value */\n ,\n set: function set(value) {\n this.menuSurface_.open = value;\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'wrapFocus',\n get: function get() {\n return this.list_.wrapFocus;\n }\n\n /** @param {boolean} value */\n ,\n set: function set(value) {\n this.list_.wrapFocus = value;\n }\n }, {\n key: 'items',\n get: function get() {\n return this.list_.listElements;\n }\n }, {\n key: 'quickOpen',\n set: function set(quickOpen) {\n this.menuSurface_.quickOpen = quickOpen;\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCMenu(root);\n }\n }]);\n\n return MDCMenu;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export MDCMenuSurfaceAdapter */\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDCMenuSurface. Provides an interface for managing\n * - classes\n * - dom\n * - focus\n * - position\n * - dimensions\n * - event handlers\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nvar MDCMenuSurfaceAdapter = function () {\n function MDCMenuSurfaceAdapter() {\n _classCallCheck(this, MDCMenuSurfaceAdapter);\n }\n\n _createClass(MDCMenuSurfaceAdapter, [{\n key: \"addClass\",\n\n /** @param {string} className */\n value: function addClass(className) {}\n\n /** @param {string} className */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * @param {string} className\n * @return {boolean}\n */\n\n }, {\n key: \"hasClass\",\n value: function hasClass(className) {}\n\n /** @return {boolean} */\n\n }, {\n key: \"hasAnchor\",\n value: function hasAnchor() {}\n\n /** Emits an event when the menu surface is closed. */\n\n }, {\n key: \"notifyClose\",\n value: function notifyClose() {}\n\n /** Emits an event when the menu surface is opened. */\n\n }, {\n key: \"notifyOpen\",\n value: function notifyOpen() {}\n\n /**\n * @return {boolean}\n * @param {EventTarget} el\n */\n\n }, {\n key: \"isElementInContainer\",\n value: function isElementInContainer(el) {}\n\n /** @return {boolean} */\n\n }, {\n key: \"isRtl\",\n value: function isRtl() {}\n\n /** @param {string} origin */\n\n }, {\n key: \"setTransformOrigin\",\n value: function setTransformOrigin(origin) {}\n\n /** @return {boolean} */\n\n }, {\n key: \"isFocused\",\n value: function isFocused() {}\n\n /** Saves the element that was focused before the menu surface was opened. */\n\n }, {\n key: \"saveFocus\",\n value: function saveFocus() {}\n\n /** Restores focus to the element that was focused before the menu surface was opened. */\n\n }, {\n key: \"restoreFocus\",\n value: function restoreFocus() {}\n\n /** @return {boolean} */\n\n }, {\n key: \"isFirstElementFocused\",\n value: function isFirstElementFocused() {}\n\n /** @return {boolean} */\n\n }, {\n key: \"isLastElementFocused\",\n value: function isLastElementFocused() {}\n\n /** Focuses the first focusable element in the menu-surface. */\n\n }, {\n key: \"focusFirstElement\",\n value: function focusFirstElement() {}\n\n /** Focuses the first focusable element in the menu-surface. */\n\n }, {\n key: \"focusLastElement\",\n value: function focusLastElement() {}\n\n /** @return {!{width: number, height: number}} */\n\n }, {\n key: \"getInnerDimensions\",\n value: function getInnerDimensions() {}\n\n /** @return {!{width: number, height: number, top: number, right: number, bottom: number, left: number}} */\n\n }, {\n key: \"getAnchorDimensions\",\n value: function getAnchorDimensions() {}\n\n /** @return {!{ width: number, height: number }} */\n\n }, {\n key: \"getWindowDimensions\",\n value: function getWindowDimensions() {}\n\n /** @return {!{ width: number, height: number }} */\n\n }, {\n key: \"getBodyDimensions\",\n value: function getBodyDimensions() {}\n\n /** @return {!{ width: number, height: number }} */\n\n }, {\n key: \"getWindowScroll\",\n value: function getWindowScroll() {}\n\n /** @param {!{\n * top: (string|undefined),\n * right: (string|undefined),\n * bottom: (string|undefined),\n * left: (string|undefined)\n * }} position */\n\n }, {\n key: \"setPosition\",\n value: function setPosition(position) {}\n\n /** @param {string} height */\n\n }, {\n key: \"setMaxHeight\",\n value: function setMaxHeight(height) {}\n }]);\n\n return MDCMenuSurfaceAdapter;\n}();\n\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCMenuSurface\", function() { return MDCMenuSurface; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util__ = __webpack_require__(115);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__adapter__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(19);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCMenuSurfaceFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"AnchorMargin\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"Corner\", function() { return __WEBPACK_IMPORTED_MODULE_4__constants__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"CornerBit\", function() { return __WEBPACK_IMPORTED_MODULE_4__constants__[\"b\"]; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"util\", function() { return __WEBPACK_IMPORTED_MODULE_1__util__; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n/**\n * @extends MDCComponent<!MDCMenuSurfaceFoundation>\n */\n\nvar MDCMenuSurface = function (_MDCComponent) {\n _inherits(MDCMenuSurface, _MDCComponent);\n\n /** @param {...?} args */\n function MDCMenuSurface() {\n var _ref;\n\n _classCallCheck(this, MDCMenuSurface);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {!Element} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCMenuSurface.__proto__ || Object.getPrototypeOf(MDCMenuSurface)).call.apply(_ref, [this].concat(args)));\n\n _this.previousFocus_;\n /** @private {!Element} */\n _this.anchorElement;\n /** @private {Element} */\n _this.firstFocusableElement_;\n /** @private {Element} */\n _this.lastFocusableElement_;\n /** @private {!Function} */\n _this.handleKeydown_;\n /** @private {!Function} */\n _this.handleBodyClick_;\n /** @private {!Function} */\n _this.registerBodyClickListener_;\n /** @private {!Function} */\n _this.deregisterBodyClickListener_;\n return _this;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCMenuSurface}\n */\n\n\n _createClass(MDCMenuSurface, [{\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n var _this2 = this;\n\n if (this.root_.parentElement && this.root_.parentElement.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__[\"c\" /* cssClasses */].ANCHOR)) {\n this.anchorElement = this.root_.parentElement;\n }\n\n if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__[\"c\" /* cssClasses */].FIXED)) {\n this.setFixedPosition(true);\n }\n\n this.handleKeydown_ = function (evt) {\n return _this2.foundation_.handleKeydown(evt);\n };\n this.handleBodyClick_ = function (evt) {\n return _this2.foundation_.handleBodyClick(evt);\n };\n\n this.registerBodyClickListener_ = function () {\n return document.body.addEventListener('click', _this2.handleBodyClick_);\n };\n this.deregisterBodyClickListener_ = function () {\n return document.body.removeEventListener('click', _this2.handleBodyClick_);\n };\n\n this.root_.addEventListener('keydown', this.handleKeydown_);\n this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_4__constants__[\"e\" /* strings */].OPENED_EVENT, this.registerBodyClickListener_);\n this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_4__constants__[\"e\" /* strings */].CLOSED_EVENT, this.deregisterBodyClickListener_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.root_.removeEventListener('keydown', this.handleKeydown_);\n this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_4__constants__[\"e\" /* strings */].OPENED_EVENT, this.registerBodyClickListener_);\n this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_4__constants__[\"e\" /* strings */].CLOSED_EVENT, this.deregisterBodyClickListener_);\n _get(MDCMenuSurface.prototype.__proto__ || Object.getPrototypeOf(MDCMenuSurface.prototype), 'destroy', this).call(this);\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'hoistMenuToBody',\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 value: function hoistMenuToBody() {\n document.body.appendChild(this.root_.parentElement.removeChild(this.root_));\n this.setIsHoisted(true);\n }\n\n /**\n * Sets the foundation to use page offsets for an positioning when the menu\n * is hoisted to the body.\n * @param {boolean} isHoisted\n */\n\n }, {\n key: 'setIsHoisted',\n value: function setIsHoisted(isHoisted) {\n this.foundation_.setIsHoisted(isHoisted);\n }\n\n /**\n * Sets the element that the menu-surface is anchored to.\n * @param {!Element} element\n */\n\n }, {\n key: 'setMenuSurfaceAnchorElement',\n value: function setMenuSurfaceAnchorElement(element) {\n this.anchorElement = element;\n }\n\n /**\n * Sets the menu-surface to position: fixed.\n * @param {boolean} isFixed\n */\n\n }, {\n key: 'setFixedPosition',\n value: function setFixedPosition(isFixed) {\n if (isFixed) {\n this.root_.classList.add(__WEBPACK_IMPORTED_MODULE_4__constants__[\"c\" /* cssClasses */].FIXED);\n } else {\n this.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_4__constants__[\"c\" /* cssClasses */].FIXED);\n }\n\n this.foundation_.setFixedPosition(isFixed);\n }\n\n /**\n * Sets the absolute x/y position to position based on. Requires the menu to be hoisted.\n * @param {number} x\n * @param {number} y\n */\n\n }, {\n key: 'setAbsolutePosition',\n value: function setAbsolutePosition(x, y) {\n this.foundation_.setAbsolutePosition(x, y);\n this.setIsHoisted(true);\n }\n\n /**\n * @param {!Corner} corner Default anchor corner alignment of top-left\n * surface corner.\n */\n\n }, {\n key: 'setAnchorCorner',\n value: function setAnchorCorner(corner) {\n this.foundation_.setAnchorCorner(corner);\n }\n\n /**\n * @param {!AnchorMargin} margin\n */\n\n }, {\n key: 'setAnchorMargin',\n value: function setAnchorMargin(margin) {\n this.foundation_.setAnchorMargin(margin);\n }\n\n /** @param {boolean} quickOpen */\n\n }, {\n key: 'getDefaultFoundation',\n\n\n /** @return {!MDCMenuSurfaceFoundation} */\n value: function getDefaultFoundation() {\n var _this3 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"b\" /* MDCMenuSurfaceFoundation */](\n /** @type {!MDCMenuSurfaceAdapter} */_extends({\n addClass: function addClass(className) {\n return _this3.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this3.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this3.root_.classList.contains(className);\n },\n hasAnchor: function hasAnchor() {\n return !!_this3.anchorElement;\n },\n notifyClose: function notifyClose() {\n return _this3.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"b\" /* MDCMenuSurfaceFoundation */].strings.CLOSED_EVENT, {});\n },\n notifyOpen: function notifyOpen() {\n return _this3.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"b\" /* MDCMenuSurfaceFoundation */].strings.OPENED_EVENT, {});\n },\n isElementInContainer: function isElementInContainer(el) {\n return _this3.root_ === el || _this3.root_.contains(el);\n },\n isRtl: function isRtl() {\n return getComputedStyle(_this3.root_).getPropertyValue('direction') === 'rtl';\n },\n setTransformOrigin: function setTransformOrigin(origin) {\n _this3.root_.style[__WEBPACK_IMPORTED_MODULE_1__util__[\"getTransformPropertyName\"](window) + '-origin'] = origin;\n }\n }, this.getFocusAdapterMethods_(), this.getDimensionAdapterMethods_()));\n }\n\n /**\n * @return {!{\n * isFocused: function(): boolean,\n * saveFocus: function(),\n * restoreFocus: function(),\n * isFirstElementFocused: function(): boolean,\n * isLastElementFocused: function(): boolean,\n * focusFirstElement: function(),\n * focusLastElement: function(),\n * }}\n * @private\n */\n\n }, {\n key: 'getFocusAdapterMethods_',\n value: function getFocusAdapterMethods_() {\n var _this4 = this;\n\n return {\n isFocused: function isFocused() {\n return document.activeElement === _this4.root_;\n },\n saveFocus: function saveFocus() {\n _this4.previousFocus_ = document.activeElement;\n },\n restoreFocus: function restoreFocus() {\n if (_this4.root_.contains(document.activeElement)) {\n if (_this4.previousFocus_ && _this4.previousFocus_.focus) {\n _this4.previousFocus_.focus();\n }\n }\n },\n isFirstElementFocused: function isFirstElementFocused() {\n return _this4.firstFocusableElement_ && _this4.firstFocusableElement_ === document.activeElement;\n },\n isLastElementFocused: function isLastElementFocused() {\n return _this4.lastFocusableElement_ && _this4.lastFocusableElement_ === document.activeElement;\n },\n focusFirstElement: function focusFirstElement() {\n return _this4.firstFocusableElement_ && _this4.firstFocusableElement_.focus && _this4.firstFocusableElement_.focus();\n },\n focusLastElement: function focusLastElement() {\n return _this4.lastFocusableElement_ && _this4.lastFocusableElement_.focus && _this4.lastFocusableElement_.focus();\n }\n };\n }\n\n /**\n * @return {!{\n * getInnerDimensions: function(),\n * getAnchorDimensions: function(): (HTMLElement | null | * | ClientRect),\n * getWindowDimensions: function(),\n * setPosition: function(*),\n * setMaxHeight: function(string)}}\n * @private\n */\n\n }, {\n key: 'getDimensionAdapterMethods_',\n value: function getDimensionAdapterMethods_() {\n var _this5 = this;\n\n return {\n getInnerDimensions: function getInnerDimensions() {\n return { width: _this5.root_.offsetWidth, height: _this5.root_.offsetHeight };\n },\n getAnchorDimensions: function getAnchorDimensions() {\n return _this5.anchorElement && _this5.anchorElement.getBoundingClientRect();\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 _this5.root_.style.left = 'left' in position ? position.left : null;\n _this5.root_.style.right = 'right' in position ? position.right : null;\n _this5.root_.style.top = 'top' in position ? position.top : null;\n _this5.root_.style.bottom = 'bottom' in position ? position.bottom : null;\n },\n setMaxHeight: function setMaxHeight(height) {\n _this5.root_.style.maxHeight = height;\n }\n };\n }\n }, {\n key: 'open',\n get: function get() {\n return this.foundation_.isOpen();\n }\n\n /** @param {boolean} value */\n ,\n set: function set(value) {\n if (value) {\n var focusableElements = this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__[\"e\" /* strings */].FOCUSABLE_ELEMENTS);\n this.firstFocusableElement_ = focusableElements.length > 0 ? focusableElements[0] : null;\n this.lastFocusableElement_ = focusableElements.length > 0 ? focusableElements[focusableElements.length - 1] : null;\n this.foundation_.open();\n } else {\n this.foundation_.close();\n }\n }\n }, {\n key: 'quickOpen',\n set: function set(quickOpen) {\n this.foundation_.setQuickOpen(quickOpen);\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCMenuSurface(root);\n }\n }]);\n\n return MDCMenuSurface;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Notched Outline.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Notched Outline into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCNotchedOutlineAdapter = function () {\n function MDCNotchedOutlineAdapter() {\n _classCallCheck(this, MDCNotchedOutlineAdapter);\n }\n\n _createClass(MDCNotchedOutlineAdapter, [{\n key: \"addClass\",\n\n /**\n * Adds a class to the root element.\n * @param {string} className\n */\n value: function addClass(className) {}\n\n /**\n * Removes a class from the root element.\n * @param {string} className\n */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * Sets the width style property of the notch element.\n * @param {number} width\n */\n\n }, {\n key: \"setNotchWidthProperty\",\n value: function setNotchWidthProperty(width) {}\n\n /**\n * Removes the width style property from the notch element.\n */\n\n }, {\n key: \"removeNotchWidthProperty\",\n value: function removeNotchWidthProperty() {}\n }]);\n\n return MDCNotchedOutlineAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCNotchedOutlineAdapter);\n\n/***/ }),\n/* 47 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return numbers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return strings; });\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\n/** @enum {string} */\nvar strings = {\n NOTCH_ELEMENT_SELECTOR: '.mdc-notched-outline__notch'\n};\n\n/** @enum {number} */\nvar numbers = {\n // This should stay in sync with $mdc-notched-outline-padding * 2.\n NOTCH_ELEMENT_PADDING: 8\n};\n\n/** @enum {string} */\nvar cssClasses = {\n OUTLINE_NOTCHED: 'mdc-notched-outline--notched',\n OUTLINE_UPGRADED: 'mdc-notched-outline--upgraded',\n NO_LABEL: 'mdc-notched-outline--no-label'\n};\n\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export MDCSelectAdapter */\n/* unused harmony export FoundationMapType */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__icon_index__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helper_text_index__ = __webpack_require__(22);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n/* eslint-disable no-unused-vars */\n\n\n/* eslint-enable no-unused-vars */\n\n/**\n * @typedef {{\n * leadingIcon: (!MDCSelectIconFoundation|undefined),\n * helperText: (!MDCSelectHelperTextFoundation|undefined),\n * }}\n */\nvar FoundationMapType = void 0;\n\n/**\n * Adapter for MDC Select. Provides an interface for managing\n * - classes\n * - dom\n * - event handlers\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\n\nvar MDCSelectAdapter = function () {\n function MDCSelectAdapter() {\n _classCallCheck(this, MDCSelectAdapter);\n }\n\n _createClass(MDCSelectAdapter, [{\n key: 'addClass',\n\n /**\n * Adds class to root element.\n * @param {string} className\n */\n value: function addClass(className) {}\n\n /**\n * Removes a class from the root element.\n * @param {string} className\n */\n\n }, {\n key: 'removeClass',\n value: function removeClass(className) {}\n\n /**\n * Returns true if the root element contains the given class name.\n * @param {string} className\n * @return {boolean}\n */\n\n }, {\n key: 'hasClass',\n value: function hasClass(className) {}\n\n /**\n * Activates the bottom line, showing a focused state.\n */\n\n }, {\n key: 'activateBottomLine',\n value: function activateBottomLine() {}\n\n /**\n * Deactivates the bottom line.\n */\n\n }, {\n key: 'deactivateBottomLine',\n value: function deactivateBottomLine() {}\n\n /**\n * Sets the value of the select.\n * @param {string} value\n */\n\n }, {\n key: 'setValue',\n value: function setValue(value) {}\n\n /**\n * Returns the selected value of the select element.\n * @return {string}\n */\n\n }, {\n key: 'getValue',\n value: function getValue() {}\n\n /**\n * Floats label determined based off of the shouldFloat argument.\n * @param {boolean} shouldFloat\n */\n\n }, {\n key: 'floatLabel',\n value: function floatLabel(shouldFloat) {}\n\n /**\n * Returns width of label in pixels, if the label exists.\n * @return {number}\n */\n\n }, {\n key: 'getLabelWidth',\n value: function getLabelWidth() {}\n\n /**\n * Returns true if outline element exists, false if it doesn't.\n * @return {boolean}\n */\n\n }, {\n key: 'hasOutline',\n value: function hasOutline() {}\n\n /**\n * Only implement if outline element exists.\n * @param {number} labelWidth\n */\n\n }, {\n key: 'notchOutline',\n value: function notchOutline(labelWidth) {}\n\n /**\n * Closes notch in outline element, if the outline exists.\n */\n\n }, {\n key: 'closeOutline',\n value: function closeOutline() {}\n\n /**\n * Opens the menu.\n */\n\n }, {\n key: 'openMenu',\n value: function openMenu() {}\n\n /**\n * Closes the menu.\n */\n\n }, {\n key: 'closeMenu',\n value: function closeMenu() {}\n\n /**\n * Returns true if the menu is currently open.\n * @return {boolean}\n */\n\n }, {\n key: 'isMenuOpen',\n value: function isMenuOpen() {}\n\n /**\n * Sets the selected index of the select to the index provided.\n * @param {number} index\n */\n\n }, {\n key: 'setSelectedIndex',\n value: function setSelectedIndex(index) {}\n\n /**\n * Sets the select to disabled.\n * @param {boolean} isDisabled\n */\n\n }, {\n key: 'setDisabled',\n value: function setDisabled(isDisabled) {}\n\n /**\n * Sets the line ripple transform origin center.\n * @param {number} normalizedX\n */\n\n }, {\n key: 'setRippleCenter',\n value: function setRippleCenter(normalizedX) {}\n\n /**\n * Emits a change event when an element is selected.\n * @param {string} value\n */\n\n }, {\n key: 'notifyChange',\n value: function notifyChange(value) {}\n\n /**\n * Checks if the select is currently valid.\n * @return {boolean} isValid\n */\n\n }, {\n key: 'checkValidity',\n value: function checkValidity() {}\n\n /**\n * Adds/Removes the invalid class.\n * @param {boolean} isValid\n */\n\n }, {\n key: 'setValid',\n value: function setValid(isValid) {}\n }]);\n\n return MDCSelectAdapter;\n}();\n\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Select Icon.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the select icon into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCSelectIconAdapter = function () {\n function MDCSelectIconAdapter() {\n _classCallCheck(this, MDCSelectIconAdapter);\n }\n\n _createClass(MDCSelectIconAdapter, [{\n key: \"getAttr\",\n\n /**\n * Gets the value of an attribute on the icon element.\n * @param {string} attr\n * @return {string}\n */\n value: function getAttr(attr) {}\n\n /**\n * Sets an attribute on the icon element.\n * @param {string} attr\n * @param {string} value\n */\n\n }, {\n key: \"setAttr\",\n value: function setAttr(attr, value) {}\n\n /**\n * Removes an attribute from the icon element.\n * @param {string} attr\n */\n\n }, {\n key: \"removeAttr\",\n value: function removeAttr(attr) {}\n\n /**\n * Sets the text content of the icon element.\n * @param {string} content\n */\n\n }, {\n key: \"setContent\",\n value: function setContent(content) {}\n\n /**\n * Registers an event listener on the icon element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"registerInteractionHandler\",\n value: function registerInteractionHandler(evtType, handler) {}\n\n /**\n * Deregisters an event listener on the icon element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"deregisterInteractionHandler\",\n value: function deregisterInteractionHandler(evtType, handler) {}\n\n /**\n * Emits a custom event \"MDCSelect:icon\" denoting a user has clicked the icon.\n */\n\n }, {\n key: \"notifyIconAction\",\n value: function notifyIconAction() {}\n }]);\n\n return MDCSelectIconAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCSelectIconAdapter);\n\n/***/ }),\n/* 50 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Select Helper Text.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Select helper text into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCSelectHelperTextAdapter = function () {\n function MDCSelectHelperTextAdapter() {\n _classCallCheck(this, MDCSelectHelperTextAdapter);\n }\n\n _createClass(MDCSelectHelperTextAdapter, [{\n key: \"addClass\",\n\n /**\n * Adds a class to the helper text element.\n * @param {string} className\n */\n value: function addClass(className) {}\n\n /**\n * Removes a class from the helper text element.\n * @param {string} className\n */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * Returns whether or not the helper text element contains the given class.\n * @param {string} className\n * @return {boolean}\n */\n\n }, {\n key: \"hasClass\",\n value: function hasClass(className) {}\n\n /**\n * Sets an attribute with a given value on the helper text element.\n * @param {string} attr\n * @param {string} value\n */\n\n }, {\n key: \"setAttr\",\n value: function setAttr(attr, value) {}\n\n /**\n * Removes an attribute from the helper text element.\n * @param {string} attr\n */\n\n }, {\n key: \"removeAttr\",\n value: function removeAttr(attr) {}\n\n /**\n * Sets the text content for the helper text element.\n * @param {string} content\n */\n\n }, {\n key: \"setContent\",\n value: function setContent(content) {}\n }]);\n\n return MDCSelectHelperTextAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCSelectHelperTextAdapter);\n\n/***/ }),\n/* 51 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return numbers; });\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\n/** @enum {string} */\nvar cssClasses = {\n DISABLED: 'mdc-select--disabled',\n ROOT: 'mdc-select',\n OUTLINED: 'mdc-select--outlined',\n FOCUSED: 'mdc-select--focused',\n SELECTED_ITEM_CLASS: 'mdc-list-item--selected',\n WITH_LEADING_ICON: 'mdc-select--with-leading-icon',\n INVALID: 'mdc-select--invalid',\n REQUIRED: 'mdc-select--required'\n};\n\n/** @enum {string} */\nvar strings = {\n ARIA_CONTROLS: 'aria-controls',\n CHANGE_EVENT: 'MDCSelect:change',\n SELECTED_ITEM_SELECTOR: '.' + cssClasses.SELECTED_ITEM_CLASS,\n LEADING_ICON_SELECTOR: '.mdc-select__icon',\n SELECTED_TEXT_SELECTOR: '.mdc-select__selected-text',\n HIDDEN_INPUT_SELECTOR: 'input[type=\"hidden\"]',\n MENU_SELECTOR: '.mdc-select__menu',\n LINE_RIPPLE_SELECTOR: '.mdc-line-ripple',\n LABEL_SELECTOR: '.mdc-floating-label',\n NATIVE_CONTROL_SELECTOR: '.mdc-select__native-control',\n OUTLINE_SELECTOR: '.mdc-notched-outline',\n ENHANCED_VALUE_ATTR: 'data-value',\n ARIA_SELECTED_ATTR: 'aria-selected'\n};\n\n/** @enum {number} */\nvar numbers = {\n LABEL_SCALE: 0.75\n};\n\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return numbers; });\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\n/** @enum {string} */\nvar cssClasses = {\n ACTIVE: 'mdc-slider--active',\n DISABLED: 'mdc-slider--disabled',\n DISCRETE: 'mdc-slider--discrete',\n FOCUS: 'mdc-slider--focus',\n IN_TRANSIT: 'mdc-slider--in-transit',\n IS_DISCRETE: 'mdc-slider--discrete',\n HAS_TRACK_MARKER: 'mdc-slider--display-markers'\n};\n\n/** @enum {string} */\nvar strings = {\n TRACK_SELECTOR: '.mdc-slider__track',\n TRACK_MARKER_CONTAINER_SELECTOR: '.mdc-slider__track-marker-container',\n LAST_TRACK_MARKER_SELECTOR: '.mdc-slider__track-marker:last-child',\n THUMB_CONTAINER_SELECTOR: '.mdc-slider__thumb-container',\n PIN_VALUE_MARKER_SELECTOR: '.mdc-slider__pin-value-marker',\n ARIA_VALUEMIN: 'aria-valuemin',\n ARIA_VALUEMAX: 'aria-valuemax',\n ARIA_VALUENOW: 'aria-valuenow',\n ARIA_DISABLED: 'aria-disabled',\n STEP_DATA_ATTR: 'data-step',\n CHANGE_EVENT: 'MDCSlider:change',\n INPUT_EVENT: 'MDCSlider:input'\n};\n\n/** @enum {number} */\nvar numbers = {\n PAGE_FACTOR: 4\n};\n\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint-disable no-unused-vars */\n\n/**\n * Adapter for MDC Slider.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Slider into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCSliderAdapter = function () {\n function MDCSliderAdapter() {\n _classCallCheck(this, MDCSliderAdapter);\n }\n\n _createClass(MDCSliderAdapter, [{\n key: \"hasClass\",\n\n /**\n * Returns true if className exists for the slider Element\n * @param {string} className\n * @return {boolean}\n */\n value: function hasClass(className) {}\n\n /**\n * Adds a class to the slider Element\n * @param {string} className\n */\n\n }, {\n key: \"addClass\",\n value: function addClass(className) {}\n\n /**\n * Removes a class from the slider Element\n * @param {string} className\n */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * Returns a string if attribute name exists on the slider Element,\n * otherwise returns null\n * @param {string} name\n * @return {?string}\n */\n\n }, {\n key: \"getAttribute\",\n value: function getAttribute(name) {}\n\n /**\n * Sets attribute name on slider Element to value\n * @param {string} name\n * @param {string} value\n */\n\n }, {\n key: \"setAttribute\",\n value: function setAttribute(name, value) {}\n\n /**\n * Removes attribute name from slider Element\n * @param {string} name\n */\n\n }, {\n key: \"removeAttribute\",\n value: function removeAttribute(name) {}\n\n /**\n * Returns the bounding client rect for the slider Element\n * @return {?ClientRect}\n */\n\n }, {\n key: \"computeBoundingRect\",\n value: function computeBoundingRect() {}\n\n /**\n * Returns the tab index of the slider Element\n * @return {number}\n */\n\n }, {\n key: \"getTabIndex\",\n value: function getTabIndex() {}\n\n /**\n * Registers an event handler on the root element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"registerInteractionHandler\",\n value: function registerInteractionHandler(type, handler) {}\n\n /**\n * Deregisters an event handler on the root element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"deregisterInteractionHandler\",\n value: function deregisterInteractionHandler(type, handler) {}\n\n /**\n * Registers an event handler on the thumb container element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"registerThumbContainerInteractionHandler\",\n value: function registerThumbContainerInteractionHandler(type, handler) {}\n\n /**\n * Deregisters an event handler on the thumb container element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"deregisterThumbContainerInteractionHandler\",\n value: function deregisterThumbContainerInteractionHandler(type, handler) {}\n\n /**\n * Registers an event handler on the body for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"registerBodyInteractionHandler\",\n value: function registerBodyInteractionHandler(type, handler) {}\n\n /**\n * Deregisters an event handler on the body for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"deregisterBodyInteractionHandler\",\n value: function deregisterBodyInteractionHandler(type, handler) {}\n\n /**\n * Registers an event handler for the window resize event\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"registerResizeHandler\",\n value: function registerResizeHandler(handler) {}\n\n /**\n * Deregisters an event handler for the window resize event\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"deregisterResizeHandler\",\n value: function deregisterResizeHandler(handler) {}\n\n /**\n * Emits a custom event MDCSlider:input from the root\n */\n\n }, {\n key: \"notifyInput\",\n value: function notifyInput() {}\n\n /**\n * Emits a custom event MDCSlider:change from the root\n */\n\n }, {\n key: \"notifyChange\",\n value: function notifyChange() {}\n\n /**\n * Sets a style property of the thumb container element to the passed value\n * @param {string} propertyName\n * @param {string} value\n */\n\n }, {\n key: \"setThumbContainerStyleProperty\",\n value: function setThumbContainerStyleProperty(propertyName, value) {}\n\n /**\n * Sets a style property of the track element to the passed value\n * @param {string} propertyName\n * @param {string} value\n */\n\n }, {\n key: \"setTrackStyleProperty\",\n value: function setTrackStyleProperty(propertyName, value) {}\n\n /**\n * Sets the inner text of the pin marker to the passed value\n * @param {number} value\n */\n\n }, {\n key: \"setMarkerValue\",\n value: function setMarkerValue(value) {}\n\n /**\n * Appends the passed number of track markers to the track mark container element\n * @param {number} numMarkers\n */\n\n }, {\n key: \"appendTrackMarkers\",\n value: function appendTrackMarkers(numMarkers) {}\n\n /**\n * Removes all track markers fromt he track mark container element\n */\n\n }, {\n key: \"removeTrackMarkers\",\n value: function removeTrackMarkers() {}\n\n /**\n * Sets a style property of the last track marker to the passed value\n * @param {string} propertyName\n * @param {string} value\n */\n\n }, {\n key: \"setLastTrackMarkersStyleProperty\",\n value: function setLastTrackMarkersStyleProperty(propertyName, value) {}\n\n /**\n * Returns true if the root element is RTL, otherwise false\n * @return {boolean}\n */\n\n }, {\n key: \"isRTL\",\n value: function isRTL() {}\n }]);\n\n return MDCSliderAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCSliderAdapter);\n\n/***/ }),\n/* 54 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTab\", function() { return MDCTab; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_tab_indicator_index__ = __webpack_require__(55);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__adapter__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__foundation__ = __webpack_require__(140);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTabFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_4__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n/* eslint-disable no-unused-vars */\n\n\n\n/* eslint-enable no-unused-vars */\n\n\n\n/**\n * @extends {MDCComponent<!MDCTabFoundation>}\n * @final\n */\n\nvar MDCTab = function (_MDCComponent) {\n _inherits(MDCTab, _MDCComponent);\n\n /**\n * @param {...?} args\n */\n function MDCTab() {\n var _ref;\n\n _classCallCheck(this, MDCTab);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @type {string} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCTab.__proto__ || Object.getPrototypeOf(MDCTab)).call.apply(_ref, [this].concat(args)));\n\n _this.id;\n /** @private {?MDCRipple} */\n _this.ripple_;\n /** @private {?MDCTabIndicator} */\n _this.tabIndicator_;\n /** @private {?Element} */\n _this.content_;\n\n /** @private {?Function} */\n _this.handleClick_;\n return _this;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCTab}\n */\n\n\n _createClass(MDCTab, [{\n key: 'initialize',\n value: function initialize() {\n var rippleFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el, foundation) {\n return new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__[\"MDCRipple\"](el, foundation);\n };\n var tabIndicatorFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_2__material_tab_indicator_index__[\"MDCTabIndicator\"](el);\n };\n\n this.id = this.root_.id;\n var rippleSurface = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__foundation__[\"a\" /* default */].strings.RIPPLE_SELECTOR);\n var rippleAdapter = _extends(__WEBPACK_IMPORTED_MODULE_1__material_ripple_index__[\"MDCRipple\"].createAdapter( /** @type {!RippleCapableSurface} */this), {\n addClass: function addClass(className) {\n return rippleSurface.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return rippleSurface.classList.remove(className);\n },\n updateCssVariable: function updateCssVariable(varName, value) {\n return rippleSurface.style.setProperty(varName, value);\n }\n });\n var rippleFoundation = new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__[\"MDCRippleFoundation\"](rippleAdapter);\n this.ripple_ = rippleFactory(this.root_, rippleFoundation);\n\n var tabIndicatorElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__foundation__[\"a\" /* default */].strings.TAB_INDICATOR_SELECTOR);\n this.tabIndicator_ = tabIndicatorFactory(tabIndicatorElement);\n\n this.content_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__foundation__[\"a\" /* default */].strings.CONTENT_SELECTOR);\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n this.handleClick_ = this.foundation_.handleClick.bind(this.foundation_);\n this.listen('click', this.handleClick_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unlisten('click', /** @type {!Function} */this.handleClick_);\n this.ripple_.destroy();\n _get(MDCTab.prototype.__proto__ || Object.getPrototypeOf(MDCTab.prototype), 'destroy', this).call(this);\n }\n\n /**\n * @return {!MDCTabFoundation}\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_4__foundation__[\"a\" /* default */](\n /** @type {!MDCTabAdapter} */{\n setAttr: function setAttr(attr, value) {\n return _this2.root_.setAttribute(attr, value);\n },\n addClass: function addClass(className) {\n return _this2.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this2.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this2.root_.classList.contains(className);\n },\n activateIndicator: function activateIndicator(previousIndicatorClientRect) {\n return _this2.tabIndicator_.activate(previousIndicatorClientRect);\n },\n deactivateIndicator: function deactivateIndicator() {\n return _this2.tabIndicator_.deactivate();\n },\n notifyInteracted: function notifyInteracted() {\n return _this2.emit(__WEBPACK_IMPORTED_MODULE_4__foundation__[\"a\" /* default */].strings.INTERACTED_EVENT, { tabId: _this2.id }, true /* bubble */);\n },\n getOffsetLeft: function getOffsetLeft() {\n return _this2.root_.offsetLeft;\n },\n getOffsetWidth: function getOffsetWidth() {\n return _this2.root_.offsetWidth;\n },\n getContentOffsetLeft: function getContentOffsetLeft() {\n return _this2.content_.offsetLeft;\n },\n getContentOffsetWidth: function getContentOffsetWidth() {\n return _this2.content_.offsetWidth;\n },\n focus: function focus() {\n return _this2.root_.focus();\n }\n });\n }\n\n /**\n * Getter for the active state of the tab\n * @return {boolean}\n */\n\n }, {\n key: 'activate',\n\n\n /**\n * Activates the tab\n * @param {!ClientRect=} computeIndicatorClientRect\n */\n value: function activate(computeIndicatorClientRect) {\n this.foundation_.activate(computeIndicatorClientRect);\n }\n\n /**\n * Deactivates the tab\n */\n\n }, {\n key: 'deactivate',\n value: function deactivate() {\n this.foundation_.deactivate();\n }\n\n /**\n * Returns the indicator's client rect\n * @return {!ClientRect}\n */\n\n }, {\n key: 'computeIndicatorClientRect',\n value: function computeIndicatorClientRect() {\n return this.tabIndicator_.computeContentClientRect();\n }\n\n /**\n * @return {!MDCTabDimensions}\n */\n\n }, {\n key: 'computeDimensions',\n value: function computeDimensions() {\n return this.foundation_.computeDimensions();\n }\n\n /**\n * Focuses the tab\n */\n\n }, {\n key: 'focus',\n value: function focus() {\n this.root_.focus();\n }\n }, {\n key: 'active',\n get: function get() {\n return this.foundation_.isActive();\n }\n }, {\n key: 'focusOnActivate',\n set: function set(focusOnActivate) {\n this.foundation_.setFocusOnActivate(focusOnActivate);\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCTab(root);\n }\n }]);\n\n return MDCTab;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTabIndicator\", function() { return MDCTabIndicator; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__sliding_foundation__ = __webpack_require__(138);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__fading_foundation__ = __webpack_require__(139);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTabIndicatorFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSlidingTabIndicatorFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_3__sliding_foundation__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCFadingTabIndicatorFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_4__fading_foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCTabIndicatorFoundation>}\n * @final\n */\n\nvar MDCTabIndicator = function (_MDCComponent) {\n _inherits(MDCTabIndicator, _MDCComponent);\n\n _createClass(MDCTabIndicator, null, [{\n key: 'attachTo',\n\n /**\n * @param {!Element} root\n * @return {!MDCTabIndicator}\n */\n value: function attachTo(root) {\n return new MDCTabIndicator(root);\n }\n\n /**\n * @param {...?} args\n */\n\n }]);\n\n function MDCTabIndicator() {\n var _ref;\n\n _classCallCheck(this, MDCTabIndicator);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @type {?Element} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCTabIndicator.__proto__ || Object.getPrototypeOf(MDCTabIndicator)).call.apply(_ref, [this].concat(args)));\n\n _this.content_;\n return _this;\n }\n\n _createClass(MDCTabIndicator, [{\n key: 'initialize',\n value: function initialize() {\n this.content_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings.CONTENT_SELECTOR);\n }\n\n /**\n * @return {!ClientRect}\n */\n\n }, {\n key: 'computeContentClientRect',\n value: function computeContentClientRect() {\n return this.foundation_.computeContentClientRect();\n }\n\n /**\n * @return {!MDCTabIndicatorFoundation}\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n var adapter = /** @type {!MDCTabIndicatorAdapter} */_extends({\n addClass: function addClass(className) {\n return _this2.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this2.root_.classList.remove(className);\n },\n computeContentClientRect: function computeContentClientRect() {\n return _this2.content_.getBoundingClientRect();\n },\n setContentStyleProperty: function setContentStyleProperty(prop, value) {\n return _this2.content_.style.setProperty(prop, value);\n }\n });\n\n if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].cssClasses.FADE)) {\n return new __WEBPACK_IMPORTED_MODULE_4__fading_foundation__[\"a\" /* default */](adapter);\n }\n\n // Default to the sliding indicator\n return new __WEBPACK_IMPORTED_MODULE_3__sliding_foundation__[\"a\" /* default */](adapter);\n }\n\n /**\n * @param {!ClientRect=} previousIndicatorClientRect\n */\n\n }, {\n key: 'activate',\n value: function activate(previousIndicatorClientRect) {\n this.foundation_.activate(previousIndicatorClientRect);\n }\n }, {\n key: 'deactivate',\n value: function deactivate() {\n this.foundation_.deactivate();\n }\n }]);\n\n return MDCTabIndicator;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Tab Indicator.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Tab Indicator into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCTabIndicatorAdapter = function () {\n function MDCTabIndicatorAdapter() {\n _classCallCheck(this, MDCTabIndicatorAdapter);\n }\n\n _createClass(MDCTabIndicatorAdapter, [{\n key: \"addClass\",\n\n /**\n * Adds the given className to the root element.\n * @param {string} className The className to add\n */\n value: function addClass(className) {}\n\n /**\n * Removes the given className from the root element.\n * @param {string} className The className to remove\n */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * Returns the client rect of the content element.\n * @return {!ClientRect}\n */\n\n }, {\n key: \"computeContentClientRect\",\n value: function computeContentClientRect() {}\n\n /**\n * Sets a style property of the content element to the passed value\n * @param {string} propName The style property name to set\n * @param {string} value The style property value\n */\n\n }, {\n key: \"setContentStyleProperty\",\n value: function setContentStyleProperty(propName, value) {}\n }]);\n\n return MDCTabIndicatorAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCTabIndicatorAdapter);\n\n/***/ }),\n/* 57 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTabScroller\", function() { return MDCTabScroller; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(143);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(147);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTabScrollerFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"util\", function() { return __WEBPACK_IMPORTED_MODULE_3__util__; });\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCTabScrollerFoundation>}\n * @final\n */\n\nvar MDCTabScroller = function (_MDCComponent) {\n _inherits(MDCTabScroller, _MDCComponent);\n\n _createClass(MDCTabScroller, null, [{\n key: 'attachTo',\n\n /**\n * @param {!Element} root\n * @return {!MDCTabScroller}\n */\n value: function attachTo(root) {\n return new MDCTabScroller(root);\n }\n }]);\n\n function MDCTabScroller() {\n var _ref;\n\n _classCallCheck(this, MDCTabScroller);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {?Element} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCTabScroller.__proto__ || Object.getPrototypeOf(MDCTabScroller)).call.apply(_ref, [this].concat(args)));\n\n _this.content_;\n\n /** @private {?Element} */\n _this.area_;\n\n /** @private {?function(?Event): undefined} */\n _this.handleInteraction_;\n\n /** @private {?function(!Event): undefined} */\n _this.handleTransitionEnd_;\n return _this;\n }\n\n _createClass(MDCTabScroller, [{\n key: 'initialize',\n value: function initialize() {\n this.area_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings.AREA_SELECTOR);\n this.content_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings.CONTENT_SELECTOR);\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n var _this2 = this;\n\n this.handleInteraction_ = function () {\n return _this2.foundation_.handleInteraction();\n };\n this.handleTransitionEnd_ = function (evt) {\n return _this2.foundation_.handleTransitionEnd(evt);\n };\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 key: 'destroy',\n value: function destroy() {\n _get(MDCTabScroller.prototype.__proto__ || Object.getPrototypeOf(MDCTabScroller.prototype), 'destroy', this).call(this);\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 /**\n * @return {!MDCTabScrollerFoundation}\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this3 = this;\n\n var adapter = /** @type {!MDCTabScrollerAdapter} */{\n eventTargetMatchesSelector: function eventTargetMatchesSelector(evtTarget, selector) {\n var MATCHES = __WEBPACK_IMPORTED_MODULE_3__util__[\"getMatchesProperty\"](HTMLElement.prototype);\n return evtTarget[MATCHES](selector);\n },\n addClass: function addClass(className) {\n return _this3.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this3.root_.classList.remove(className);\n },\n addScrollAreaClass: function addScrollAreaClass(className) {\n return _this3.area_.classList.add(className);\n },\n setScrollAreaStyleProperty: function setScrollAreaStyleProperty(prop, value) {\n return _this3.area_.style.setProperty(prop, value);\n },\n setScrollContentStyleProperty: function setScrollContentStyleProperty(prop, value) {\n return _this3.content_.style.setProperty(prop, value);\n },\n getScrollContentStyleValue: function getScrollContentStyleValue(propName) {\n return window.getComputedStyle(_this3.content_).getPropertyValue(propName);\n },\n setScrollAreaScrollLeft: function setScrollAreaScrollLeft(scrollX) {\n return _this3.area_.scrollLeft = scrollX;\n },\n getScrollAreaScrollLeft: function getScrollAreaScrollLeft() {\n return _this3.area_.scrollLeft;\n },\n getScrollContentOffsetWidth: function getScrollContentOffsetWidth() {\n return _this3.content_.offsetWidth;\n },\n getScrollAreaOffsetWidth: function getScrollAreaOffsetWidth() {\n return _this3.area_.offsetWidth;\n },\n computeScrollAreaClientRect: function computeScrollAreaClientRect() {\n return _this3.area_.getBoundingClientRect();\n },\n computeScrollContentClientRect: function computeScrollContentClientRect() {\n return _this3.content_.getBoundingClientRect();\n },\n computeHorizontalScrollbarHeight: function computeHorizontalScrollbarHeight() {\n return __WEBPACK_IMPORTED_MODULE_3__util__[\"computeHorizontalScrollbarHeight\"](document);\n }\n };\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */](adapter);\n }\n\n /**\n * Returns the current visual scroll position\n * @return {number}\n */\n\n }, {\n key: 'getScrollPosition',\n value: function getScrollPosition() {\n return this.foundation_.getScrollPosition();\n }\n\n /**\n * Returns the width of the scroll content\n * @return {number}\n */\n\n }, {\n key: 'getScrollContentWidth',\n value: function getScrollContentWidth() {\n return this.content_.offsetWidth;\n }\n\n /**\n * Increments the scroll value by the given amount\n * @param {number} scrollXIncrement The pixel value by which to increment the scroll value\n */\n\n }, {\n key: 'incrementScroll',\n value: function incrementScroll(scrollXIncrement) {\n this.foundation_.incrementScroll(scrollXIncrement);\n }\n\n /**\n * Scrolls to the given pixel position\n * @param {number} scrollX The pixel value to scroll to\n */\n\n }, {\n key: 'scrollTo',\n value: function scrollTo(scrollX) {\n this.foundation_.scrollTo(scrollX);\n }\n }]);\n\n return MDCTabScroller;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\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\n/** @enum {string} */\nvar cssClasses = {\n ANIMATING: 'mdc-tab-scroller--animating',\n SCROLL_TEST: 'mdc-tab-scroller__test',\n SCROLL_AREA_SCROLL: 'mdc-tab-scroller__scroll-area--scroll'\n};\n\n/** @enum {string} */\nvar strings = {\n AREA_SELECTOR: '.mdc-tab-scroller__scroll-area',\n CONTENT_SELECTOR: '.mdc-tab-scroller__scroll-content'\n};\n\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_tab_adapter__ = __webpack_require__(10);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/* eslint-disable no-unused-vars */\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Adapter for MDC Tab Bar.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Tab Bar into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\n\nvar MDCTabBarAdapter = function () {\n function MDCTabBarAdapter() {\n _classCallCheck(this, MDCTabBarAdapter);\n }\n\n _createClass(MDCTabBarAdapter, [{\n key: 'scrollTo',\n\n /**\n * Scrolls to the given position\n * @param {number} scrollX The position to scroll to\n */\n value: function scrollTo(scrollX) {}\n\n /**\n * Increments the current scroll position by the given amount\n * @param {number} scrollXIncrement The amount to increment scroll\n */\n\n }, {\n key: 'incrementScroll',\n value: function incrementScroll(scrollXIncrement) {}\n\n /**\n * Returns the current scroll position\n * @return {number}\n */\n\n }, {\n key: 'getScrollPosition',\n value: function getScrollPosition() {}\n\n /**\n * Returns the width of the scroll content\n * @return {number}\n */\n\n }, {\n key: 'getScrollContentWidth',\n value: function getScrollContentWidth() {}\n\n /**\n * Returns the root element's offsetWidth\n * @return {number}\n */\n\n }, {\n key: 'getOffsetWidth',\n value: function getOffsetWidth() {}\n\n /**\n * Returns if the Tab Bar language direction is RTL\n * @return {boolean}\n */\n\n }, {\n key: 'isRTL',\n value: function isRTL() {}\n\n /**\n * Sets the tab at the given index to be activated\n * @param {number} index The index of the tab to activate\n */\n\n }, {\n key: 'setActiveTab',\n value: function setActiveTab(index) {}\n\n /**\n * Activates the tab at the given index with the given client rect\n * @param {number} index The index of the tab to activate\n * @param {!ClientRect} clientRect The client rect of the previously active Tab Indicator\n */\n\n }, {\n key: 'activateTabAtIndex',\n value: function activateTabAtIndex(index, clientRect) {}\n\n /**\n * Deactivates the tab at the given index\n * @param {number} index The index of the tab to deactivate\n */\n\n }, {\n key: 'deactivateTabAtIndex',\n value: function deactivateTabAtIndex(index) {}\n\n /**\n * Focuses the tab at the given index\n * @param {number} index The index of the tab to focus\n */\n\n }, {\n key: 'focusTabAtIndex',\n value: function focusTabAtIndex(index) {}\n\n /**\n * Returns the client rect of the tab's indicator\n * @param {number} index The index of the tab\n * @return {!ClientRect}\n */\n\n }, {\n key: 'getTabIndicatorClientRectAtIndex',\n value: function getTabIndicatorClientRectAtIndex(index) {}\n\n /**\n * Returns the tab dimensions of the tab at the given index\n * @param {number} index The index of the tab\n * @return {!MDCTabDimensions}\n */\n\n }, {\n key: 'getTabDimensionsAtIndex',\n value: function getTabDimensionsAtIndex(index) {}\n\n /**\n * Returns the length of the tab list\n * @return {number}\n */\n\n }, {\n key: 'getTabListLength',\n value: function getTabListLength() {}\n\n /**\n * Returns the index of the previously active tab\n * @return {number}\n */\n\n }, {\n key: 'getPreviousActiveTabIndex',\n value: function getPreviousActiveTabIndex() {}\n\n /**\n * Returns the index of the focused tab\n * @return {number}\n */\n\n }, {\n key: 'getFocusedTabIndex',\n value: function getFocusedTabIndex() {}\n\n /**\n * Returns the index of the given tab\n * @param {string} id The ID of the tab whose index to determine\n * @return {number}\n */\n\n }, {\n key: 'getIndexOfTabById',\n value: function getIndexOfTabById(id) {}\n\n /**\n * Emits the MDCTabBar:activated event\n * @param {number} index The index of the activated tab\n */\n\n }, {\n key: 'notifyTabActivated',\n value: function notifyTabActivated(index) {}\n }]);\n\n return MDCTabBarAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCTabBarAdapter);\n\n/***/ }),\n/* 60 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return numbers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return VALIDATION_ATTR_WHITELIST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ALWAYS_FLOAT_TYPES; });\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\n/** @enum {string} */\nvar strings = {\n ARIA_CONTROLS: 'aria-controls',\n INPUT_SELECTOR: '.mdc-text-field__input',\n LABEL_SELECTOR: '.mdc-floating-label',\n ICON_SELECTOR: '.mdc-text-field__icon',\n OUTLINE_SELECTOR: '.mdc-notched-outline',\n LINE_RIPPLE_SELECTOR: '.mdc-line-ripple'\n};\n\n/** @enum {string} */\nvar cssClasses = {\n ROOT: 'mdc-text-field',\n DISABLED: 'mdc-text-field--disabled',\n DENSE: 'mdc-text-field--dense',\n FOCUSED: 'mdc-text-field--focused',\n INVALID: 'mdc-text-field--invalid',\n TEXTAREA: 'mdc-text-field--textarea',\n OUTLINED: 'mdc-text-field--outlined',\n WITH_LEADING_ICON: 'mdc-text-field--with-leading-icon',\n HELPER_LINE: 'mdc-text-field-helper-line'\n};\n\n/** @enum {number} */\nvar numbers = {\n LABEL_SCALE: 0.75,\n DENSE_LABEL_SCALE: 0.923\n};\n\n// whitelist based off of https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation\n// under section: `Validation-related attributes`\nvar VALIDATION_ATTR_WHITELIST = ['pattern', 'min', 'max', 'required', 'step', 'minlength', 'maxlength'];\n\n// Label should always float for these types as they show some UI even if value is empty.\nvar ALWAYS_FLOAT_TYPES = ['color', 'date', 'datetime-local', 'month', 'range', 'time', 'week'];\n\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export MDCTextFieldAdapter */\n/* unused harmony export NativeInputType */\n/* unused harmony export FoundationMapType */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helper_text_foundation__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__character_counter_foundation__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__icon_foundation__ = __webpack_require__(27);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint-disable no-unused-vars */\n\n/* eslint-disable no-unused-vars */\n\n\n\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * @typedef {{\n * value: string,\n * disabled: boolean,\n * badInput: boolean,\n * validity: {\n * badInput: boolean,\n * valid: boolean,\n * },\n * }}\n */\nvar NativeInputType = void 0;\n\n/**\n * @typedef {{\n * helperText: (!MDCTextFieldHelperTextFoundation|undefined),\n * characterCounter: (!MDCTextFieldCharacterCounterFoundation|undefined),\n * leadingIcon: (!MDCTextFieldIconFoundation|undefined),\n * trailingIcon: (!MDCTextFieldIconFoundation|undefined),\n * }}\n */\nvar FoundationMapType = void 0;\n\n/**\n * Adapter for MDC Text Field.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Text Field into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\n\nvar MDCTextFieldAdapter = function () {\n function MDCTextFieldAdapter() {\n _classCallCheck(this, MDCTextFieldAdapter);\n }\n\n _createClass(MDCTextFieldAdapter, [{\n key: 'addClass',\n\n /**\n * Adds a class to the root Element.\n * @param {string} className\n */\n value: function addClass(className) {}\n\n /**\n * Removes a class from the root Element.\n * @param {string} className\n */\n\n }, {\n key: 'removeClass',\n value: function removeClass(className) {}\n\n /**\n * Returns true if the root element contains the given class name.\n * @param {string} className\n * @return {boolean}\n */\n\n }, {\n key: 'hasClass',\n value: function hasClass(className) {}\n\n /**\n * Registers an event handler on the root element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: 'registerTextFieldInteractionHandler',\n value: function registerTextFieldInteractionHandler(type, handler) {}\n\n /**\n * Deregisters an event handler on the root element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: 'deregisterTextFieldInteractionHandler',\n value: function deregisterTextFieldInteractionHandler(type, handler) {}\n\n /**\n * Registers an event listener on the native input element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: 'registerInputInteractionHandler',\n value: function registerInputInteractionHandler(evtType, handler) {}\n\n /**\n * Deregisters an event listener on the native input element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: 'deregisterInputInteractionHandler',\n value: function deregisterInputInteractionHandler(evtType, handler) {}\n\n /**\n * Registers a validation attribute change listener on the input element.\n * Handler accepts list of attribute names.\n * @param {function(!Array<string>): undefined} handler\n * @return {!MutationObserver}\n */\n\n }, {\n key: 'registerValidationAttributeChangeHandler',\n value: function registerValidationAttributeChangeHandler(handler) {}\n\n /**\n * Disconnects a validation attribute observer on the input element.\n * @param {!MutationObserver} observer\n */\n\n }, {\n key: 'deregisterValidationAttributeChangeHandler',\n value: function deregisterValidationAttributeChangeHandler(observer) {}\n\n /**\n * Returns an object representing the native text input element, with a\n * similar API shape. The object returned should include the value, disabled\n * and badInput properties, as well as the checkValidity() function. We never\n * alter the value within our code, however we do update the disabled\n * property, so if you choose to duck-type the return value for this method\n * in your implementation it's important to keep this in mind. Also note that\n * this method can return null, which the foundation will handle gracefully.\n * @return {?Element|?NativeInputType}\n */\n\n }, {\n key: 'getNativeInput',\n value: function getNativeInput() {}\n\n /**\n * Returns true if the textfield is focused.\n * We achieve this via `document.activeElement === this.root_`.\n * @return {boolean}\n */\n\n }, {\n key: 'isFocused',\n value: function isFocused() {}\n\n /**\n * Activates the line ripple.\n */\n\n }, {\n key: 'activateLineRipple',\n value: function activateLineRipple() {}\n\n /**\n * Deactivates the line ripple.\n */\n\n }, {\n key: 'deactivateLineRipple',\n value: function deactivateLineRipple() {}\n\n /**\n * Sets the transform origin of the line ripple.\n * @param {number} normalizedX\n */\n\n }, {\n key: 'setLineRippleTransformOrigin',\n value: function setLineRippleTransformOrigin(normalizedX) {}\n\n /**\n * Only implement if label exists.\n * Shakes label if shouldShake is true.\n * @param {boolean} shouldShake\n */\n\n }, {\n key: 'shakeLabel',\n value: function shakeLabel(shouldShake) {}\n\n /**\n * Only implement if label exists.\n * Floats the label above the input element if shouldFloat is true.\n * @param {boolean} shouldFloat\n */\n\n }, {\n key: 'floatLabel',\n value: function floatLabel(shouldFloat) {}\n\n /**\n * Returns true if label element exists, false if it doesn't.\n * @return {boolean}\n */\n\n }, {\n key: 'hasLabel',\n value: function hasLabel() {}\n\n /**\n * Only implement if label exists.\n * Returns width of label in pixels.\n * @return {number}\n */\n\n }, {\n key: 'getLabelWidth',\n value: function getLabelWidth() {}\n\n /**\n * Returns true if outline element exists, false if it doesn't.\n * @return {boolean}\n */\n\n }, {\n key: 'hasOutline',\n value: function hasOutline() {}\n\n /**\n * Only implement if outline element exists.\n * @param {number} labelWidth\n */\n\n }, {\n key: 'notchOutline',\n value: function notchOutline(labelWidth) {}\n\n /**\n * Only implement if outline element exists.\n * Closes notch in outline element.\n */\n\n }, {\n key: 'closeOutline',\n value: function closeOutline() {}\n }]);\n\n return MDCTextFieldAdapter;\n}();\n\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Text Field Helper Text.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the TextField helper text into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCTextFieldHelperTextAdapter = function () {\n function MDCTextFieldHelperTextAdapter() {\n _classCallCheck(this, MDCTextFieldHelperTextAdapter);\n }\n\n _createClass(MDCTextFieldHelperTextAdapter, [{\n key: \"addClass\",\n\n /**\n * Adds a class to the helper text element.\n * @param {string} className\n */\n value: function addClass(className) {}\n\n /**\n * Removes a class from the helper text element.\n * @param {string} className\n */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * Returns whether or not the helper text element contains the given class.\n * @param {string} className\n * @return {boolean}\n */\n\n }, {\n key: \"hasClass\",\n value: function hasClass(className) {}\n\n /**\n * Sets an attribute with a given value on the helper text element.\n * @param {string} attr\n * @param {string} value\n */\n\n }, {\n key: \"setAttr\",\n value: function setAttr(attr, value) {}\n\n /**\n * Removes an attribute from the helper text element.\n * @param {string} attr\n */\n\n }, {\n key: \"removeAttr\",\n value: function removeAttr(attr) {}\n\n /**\n * Sets the text content for the helper text element.\n * @param {string} content\n */\n\n }, {\n key: \"setContent\",\n value: function setContent(content) {}\n }]);\n\n return MDCTextFieldHelperTextAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCTextFieldHelperTextAdapter);\n\n/***/ }),\n/* 63 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Text Field Character Counter.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the TextField character counter into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCTextFieldCharacterCounterAdapter = function () {\n function MDCTextFieldCharacterCounterAdapter() {\n _classCallCheck(this, MDCTextFieldCharacterCounterAdapter);\n }\n\n _createClass(MDCTextFieldCharacterCounterAdapter, [{\n key: \"setContent\",\n\n /**\n * Sets the text content of character counter element.\n * @param {string} content\n */\n value: function setContent(content) {}\n }]);\n\n return MDCTextFieldCharacterCounterAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCTextFieldCharacterCounterAdapter);\n\n/***/ }),\n/* 64 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Text Field Icon.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the text field icon into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nvar MDCTextFieldIconAdapter = function () {\n function MDCTextFieldIconAdapter() {\n _classCallCheck(this, MDCTextFieldIconAdapter);\n }\n\n _createClass(MDCTextFieldIconAdapter, [{\n key: \"getAttr\",\n\n /**\n * Gets the value of an attribute on the icon element.\n * @param {string} attr\n * @return {string}\n */\n value: function getAttr(attr) {}\n\n /**\n * Sets an attribute on the icon element.\n * @param {string} attr\n * @param {string} value\n */\n\n }, {\n key: \"setAttr\",\n value: function setAttr(attr, value) {}\n\n /**\n * Removes an attribute from the icon element.\n * @param {string} attr\n */\n\n }, {\n key: \"removeAttr\",\n value: function removeAttr(attr) {}\n\n /**\n * Sets the text content of the icon element.\n * @param {string} content\n */\n\n }, {\n key: \"setContent\",\n value: function setContent(content) {}\n\n /**\n * Registers an event listener on the icon element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"registerInteractionHandler\",\n value: function registerInteractionHandler(evtType, handler) {}\n\n /**\n * Deregisters an event listener on the icon element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n\n }, {\n key: \"deregisterInteractionHandler\",\n value: function deregisterInteractionHandler(evtType, handler) {}\n\n /**\n * Emits a custom event \"MDCTextField:icon\" denoting a user has clicked the icon.\n */\n\n }, {\n key: \"notifyIconAction\",\n value: function notifyIconAction() {}\n }]);\n\n return MDCTextFieldIconAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCTextFieldIconAdapter);\n\n/***/ }),\n/* 65 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__ = __webpack_require__(66);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_base_index__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_checkbox_index__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_chips_index__ = __webpack_require__(74);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_dialog_index__ = __webpack_require__(78);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_dom_index__ = __webpack_require__(85);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__material_drawer_index__ = __webpack_require__(86);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__material_floating_label_index__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__material_form_field_index__ = __webpack_require__(93);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__material_grid_list_index__ = __webpack_require__(97);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__material_icon_button_index__ = __webpack_require__(100);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__material_icon_toggle_index__ = __webpack_require__(104);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__material_linear_progress_index__ = __webpack_require__(108);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__material_line_ripple_index__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__material_list_index__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__material_menu_index__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__material_menu_surface_index__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__material_notched_outline_index__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__material_radio_index__ = __webpack_require__(117);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__material_ripple_index__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__material_select_index__ = __webpack_require__(121);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__material_selection_control_index__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__material_slider_index__ = __webpack_require__(127);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__material_snackbar_index__ = __webpack_require__(129);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__material_switch_index__ = __webpack_require__(133);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__material_tab_index__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__material_tab_bar_index__ = __webpack_require__(142);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__material_tab_indicator_index__ = __webpack_require__(55);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__material_tab_scroller_index__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__material_textfield_index__ = __webpack_require__(150);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__material_toolbar_index__ = __webpack_require__(158);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__material_top_app_bar_index__ = __webpack_require__(161);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"autoInit\", function() { return __WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\"]; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"base\", function() { return __WEBPACK_IMPORTED_MODULE_1__material_base_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"checkbox\", function() { return __WEBPACK_IMPORTED_MODULE_2__material_checkbox_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"chips\", function() { return __WEBPACK_IMPORTED_MODULE_3__material_chips_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"dialog\", function() { return __WEBPACK_IMPORTED_MODULE_4__material_dialog_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"dom\", function() { return __WEBPACK_IMPORTED_MODULE_5__material_dom_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"drawer\", function() { return __WEBPACK_IMPORTED_MODULE_6__material_drawer_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"floatingLabel\", function() { return __WEBPACK_IMPORTED_MODULE_7__material_floating_label_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"formField\", function() { return __WEBPACK_IMPORTED_MODULE_8__material_form_field_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"gridList\", function() { return __WEBPACK_IMPORTED_MODULE_9__material_grid_list_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"iconButton\", function() { return __WEBPACK_IMPORTED_MODULE_10__material_icon_button_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"iconToggle\", function() { return __WEBPACK_IMPORTED_MODULE_11__material_icon_toggle_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"lineRipple\", function() { return __WEBPACK_IMPORTED_MODULE_13__material_line_ripple_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"linearProgress\", function() { return __WEBPACK_IMPORTED_MODULE_12__material_linear_progress_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"list\", function() { return __WEBPACK_IMPORTED_MODULE_14__material_list_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"menu\", function() { return __WEBPACK_IMPORTED_MODULE_15__material_menu_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"menuSurface\", function() { return __WEBPACK_IMPORTED_MODULE_16__material_menu_surface_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"notchedOutline\", function() { return __WEBPACK_IMPORTED_MODULE_17__material_notched_outline_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"radio\", function() { return __WEBPACK_IMPORTED_MODULE_18__material_radio_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"ripple\", function() { return __WEBPACK_IMPORTED_MODULE_19__material_ripple_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"select\", function() { return __WEBPACK_IMPORTED_MODULE_20__material_select_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"selectionControl\", function() { return __WEBPACK_IMPORTED_MODULE_21__material_selection_control_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"slider\", function() { return __WEBPACK_IMPORTED_MODULE_22__material_slider_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"switchControl\", function() { return __WEBPACK_IMPORTED_MODULE_24__material_switch_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"snackbar\", function() { return __WEBPACK_IMPORTED_MODULE_23__material_snackbar_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"tab\", function() { return __WEBPACK_IMPORTED_MODULE_25__material_tab_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"tabBar\", function() { return __WEBPACK_IMPORTED_MODULE_26__material_tab_bar_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"tabIndicator\", function() { return __WEBPACK_IMPORTED_MODULE_27__material_tab_indicator_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"tabScroller\", function() { return __WEBPACK_IMPORTED_MODULE_28__material_tab_scroller_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"textField\", function() { return __WEBPACK_IMPORTED_MODULE_29__material_textfield_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"toolbar\", function() { return __WEBPACK_IMPORTED_MODULE_30__material_toolbar_index__; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"topAppBar\", function() { return __WEBPACK_IMPORTED_MODULE_31__material_top_app_bar_index__; });\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Register all components\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCCheckbox', __WEBPACK_IMPORTED_MODULE_2__material_checkbox_index__[\"MDCCheckbox\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCChip', __WEBPACK_IMPORTED_MODULE_3__material_chips_index__[\"MDCChip\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCChipSet', __WEBPACK_IMPORTED_MODULE_3__material_chips_index__[\"MDCChipSet\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCDialog', __WEBPACK_IMPORTED_MODULE_4__material_dialog_index__[\"MDCDialog\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCDrawer', __WEBPACK_IMPORTED_MODULE_6__material_drawer_index__[\"MDCDrawer\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCFloatingLabel', __WEBPACK_IMPORTED_MODULE_7__material_floating_label_index__[\"MDCFloatingLabel\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCFormField', __WEBPACK_IMPORTED_MODULE_8__material_form_field_index__[\"MDCFormField\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCRipple', __WEBPACK_IMPORTED_MODULE_19__material_ripple_index__[\"MDCRipple\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCGridList', __WEBPACK_IMPORTED_MODULE_9__material_grid_list_index__[\"MDCGridList\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCIconButtonToggle', __WEBPACK_IMPORTED_MODULE_10__material_icon_button_index__[\"MDCIconButtonToggle\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCIconToggle', __WEBPACK_IMPORTED_MODULE_11__material_icon_toggle_index__[\"MDCIconToggle\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCLineRipple', __WEBPACK_IMPORTED_MODULE_13__material_line_ripple_index__[\"MDCLineRipple\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCLinearProgress', __WEBPACK_IMPORTED_MODULE_12__material_linear_progress_index__[\"MDCLinearProgress\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCList', __WEBPACK_IMPORTED_MODULE_14__material_list_index__[\"MDCList\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCNotchedOutline', __WEBPACK_IMPORTED_MODULE_17__material_notched_outline_index__[\"MDCNotchedOutline\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCRadio', __WEBPACK_IMPORTED_MODULE_18__material_radio_index__[\"MDCRadio\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCSnackbar', __WEBPACK_IMPORTED_MODULE_23__material_snackbar_index__[\"MDCSnackbar\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCTabBar', __WEBPACK_IMPORTED_MODULE_26__material_tab_bar_index__[\"MDCTabBar\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCTextField', __WEBPACK_IMPORTED_MODULE_29__material_textfield_index__[\"MDCTextField\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCMenu', __WEBPACK_IMPORTED_MODULE_15__material_menu_index__[\"MDCMenu\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCMenuSurface', __WEBPACK_IMPORTED_MODULE_16__material_menu_surface_index__[\"MDCMenuSurface\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCSelect', __WEBPACK_IMPORTED_MODULE_20__material_select_index__[\"MDCSelect\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCSlider', __WEBPACK_IMPORTED_MODULE_22__material_slider_index__[\"MDCSlider\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCSwitch', __WEBPACK_IMPORTED_MODULE_24__material_switch_index__[\"MDCSwitch\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCToolbar', __WEBPACK_IMPORTED_MODULE_30__material_toolbar_index__[\"MDCToolbar\"]);\n__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__[\"a\" /* default */].register('MDCTopAppBar', __WEBPACK_IMPORTED_MODULE_31__material_top_app_bar_index__[\"MDCTopAppBar\"]);\n\n// Export all components.\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = mdcAutoInit;\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 registry = Object.create(null);\n\nvar CONSOLE_WARN = console.warn.bind(console);\n\nfunction _emit(evtType, evtData) {\n var shouldBubble = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var evt = void 0;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent(evtType, {\n detail: evtData,\n bubbles: shouldBubble\n });\n } else {\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(evtType, shouldBubble, false, evtData);\n }\n\n document.dispatchEvent(evt);\n}\n\n/**\n * Auto-initializes all mdc components on a page.\n */\nfunction mdcAutoInit() {\n var root = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var warn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CONSOLE_WARN;\n\n var components = [];\n var nodes = root.querySelectorAll('[data-mdc-auto-init]');\n for (var i = 0, node; node = nodes[i]; i++) {\n var ctorName = node.dataset.mdcAutoInit;\n if (!ctorName) {\n throw new Error('(mdc-auto-init) Constructor name must be given.');\n }\n\n var Ctor = registry[ctorName];\n if (typeof Ctor !== 'function') {\n throw new Error('(mdc-auto-init) Could not find constructor in registry for ' + ctorName);\n }\n\n if (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 var component = Ctor.attachTo(node);\n Object.defineProperty(node, ctorName, {\n value: component,\n writable: false,\n enumerable: false,\n configurable: true\n });\n components.push(component);\n }\n\n _emit('MDCAutoInit:End', {});\n return components;\n}\n\nmdcAutoInit.register = function (componentName, Ctor) {\n var warn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : CONSOLE_WARN;\n\n if (typeof Ctor !== 'function') {\n throw new Error('(mdc-auto-init) Invalid Ctor value ' + Ctor + '. Expected function');\n }\n if (registry[componentName]) {\n warn('(mdc-auto-init) Overriding registration for ' + componentName + ' with ' + Ctor + '. ' + ('Was: ' + registry[componentName]));\n }\n registry[componentName] = Ctor;\n};\n\nmdcAutoInit.deregister = function (componentName) {\n delete registry[componentName];\n};\n\nmdcAutoInit.deregisterAll = function () {\n Object.keys(registry).forEach(this.deregister, this);\n};\n\n/***/ }),\n/* 67 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__component__ = __webpack_require__(1);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_0__foundation__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCComponent\", function() { return __WEBPACK_IMPORTED_MODULE_1__component__[\"a\"]; });\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\n\n\n\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCCheckbox\", function() { return MDCCheckbox; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_animation_index__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_selection_control_index__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation__ = __webpack_require__(71);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_ripple_util__ = __webpack_require__(5);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCCheckboxFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_3__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n/* eslint-disable no-unused-vars */\n\n/* eslint-enable no-unused-vars */\n\n\n\n\n/** @const {!Array<string>} */\nvar CB_PROTO_PROPS = ['checked', 'indeterminate'];\n\n/**\n * @extends MDCComponent<!MDCCheckboxFoundation>\n * @implements {MDCSelectionControl}\n */\n\nvar MDCCheckbox = function (_MDCComponent) {\n _inherits(MDCCheckbox, _MDCComponent);\n\n _createClass(MDCCheckbox, [{\n key: 'nativeCb_',\n\n\n /**\n * Returns the state of the native control element, or null if the native control element is not present.\n * @return {!MDCSelectionControlState}\n * @private\n */\n get: function get() {\n var NATIVE_CONTROL_SELECTOR = __WEBPACK_IMPORTED_MODULE_3__foundation__[\"a\" /* default */].strings.NATIVE_CONTROL_SELECTOR;\n\n var cbEl = /** @type {!MDCSelectionControlState} */this.root_.querySelector(NATIVE_CONTROL_SELECTOR);\n return cbEl;\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCCheckbox(root);\n }\n }]);\n\n function MDCCheckbox() {\n var _ref;\n\n _classCallCheck(this, MDCCheckbox);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {!MDCRipple} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCCheckbox.__proto__ || Object.getPrototypeOf(MDCCheckbox)).call.apply(_ref, [this].concat(args)));\n\n _this.ripple_ = _this.initRipple_();\n /** @private {!Function} */\n _this.handleChange_;\n /** @private {!Function} */\n _this.handleAnimationEnd_;\n return _this;\n }\n\n _createClass(MDCCheckbox, [{\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n var _this2 = this;\n\n this.handleChange_ = function () {\n return _this2.foundation_.handleChange();\n };\n this.handleAnimationEnd_ = function () {\n return _this2.foundation_.handleAnimationEnd();\n };\n this.nativeCb_.addEventListener('change', this.handleChange_);\n this.listen(Object(__WEBPACK_IMPORTED_MODULE_0__material_animation_index__[\"a\" /* getCorrectEventName */])(window, 'animationend'), this.handleAnimationEnd_);\n this.installPropertyChangeHooks_();\n }\n\n /**\n * @return {!MDCRipple}\n * @private\n */\n\n }, {\n key: 'initRipple_',\n value: function initRipple_() {\n var _this3 = this;\n\n var MATCHES = Object(__WEBPACK_IMPORTED_MODULE_5__material_ripple_util__[\"getMatchesProperty\"])(HTMLElement.prototype);\n var adapter = _extends(__WEBPACK_IMPORTED_MODULE_4__material_ripple_index__[\"MDCRipple\"].createAdapter(this), {\n isUnbounded: function isUnbounded() {\n return true;\n },\n isSurfaceActive: function isSurfaceActive() {\n return _this3.nativeCb_[MATCHES](':active');\n },\n registerInteractionHandler: function registerInteractionHandler(type, handler) {\n return _this3.nativeCb_.addEventListener(type, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {\n return _this3.nativeCb_.removeEventListener(type, handler);\n }\n });\n var foundation = new __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__[\"MDCRippleFoundation\"](adapter);\n return new __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__[\"MDCRipple\"](this.root_, foundation);\n }\n\n /** @private */\n\n }, {\n key: 'installPropertyChangeHooks_',\n value: function installPropertyChangeHooks_() {\n var _this4 = this;\n\n var nativeCb = this.nativeCb_;\n var cbProto = Object.getPrototypeOf(nativeCb);\n\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 var nativeCbDesc = /** @type {!ObjectPropertyDescriptor} */{\n get: desc.get,\n set: function set(state) {\n desc.set.call(nativeCb, state);\n _this4.foundation_.handleChange();\n },\n configurable: desc.configurable,\n enumerable: desc.enumerable\n };\n Object.defineProperty(nativeCb, controlState, nativeCbDesc);\n }\n });\n }\n\n /** @private */\n\n }, {\n key: 'uninstallPropertyChangeHooks_',\n value: function uninstallPropertyChangeHooks_() {\n var nativeCb = this.nativeCb_;\n var cbProto = Object.getPrototypeOf(nativeCb);\n\n CB_PROTO_PROPS.forEach(function (controlState) {\n var desc = /** @type {!ObjectPropertyDescriptor} */Object.getOwnPropertyDescriptor(cbProto, controlState);\n if (validDescriptor(desc)) {\n Object.defineProperty(nativeCb, controlState, desc);\n }\n });\n }\n\n /** @return {!MDCCheckboxFoundation} */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this5 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_3__foundation__[\"a\" /* default */]({\n addClass: function addClass(className) {\n return _this5.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this5.root_.classList.remove(className);\n },\n setNativeControlAttr: function setNativeControlAttr(attr, value) {\n return _this5.nativeCb_.setAttribute(attr, value);\n },\n removeNativeControlAttr: function removeNativeControlAttr(attr) {\n return _this5.nativeCb_.removeAttribute(attr);\n },\n isIndeterminate: function isIndeterminate() {\n return _this5.indeterminate;\n },\n isChecked: function isChecked() {\n return _this5.checked;\n },\n hasNativeControl: function hasNativeControl() {\n return !!_this5.nativeCb_;\n },\n setNativeControlDisabled: function setNativeControlDisabled(disabled) {\n return _this5.nativeCb_.disabled = disabled;\n },\n forceLayout: function forceLayout() {\n return _this5.root_.offsetWidth;\n },\n isAttachedToDOM: function isAttachedToDOM() {\n return Boolean(_this5.root_.parentNode);\n }\n });\n }\n\n /** @return {!MDCRipple} */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this.ripple_.destroy();\n this.nativeCb_.removeEventListener('change', this.handleChange_);\n this.unlisten(Object(__WEBPACK_IMPORTED_MODULE_0__material_animation_index__[\"a\" /* getCorrectEventName */])(window, 'animationend'), this.handleAnimationEnd_);\n this.uninstallPropertyChangeHooks_();\n _get(MDCCheckbox.prototype.__proto__ || Object.getPrototypeOf(MDCCheckbox.prototype), 'destroy', this).call(this);\n }\n }, {\n key: 'ripple',\n get: function get() {\n return this.ripple_;\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'checked',\n get: function get() {\n return this.nativeCb_.checked;\n }\n\n /** @param {boolean} checked */\n ,\n set: function set(checked) {\n this.nativeCb_.checked = checked;\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'indeterminate',\n get: function get() {\n return this.nativeCb_.indeterminate;\n }\n\n /** @param {boolean} indeterminate */\n ,\n set: function set(indeterminate) {\n this.nativeCb_.indeterminate = indeterminate;\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'disabled',\n get: function get() {\n return this.nativeCb_.disabled;\n }\n\n /** @param {boolean} disabled */\n ,\n set: function set(disabled) {\n this.foundation_.setDisabled(disabled);\n }\n\n /** @return {?string} */\n\n }, {\n key: 'value',\n get: function get() {\n return this.nativeCb_.value;\n }\n\n /** @param {?string} value */\n ,\n set: function set(value) {\n this.nativeCb_.value = value;\n }\n }]);\n\n return MDCCheckbox;\n}(__WEBPACK_IMPORTED_MODULE_1__material_base_component__[\"a\" /* default */]);\n\n/**\n * @param {ObjectPropertyDescriptor|undefined} inputPropDesc\n * @return {boolean}\n */\n\n\nfunction validDescriptor(inputPropDesc) {\n return !!inputPropDesc && typeof inputPropDesc.set === 'function';\n}\n\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(70);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(5);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n/**\n * @typedef {{\n * isActivated: (boolean|undefined),\n * hasDeactivationUXRun: (boolean|undefined),\n * wasActivatedByPointer: (boolean|undefined),\n * wasElementMadeActive: (boolean|undefined),\n * activationEvent: (!Event|undefined),\n * isProgrammatic: (boolean|undefined)\n * }}\n */\nvar ActivationStateType = void 0;\n\n/**\n * @typedef {{\n * activate: (string|undefined),\n * deactivate: (string|undefined),\n * focus: (string|undefined),\n * blur: (string|undefined)\n * }}\n */\nvar ListenerInfoType = void 0;\n\n/**\n * @typedef {{\n * activate: function(!Event),\n * deactivate: function(!Event=),\n * focus: function(),\n * blur: function()\n * }}\n */\nvar ListenersType = void 0;\n\n/**\n * @typedef {{\n * x: number,\n * y: number\n * }}\n */\nvar PointType = void 0;\n\n// Activation events registered on the root element of each instance for activation\nvar ACTIVATION_EVENT_TYPES = ['touchstart', 'pointerdown', 'mousedown', 'keydown'];\n\n// Deactivation events registered on documentElement when a pointer-related down event occurs\nvar POINTER_DEACTIVATION_EVENT_TYPES = ['touchend', 'pointerup', 'mouseup', 'contextmenu'];\n\n// Tracks activations that have occurred on the current frame, to avoid simultaneous nested activations\n/** @type {!Array<!EventTarget>} */\nvar activatedTargets = [];\n\n/**\n * @extends {MDCFoundation<!MDCRippleAdapter>}\n */\n\nvar MDCRippleFoundation = function (_MDCFoundation) {\n _inherits(MDCRippleFoundation, _MDCFoundation);\n\n _createClass(MDCRippleFoundation, null, [{\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */];\n }\n }, {\n key: 'numbers',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* numbers */];\n }\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return {\n browserSupportsCssVars: function browserSupportsCssVars() /* boolean - cached */{},\n isUnbounded: function isUnbounded() /* boolean */{},\n isSurfaceActive: function isSurfaceActive() /* boolean */{},\n isSurfaceDisabled: function isSurfaceDisabled() /* boolean */{},\n addClass: function addClass() /* className: string */{},\n removeClass: function removeClass() /* className: string */{},\n containsEventTarget: function containsEventTarget() /* target: !EventTarget */{},\n registerInteractionHandler: function registerInteractionHandler() /* evtType: string, handler: EventListener */{},\n deregisterInteractionHandler: function deregisterInteractionHandler() /* evtType: string, handler: EventListener */{},\n registerDocumentInteractionHandler: function registerDocumentInteractionHandler() /* evtType: string, handler: EventListener */{},\n deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler() /* evtType: string, handler: EventListener */{},\n registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},\n deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{},\n updateCssVariable: function updateCssVariable() /* varName: string, value: string */{},\n computeBoundingRect: function computeBoundingRect() /* ClientRect */{},\n getWindowPageOffset: function getWindowPageOffset() /* {x: number, y: number} */{}\n };\n }\n }]);\n\n function MDCRippleFoundation(adapter) {\n _classCallCheck(this, MDCRippleFoundation);\n\n /** @private {number} */\n var _this = _possibleConstructorReturn(this, (MDCRippleFoundation.__proto__ || Object.getPrototypeOf(MDCRippleFoundation)).call(this, _extends(MDCRippleFoundation.defaultAdapter, adapter)));\n\n _this.layoutFrame_ = 0;\n\n /** @private {!ClientRect} */\n _this.frame_ = /** @type {!ClientRect} */{ width: 0, height: 0 };\n\n /** @private {!ActivationStateType} */\n _this.activationState_ = _this.defaultActivationState_();\n\n /** @private {number} */\n _this.initialSize_ = 0;\n\n /** @private {number} */\n _this.maxRadius_ = 0;\n\n /** @private {function(!Event)} */\n _this.activateHandler_ = function (e) {\n return _this.activate_(e);\n };\n\n /** @private {function(!Event=)} */\n _this.deactivateHandler_ = function () {\n return _this.deactivate_();\n };\n\n /** @private {function(!Event=)} */\n _this.focusHandler_ = function () {\n return _this.handleFocus();\n };\n\n /** @private {function(!Event=)} */\n _this.blurHandler_ = function () {\n return _this.handleBlur();\n };\n\n /** @private {!Function} */\n _this.resizeHandler_ = function () {\n return _this.layout();\n };\n\n /** @private {{left: number, top:number}} */\n _this.unboundedCoords_ = {\n left: 0,\n top: 0\n };\n\n /** @private {number} */\n _this.fgScale_ = 0;\n\n /** @private {number} */\n _this.activationTimer_ = 0;\n\n /** @private {number} */\n _this.fgDeactivationRemovalTimer_ = 0;\n\n /** @private {boolean} */\n _this.activationAnimationHasEnded_ = false;\n\n /** @private {!Function} */\n _this.activationTimerCallback_ = function () {\n _this.activationAnimationHasEnded_ = true;\n _this.runDeactivationUXLogicIfReady_();\n };\n\n /** @private {!Event|undefined} */\n _this.previousActivationEvent_;\n return _this;\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 * @return {boolean}\n * @private\n */\n\n\n _createClass(MDCRippleFoundation, [{\n key: 'supportsPressRipple_',\n value: function supportsPressRipple_() {\n return this.adapter_.browserSupportsCssVars();\n }\n\n /**\n * @return {!ActivationStateType}\n */\n\n }, {\n key: 'defaultActivationState_',\n value: function defaultActivationState_() {\n return {\n isActivated: false,\n hasDeactivationUXRun: false,\n wasActivatedByPointer: false,\n wasElementMadeActive: false,\n activationEvent: undefined,\n isProgrammatic: false\n };\n }\n\n /** @override */\n\n }, {\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n var supportsPressRipple = this.supportsPressRipple_();\n\n this.registerRootHandlers_(supportsPressRipple);\n\n if (supportsPressRipple) {\n var _MDCRippleFoundation$ = MDCRippleFoundation.cssClasses,\n ROOT = _MDCRippleFoundation$.ROOT,\n UNBOUNDED = _MDCRippleFoundation$.UNBOUNDED;\n\n requestAnimationFrame(function () {\n _this2.adapter_.addClass(ROOT);\n if (_this2.adapter_.isUnbounded()) {\n _this2.adapter_.addClass(UNBOUNDED);\n // Unbounded ripples need layout logic applied immediately to set coordinates for both shade and ripple\n _this2.layoutInternal_();\n }\n });\n }\n }\n\n /** @override */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\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 var _MDCRippleFoundation$2 = MDCRippleFoundation.cssClasses,\n ROOT = _MDCRippleFoundation$2.ROOT,\n UNBOUNDED = _MDCRippleFoundation$2.UNBOUNDED;\n\n requestAnimationFrame(function () {\n _this3.adapter_.removeClass(ROOT);\n _this3.adapter_.removeClass(UNBOUNDED);\n _this3.removeCssVars_();\n });\n }\n\n this.deregisterRootHandlers_();\n this.deregisterDeactivationHandlers_();\n }\n\n /**\n * @param {boolean} supportsPressRipple Passed from init to save a redundant function call\n * @private\n */\n\n }, {\n key: 'registerRootHandlers_',\n value: function registerRootHandlers_(supportsPressRipple) {\n var _this4 = this;\n\n if (supportsPressRipple) {\n ACTIVATION_EVENT_TYPES.forEach(function (type) {\n _this4.adapter_.registerInteractionHandler(type, _this4.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 /**\n * @param {!Event} e\n * @private\n */\n\n }, {\n key: 'registerDeactivationHandlers_',\n value: function registerDeactivationHandlers_(e) {\n var _this5 = this;\n\n if (e.type === 'keydown') {\n this.adapter_.registerInteractionHandler('keyup', this.deactivateHandler_);\n } else {\n POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (type) {\n _this5.adapter_.registerDocumentInteractionHandler(type, _this5.deactivateHandler_);\n });\n }\n }\n\n /** @private */\n\n }, {\n key: 'deregisterRootHandlers_',\n value: function deregisterRootHandlers_() {\n var _this6 = this;\n\n ACTIVATION_EVENT_TYPES.forEach(function (type) {\n _this6.adapter_.deregisterInteractionHandler(type, _this6.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 */\n\n }, {\n key: 'deregisterDeactivationHandlers_',\n value: function deregisterDeactivationHandlers_() {\n var _this7 = this;\n\n this.adapter_.deregisterInteractionHandler('keyup', this.deactivateHandler_);\n POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (type) {\n _this7.adapter_.deregisterDocumentInteractionHandler(type, _this7.deactivateHandler_);\n });\n }\n\n /** @private */\n\n }, {\n key: 'removeCssVars_',\n value: function removeCssVars_() {\n var _this8 = this;\n\n var strings = MDCRippleFoundation.strings;\n\n Object.keys(strings).forEach(function (k) {\n if (k.indexOf('VAR_') === 0) {\n _this8.adapter_.updateCssVariable(strings[k], null);\n }\n });\n }\n\n /**\n * @param {!Event=} e\n * @private\n */\n\n }, {\n key: 'activate_',\n value: function activate_(e) {\n var _this9 = this;\n\n if (this.adapter_.isSurfaceDisabled()) {\n return;\n }\n\n var 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 var previousActivationEvent = this.previousActivationEvent_;\n var isSameInteraction = previousActivationEvent && e !== undefined && previousActivationEvent.type !== e.type;\n if (isSameInteraction) {\n return;\n }\n\n activationState.isActivated = true;\n activationState.isProgrammatic = e === undefined;\n activationState.activationEvent = e;\n activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : e !== undefined && (e.type === 'mousedown' || e.type === 'touchstart' || e.type === 'pointerdown');\n\n var hasActivatedChild = e !== undefined && activatedTargets.length > 0 && activatedTargets.some(function (target) {\n return _this9.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\n if (e !== undefined) {\n activatedTargets.push( /** @type {!EventTarget} */e.target);\n this.registerDeactivationHandlers_(e);\n }\n\n activationState.wasElementMadeActive = this.checkElementMadeActive_(e);\n if (activationState.wasElementMadeActive) {\n this.animateActivation_();\n }\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\n if (!activationState.wasElementMadeActive && e !== undefined && (e.key === ' ' || e.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 = _this9.checkElementMadeActive_(e);\n if (activationState.wasElementMadeActive) {\n _this9.animateActivation_();\n }\n }\n\n if (!activationState.wasElementMadeActive) {\n // Reset activation state immediately if element was not made active.\n _this9.activationState_ = _this9.defaultActivationState_();\n }\n });\n }\n\n /**\n * @param {!Event=} e\n * @private\n */\n\n }, {\n key: 'checkElementMadeActive_',\n value: function checkElementMadeActive_(e) {\n return e !== undefined && e.type === 'keydown' ? this.adapter_.isSurfaceActive() : true;\n }\n\n /**\n * @param {!Event=} event Optional event containing position information.\n */\n\n }, {\n key: 'activate',\n value: function activate(event) {\n this.activate_(event);\n }\n\n /** @private */\n\n }, {\n key: 'animateActivation_',\n value: function animateActivation_() {\n var _this10 = this;\n\n var _MDCRippleFoundation$3 = MDCRippleFoundation.strings,\n VAR_FG_TRANSLATE_START = _MDCRippleFoundation$3.VAR_FG_TRANSLATE_START,\n VAR_FG_TRANSLATE_END = _MDCRippleFoundation$3.VAR_FG_TRANSLATE_END;\n var _MDCRippleFoundation$4 = MDCRippleFoundation.cssClasses,\n FG_DEACTIVATION = _MDCRippleFoundation$4.FG_DEACTIVATION,\n FG_ACTIVATION = _MDCRippleFoundation$4.FG_ACTIVATION;\n var DEACTIVATION_TIMEOUT_MS = MDCRippleFoundation.numbers.DEACTIVATION_TIMEOUT_MS;\n\n\n this.layoutInternal_();\n\n var translateStart = '';\n var translateEnd = '';\n\n if (!this.adapter_.isUnbounded()) {\n var _getFgTranslationCoor = this.getFgTranslationCoordinates_(),\n startPoint = _getFgTranslationCoor.startPoint,\n endPoint = _getFgTranslationCoor.endPoint;\n\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(function () {\n return _this10.activationTimerCallback_();\n }, DEACTIVATION_TIMEOUT_MS);\n }\n\n /**\n * @private\n * @return {{startPoint: PointType, endPoint: PointType}}\n */\n\n }, {\n key: 'getFgTranslationCoordinates_',\n value: function getFgTranslationCoordinates_() {\n var _activationState_ = this.activationState_,\n activationEvent = _activationState_.activationEvent,\n wasActivatedByPointer = _activationState_.wasActivatedByPointer;\n\n\n var startPoint = void 0;\n if (wasActivatedByPointer) {\n startPoint = Object(__WEBPACK_IMPORTED_MODULE_3__util__[\"getNormalizedEventCoords\"])(\n /** @type {!Event} */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\n var endPoint = {\n x: this.frame_.width / 2 - this.initialSize_ / 2,\n y: this.frame_.height / 2 - this.initialSize_ / 2\n };\n\n return { startPoint: startPoint, endPoint: endPoint };\n }\n\n /** @private */\n\n }, {\n key: 'runDeactivationUXLogicIfReady_',\n value: function runDeactivationUXLogicIfReady_() {\n var _this11 = this;\n\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 _activationState_2 = this.activationState_,\n hasDeactivationUXRun = _activationState_2.hasDeactivationUXRun,\n isActivated = _activationState_2.isActivated;\n\n var activationHasEnded = hasDeactivationUXRun || !isActivated;\n\n if (activationHasEnded && this.activationAnimationHasEnded_) {\n this.rmBoundedActivationClasses_();\n this.adapter_.addClass(FG_DEACTIVATION);\n this.fgDeactivationRemovalTimer_ = setTimeout(function () {\n _this11.adapter_.removeClass(FG_DEACTIVATION);\n }, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* numbers */].FG_DEACTIVATION_MS);\n }\n }\n\n /** @private */\n\n }, {\n key: 'rmBoundedActivationClasses_',\n value: function rmBoundedActivationClasses_() {\n var FG_ACTIVATION = MDCRippleFoundation.cssClasses.FG_ACTIVATION;\n\n this.adapter_.removeClass(FG_ACTIVATION);\n this.activationAnimationHasEnded_ = false;\n this.adapter_.computeBoundingRect();\n }\n }, {\n key: 'resetActivationState_',\n value: function resetActivationState_() {\n var _this12 = this;\n\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 _this12.previousActivationEvent_ = undefined;\n }, MDCRippleFoundation.numbers.TAP_DELAY_MS);\n }\n\n /**\n * @private\n */\n\n }, {\n key: 'deactivate_',\n value: function deactivate_() {\n var _this13 = this;\n\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\n var state = /** @type {!ActivationStateType} */_extends({}, activationState);\n\n if (activationState.isProgrammatic) {\n requestAnimationFrame(function () {\n return _this13.animateDeactivation_(state);\n });\n this.resetActivationState_();\n } else {\n this.deregisterDeactivationHandlers_();\n requestAnimationFrame(function () {\n _this13.activationState_.hasDeactivationUXRun = true;\n _this13.animateDeactivation_(state);\n _this13.resetActivationState_();\n });\n }\n }\n }, {\n key: 'deactivate',\n value: function deactivate() {\n this.deactivate_();\n }\n\n /**\n * @param {!ActivationStateType} options\n * @private\n */\n\n }, {\n key: 'animateDeactivation_',\n value: function animateDeactivation_(_ref) {\n var wasActivatedByPointer = _ref.wasActivatedByPointer,\n wasElementMadeActive = _ref.wasElementMadeActive;\n\n if (wasActivatedByPointer || wasElementMadeActive) {\n this.runDeactivationUXLogicIfReady_();\n }\n }\n }, {\n key: 'layout',\n value: function layout() {\n var _this14 = this;\n\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n }\n this.layoutFrame_ = requestAnimationFrame(function () {\n _this14.layoutInternal_();\n _this14.layoutFrame_ = 0;\n });\n }\n\n /** @private */\n\n }, {\n key: 'layoutInternal_',\n value: function layoutInternal_() {\n var _this15 = this;\n\n this.frame_ = this.adapter_.computeBoundingRect();\n var 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 var getBoundedRadius = function getBoundedRadius() {\n var hypotenuse = Math.sqrt(Math.pow(_this15.frame_.width, 2) + Math.pow(_this15.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 */\n\n }, {\n key: 'updateLayoutCssVars_',\n value: function updateLayoutCssVars_() {\n var _MDCRippleFoundation$5 = MDCRippleFoundation.strings,\n VAR_FG_SIZE = _MDCRippleFoundation$5.VAR_FG_SIZE,\n VAR_LEFT = _MDCRippleFoundation$5.VAR_LEFT,\n VAR_TOP = _MDCRippleFoundation$5.VAR_TOP,\n VAR_FG_SCALE = _MDCRippleFoundation$5.VAR_FG_SCALE;\n\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 /** @param {boolean} unbounded */\n\n }, {\n key: 'setUnbounded',\n value: function setUnbounded(unbounded) {\n var UNBOUNDED = MDCRippleFoundation.cssClasses.UNBOUNDED;\n\n if (unbounded) {\n this.adapter_.addClass(UNBOUNDED);\n } else {\n this.adapter_.removeClass(UNBOUNDED);\n }\n }\n }, {\n key: 'handleFocus',\n value: function handleFocus() {\n var _this16 = this;\n\n requestAnimationFrame(function () {\n return _this16.adapter_.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);\n });\n }\n }, {\n key: 'handleBlur',\n value: function handleBlur() {\n var _this17 = this;\n\n requestAnimationFrame(function () {\n return _this17.adapter_.removeClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);\n });\n }\n }]);\n\n return MDCRippleFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCRippleFoundation);\n\n/***/ }),\n/* 70 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return numbers; });\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 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 ROOT: 'mdc-ripple-upgraded',\n UNBOUNDED: 'mdc-ripple-upgraded--unbounded',\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};\n\nvar strings = {\n VAR_LEFT: '--mdc-ripple-left',\n VAR_TOP: '--mdc-ripple-top',\n VAR_FG_SIZE: '--mdc-ripple-fg-size',\n VAR_FG_SCALE: '--mdc-ripple-fg-scale',\n VAR_FG_TRANSLATE_START: '--mdc-ripple-fg-translate-start',\n VAR_FG_TRANSLATE_END: '--mdc-ripple-fg-translate-end'\n};\n\nvar numbers = {\n PADDING: 10,\n INITIAL_ORIGIN_SCALE: 0.6,\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 TAP_DELAY_MS: 300 };\n\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_selection_control_index__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(72);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(73);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n/* eslint-disable no-unused-vars */\n\n\n/* eslint-enable no-unused-vars */\n\n\n/**\n * @extends {MDCFoundation<!MDCCheckboxAdapter>}\n */\n\nvar MDCCheckboxFoundation = function (_MDCFoundation) {\n _inherits(MDCCheckboxFoundation, _MDCFoundation);\n\n _createClass(MDCCheckboxFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum {cssClasses} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_3__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum {strings} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */];\n }\n\n /** @return enum {numbers} */\n\n }, {\n key: 'numbers',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_3__constants__[\"b\" /* numbers */];\n }\n\n /** @return {!MDCCheckboxAdapter} */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCCheckboxAdapter} */{\n addClass: function addClass() /* className: string */{},\n removeClass: function removeClass() /* className: string */{},\n setNativeControlAttr: function setNativeControlAttr() /* attr: string, value: string */{},\n removeNativeControlAttr: function removeNativeControlAttr() /* attr: string */{},\n forceLayout: function forceLayout() {},\n isAttachedToDOM: function isAttachedToDOM() /* boolean */{},\n isIndeterminate: function isIndeterminate() /* boolean */{},\n isChecked: function isChecked() /* boolean */{},\n hasNativeControl: function hasNativeControl() /* boolean */{},\n setNativeControlDisabled: function setNativeControlDisabled() /* disabled: boolean */{}\n }\n );\n }\n }]);\n\n function MDCCheckboxFoundation(adapter) {\n _classCallCheck(this, MDCCheckboxFoundation);\n\n /** @private {string} */\n var _this = _possibleConstructorReturn(this, (MDCCheckboxFoundation.__proto__ || Object.getPrototypeOf(MDCCheckboxFoundation)).call(this, _extends(MDCCheckboxFoundation.defaultAdapter, adapter)));\n\n _this.currentCheckState_ = __WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */].TRANSITION_STATE_INIT;\n\n /** @private {string} */\n _this.currentAnimationClass_ = '';\n\n /** @private {number} */\n _this.animEndLatchTimer_ = 0;\n\n /** @private {boolean} */\n _this.enableAnimationEndHandler_ = false;\n return _this;\n }\n\n /** @override */\n\n\n _createClass(MDCCheckboxFoundation, [{\n key: 'init',\n value: function init() {\n this.currentCheckState_ = this.determineCheckState_();\n this.updateAriaChecked_();\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_3__constants__[\"a\" /* cssClasses */].UPGRADED);\n }\n\n /** @override */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n clearTimeout(this.animEndLatchTimer_);\n }\n\n /** @param {boolean} disabled */\n\n }, {\n key: 'setDisabled',\n value: function setDisabled(disabled) {\n this.adapter_.setNativeControlDisabled(disabled);\n if (disabled) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_3__constants__[\"a\" /* cssClasses */].DISABLED);\n } else {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_3__constants__[\"a\" /* cssClasses */].DISABLED);\n }\n }\n\n /**\n * Handles the animationend event for the checkbox\n */\n\n }, {\n key: 'handleAnimationEnd',\n value: function handleAnimationEnd() {\n var _this2 = this;\n\n if (!this.enableAnimationEndHandler_) return;\n\n clearTimeout(this.animEndLatchTimer_);\n\n this.animEndLatchTimer_ = setTimeout(function () {\n _this2.adapter_.removeClass(_this2.currentAnimationClass_);\n _this2.enableAnimationEndHandler_ = false;\n }, __WEBPACK_IMPORTED_MODULE_3__constants__[\"b\" /* numbers */].ANIM_END_LATCH_MS);\n }\n\n /**\n * Handles the change event for the checkbox\n */\n\n }, {\n key: 'handleChange',\n value: function handleChange() {\n this.transitionCheckState_();\n }\n\n /** @private */\n\n }, {\n key: 'transitionCheckState_',\n value: function transitionCheckState_() {\n if (!this.adapter_.hasNativeControl()) {\n return;\n }\n var oldState = this.currentCheckState_;\n var newState = this.determineCheckState_();\n\n if (oldState === newState) {\n return;\n }\n\n this.updateAriaChecked_();\n\n // Check to ensure that there isn't a previously existing animation class, in case for example\n // the user interacted with the checkbox before the animation was finished.\n if (this.currentAnimationClass_.length > 0) {\n clearTimeout(this.animEndLatchTimer_);\n this.adapter_.forceLayout();\n this.adapter_.removeClass(this.currentAnimationClass_);\n }\n\n this.currentAnimationClass_ = this.getTransitionAnimationClass_(oldState, newState);\n this.currentCheckState_ = newState;\n\n // Check for parentNode so that animations are only run when the element is attached\n // to the DOM.\n if (this.adapter_.isAttachedToDOM() && this.currentAnimationClass_.length > 0) {\n this.adapter_.addClass(this.currentAnimationClass_);\n this.enableAnimationEndHandler_ = true;\n }\n }\n\n /**\n * @return {string}\n * @private\n */\n\n }, {\n key: 'determineCheckState_',\n value: function determineCheckState_() {\n var TRANSITION_STATE_INDETERMINATE = __WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */].TRANSITION_STATE_INDETERMINATE,\n TRANSITION_STATE_CHECKED = __WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */].TRANSITION_STATE_CHECKED,\n TRANSITION_STATE_UNCHECKED = __WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */].TRANSITION_STATE_UNCHECKED;\n\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 /**\n * @param {string} oldState\n * @param {string} newState\n * @return {string}\n */\n\n }, {\n key: 'getTransitionAnimationClass_',\n value: function getTransitionAnimationClass_(oldState, newState) {\n var TRANSITION_STATE_INIT = __WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */].TRANSITION_STATE_INIT,\n TRANSITION_STATE_CHECKED = __WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */].TRANSITION_STATE_CHECKED,\n TRANSITION_STATE_UNCHECKED = __WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */].TRANSITION_STATE_UNCHECKED;\n var _MDCCheckboxFoundatio = MDCCheckboxFoundation.cssClasses,\n ANIM_UNCHECKED_CHECKED = _MDCCheckboxFoundatio.ANIM_UNCHECKED_CHECKED,\n ANIM_UNCHECKED_INDETERMINATE = _MDCCheckboxFoundatio.ANIM_UNCHECKED_INDETERMINATE,\n ANIM_CHECKED_UNCHECKED = _MDCCheckboxFoundatio.ANIM_CHECKED_UNCHECKED,\n ANIM_CHECKED_INDETERMINATE = _MDCCheckboxFoundatio.ANIM_CHECKED_INDETERMINATE,\n ANIM_INDETERMINATE_CHECKED = _MDCCheckboxFoundatio.ANIM_INDETERMINATE_CHECKED,\n ANIM_INDETERMINATE_UNCHECKED = _MDCCheckboxFoundatio.ANIM_INDETERMINATE_UNCHECKED;\n\n\n switch (oldState) {\n case TRANSITION_STATE_INIT:\n if (newState === TRANSITION_STATE_UNCHECKED) {\n return '';\n }\n // fallthrough\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 // TRANSITION_STATE_INDETERMINATE\n default:\n return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;\n }\n }\n }, {\n key: 'updateAriaChecked_',\n value: function updateAriaChecked_() {\n // Ensure aria-checked is set to mixed if checkbox is in indeterminate state.\n if (this.adapter_.isIndeterminate()) {\n this.adapter_.setNativeControlAttr(__WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */].ARIA_CHECKED_ATTR, __WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* 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(__WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */].ARIA_CHECKED_ATTR);\n }\n }\n }]);\n\n return MDCCheckboxFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCCheckboxFoundation);\n\n/***/ }),\n/* 72 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_selection_control_index__ = __webpack_require__(3);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint-disable no-unused-vars */\n\n\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Checkbox. Provides an interface for managing\n * - classes\n * - dom\n * - event handlers\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\n\nvar MDCCheckboxAdapter = function () {\n function MDCCheckboxAdapter() {\n _classCallCheck(this, MDCCheckboxAdapter);\n }\n\n _createClass(MDCCheckboxAdapter, [{\n key: 'addClass',\n\n /** @param {string} className */\n value: function addClass(className) {}\n\n /** @param {string} className */\n\n }, {\n key: 'removeClass',\n value: function removeClass(className) {}\n\n /**\n * Sets an attribute with a given value on the input element.\n * @param {string} attr\n * @param {string} value\n */\n\n }, {\n key: 'setNativeControlAttr',\n value: function setNativeControlAttr(attr, value) {}\n\n /**\n * Removes an attribute from the input element.\n * @param {string} attr\n */\n\n }, {\n key: 'removeNativeControlAttr',\n value: function removeNativeControlAttr(attr) {}\n }, {\n key: 'forceLayout',\n value: function forceLayout() {}\n\n /** @return {boolean} */\n\n }, {\n key: 'isAttachedToDOM',\n value: function isAttachedToDOM() {}\n\n /** @return {boolean} */\n\n }, {\n key: 'isIndeterminate',\n value: function isIndeterminate() {}\n\n /** @return {boolean} */\n\n }, {\n key: 'isChecked',\n value: function isChecked() {}\n\n /** @return {boolean} */\n\n }, {\n key: 'hasNativeControl',\n value: function hasNativeControl() {}\n\n /** @param {boolean} disabled */\n\n }, {\n key: 'setNativeControlDisabled',\n value: function setNativeControlDisabled(disabled) {}\n }]);\n\n return MDCCheckboxAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCCheckboxAdapter);\n\n/***/ }),\n/* 73 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return numbers; });\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\n/** @const {string} */\nvar ROOT = 'mdc-checkbox';\n\n/** @enum {string} */\nvar cssClasses = {\n UPGRADED: 'mdc-checkbox--upgraded',\n CHECKED: 'mdc-checkbox--checked',\n INDETERMINATE: 'mdc-checkbox--indeterminate',\n DISABLED: 'mdc-checkbox--disabled',\n ANIM_UNCHECKED_CHECKED: 'mdc-checkbox--anim-unchecked-checked',\n ANIM_UNCHECKED_INDETERMINATE: 'mdc-checkbox--anim-unchecked-indeterminate',\n ANIM_CHECKED_UNCHECKED: 'mdc-checkbox--anim-checked-unchecked',\n ANIM_CHECKED_INDETERMINATE: 'mdc-checkbox--anim-checked-indeterminate',\n ANIM_INDETERMINATE_CHECKED: 'mdc-checkbox--anim-indeterminate-checked',\n ANIM_INDETERMINATE_UNCHECKED: 'mdc-checkbox--anim-indeterminate-unchecked'\n};\n\n/** @enum {string} */\nvar strings = {\n NATIVE_CONTROL_SELECTOR: '.' + ROOT + '__native-control',\n TRANSITION_STATE_INIT: 'init',\n TRANSITION_STATE_CHECKED: 'checked',\n TRANSITION_STATE_UNCHECKED: 'unchecked',\n TRANSITION_STATE_INDETERMINATE: 'indeterminate',\n ARIA_CHECKED_ATTR: 'aria-checked',\n ARIA_CHECKED_INDETERMINATE_VALUE: 'mixed'\n};\n\n/** @enum {number} */\nvar numbers = {\n ANIM_END_LATCH_MS: 250\n};\n\n\n\n/***/ }),\n/* 74 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__chip_index__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__chip_set_index__ = __webpack_require__(75);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCChipFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_0__chip_index__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCChip\", function() { return __WEBPACK_IMPORTED_MODULE_0__chip_index__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCChipSetFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_1__chip_set_index__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCChipSet\", function() { return __WEBPACK_IMPORTED_MODULE_1__chip_set_index__[\"a\"]; });\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\n\n\n\n\n\n/***/ }),\n/* 75 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return MDCChipSet; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(76);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__chip_index__ = __webpack_require__(29);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\nvar idCounter = 0;\n\n/**\n * @extends {MDCComponent<!MDCChipSetFoundation>}\n * @final\n */\n\nvar MDCChipSet = function (_MDCComponent) {\n _inherits(MDCChipSet, _MDCComponent);\n\n /**\n * @param {...?} args\n */\n function MDCChipSet() {\n var _ref;\n\n _classCallCheck(this, MDCChipSet);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @type {!Array<!MDCChip>} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCChipSet.__proto__ || Object.getPrototypeOf(MDCChipSet)).call.apply(_ref, [this].concat(args)));\n\n _this.chips;\n /** @private {(function(!Element): !MDCChip)} */\n _this.chipFactory_;\n\n /** @private {?function(?Event): undefined} */\n _this.handleChipInteraction_;\n /** @private {?function(?Event): undefined} */\n _this.handleChipSelection_;\n /** @private {?function(?Event): undefined} */\n _this.handleChipRemoval_;\n return _this;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCChipSet}\n */\n\n\n _createClass(MDCChipSet, [{\n key: 'initialize',\n\n\n /**\n * @param {(function(!Element): !MDCChip)=} chipFactory A function which\n * creates a new MDCChip.\n */\n value: function initialize() {\n var chipFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_3__chip_index__[\"a\" /* MDCChip */](el);\n };\n\n this.chipFactory_ = chipFactory;\n this.chips = this.instantiateChips_(this.chipFactory_);\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n var _this2 = this;\n\n this.chips.forEach(function (chip) {\n if (chip.selected) {\n _this2.foundation_.select(chip.id);\n }\n });\n\n this.handleChipInteraction_ = function (evt) {\n return _this2.foundation_.handleChipInteraction(evt.detail.chipId);\n };\n this.handleChipSelection_ = function (evt) {\n return _this2.foundation_.handleChipSelection(evt.detail.chipId, evt.detail.selected);\n };\n this.handleChipRemoval_ = function (evt) {\n return _this2.foundation_.handleChipRemoval(evt.detail.chipId);\n };\n this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__[\"b\" /* MDCChipFoundation */].strings.INTERACTION_EVENT, this.handleChipInteraction_);\n this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__[\"b\" /* MDCChipFoundation */].strings.SELECTION_EVENT, this.handleChipSelection_);\n this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__[\"b\" /* MDCChipFoundation */].strings.REMOVAL_EVENT, this.handleChipRemoval_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.chips.forEach(function (chip) {\n chip.destroy();\n });\n\n this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__[\"b\" /* MDCChipFoundation */].strings.INTERACTION_EVENT, this.handleChipInteraction_);\n this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__[\"b\" /* MDCChipFoundation */].strings.SELECTION_EVENT, this.handleChipSelection_);\n this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__[\"b\" /* MDCChipFoundation */].strings.REMOVAL_EVENT, this.handleChipRemoval_);\n\n _get(MDCChipSet.prototype.__proto__ || Object.getPrototypeOf(MDCChipSet.prototype), 'destroy', this).call(this);\n }\n\n /**\n * Adds a new chip object to the chip set from the given chip element.\n * @param {!Element} chipEl\n */\n\n }, {\n key: 'addChip',\n value: function addChip(chipEl) {\n chipEl.id = chipEl.id || 'mdc-chip-' + ++idCounter;\n this.chips.push(this.chipFactory_(chipEl));\n }\n\n /**\n * Returns an array of the IDs of all selected chips.\n * @return {!Array<string>}\n */\n\n }, {\n key: 'getDefaultFoundation',\n\n\n /**\n * @return {!MDCChipSetFoundation}\n */\n value: function getDefaultFoundation() {\n var _this3 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */]( /** @type {!MDCChipSetAdapter} */_extends({\n hasClass: function hasClass(className) {\n return _this3.root_.classList.contains(className);\n },\n removeChip: function removeChip(chipId) {\n var index = _this3.findChipIndex_(chipId);\n if (index >= 0) {\n _this3.chips[index].destroy();\n _this3.chips.splice(index, 1);\n }\n },\n setSelected: function setSelected(chipId, selected) {\n var index = _this3.findChipIndex_(chipId);\n if (index >= 0) {\n _this3.chips[index].selected = selected;\n }\n }\n }));\n }\n\n /**\n * Instantiates chip components on all of the chip set's child chip elements.\n * @param {(function(!Element): !MDCChip)} chipFactory\n * @return {!Array<!MDCChip>}\n */\n\n }, {\n key: 'instantiateChips_',\n value: function instantiateChips_(chipFactory) {\n var chipElements = [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings.CHIP_SELECTOR));\n return chipElements.map(function (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 * @param {string} chipId\n * @return {number}\n */\n\n }, {\n key: 'findChipIndex_',\n value: function findChipIndex_(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 }, {\n key: 'selectedChipIds',\n get: function get() {\n return this.foundation_.getSelectedChipIds();\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCChipSet(root);\n }\n }]);\n\n return MDCChipSet;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 76 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__chip_foundation__ = __webpack_require__(31);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(77);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n// eslint-disable-next-line no-unused-vars\n\n\n\n/**\n * @extends {MDCFoundation<!MDCChipSetAdapter>}\n * @final\n */\n\nvar MDCChipSetFoundation = function (_MDCFoundation) {\n _inherits(MDCChipSetFoundation, _MDCFoundation);\n\n _createClass(MDCChipSetFoundation, null, [{\n key: 'strings',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_3__constants__[\"b\" /* strings */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_3__constants__[\"a\" /* cssClasses */];\n }\n\n /**\n * {@see MDCChipSetAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCChipSetAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCChipSetAdapter} */{\n hasClass: function hasClass() {},\n removeChip: function removeChip() {},\n setSelected: function setSelected() {}\n }\n );\n }\n\n /**\n * @param {!MDCChipSetAdapter} adapter\n */\n\n }]);\n\n function MDCChipSetFoundation(adapter) {\n _classCallCheck(this, MDCChipSetFoundation);\n\n /**\n * The ids of the selected chips in the set. Only used for choice chip set or filter chip set.\n * @private {!Array<string>}\n */\n var _this = _possibleConstructorReturn(this, (MDCChipSetFoundation.__proto__ || Object.getPrototypeOf(MDCChipSetFoundation)).call(this, _extends(MDCChipSetFoundation.defaultAdapter, adapter)));\n\n _this.selectedChipIds_ = [];\n return _this;\n }\n\n /**\n * Returns an array of the IDs of all selected chips.\n * @return {!Array<string>}\n */\n\n\n _createClass(MDCChipSetFoundation, [{\n key: 'getSelectedChipIds',\n value: function getSelectedChipIds() {\n return this.selectedChipIds_;\n }\n\n /**\n * Toggles selection of the chip with the given id.\n * @private\n * @param {string} chipId\n */\n\n }, {\n key: 'toggleSelect_',\n value: function toggleSelect_(chipId) {\n if (this.selectedChipIds_.indexOf(chipId) >= 0) {\n this.deselect_(chipId);\n } else {\n this.select(chipId);\n }\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 * @param {string} chipId\n */\n\n }, {\n key: 'select',\n value: function select(chipId) {\n if (this.selectedChipIds_.indexOf(chipId) >= 0) {\n return;\n }\n\n if (this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_3__constants__[\"a\" /* 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 /**\n * Deselects the chip with the given id.\n * @private\n * @param {string} chipId\n */\n\n }, {\n key: 'deselect_',\n value: function deselect_(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 /**\n * Handles a chip interaction event\n * @param {string} chipId\n */\n\n }, {\n key: 'handleChipInteraction',\n value: function handleChipInteraction(chipId) {\n if (this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_3__constants__[\"a\" /* cssClasses */].CHOICE) || this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_3__constants__[\"a\" /* 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 * @param {string} chipId\n * @param {boolean} selected\n */\n\n }, {\n key: 'handleChipSelection',\n value: function handleChipSelection(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 /**\n * Handles the event when a chip is removed.\n * @param {string} chipId\n */\n\n }, {\n key: 'handleChipRemoval',\n value: function handleChipRemoval(chipId) {\n this.deselect_(chipId);\n this.adapter_.removeChip(chipId);\n }\n }]);\n\n return MDCChipSetFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCChipSetFoundation);\n\n/***/ }),\n/* 77 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\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\n/** @enum {string} */\nvar strings = {\n CHIP_SELECTOR: '.mdc-chip'\n};\n\n/** @enum {string} */\nvar cssClasses = {\n CHOICE: 'mdc-chip-set--choice',\n FILTER: 'mdc-chip-set--filter'\n};\n\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCDialog\", function() { return MDCDialog; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(79);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(82);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_focus_trap__ = __webpack_require__(34);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_focus_trap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_focus_trap__);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCDialogFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"util\", function() { return __WEBPACK_IMPORTED_MODULE_3__util__; });\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n\n\n\nvar strings = __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings;\n\nvar MDCDialog = function (_MDCComponent) {\n _inherits(MDCDialog, _MDCComponent);\n\n function MDCDialog() {\n var _ref;\n\n _classCallCheck(this, MDCDialog);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /**\n * @type {!Array<!MDCRipple>}\n * @private\n */\n var _this = _possibleConstructorReturn(this, (_ref = MDCDialog.__proto__ || Object.getPrototypeOf(MDCDialog)).call.apply(_ref, [this].concat(args)));\n\n _this.buttonRipples_;\n\n /** @private {!Array<!Element>} */\n _this.buttons_;\n\n /** @private {?Element} */\n _this.defaultButton_;\n\n /** @private {!Element} */\n _this.container_;\n\n /** @private {?Element} */\n _this.content_;\n\n /** @private {?Element} */\n _this.initialFocusEl_;\n\n /** @private {!Function} */\n _this.focusTrapFactory_;\n\n /** @private {!FocusTrapInstance} */\n _this.focusTrap_;\n\n /** @private {!Function} */\n _this.handleInteraction_;\n\n /** @private {!Function} */\n _this.handleDocumentKeydown_;\n\n /** @private {!Function} */\n _this.handleOpening_;\n\n /** @private {!Function} */\n _this.handleClosing_;\n\n /** @private {Function} */\n _this.layout_;\n return _this;\n }\n\n _createClass(MDCDialog, [{\n key: 'initialize',\n value: function initialize() {\n var focusTrapFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : __WEBPACK_IMPORTED_MODULE_5_focus_trap___default.a;\n var initialFocusEl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n this.container_ = /** @type {!Element} */this.root_.querySelector(strings.CONTAINER_SELECTOR);\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.buttonRipples_ = [];\n this.focusTrapFactory_ = focusTrapFactory;\n this.initialFocusEl_ = initialFocusEl;\n\n for (var i = 0, buttonEl; buttonEl = this.buttons_[i]; i++) {\n this.buttonRipples_.push(new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__[\"MDCRipple\"](buttonEl));\n }\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n var _this2 = this;\n\n this.focusTrap_ = __WEBPACK_IMPORTED_MODULE_3__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.layout_ = this.layout.bind(this);\n\n var LAYOUT_EVENTS = ['resize', 'orientationchange'];\n this.handleOpening_ = function () {\n LAYOUT_EVENTS.forEach(function (type) {\n return window.addEventListener(type, _this2.layout_);\n });\n document.addEventListener('keydown', _this2.handleDocumentKeydown_);\n };\n this.handleClosing_ = function () {\n LAYOUT_EVENTS.forEach(function (type) {\n return window.removeEventListener(type, _this2.layout_);\n });\n document.removeEventListener('keydown', _this2.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 key: 'destroy',\n value: function 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(function (ripple) {\n return ripple.destroy();\n });\n _get(MDCDialog.prototype.__proto__ || Object.getPrototypeOf(MDCDialog.prototype), 'destroy', this).call(this);\n }\n }, {\n key: 'layout',\n value: function layout() {\n this.foundation_.layout();\n }\n }, {\n key: 'open',\n value: function open() {\n this.foundation_.open();\n }\n\n /**\n * @param {string=} action\n */\n\n }, {\n key: 'close',\n value: function close() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n this.foundation_.close(action);\n }\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this3 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */]({\n addClass: function addClass(className) {\n return _this3.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this3.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this3.root_.classList.contains(className);\n },\n addBodyClass: function addBodyClass(className) {\n return document.body.classList.add(className);\n },\n removeBodyClass: function removeBodyClass(className) {\n return document.body.classList.remove(className);\n },\n eventTargetMatches: function eventTargetMatches(target, selector) {\n return Object(__WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__[\"matches\"])(target, selector);\n },\n trapFocus: function trapFocus() {\n return _this3.focusTrap_.activate();\n },\n releaseFocus: function releaseFocus() {\n return _this3.focusTrap_.deactivate();\n },\n isContentScrollable: function isContentScrollable() {\n return !!_this3.content_ && __WEBPACK_IMPORTED_MODULE_3__util__[\"isScrollable\"]( /** @type {!Element} */_this3.content_);\n },\n areButtonsStacked: function areButtonsStacked() {\n return __WEBPACK_IMPORTED_MODULE_3__util__[\"areTopsMisaligned\"](_this3.buttons_);\n },\n getActionFromEvent: function getActionFromEvent(event) {\n var element = Object(__WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__[\"closest\"])(event.target, '[' + strings.ACTION_ATTRIBUTE + ']');\n return element && element.getAttribute(strings.ACTION_ATTRIBUTE);\n },\n clickDefaultButton: function clickDefaultButton() {\n if (_this3.defaultButton_) {\n _this3.defaultButton_.click();\n }\n },\n reverseButtons: function reverseButtons() {\n _this3.buttons_.reverse();\n _this3.buttons_.forEach(function (button) {\n return button.parentElement.appendChild(button);\n });\n },\n notifyOpening: function notifyOpening() {\n return _this3.emit(strings.OPENING_EVENT, {});\n },\n notifyOpened: function notifyOpened() {\n return _this3.emit(strings.OPENED_EVENT, {});\n },\n notifyClosing: function notifyClosing(action) {\n return _this3.emit(strings.CLOSING_EVENT, action ? { action: action } : {});\n },\n notifyClosed: function notifyClosed(action) {\n return _this3.emit(strings.CLOSED_EVENT, action ? { action: action } : {});\n }\n });\n }\n }, {\n key: 'isOpen',\n get: function get() {\n return this.foundation_.isOpen();\n }\n }, {\n key: 'escapeKeyAction',\n get: function get() {\n return this.foundation_.getEscapeKeyAction();\n },\n set: function set(action) {\n this.foundation_.setEscapeKeyAction(action);\n }\n }, {\n key: 'scrimClickAction',\n get: function get() {\n return this.foundation_.getScrimClickAction();\n },\n set: function set(action) {\n this.foundation_.setScrimClickAction(action);\n }\n }, {\n key: 'autoStackButtons',\n get: function get() {\n return this.foundation_.getAutoStackButtons();\n },\n set: function set(autoStack) {\n this.foundation_.setAutoStackButtons(autoStack);\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCDialog(root);\n }\n }]);\n\n return MDCDialog;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 79 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(80);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(81);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\nvar MDCDialogFoundation = function (_MDCFoundation) {\n _inherits(MDCDialogFoundation, _MDCFoundation);\n\n _createClass(MDCDialogFoundation, null, [{\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */];\n }\n }, {\n key: 'numbers',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* numbers */];\n }\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCDialogAdapter} */{\n addClass: function addClass() /* className: string */{},\n removeClass: function removeClass() /* className: string */{},\n hasClass: function hasClass() /* className: string */{},\n addBodyClass: function addBodyClass() /* className: string */{},\n removeBodyClass: function removeBodyClass() /* className: string */{},\n eventTargetMatches: function eventTargetMatches() /* target: !EventTarget, selector: string */{},\n trapFocus: function trapFocus() {},\n releaseFocus: function releaseFocus() {},\n isContentScrollable: function isContentScrollable() {},\n areButtonsStacked: function areButtonsStacked() {},\n getActionFromEvent: function getActionFromEvent() /* event: !Event */{},\n clickDefaultButton: function clickDefaultButton() {},\n reverseButtons: function reverseButtons() {},\n notifyOpening: function notifyOpening() {},\n notifyOpened: function notifyOpened() {},\n notifyClosing: function notifyClosing() /* action: ?string */{},\n notifyClosed: function notifyClosed() /* action: ?string */{}\n }\n );\n }\n\n /**\n * @param {!MDCDialogAdapter=} adapter\n */\n\n }]);\n\n function MDCDialogFoundation(adapter) {\n _classCallCheck(this, MDCDialogFoundation);\n\n /** @private {boolean} */\n var _this = _possibleConstructorReturn(this, (MDCDialogFoundation.__proto__ || Object.getPrototypeOf(MDCDialogFoundation)).call(this, _extends(MDCDialogFoundation.defaultAdapter, adapter)));\n\n _this.isOpen_ = false;\n\n /** @private {number} */\n _this.animationFrame_ = 0;\n\n /** @private {number} */\n _this.animationTimer_ = 0;\n\n /** @private {number} */\n _this.layoutFrame_ = 0;\n\n /** @private {string} */\n _this.escapeKeyAction_ = __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].CLOSE_ACTION;\n\n /** @private {string} */\n _this.scrimClickAction_ = __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].CLOSE_ACTION;\n\n /** @private {boolean} */\n _this.autoStackButtons_ = true;\n\n /** @private {boolean} */\n _this.areButtonsStacked_ = false;\n return _this;\n }\n\n _createClass(MDCDialogFoundation, [{\n key: 'init',\n value: function init() {\n if (this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].STACKED)) {\n this.setAutoStackButtons(false);\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n if (this.isOpen_) {\n this.close(__WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* 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 key: 'open',\n value: function open() {\n var _this2 = this;\n\n this.isOpen_ = true;\n this.adapter_.notifyOpening();\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPENING);\n\n // Wait a frame once display is no longer \"none\", to establish basis for animation\n this.runNextAnimationFrame_(function () {\n _this2.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPEN);\n _this2.adapter_.addBodyClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].SCROLL_LOCK);\n\n _this2.layout();\n\n _this2.animationTimer_ = setTimeout(function () {\n _this2.handleAnimationTimerEnd_();\n _this2.adapter_.trapFocus();\n _this2.adapter_.notifyOpened();\n }, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* numbers */].DIALOG_ANIMATION_OPEN_TIME_MS);\n });\n }\n\n /**\n * @param {string=} action\n */\n\n }, {\n key: 'close',\n value: function close() {\n var _this3 = this;\n\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\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\n this.isOpen_ = false;\n this.adapter_.notifyClosing(action);\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CLOSING);\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPEN);\n this.adapter_.removeBodyClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].SCROLL_LOCK);\n\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = 0;\n\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = setTimeout(function () {\n _this3.adapter_.releaseFocus();\n _this3.handleAnimationTimerEnd_();\n _this3.adapter_.notifyClosed(action);\n }, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* numbers */].DIALOG_ANIMATION_CLOSE_TIME_MS);\n }\n }, {\n key: 'isOpen',\n value: function isOpen() {\n return this.isOpen_;\n }\n\n /** @return {string} */\n\n }, {\n key: 'getEscapeKeyAction',\n value: function getEscapeKeyAction() {\n return this.escapeKeyAction_;\n }\n\n /** @param {string} action */\n\n }, {\n key: 'setEscapeKeyAction',\n value: function setEscapeKeyAction(action) {\n this.escapeKeyAction_ = action;\n }\n\n /** @return {string} */\n\n }, {\n key: 'getScrimClickAction',\n value: function getScrimClickAction() {\n return this.scrimClickAction_;\n }\n\n /** @param {string} action */\n\n }, {\n key: 'setScrimClickAction',\n value: function setScrimClickAction(action) {\n this.scrimClickAction_ = action;\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'getAutoStackButtons',\n value: function getAutoStackButtons() {\n return this.autoStackButtons_;\n }\n\n /** @param {boolean} autoStack */\n\n }, {\n key: 'setAutoStackButtons',\n value: function setAutoStackButtons(autoStack) {\n this.autoStackButtons_ = autoStack;\n }\n }, {\n key: 'layout',\n value: function layout() {\n var _this4 = this;\n\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n }\n this.layoutFrame_ = requestAnimationFrame(function () {\n _this4.layoutInternal_();\n _this4.layoutFrame_ = 0;\n });\n }\n }, {\n key: 'layoutInternal_',\n value: function layoutInternal_() {\n if (this.autoStackButtons_) {\n this.detectStackedButtons_();\n }\n this.detectScrollableContent_();\n }\n\n /** @private */\n\n }, {\n key: 'detectStackedButtons_',\n value: function detectStackedButtons_() {\n // Remove the class first to let us measure the buttons' natural positions.\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].STACKED);\n\n var areButtonsStacked = this.adapter_.areButtonsStacked();\n\n if (areButtonsStacked) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].STACKED);\n }\n\n if (areButtonsStacked !== this.areButtonsStacked_) {\n this.adapter_.reverseButtons();\n this.areButtonsStacked_ = areButtonsStacked;\n }\n }\n\n /** @private */\n\n }, {\n key: 'detectScrollableContent_',\n value: function detectScrollableContent_() {\n // Remove the class first to let us measure the natural height of the content.\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].SCROLLABLE);\n if (this.adapter_.isContentScrollable()) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].SCROLLABLE);\n }\n }\n\n /**\n * @param {!Event} evt\n * @private\n */\n\n }, {\n key: 'handleInteraction',\n value: function handleInteraction(evt) {\n var isClick = evt.type === 'click';\n var isEnter = evt.key === 'Enter' || evt.keyCode === 13;\n\n // Check for scrim click first since it doesn't require querying ancestors\n if (isClick && this.adapter_.eventTargetMatches(evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].SCRIM_SELECTOR) && this.scrimClickAction_ !== '') {\n this.close(this.scrimClickAction_);\n } else if (isClick || evt.key === 'Space' || evt.keyCode === 32 || isEnter) {\n var action = this.adapter_.getActionFromEvent(evt);\n if (action) {\n this.close(action);\n } else if (isEnter && !this.adapter_.eventTargetMatches(evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].SUPPRESS_DEFAULT_PRESS_SELECTOR)) {\n this.adapter_.clickDefaultButton();\n }\n }\n }\n\n /**\n * @param {!KeyboardEvent} evt\n * @private\n */\n\n }, {\n key: 'handleDocumentKeydown',\n value: function handleDocumentKeydown(evt) {\n if ((evt.key === 'Escape' || evt.keyCode === 27) && this.escapeKeyAction_ !== '') {\n this.close(this.escapeKeyAction_);\n }\n }\n\n /** @private */\n\n }, {\n key: 'handleAnimationTimerEnd_',\n value: function handleAnimationTimerEnd_() {\n this.animationTimer_ = 0;\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPENING);\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CLOSING);\n }\n\n /**\n * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.\n * @param {Function} callback\n * @private\n */\n\n }, {\n key: 'runNextAnimationFrame_',\n value: function runNextAnimationFrame_(callback) {\n var _this5 = this;\n\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = requestAnimationFrame(function () {\n _this5.animationFrame_ = 0;\n clearTimeout(_this5.animationTimer_);\n _this5.animationTimer_ = setTimeout(callback, 0);\n });\n }\n }]);\n\n return MDCDialogFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCDialogFoundation);\n\n/***/ }),\n/* 80 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Dialog. Provides an interface for managing:\n * - CSS classes\n * - DOM\n * - Event handlers\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nvar MDCDialogAdapter = function () {\n function MDCDialogAdapter() {\n _classCallCheck(this, MDCDialogAdapter);\n }\n\n _createClass(MDCDialogAdapter, [{\n key: \"addClass\",\n\n /** @param {string} className */\n value: function addClass(className) {}\n\n /** @param {string} className */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * @param {string} className\n * @return {boolean}\n */\n\n }, {\n key: \"hasClass\",\n value: function hasClass(className) {}\n\n /** @param {string} className */\n\n }, {\n key: \"addBodyClass\",\n value: function addBodyClass(className) {}\n\n /** @param {string} className */\n\n }, {\n key: \"removeBodyClass\",\n value: function removeBodyClass(className) {}\n\n /**\n * @param {!EventTarget} target\n * @param {string} selector\n * @return {boolean}\n */\n\n }, {\n key: \"eventTargetMatches\",\n value: function eventTargetMatches(target, selector) {}\n }, {\n key: \"trapFocus\",\n value: function trapFocus() {}\n }, {\n key: \"releaseFocus\",\n value: function releaseFocus() {}\n\n /** @return {boolean} */\n\n }, {\n key: \"isContentScrollable\",\n value: function isContentScrollable() {}\n\n /** @return {boolean} */\n\n }, {\n key: \"areButtonsStacked\",\n value: function areButtonsStacked() {}\n\n /**\n * @param {!Event} event\n * @return {?string}\n */\n\n }, {\n key: \"getActionFromEvent\",\n value: function getActionFromEvent(event) {}\n }, {\n key: \"clickDefaultButton\",\n value: function clickDefaultButton() {}\n }, {\n key: \"reverseButtons\",\n value: function reverseButtons() {}\n }, {\n key: \"notifyOpening\",\n value: function notifyOpening() {}\n }, {\n key: \"notifyOpened\",\n value: function notifyOpened() {}\n\n /**\n * @param {string} action\n */\n\n }, {\n key: \"notifyClosing\",\n value: function notifyClosing(action) {}\n\n /**\n * @param {string} action\n */\n\n }, {\n key: \"notifyClosed\",\n value: function notifyClosed(action) {}\n }]);\n\n return MDCDialogAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCDialogAdapter);\n\n/***/ }),\n/* 81 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return numbers; });\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 cssClasses = {\n OPEN: 'mdc-dialog--open',\n OPENING: 'mdc-dialog--opening',\n CLOSING: 'mdc-dialog--closing',\n SCROLLABLE: 'mdc-dialog--scrollable',\n STACKED: 'mdc-dialog--stacked',\n SCROLL_LOCK: 'mdc-dialog-scroll-lock'\n};\n\nvar strings = {\n SCRIM_SELECTOR: '.mdc-dialog__scrim',\n CONTAINER_SELECTOR: '.mdc-dialog__container',\n SURFACE_SELECTOR: '.mdc-dialog__surface',\n CONTENT_SELECTOR: '.mdc-dialog__content',\n BUTTON_SELECTOR: '.mdc-dialog__button',\n DEFAULT_BUTTON_SELECTOR: '.mdc-dialog__button--default',\n SUPPRESS_DEFAULT_PRESS_SELECTOR: ['textarea', '.mdc-menu .mdc-list-item'].join(', '),\n\n OPENING_EVENT: 'MDCDialog:opening',\n OPENED_EVENT: 'MDCDialog:opened',\n CLOSING_EVENT: 'MDCDialog:closing',\n CLOSED_EVENT: 'MDCDialog:closed',\n\n ACTION_ATTRIBUTE: 'data-mdc-dialog-action',\n\n CLOSE_ACTION: 'close',\n DESTROY_ACTION: 'destroy'\n};\n\nvar numbers = {\n DIALOG_ANIMATION_OPEN_TIME_MS: 150,\n DIALOG_ANIMATION_CLOSE_TIME_MS: 75\n};\n\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createFocusTrapInstance\", function() { return createFocusTrapInstance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isScrollable\", function() { return isScrollable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"areTopsMisaligned\", function() { return areTopsMisaligned; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_focus_trap__ = __webpack_require__(34);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_focus_trap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_focus_trap__);\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\n\n\n/**\n * @param {!Element} surfaceEl\n * @param {?Element=} initialFocusEl\n * @param {function(!Element, !FocusTrapCreateOptions): !FocusTrapInstance} focusTrapFactory\n * @return {!FocusTrapInstance}\n */\nfunction createFocusTrapInstance(surfaceEl) {\n var focusTrapFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : __WEBPACK_IMPORTED_MODULE_0_focus_trap___default.a;\n var initialFocusEl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n return focusTrapFactory(surfaceEl, {\n initialFocus: initialFocusEl,\n escapeDeactivates: false, // Dialog foundation handles escape key\n clickOutsideDeactivates: true });\n}\n\n/**\n * @param {!Element} el\n * @return {boolean}\n */\nfunction isScrollable(el) {\n return el.scrollHeight > el.offsetHeight;\n}\n\n/**\n * @param {!Array<!Element>|!NodeList} els\n * @return {boolean}\n */\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}\n\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nvar candidateSelectors = [\n 'input',\n 'select',\n 'textarea',\n 'a[href]',\n 'button',\n '[tabindex]',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n];\nvar candidateSelector = candidateSelectors.join(',');\n\nvar matches = typeof Element === 'undefined'\n ? function () {}\n : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nfunction tabbable(el, options) {\n options = options || {};\n\n var elementDocument = el.ownerDocument || el;\n var regularTabbables = [];\n var orderedTabbables = [];\n\n var untouchabilityChecker = new UntouchabilityChecker(elementDocument);\n var candidates = el.querySelectorAll(candidateSelector);\n\n if (options.includeContainer) {\n if (matches.call(el, candidateSelector)) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var i, candidate, candidateTabindex;\n for (i = 0; i < candidates.length; i++) {\n candidate = candidates[i];\n\n if (!isNodeMatchingSelectorTabbable(candidate, untouchabilityChecker)) continue;\n\n candidateTabindex = getTabindex(candidate);\n if (candidateTabindex === 0) {\n regularTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n node: candidate,\n });\n }\n }\n\n var tabbableNodes = orderedTabbables\n .sort(sortOrderedTabbables)\n .map(function(a) { return a.node })\n .concat(regularTabbables);\n\n return tabbableNodes;\n}\n\ntabbable.isTabbable = isTabbable;\ntabbable.isFocusable = isFocusable;\n\nfunction isNodeMatchingSelectorTabbable(node, untouchabilityChecker) {\n if (\n !isNodeMatchingSelectorFocusable(node, untouchabilityChecker)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);\n}\n\nfunction isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {\n untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);\n if (\n node.disabled\n || isHiddenInput(node)\n || untouchabilityChecker.isUntouchable(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);\n}\n\nfunction getTabindex(node) {\n var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n if (!isNaN(tabindexAttr)) return tabindexAttr;\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if (isContentEditable(node)) return 0;\n return node.tabIndex;\n}\n\nfunction sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n}\n\n// Array.prototype.find not available in IE.\nfunction find(list, predicate) {\n for (var i = 0, length = list.length; i < length; i++) {\n if (predicate(list[i])) return list[i];\n }\n}\n\nfunction isContentEditable(node) {\n return node.contentEditable === 'true';\n}\n\nfunction isInput(node) {\n return node.tagName === 'INPUT';\n}\n\nfunction isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n}\n\nfunction isRadio(node) {\n return isInput(node) && node.type === 'radio';\n}\n\nfunction isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n}\n\nfunction getCheckedRadio(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked) {\n return nodes[i];\n }\n }\n}\n\nfunction isTabbableRadio(node) {\n if (!node.name) return true;\n // This won't account for the edge case where you have radio groups with the same\n // in separate forms on the same page.\n var radioSet = node.ownerDocument.querySelectorAll('input[type=\"radio\"][name=\"' + node.name + '\"]');\n var checked = getCheckedRadio(radioSet);\n return !checked || checked === node;\n}\n\n// An element is \"untouchable\" if *it or one of its ancestors* has\n// `visibility: hidden` or `display: none`.\nfunction UntouchabilityChecker(elementDocument) {\n this.doc = elementDocument;\n // Node cache must be refreshed on every check, in case\n // the content of the element has changed. The cache contains tuples\n // mapping nodes to their boolean result.\n this.cache = [];\n}\n\n// getComputedStyle accurately reflects `visibility: hidden` of ancestors\n// but not `display: none`, so we need to recursively check parents.\nUntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {\n if (node.nodeType !== Node.ELEMENT_NODE) return false;\n\n // Search for a cached result.\n var cached = find(this.cache, function(item) {\n return item === node;\n });\n if (cached) return cached[1];\n\n nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);\n\n var result = false;\n\n if (nodeComputedStyle.display === 'none') {\n result = true;\n } else if (node.parentNode) {\n result = this.hasDisplayNone(node.parentNode);\n }\n\n this.cache.push([node, result]);\n\n return result;\n}\n\nUntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {\n if (node === this.doc.documentElement) return false;\n var computedStyle = this.doc.defaultView.getComputedStyle(node);\n if (this.hasDisplayNone(node, computedStyle)) return true;\n return computedStyle.visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\n\n\n/***/ }),\n/* 84 */\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/* 85 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ponyfill__ = __webpack_require__(8);\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"ponyfill\", function() { return __WEBPACK_IMPORTED_MODULE_0__ponyfill__; });\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\n\n\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCDrawer\", function() { return MDCDrawer; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__ = __webpack_require__(35);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__modal_foundation__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__adapter__ = __webpack_require__(36);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_list_index__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_list_foundation__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__constants__ = __webpack_require__(37);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__util__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_focus_trap__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_focus_trap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_focus_trap__);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCDismissibleDrawerFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCModalDrawerFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_2__modal_foundation__[\"a\"]; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"util\", function() { return __WEBPACK_IMPORTED_MODULE_7__util__; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCDismissibleDrawerFoundation>}\n * @final\n */\n\nvar MDCDrawer = function (_MDCComponent) {\n _inherits(MDCDrawer, _MDCComponent);\n\n /**\n * @param {...?} args\n */\n function MDCDrawer() {\n var _ref;\n\n _classCallCheck(this, MDCDrawer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {!Element} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCDrawer.__proto__ || Object.getPrototypeOf(MDCDrawer)).call.apply(_ref, [this].concat(args)));\n\n _this.previousFocus_;\n\n /** @private {!Function} */\n _this.handleKeydown_;\n\n /** @private {!Function} */\n _this.handleTransitionEnd_;\n\n /** @private {!Function} */\n _this.focusTrapFactory_;\n\n /** @private {!FocusTrapInstance} */\n _this.focusTrap_;\n\n /** @private {?Element} */\n _this.scrim_;\n\n /** @private {?Function} */\n _this.handleScrimClick_;\n\n /** @private {?MDCList} */\n _this.list_;\n return _this;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCDrawer}\n */\n\n\n _createClass(MDCDrawer, [{\n key: 'initialize',\n value: function initialize() {\n var focusTrapFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : __WEBPACK_IMPORTED_MODULE_8_focus_trap___default.a;\n var listFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_4__material_list_index__[\"MDCList\"](el);\n };\n\n var listEl = /** @type {!Element} */this.root_.querySelector('.' + __WEBPACK_IMPORTED_MODULE_5__material_list_foundation__[\"a\" /* default */].cssClasses.ROOT);\n if (listEl) {\n this.list_ = listFactory(listEl);\n this.list_.wrapFocus = true;\n }\n this.focusTrapFactory_ = focusTrapFactory;\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n var _this2 = this;\n\n var MODAL = __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__[\"a\" /* default */].cssClasses.MODAL;\n\n\n if (this.root_.classList.contains(MODAL)) {\n var SCRIM_SELECTOR = __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__[\"a\" /* default */].strings.SCRIM_SELECTOR;\n\n this.scrim_ = /** @type {!Element} */this.root_.parentNode.querySelector(SCRIM_SELECTOR);\n this.handleScrimClick_ = function () {\n return (/** @type {!MDCModalDrawerFoundation} */_this2.foundation_.handleScrimClick()\n );\n };\n this.scrim_.addEventListener('click', this.handleScrimClick_);\n this.focusTrap_ = __WEBPACK_IMPORTED_MODULE_7__util__[\"createFocusTrapInstance\"](this.root_, this.focusTrapFactory_);\n }\n\n this.handleKeydown_ = function (evt) {\n return _this2.foundation_.handleKeydown(evt);\n };\n this.handleTransitionEnd_ = function (evt) {\n return _this2.foundation_.handleTransitionEnd(evt);\n };\n\n this.root_.addEventListener('keydown', this.handleKeydown_);\n this.root_.addEventListener('transitionend', this.handleTransitionEnd_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.root_.removeEventListener('keydown', this.handleKeydown_);\n this.root_.removeEventListener('transitionend', this.handleTransitionEnd_);\n\n if (this.list_) {\n this.list_.destroy();\n }\n\n var MODAL = __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__[\"a\" /* default */].cssClasses.MODAL;\n\n if (this.root_.classList.contains(MODAL)) {\n this.scrim_.removeEventListener('click', /** @type {!Function} */this.handleScrimClick_);\n // Ensure drawer is closed to hide scrim and release focus\n this.open = false;\n }\n }\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this3 = this;\n\n /** @type {!MDCDrawerAdapter} */\n var adapter = /** @type {!MDCDrawerAdapter} */_extends({\n addClass: function addClass(className) {\n return _this3.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this3.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this3.root_.classList.contains(className);\n },\n elementHasClass: function elementHasClass(element, className) {\n return element.classList.contains(className);\n },\n saveFocus: function saveFocus() {\n _this3.previousFocus_ = document.activeElement;\n },\n restoreFocus: function restoreFocus() {\n var previousFocus = _this3.previousFocus_ && _this3.previousFocus_.focus;\n if (_this3.root_.contains(document.activeElement) && previousFocus) {\n _this3.previousFocus_.focus();\n }\n },\n focusActiveNavigationItem: function focusActiveNavigationItem() {\n var activeNavItemEl = _this3.root_.querySelector('.' + __WEBPACK_IMPORTED_MODULE_5__material_list_foundation__[\"a\" /* default */].cssClasses.LIST_ITEM_ACTIVATED_CLASS);\n if (activeNavItemEl) {\n activeNavItemEl.focus();\n }\n },\n notifyClose: function notifyClose() {\n return _this3.emit(__WEBPACK_IMPORTED_MODULE_6__constants__[\"b\" /* strings */].CLOSE_EVENT, {}, true /* shouldBubble */);\n },\n notifyOpen: function notifyOpen() {\n return _this3.emit(__WEBPACK_IMPORTED_MODULE_6__constants__[\"b\" /* strings */].OPEN_EVENT, {}, true /* shouldBubble */);\n },\n trapFocus: function trapFocus() {\n return _this3.focusTrap_.activate();\n },\n releaseFocus: function releaseFocus() {\n return _this3.focusTrap_.deactivate();\n }\n });\n\n var _MDCDismissibleDrawer = __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__[\"a\" /* default */].cssClasses,\n DISMISSIBLE = _MDCDismissibleDrawer.DISMISSIBLE,\n MODAL = _MDCDismissibleDrawer.MODAL;\n\n if (this.root_.classList.contains(DISMISSIBLE)) {\n return new __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__[\"a\" /* default */](adapter);\n } else if (this.root_.classList.contains(MODAL)) {\n return new __WEBPACK_IMPORTED_MODULE_2__modal_foundation__[\"a\" /* default */](adapter);\n } else {\n throw new Error('MDCDrawer: Failed to instantiate component. Supported variants are ' + DISMISSIBLE + ' and ' + MODAL + '.');\n }\n }\n }, {\n key: 'open',\n\n\n /**\n * Returns true if drawer is in the open position.\n * @return {boolean}\n */\n get: function get() {\n return this.foundation_.isOpen();\n }\n\n /**\n * Toggles the drawer open and closed.\n * @param {boolean} isOpen\n */\n ,\n set: function set(isOpen) {\n if (isOpen) {\n this.foundation_.open();\n } else {\n this.foundation_.close();\n }\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCDrawer(root);\n }\n }]);\n\n return MDCDrawer;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__dismissible_foundation__ = __webpack_require__(35);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n/**\n * @extends {MDCDismissibleDrawerFoundation}\n */\n\nvar MDCModalDrawerFoundation = function (_MDCDismissibleDrawer) {\n _inherits(MDCModalDrawerFoundation, _MDCDismissibleDrawer);\n\n function MDCModalDrawerFoundation() {\n _classCallCheck(this, MDCModalDrawerFoundation);\n\n return _possibleConstructorReturn(this, (MDCModalDrawerFoundation.__proto__ || Object.getPrototypeOf(MDCModalDrawerFoundation)).apply(this, arguments));\n }\n\n _createClass(MDCModalDrawerFoundation, [{\n key: 'opened',\n\n /**\n * Called when drawer finishes open animation.\n * @override\n */\n value: function opened() {\n this.adapter_.trapFocus();\n }\n\n /**\n * Called when drawer finishes close animation.\n * @override\n */\n\n }, {\n key: 'closed',\n value: function closed() {\n this.adapter_.releaseFocus();\n }\n\n /**\n * Handles click event on scrim.\n */\n\n }, {\n key: 'handleScrimClick',\n value: function handleScrimClick() {\n this.close();\n }\n }]);\n\n return MDCModalDrawerFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__dismissible_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCModalDrawerFoundation);\n\n/***/ }),\n/* 88 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createFocusTrapInstance\", function() { return createFocusTrapInstance; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_focus_trap__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_focus_trap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_focus_trap__);\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\n\n\n/**\n * @param {!Element} surfaceEl\n * @param {!Function} focusTrapFactory\n * @return {!FocusTrapInstance}\n */\nfunction createFocusTrapInstance(surfaceEl) {\n var focusTrapFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : __WEBPACK_IMPORTED_MODULE_0_focus_trap___default.a;\n\n return focusTrapFactory(surfaceEl, {\n clickOutsideDeactivates: true,\n initialFocus: false, // Navigation drawer handles focusing on active nav item.\n escapeDeactivates: false, // Navigation drawer handles ESC.\n returnFocusOnDeactivate: false });\n}\n\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nvar candidateSelectors = [\n 'input',\n 'select',\n 'textarea',\n 'a[href]',\n 'button',\n '[tabindex]',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n];\nvar candidateSelector = candidateSelectors.join(',');\n\nvar matches = typeof Element === 'undefined'\n ? function () {}\n : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nfunction tabbable(el, options) {\n options = options || {};\n\n var elementDocument = el.ownerDocument || el;\n var regularTabbables = [];\n var orderedTabbables = [];\n\n var untouchabilityChecker = new UntouchabilityChecker(elementDocument);\n var candidates = el.querySelectorAll(candidateSelector);\n\n if (options.includeContainer) {\n if (matches.call(el, candidateSelector)) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var i, candidate, candidateTabindex;\n for (i = 0; i < candidates.length; i++) {\n candidate = candidates[i];\n\n if (!isNodeMatchingSelectorTabbable(candidate, untouchabilityChecker)) continue;\n\n candidateTabindex = getTabindex(candidate);\n if (candidateTabindex === 0) {\n regularTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n node: candidate,\n });\n }\n }\n\n var tabbableNodes = orderedTabbables\n .sort(sortOrderedTabbables)\n .map(function(a) { return a.node })\n .concat(regularTabbables);\n\n return tabbableNodes;\n}\n\ntabbable.isTabbable = isTabbable;\ntabbable.isFocusable = isFocusable;\n\nfunction isNodeMatchingSelectorTabbable(node, untouchabilityChecker) {\n if (\n !isNodeMatchingSelectorFocusable(node, untouchabilityChecker)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);\n}\n\nfunction isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {\n untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);\n if (\n node.disabled\n || isHiddenInput(node)\n || untouchabilityChecker.isUntouchable(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);\n}\n\nfunction getTabindex(node) {\n var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n if (!isNaN(tabindexAttr)) return tabindexAttr;\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if (isContentEditable(node)) return 0;\n return node.tabIndex;\n}\n\nfunction sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n}\n\n// Array.prototype.find not available in IE.\nfunction find(list, predicate) {\n for (var i = 0, length = list.length; i < length; i++) {\n if (predicate(list[i])) return list[i];\n }\n}\n\nfunction isContentEditable(node) {\n return node.contentEditable === 'true';\n}\n\nfunction isInput(node) {\n return node.tagName === 'INPUT';\n}\n\nfunction isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n}\n\nfunction isRadio(node) {\n return isInput(node) && node.type === 'radio';\n}\n\nfunction isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n}\n\nfunction getCheckedRadio(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked) {\n return nodes[i];\n }\n }\n}\n\nfunction isTabbableRadio(node) {\n if (!node.name) return true;\n // This won't account for the edge case where you have radio groups with the same\n // in separate forms on the same page.\n var radioSet = node.ownerDocument.querySelectorAll('input[type=\"radio\"][name=\"' + node.name + '\"]');\n var checked = getCheckedRadio(radioSet);\n return !checked || checked === node;\n}\n\n// An element is \"untouchable\" if *it or one of its ancestors* has\n// `visibility: hidden` or `display: none`.\nfunction UntouchabilityChecker(elementDocument) {\n this.doc = elementDocument;\n // Node cache must be refreshed on every check, in case\n // the content of the element has changed. The cache contains tuples\n // mapping nodes to their boolean result.\n this.cache = [];\n}\n\n// getComputedStyle accurately reflects `visibility: hidden` of ancestors\n// but not `display: none`, so we need to recursively check parents.\nUntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {\n if (node.nodeType !== Node.ELEMENT_NODE) return false;\n\n // Search for a cached result.\n var cached = find(this.cache, function(item) {\n return item === node;\n });\n if (cached) return cached[1];\n\n nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);\n\n var result = false;\n\n if (nodeComputedStyle.display === 'none') {\n result = true;\n } else if (node.parentNode) {\n result = this.hasDisplayNone(node.parentNode);\n }\n\n this.cache.push([node, result]);\n\n return result;\n}\n\nUntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {\n if (node === this.doc.documentElement) return false;\n var computedStyle = this.doc.defaultView.getComputedStyle(node);\n if (this.hasDisplayNone(node, computedStyle)) return true;\n return computedStyle.visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\n\n\n/***/ }),\n/* 90 */\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/* 91 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(92);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCFloatingLabelAdapter>}\n * @final\n */\n\nvar MDCFloatingLabelFoundation = function (_MDCFoundation) {\n _inherits(MDCFloatingLabelFoundation, _MDCFoundation);\n\n _createClass(MDCFloatingLabelFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n\n /**\n * {@see MDCFloatingLabelAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCFloatingLabelAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCFloatingLabelAdapter} */{\n addClass: function addClass() {},\n removeClass: function removeClass() {},\n getWidth: function getWidth() {},\n registerInteractionHandler: function registerInteractionHandler() {},\n deregisterInteractionHandler: function deregisterInteractionHandler() {}\n }\n );\n }\n\n /**\n * @param {!MDCFloatingLabelAdapter} adapter\n */\n\n }]);\n\n function MDCFloatingLabelFoundation(adapter) {\n _classCallCheck(this, MDCFloatingLabelFoundation);\n\n /** @private {function(!Event): undefined} */\n var _this = _possibleConstructorReturn(this, (MDCFloatingLabelFoundation.__proto__ || Object.getPrototypeOf(MDCFloatingLabelFoundation)).call(this, _extends(MDCFloatingLabelFoundation.defaultAdapter, adapter)));\n\n _this.shakeAnimationEndHandler_ = function () {\n return _this.handleShakeAnimationEnd_();\n };\n return _this;\n }\n\n _createClass(MDCFloatingLabelFoundation, [{\n key: 'init',\n value: function init() {\n this.adapter_.registerInteractionHandler('animationend', this.shakeAnimationEndHandler_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.adapter_.deregisterInteractionHandler('animationend', this.shakeAnimationEndHandler_);\n }\n\n /**\n * Returns the width of the label element.\n * @return {number}\n */\n\n }, {\n key: 'getWidth',\n value: function getWidth() {\n return this.adapter_.getWidth();\n }\n\n /**\n * Styles the label to produce the label shake for errors.\n * @param {boolean} shouldShake adds shake class if true,\n * otherwise removes shake class.\n */\n\n }, {\n key: 'shake',\n value: function shake(shouldShake) {\n var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE;\n\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 {boolean} shouldFloat adds float class if true, otherwise remove\n * float and shake class to dock label.\n */\n\n }, {\n key: 'float',\n value: function float(shouldFloat) {\n var _MDCFloatingLabelFoun = MDCFloatingLabelFoundation.cssClasses,\n LABEL_FLOAT_ABOVE = _MDCFloatingLabelFoun.LABEL_FLOAT_ABOVE,\n LABEL_SHAKE = _MDCFloatingLabelFoun.LABEL_SHAKE;\n\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 /**\n * Handles an interaction event on the root element.\n */\n\n }, {\n key: 'handleShakeAnimationEnd_',\n value: function handleShakeAnimationEnd_() {\n var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE;\n\n this.adapter_.removeClass(LABEL_SHAKE);\n }\n }]);\n\n return MDCFloatingLabelFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCFloatingLabelFoundation);\n\n/***/ }),\n/* 92 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\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\n/** @enum {string} */\nvar 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/***/ }),\n/* 93 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCFormField\", function() { return MDCFormField; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(94);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_selection_control_index__ = __webpack_require__(3);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCFormFieldFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\"]; });\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n/* eslint-disable no-unused-vars */\n\n/* eslint-enable no-unused-vars */\n\n/**\n * @extends MDCComponent<!MDCFormFieldFoundation>\n */\n\nvar MDCFormField = function (_MDCComponent) {\n _inherits(MDCFormField, _MDCComponent);\n\n _createClass(MDCFormField, [{\n key: 'input',\n\n\n /** @param {?MDCSelectionControl} input */\n set: function set(input) {\n this.input_ = input;\n }\n\n /** @return {?MDCSelectionControl} */\n ,\n get: function get() {\n return this.input_;\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCFormField(root);\n }\n }]);\n\n function MDCFormField() {\n var _ref;\n\n _classCallCheck(this, MDCFormField);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {?MDCSelectionControl} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCFormField.__proto__ || Object.getPrototypeOf(MDCFormField)).call.apply(_ref, [this].concat(args)));\n\n _this.input_;\n return _this;\n }\n\n /**\n * @return {!Element}\n * @private\n */\n\n\n _createClass(MDCFormField, [{\n key: 'getDefaultFoundation',\n\n\n /** @return {!MDCFormFieldFoundation} */\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */]({\n registerInteractionHandler: function registerInteractionHandler(type, handler) {\n return _this2.label_.addEventListener(type, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {\n return _this2.label_.removeEventListener(type, handler);\n },\n activateInputRipple: function activateInputRipple() {\n if (_this2.input_ && _this2.input_.ripple) {\n _this2.input_.ripple.activate();\n }\n },\n deactivateInputRipple: function deactivateInputRipple() {\n if (_this2.input_ && _this2.input_.ripple) {\n _this2.input_.ripple.deactivate();\n }\n }\n });\n }\n }, {\n key: 'label_',\n get: function get() {\n var LABEL_SELECTOR = __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */].strings.LABEL_SELECTOR;\n\n return (/** @type {!Element} */this.root_.querySelector(LABEL_SELECTOR)\n );\n }\n }]);\n\n return MDCFormField;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 94 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(95);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(96);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCFormFieldAdapter>}\n */\n\nvar MDCFormFieldFoundation = function (_MDCFoundation) {\n _inherits(MDCFormFieldFoundation, _MDCFoundation);\n\n _createClass(MDCFormFieldFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum {cssClasses} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum {strings} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n\n /** @return {!MDCFormFieldAdapter} */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return {\n registerInteractionHandler: function registerInteractionHandler() /* type: string, handler: EventListener */{},\n deregisterInteractionHandler: function deregisterInteractionHandler() /* type: string, handler: EventListener */{},\n activateInputRipple: function activateInputRipple() {},\n deactivateInputRipple: function deactivateInputRipple() {}\n };\n }\n }]);\n\n function MDCFormFieldFoundation(adapter) {\n _classCallCheck(this, MDCFormFieldFoundation);\n\n /** @private {!EventListener} */\n var _this = _possibleConstructorReturn(this, (MDCFormFieldFoundation.__proto__ || Object.getPrototypeOf(MDCFormFieldFoundation)).call(this, _extends(MDCFormFieldFoundation.defaultAdapter, adapter)));\n\n _this.clickHandler_ = /** @type {!EventListener} */function () {\n return _this.handleClick_();\n };\n return _this;\n }\n\n _createClass(MDCFormFieldFoundation, [{\n key: 'init',\n value: function init() {\n this.adapter_.registerInteractionHandler('click', this.clickHandler_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.adapter_.deregisterInteractionHandler('click', this.clickHandler_);\n }\n\n /** @private */\n\n }, {\n key: 'handleClick_',\n value: function handleClick_() {\n var _this2 = this;\n\n this.adapter_.activateInputRipple();\n requestAnimationFrame(function () {\n return _this2.adapter_.deactivateInputRipple();\n });\n }\n }]);\n\n return MDCFormFieldFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCFormFieldFoundation);\n\n/***/ }),\n/* 95 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Form Field. Provides an interface for managing\n * - event handlers\n * - ripple activation\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nvar MDCFormFieldAdapter = function () {\n function MDCFormFieldAdapter() {\n _classCallCheck(this, MDCFormFieldAdapter);\n }\n\n _createClass(MDCFormFieldAdapter, [{\n key: \"registerInteractionHandler\",\n\n /**\n * @param {string} type\n * @param {!EventListener} handler\n */\n value: function registerInteractionHandler(type, handler) {}\n\n /**\n * @param {string} type\n * @param {!EventListener} handler\n */\n\n }, {\n key: \"deregisterInteractionHandler\",\n value: function deregisterInteractionHandler(type, handler) {}\n }, {\n key: \"activateInputRipple\",\n value: function activateInputRipple() {}\n }, {\n key: \"deactivateInputRipple\",\n value: function deactivateInputRipple() {}\n }]);\n\n return MDCFormFieldAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCFormFieldAdapter);\n\n/***/ }),\n/* 96 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\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\n/** @enum {string} */\nvar cssClasses = {\n ROOT: 'mdc-form-field'\n};\n\n/** @enum {string} */\nvar strings = {\n LABEL_SELECTOR: '.mdc-form-field > label'\n};\n\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCGridList\", function() { return MDCGridList; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(98);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCGridListFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\"]; });\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\nvar MDCGridList = function (_MDCComponent) {\n _inherits(MDCGridList, _MDCComponent);\n\n function MDCGridList() {\n _classCallCheck(this, MDCGridList);\n\n return _possibleConstructorReturn(this, (MDCGridList.__proto__ || Object.getPrototypeOf(MDCGridList)).apply(this, arguments));\n }\n\n _createClass(MDCGridList, [{\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */]({\n getOffsetWidth: function getOffsetWidth() {\n return _this2.root_.offsetWidth;\n },\n getNumberOfTiles: function getNumberOfTiles() {\n return _this2.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */].strings.TILE_SELECTOR).length;\n },\n getOffsetWidthForTileAtIndex: function getOffsetWidthForTileAtIndex(index) {\n return _this2.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */].strings.TILE_SELECTOR)[index].offsetWidth;\n },\n setStyleForTilesElement: function setStyleForTilesElement(property, value) {\n _this2.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */].strings.TILES_SELECTOR).style[property] = value;\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 });\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCGridList(root);\n }\n }]);\n\n return MDCGridList;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n/***/ }),\n/* 98 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(99);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\nvar MDCGridListFoundation = function (_MDCFoundation) {\n _inherits(MDCGridListFoundation, _MDCFoundation);\n\n _createClass(MDCGridListFoundation, null, [{\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* strings */];\n }\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return {\n getOffsetWidth: function getOffsetWidth() {\n return (/* number */0\n );\n },\n getNumberOfTiles: function getNumberOfTiles() {\n return (/* number */0\n );\n },\n getOffsetWidthForTileAtIndex: function getOffsetWidthForTileAtIndex() {\n return (/* index: number */ /* number */0\n );\n },\n setStyleForTilesElement: function setStyleForTilesElement() /* property: string, value: string */{},\n registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},\n deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{}\n };\n }\n }]);\n\n function MDCGridListFoundation(adapter) {\n _classCallCheck(this, MDCGridListFoundation);\n\n var _this = _possibleConstructorReturn(this, (MDCGridListFoundation.__proto__ || Object.getPrototypeOf(MDCGridListFoundation)).call(this, _extends(MDCGridListFoundation.defaultAdapter, adapter)));\n\n _this.resizeHandler_ = function () {\n return _this.alignCenter();\n };\n _this.resizeFrame_ = 0;\n return _this;\n }\n\n _createClass(MDCGridListFoundation, [{\n key: 'init',\n value: function init() {\n this.alignCenter();\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n }\n }, {\n key: 'alignCenter',\n value: function alignCenter() {\n var _this2 = this;\n\n if (this.resizeFrame_ !== 0) {\n cancelAnimationFrame(this.resizeFrame_);\n }\n this.resizeFrame_ = requestAnimationFrame(function () {\n _this2.alignCenter_();\n _this2.resizeFrame_ = 0;\n });\n }\n }, {\n key: 'alignCenter_',\n value: function alignCenter_() {\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 }]);\n\n return MDCGridListFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCGridListFoundation);\n\n/***/ }),\n/* 99 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return strings; });\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 */\nvar strings = {\n TILES_SELECTOR: '.mdc-grid-list__tiles',\n TILE_SELECTOR: '.mdc-grid-tile'\n};\n\n/***/ }),\n/* 100 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCIconButtonToggle\", function() { return MDCIconButtonToggle; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(101);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__ = __webpack_require__(2);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCIconButtonToggleFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\"]; });\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCIconButtonToggleFoundation>}\n */\n\nvar MDCIconButtonToggle = function (_MDCComponent) {\n _inherits(MDCIconButtonToggle, _MDCComponent);\n\n _createClass(MDCIconButtonToggle, null, [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCIconButtonToggle(root);\n }\n }]);\n\n function MDCIconButtonToggle() {\n var _ref;\n\n _classCallCheck(this, MDCIconButtonToggle);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {!MDCRipple} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCIconButtonToggle.__proto__ || Object.getPrototypeOf(MDCIconButtonToggle)).call.apply(_ref, [this].concat(args)));\n\n _this.ripple_ = _this.initRipple_();\n /** @private {!Function} */\n _this.handleClick_;\n return _this;\n }\n\n /**\n * @return {!MDCRipple}\n * @private\n */\n\n\n _createClass(MDCIconButtonToggle, [{\n key: 'initRipple_',\n value: function initRipple_() {\n var ripple = new __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__[\"MDCRipple\"](this.root_);\n ripple.unbounded = true;\n return ripple;\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.root_.removeEventListener('click', this.handleClick_);\n this.ripple_.destroy();\n _get(MDCIconButtonToggle.prototype.__proto__ || Object.getPrototypeOf(MDCIconButtonToggle.prototype), 'destroy', this).call(this);\n }\n\n /** @return {!MDCIconButtonToggleFoundation} */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */]({\n addClass: function addClass(className) {\n return _this2.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this2.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this2.root_.classList.contains(className);\n },\n setAttr: function setAttr(attrName, attrValue) {\n return _this2.root_.setAttribute(attrName, attrValue);\n },\n notifyChange: function notifyChange(evtData) {\n return _this2.emit(__WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */].strings.CHANGE_EVENT, evtData);\n }\n });\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n this.handleClick_ = this.foundation_.handleClick.bind(this.foundation_);\n this.root_.addEventListener('click', this.handleClick_);\n }\n\n /** @return {!MDCRipple} */\n\n }, {\n key: 'ripple',\n get: function get() {\n return this.ripple_;\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'on',\n get: function get() {\n return this.foundation_.isOn();\n }\n\n /** @param {boolean} isOn */\n ,\n set: function set(isOn) {\n this.foundation_.toggle(isOn);\n }\n }]);\n\n return MDCIconButtonToggle;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(102);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(103);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n/* eslint-disable no-unused-vars */\n\n\n\n/**\n * @extends {MDCFoundation<!MDCIconButtonToggleAdapter>}\n */\n\nvar MDCIconButtonToggleFoundation = function (_MDCFoundation) {\n _inherits(MDCIconButtonToggleFoundation, _MDCFoundation);\n\n _createClass(MDCIconButtonToggleFoundation, null, [{\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return {\n addClass: function addClass() {},\n removeClass: function removeClass() {},\n hasClass: function hasClass() {},\n setAttr: function setAttr() {},\n notifyChange: function notifyChange() {}\n };\n }\n }]);\n\n function MDCIconButtonToggleFoundation(adapter) {\n _classCallCheck(this, MDCIconButtonToggleFoundation);\n\n /** @private {boolean} */\n var _this = _possibleConstructorReturn(this, (MDCIconButtonToggleFoundation.__proto__ || Object.getPrototypeOf(MDCIconButtonToggleFoundation)).call(this, _extends(MDCIconButtonToggleFoundation.defaultAdapter, adapter)));\n\n _this.disabled_ = false;\n return _this;\n }\n\n _createClass(MDCIconButtonToggleFoundation, [{\n key: 'init',\n value: function init() {\n this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_PRESSED, '' + this.isOn());\n }\n }, {\n key: 'handleClick',\n value: function handleClick() {\n this.toggle();\n this.adapter_.notifyChange( /** @type {!IconButtonToggleEvent} */{ isOn: this.isOn() });\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'isOn',\n value: function isOn() {\n return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].ICON_BUTTON_ON);\n }\n\n /** @param {boolean=} isOn */\n\n }, {\n key: 'toggle',\n value: function toggle() {\n var isOn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !this.isOn();\n\n if (isOn) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].ICON_BUTTON_ON);\n } else {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].ICON_BUTTON_ON);\n }\n\n this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_PRESSED, '' + isOn);\n }\n }]);\n\n return MDCIconButtonToggleFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/** @record */\n\n\nvar IconButtonToggleState = function IconButtonToggleState() {\n _classCallCheck(this, IconButtonToggleState);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCIconButtonToggleFoundation);\n\n/***/ }),\n/* 102 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export MDCIconButtonToggleAdapter */\n/* unused harmony export IconButtonToggleEvent */\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Icon Button Toggle. Provides an interface for managing\n * - classes\n * - dom\n * - inner text\n * - event handlers\n * - event dispatch\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\n\nvar MDCIconButtonToggleAdapter = function () {\n function MDCIconButtonToggleAdapter() {\n _classCallCheck(this, MDCIconButtonToggleAdapter);\n }\n\n _createClass(MDCIconButtonToggleAdapter, [{\n key: \"addClass\",\n\n /** @param {string} className */\n value: function addClass(className) {}\n\n /** @param {string} className */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * @param {string} className\n * @return {boolean}\n * */\n\n }, {\n key: \"hasClass\",\n value: function hasClass(className) {}\n\n /**\n * @param {string} attrName\n * @param {string} attrValue\n */\n\n }, {\n key: \"setAttr\",\n value: function setAttr(attrName, attrValue) {}\n\n /** @param {!IconButtonToggleEvent} evtData */\n\n }, {\n key: \"notifyChange\",\n value: function notifyChange(evtData) {}\n }]);\n\n return MDCIconButtonToggleAdapter;\n}();\n\n/**\n * @typedef {{\n * isOn: boolean,\n * }}\n */\n\n\nvar IconButtonToggleEvent = void 0;\n\n\n\n/***/ }),\n/* 103 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\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\n/** @enum {string} */\nvar cssClasses = {\n ROOT: 'mdc-icon-button',\n ICON_BUTTON_ON: 'mdc-icon-button--on'\n};\n\n/** @enum {string} */\nvar strings = {\n ARIA_PRESSED: 'aria-pressed',\n CHANGE_EVENT: 'MDCIconButtonToggle:change'\n};\n\n\n\n/***/ }),\n/* 104 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCIconToggle\", function() { return MDCIconToggle; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(105);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__ = __webpack_require__(2);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCIconToggleFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCIconToggleFoundation>}\n */\n\nvar MDCIconToggle = function (_MDCComponent) {\n _inherits(MDCIconToggle, _MDCComponent);\n\n _createClass(MDCIconToggle, null, [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCIconToggle(root);\n }\n }]);\n\n function MDCIconToggle() {\n var _ref;\n\n _classCallCheck(this, MDCIconToggle);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {!MDCRipple} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCIconToggle.__proto__ || Object.getPrototypeOf(MDCIconToggle)).call.apply(_ref, [this].concat(args)));\n\n _this.ripple_ = _this.initRipple_();\n return _this;\n }\n\n /** @return {!Element} */\n\n\n _createClass(MDCIconToggle, [{\n key: 'initRipple_',\n\n\n /**\n * @return {!MDCRipple}\n * @private\n */\n value: function initRipple_() {\n var _this2 = this;\n\n var adapter = _extends(__WEBPACK_IMPORTED_MODULE_2__material_ripple_index__[\"MDCRipple\"].createAdapter(this), {\n isUnbounded: function isUnbounded() {\n return true;\n },\n isSurfaceActive: function isSurfaceActive() {\n return _this2.foundation_.isKeyboardActivated();\n }\n });\n var foundation = new __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__[\"MDCRippleFoundation\"](adapter);\n return new __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__[\"MDCRipple\"](this.root_, foundation);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.ripple_.destroy();\n _get(MDCIconToggle.prototype.__proto__ || Object.getPrototypeOf(MDCIconToggle.prototype), 'destroy', this).call(this);\n }\n\n /** @return {!MDCIconToggleFoundation} */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this3 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */]({\n addClass: function addClass(className) {\n return _this3.iconEl_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this3.iconEl_.classList.remove(className);\n },\n registerInteractionHandler: function registerInteractionHandler(type, handler) {\n return _this3.root_.addEventListener(type, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {\n return _this3.root_.removeEventListener(type, handler);\n },\n setText: function setText(text) {\n return _this3.iconEl_.textContent = text;\n },\n getTabIndex: function getTabIndex() {\n return (/* number */_this3.root_.tabIndex\n );\n },\n setTabIndex: function setTabIndex(tabIndex) {\n return _this3.root_.tabIndex = tabIndex;\n },\n getAttr: function getAttr(name, value) {\n return _this3.root_.getAttribute(name, value);\n },\n setAttr: function setAttr(name, value) {\n return _this3.root_.setAttribute(name, value);\n },\n rmAttr: function rmAttr(name) {\n return _this3.root_.removeAttribute(name);\n },\n notifyChange: function notifyChange(evtData) {\n return _this3.emit(__WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */].strings.CHANGE_EVENT, evtData);\n }\n });\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n this.on = this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */].strings.ARIA_PRESSED) === 'true';\n this.disabled = this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */].strings.ARIA_DISABLED) === 'true';\n }\n\n /** @return {!MDCRipple} */\n\n }, {\n key: 'refreshToggleData',\n value: function refreshToggleData() {\n this.foundation_.refreshToggleData();\n }\n }, {\n key: 'iconEl_',\n get: function get() {\n var sel = this.root_.dataset['iconInnerSelector'];\n\n return sel ?\n /** @type {!Element} */this.root_.querySelector(sel) : this.root_;\n }\n }, {\n key: 'ripple',\n get: function get() {\n return this.ripple_;\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'on',\n get: function get() {\n return this.foundation_.isOn();\n }\n\n /** @param {boolean} isOn */\n ,\n set: function set(isOn) {\n this.foundation_.toggle(isOn);\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'disabled',\n get: function get() {\n return this.foundation_.isDisabled();\n }\n\n /** @param {boolean} isDisabled */\n ,\n set: function set(isDisabled) {\n this.foundation_.setDisabled(isDisabled);\n }\n }]);\n\n return MDCIconToggle;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 105 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(106);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(107);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n/* eslint-disable no-unused-vars */\n\n\n\n/**\n * @extends {MDCFoundation<!MDCIconToggleAdapter>}\n */\n\nvar MDCIconToggleFoundation = function (_MDCFoundation) {\n _inherits(MDCIconToggleFoundation, _MDCFoundation);\n\n _createClass(MDCIconToggleFoundation, null, [{\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return {\n addClass: function addClass() /* className: string */{},\n removeClass: function removeClass() /* className: string */{},\n registerInteractionHandler: function registerInteractionHandler() /* type: string, handler: EventListener */{},\n deregisterInteractionHandler: function deregisterInteractionHandler() /* type: string, handler: EventListener */{},\n setText: function setText() /* text: string */{},\n getTabIndex: function getTabIndex() {\n return (/* number */0\n );\n },\n setTabIndex: function setTabIndex() /* tabIndex: number */{},\n getAttr: function getAttr() {\n return (/* name: string */ /* string */''\n );\n },\n setAttr: function setAttr() /* name: string, value: string */{},\n rmAttr: function rmAttr() /* name: string */{},\n notifyChange: function notifyChange() /* evtData: IconToggleEvent */{}\n };\n }\n }]);\n\n function MDCIconToggleFoundation(adapter) {\n _classCallCheck(this, MDCIconToggleFoundation);\n\n /** @private {boolean} */\n var _this = _possibleConstructorReturn(this, (MDCIconToggleFoundation.__proto__ || Object.getPrototypeOf(MDCIconToggleFoundation)).call(this, _extends(MDCIconToggleFoundation.defaultAdapter, adapter)));\n\n _this.on_ = false;\n\n /** @private {boolean} */\n _this.disabled_ = false;\n\n /** @private {number} */\n _this.savedTabIndex_ = -1;\n\n /** @private {?IconToggleState} */\n _this.toggleOnData_ = null;\n\n /** @private {?IconToggleState} */\n _this.toggleOffData_ = null;\n\n _this.clickHandler_ = /** @private {!EventListener} */function () {\n return _this.toggleFromEvt_();\n };\n\n /** @private {boolean} */\n _this.isHandlingKeydown_ = false;\n\n _this.keydownHandler_ = /** @private {!EventListener} */function ( /** @type {!KeyboardKey} */evt) {\n if (isSpace(evt)) {\n _this.isHandlingKeydown_ = true;\n return evt.preventDefault();\n }\n };\n\n _this.keyupHandler_ = /** @private {!EventListener} */function ( /** @type {!KeyboardKey} */evt) {\n if (isSpace(evt)) {\n _this.isHandlingKeydown_ = false;\n _this.toggleFromEvt_();\n }\n };\n return _this;\n }\n\n _createClass(MDCIconToggleFoundation, [{\n key: 'init',\n value: function init() {\n this.refreshToggleData();\n this.savedTabIndex_ = this.adapter_.getTabIndex();\n this.adapter_.registerInteractionHandler('click', this.clickHandler_);\n this.adapter_.registerInteractionHandler('keydown', this.keydownHandler_);\n this.adapter_.registerInteractionHandler('keyup', this.keyupHandler_);\n }\n }, {\n key: 'refreshToggleData',\n value: function refreshToggleData() {\n var _MDCIconToggleFoundat = MDCIconToggleFoundation.strings,\n DATA_TOGGLE_ON = _MDCIconToggleFoundat.DATA_TOGGLE_ON,\n DATA_TOGGLE_OFF = _MDCIconToggleFoundat.DATA_TOGGLE_OFF;\n\n this.toggleOnData_ = this.parseJsonDataAttr_(DATA_TOGGLE_ON);\n this.toggleOffData_ = this.parseJsonDataAttr_(DATA_TOGGLE_OFF);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.adapter_.deregisterInteractionHandler('click', this.clickHandler_);\n this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_);\n this.adapter_.deregisterInteractionHandler('keyup', this.keyupHandler_);\n }\n\n /** @private */\n\n }, {\n key: 'toggleFromEvt_',\n value: function toggleFromEvt_() {\n this.toggle();\n var isOn = this.on_;\n\n this.adapter_.notifyChange( /** @type {!IconToggleEvent} */{ isOn: isOn });\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'isOn',\n value: function isOn() {\n return this.on_;\n }\n\n /** @param {boolean=} isOn */\n\n }, {\n key: 'toggle',\n value: function toggle() {\n var isOn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !this.on_;\n\n this.on_ = isOn;\n\n var _MDCIconToggleFoundat2 = MDCIconToggleFoundation.strings,\n ARIA_LABEL = _MDCIconToggleFoundat2.ARIA_LABEL,\n ARIA_PRESSED = _MDCIconToggleFoundat2.ARIA_PRESSED;\n\n\n if (this.on_) {\n this.adapter_.setAttr(ARIA_PRESSED, 'true');\n } else {\n this.adapter_.setAttr(ARIA_PRESSED, 'false');\n }\n\n var _ref = this.on_ ? this.toggleOffData_ : this.toggleOnData_,\n classToRemove = _ref.cssClass;\n\n if (classToRemove) {\n this.adapter_.removeClass(classToRemove);\n }\n\n var _ref2 = this.on_ ? this.toggleOnData_ : this.toggleOffData_,\n content = _ref2.content,\n label = _ref2.label,\n cssClass = _ref2.cssClass;\n\n if (cssClass) {\n this.adapter_.addClass(cssClass);\n }\n if (content) {\n this.adapter_.setText(content);\n }\n if (label) {\n this.adapter_.setAttr(ARIA_LABEL, label);\n }\n }\n\n /**\n * @param {string} dataAttr\n * @return {!IconToggleState}\n */\n\n }, {\n key: 'parseJsonDataAttr_',\n value: function parseJsonDataAttr_(dataAttr) {\n var val = this.adapter_.getAttr(dataAttr);\n if (!val) {\n return {};\n }\n return (/** @type {!IconToggleState} */JSON.parse(val)\n );\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'isDisabled',\n value: function isDisabled() {\n return this.disabled_;\n }\n\n /** @param {boolean} isDisabled */\n\n }, {\n key: 'setDisabled',\n value: function setDisabled(isDisabled) {\n this.disabled_ = isDisabled;\n\n var DISABLED = MDCIconToggleFoundation.cssClasses.DISABLED;\n var ARIA_DISABLED = MDCIconToggleFoundation.strings.ARIA_DISABLED;\n\n\n if (this.disabled_) {\n this.savedTabIndex_ = this.adapter_.getTabIndex();\n this.adapter_.setTabIndex(-1);\n this.adapter_.setAttr(ARIA_DISABLED, 'true');\n this.adapter_.addClass(DISABLED);\n } else {\n this.adapter_.setTabIndex(this.savedTabIndex_);\n this.adapter_.rmAttr(ARIA_DISABLED);\n this.adapter_.removeClass(DISABLED);\n }\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'isKeyboardActivated',\n value: function isKeyboardActivated() {\n return this.isHandlingKeydown_;\n }\n }]);\n\n return MDCIconToggleFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/**\n * @typedef {{\n * key: string,\n * keyCode: number\n * }}\n */\n\n\nvar KeyboardKey = void 0;\n\n/**\n * @param {!KeyboardKey} keyboardKey\n * @return {boolean}\n */\nfunction isSpace(keyboardKey) {\n return keyboardKey.key === 'Space' || keyboardKey.keyCode === 32;\n}\n\n/** @record */\n\nvar IconToggleState = function IconToggleState() {\n _classCallCheck(this, IconToggleState);\n};\n\n/**\n * The aria-label value of the icon toggle, or undefined if there is no aria-label.\n * @export {string|undefined}\n */\n\n\nIconToggleState.prototype.label;\n\n/**\n * The text for the icon toggle, or undefined if there is no text.\n * @export {string|undefined}\n */\nIconToggleState.prototype.content;\n\n/**\n * The CSS class to add to the icon toggle, or undefined if there is no CSS class.\n * @export {string|undefined}\n */\nIconToggleState.prototype.cssClass;\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCIconToggleFoundation);\n\n/***/ }),\n/* 106 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export MDCIconToggleAdapter */\n/* unused harmony export IconToggleEvent */\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Icon Toggle. Provides an interface for managing\n * - classes\n * - dom\n * - inner text\n * - event handlers\n * - event dispatch\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\n\nvar MDCIconToggleAdapter = function () {\n function MDCIconToggleAdapter() {\n _classCallCheck(this, MDCIconToggleAdapter);\n }\n\n _createClass(MDCIconToggleAdapter, [{\n key: \"addClass\",\n\n /** @param {string} className */\n value: function addClass(className) {}\n\n /** @param {string} className */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /**\n * @param {string} type\n * @param {!EventListener} handler\n */\n\n }, {\n key: \"registerInteractionHandler\",\n value: function registerInteractionHandler(type, handler) {}\n\n /**\n * @param {string} type\n * @param {!EventListener} handler\n */\n\n }, {\n key: \"deregisterInteractionHandler\",\n value: function deregisterInteractionHandler(type, handler) {}\n\n /** @param {string} text */\n\n }, {\n key: \"setText\",\n value: function setText(text) {}\n\n /** @return {number} */\n\n }, {\n key: \"getTabIndex\",\n value: function getTabIndex() {}\n\n /** @param {number} tabIndex */\n\n }, {\n key: \"setTabIndex\",\n value: function setTabIndex(tabIndex) {}\n\n /**\n * @param {string} name\n * @return {string}\n */\n\n }, {\n key: \"getAttr\",\n value: function getAttr(name) {}\n\n /**\n * @param {string} name\n * @param {string} value\n */\n\n }, {\n key: \"setAttr\",\n value: function setAttr(name, value) {}\n\n /** @param {string} name */\n\n }, {\n key: \"rmAttr\",\n value: function rmAttr(name) {}\n\n /** @param {!IconToggleEvent} evtData */\n\n }, {\n key: \"notifyChange\",\n value: function notifyChange(evtData) {}\n }]);\n\n return MDCIconToggleAdapter;\n}();\n\n/**\n * @typedef {{\n * isOn: boolean,\n * }}\n */\n\n\nvar IconToggleEvent = void 0;\n\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\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\n/** @enum {string} */\nvar cssClasses = {\n ROOT: 'mdc-icon-toggle',\n DISABLED: 'mdc-icon-toggle--disabled'\n};\n\n/** @enum {string} */\nvar strings = {\n DATA_TOGGLE_ON: 'data-toggle-on',\n DATA_TOGGLE_OFF: 'data-toggle-off',\n ARIA_PRESSED: 'aria-pressed',\n ARIA_DISABLED: 'aria-disabled',\n ARIA_LABEL: 'aria-label',\n CHANGE_EVENT: 'MDCIconToggle:change'\n};\n\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCLinearProgress\", function() { return MDCLinearProgress; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(109);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCLinearProgressFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\"]; });\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\nvar MDCLinearProgress = function (_MDCComponent) {\n _inherits(MDCLinearProgress, _MDCComponent);\n\n function MDCLinearProgress() {\n _classCallCheck(this, MDCLinearProgress);\n\n return _possibleConstructorReturn(this, (MDCLinearProgress.__proto__ || Object.getPrototypeOf(MDCLinearProgress)).apply(this, arguments));\n }\n\n _createClass(MDCLinearProgress, [{\n key: 'open',\n value: function open() {\n this.foundation_.open();\n }\n }, {\n key: 'close',\n value: function close() {\n this.foundation_.close();\n }\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */]({\n addClass: function addClass(className) {\n return _this2.root_.classList.add(className);\n },\n getPrimaryBar: function getPrimaryBar() {\n return _this2.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */].strings.PRIMARY_BAR_SELECTOR);\n },\n getBuffer: function getBuffer() {\n return _this2.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */].strings.BUFFER_SELECTOR);\n },\n hasClass: function hasClass(className) {\n return _this2.root_.classList.contains(className);\n },\n removeClass: function removeClass(className) {\n return _this2.root_.classList.remove(className);\n },\n setStyle: function setStyle(el, styleProperty, value) {\n return el.style[styleProperty] = value;\n }\n });\n }\n }, {\n key: 'determinate',\n set: function set(value) {\n this.foundation_.setDeterminate(value);\n }\n }, {\n key: 'progress',\n set: function set(value) {\n this.foundation_.setProgress(value);\n }\n }, {\n key: 'buffer',\n set: function set(value) {\n this.foundation_.setBuffer(value);\n }\n }, {\n key: 'reverse',\n set: function set(value) {\n this.foundation_.setReverse(value);\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCLinearProgress(root);\n }\n }]);\n\n return MDCLinearProgress;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n/***/ }),\n/* 109 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_animation_index__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(110);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\nvar MDCLinearProgressFoundation = function (_MDCFoundation) {\n _inherits(MDCLinearProgressFoundation, _MDCFoundation);\n\n _createClass(MDCLinearProgressFoundation, null, [{\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return {\n addClass: function addClass() /* className: string */{},\n getPrimaryBar: function getPrimaryBar() /* el: Element */{},\n getBuffer: function getBuffer() /* el: Element */{},\n hasClass: function hasClass() {\n return (/* className: string */false\n );\n },\n removeClass: function removeClass() /* className: string */{},\n setStyle: function setStyle() /* el: Element, styleProperty: string, value: string */{}\n };\n }\n }]);\n\n function MDCLinearProgressFoundation(adapter) {\n _classCallCheck(this, MDCLinearProgressFoundation);\n\n return _possibleConstructorReturn(this, (MDCLinearProgressFoundation.__proto__ || Object.getPrototypeOf(MDCLinearProgressFoundation)).call(this, _extends(MDCLinearProgressFoundation.defaultAdapter, adapter)));\n }\n\n _createClass(MDCLinearProgressFoundation, [{\n key: 'init',\n value: function init() {\n this.determinate_ = !this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].INDETERMINATE_CLASS);\n this.reverse_ = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].REVERSED_CLASS);\n this.progress_ = 0;\n }\n }, {\n key: 'setDeterminate',\n value: function setDeterminate(isDeterminate) {\n this.determinate_ = isDeterminate;\n if (this.determinate_) {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].INDETERMINATE_CLASS);\n this.setScale_(this.adapter_.getPrimaryBar(), this.progress_);\n } else {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].INDETERMINATE_CLASS);\n this.setScale_(this.adapter_.getPrimaryBar(), 1);\n this.setScale_(this.adapter_.getBuffer(), 1);\n }\n }\n }, {\n key: 'setProgress',\n value: function setProgress(value) {\n this.progress_ = value;\n if (this.determinate_) {\n this.setScale_(this.adapter_.getPrimaryBar(), value);\n }\n }\n }, {\n key: 'setBuffer',\n value: function setBuffer(value) {\n if (this.determinate_) {\n this.setScale_(this.adapter_.getBuffer(), value);\n }\n }\n }, {\n key: 'setReverse',\n value: function setReverse(isReversed) {\n this.reverse_ = isReversed;\n if (this.reverse_) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].REVERSED_CLASS);\n } else {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].REVERSED_CLASS);\n }\n }\n }, {\n key: 'open',\n value: function open() {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CLOSED_CLASS);\n }\n }, {\n key: 'close',\n value: function close() {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CLOSED_CLASS);\n }\n }, {\n key: 'setScale_',\n value: function setScale_(el, scaleValue) {\n var _this2 = this;\n\n var value = 'scaleX(' + scaleValue + ')';\n __WEBPACK_IMPORTED_MODULE_1__material_animation_index__[\"c\" /* transformStyleProperties */].forEach(function (transformStyleProperty) {\n _this2.adapter_.setStyle(el, transformStyleProperty, value);\n });\n }\n }]);\n\n return MDCLinearProgressFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCLinearProgressFoundation);\n\n/***/ }),\n/* 110 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\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 cssClasses = {\n CLOSED_CLASS: 'mdc-linear-progress--closed',\n INDETERMINATE_CLASS: 'mdc-linear-progress--indeterminate',\n REVERSED_CLASS: 'mdc-linear-progress--reversed'\n};\n\nvar strings = {\n PRIMARY_BAR_SELECTOR: '.mdc-linear-progress__primary-bar',\n BUFFER_SELECTOR: '.mdc-linear-progress__buffer'\n};\n\n/***/ }),\n/* 111 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(112);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCLineRippleAdapter>}\n * @final\n */\n\nvar MDCLineRippleFoundation = function (_MDCFoundation) {\n _inherits(MDCLineRippleFoundation, _MDCFoundation);\n\n _createClass(MDCLineRippleFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n\n /**\n * {@see MDCLineRippleAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCLineRippleAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCLineRippleAdapter} */{\n addClass: function addClass() {},\n removeClass: function removeClass() {},\n hasClass: function hasClass() {},\n setStyle: function setStyle() {},\n registerEventHandler: function registerEventHandler() {},\n deregisterEventHandler: function deregisterEventHandler() {}\n }\n );\n }\n\n /**\n * @param {!MDCLineRippleAdapter=} adapter\n */\n\n }]);\n\n function MDCLineRippleFoundation(adapter) {\n _classCallCheck(this, MDCLineRippleFoundation);\n\n /** @private {function(!Event): undefined} */\n var _this = _possibleConstructorReturn(this, (MDCLineRippleFoundation.__proto__ || Object.getPrototypeOf(MDCLineRippleFoundation)).call(this, _extends(MDCLineRippleFoundation.defaultAdapter, adapter)));\n\n _this.transitionEndHandler_ = function (evt) {\n return _this.handleTransitionEnd(evt);\n };\n return _this;\n }\n\n _createClass(MDCLineRippleFoundation, [{\n key: 'init',\n value: function init() {\n this.adapter_.registerEventHandler('transitionend', this.transitionEndHandler_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.adapter_.deregisterEventHandler('transitionend', this.transitionEndHandler_);\n }\n\n /**\n * Activates the line ripple\n */\n\n }, {\n key: 'activate',\n value: function activate() {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].LINE_RIPPLE_DEACTIVATING);\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].LINE_RIPPLE_ACTIVE);\n }\n\n /**\n * Sets the center of the ripple animation to the given X coordinate.\n * @param {number} xCoordinate\n */\n\n }, {\n key: 'setRippleCenter',\n value: function setRippleCenter(xCoordinate) {\n this.adapter_.setStyle('transform-origin', xCoordinate + 'px center');\n }\n\n /**\n * Deactivates the line ripple\n */\n\n }, {\n key: 'deactivate',\n value: function deactivate() {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].LINE_RIPPLE_DEACTIVATING);\n }\n\n /**\n * Handles a transition end event\n * @param {!Event} evt\n */\n\n }, {\n key: 'handleTransitionEnd',\n value: function handleTransitionEnd(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(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].LINE_RIPPLE_DEACTIVATING);\n\n if (evt.propertyName === 'opacity') {\n if (isDeactivating) {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].LINE_RIPPLE_ACTIVE);\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].LINE_RIPPLE_DEACTIVATING);\n }\n }\n }\n }]);\n\n return MDCLineRippleFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCLineRippleFoundation);\n\n/***/ }),\n/* 112 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\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\n/** @enum {string} */\nvar cssClasses = {\n LINE_RIPPLE_ACTIVE: 'mdc-line-ripple--active',\n LINE_RIPPLE_DEACTIVATING: 'mdc-line-ripple--deactivating'\n};\n\n\n\n/***/ }),\n/* 113 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return MDCMenuFoundation; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(114);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_foundation__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_list_foundation__ = __webpack_require__(15);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCMenuAdapter>}\n */\n\nvar MDCMenuFoundation = function (_MDCFoundation) {\n _inherits(MDCMenuFoundation, _MDCFoundation);\n\n _createClass(MDCMenuFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum{cssClasses} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum{strings} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n\n /**\n * {@see MDCMenuAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCMenuAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCMenuAdapter} */{\n addClassToElementAtIndex: function addClassToElementAtIndex() {},\n removeClassFromElementAtIndex: function removeClassFromElementAtIndex() {},\n addAttributeToElementAtIndex: function addAttributeToElementAtIndex() {},\n removeAttributeFromElementAtIndex: function removeAttributeFromElementAtIndex() {},\n elementContainsClass: function elementContainsClass() {},\n closeSurface: function closeSurface() {},\n getElementIndex: function getElementIndex() {},\n getParentElement: function getParentElement() {},\n getSelectedElementIndex: function getSelectedElementIndex() {},\n notifySelected: function notifySelected() {}\n }\n );\n }\n\n /** @param {!MDCMenuAdapter} adapter */\n\n }]);\n\n function MDCMenuFoundation(adapter) {\n _classCallCheck(this, MDCMenuFoundation);\n\n /** @type {number} */\n var _this = _possibleConstructorReturn(this, (MDCMenuFoundation.__proto__ || Object.getPrototypeOf(MDCMenuFoundation)).call(this, _extends(MDCMenuFoundation.defaultAdapter, adapter)));\n\n _this.closeAnimationEndTimerId_ = 0;\n return _this;\n }\n\n _createClass(MDCMenuFoundation, [{\n key: 'destroy',\n value: function destroy() {\n if (this.closeAnimationEndTimerId_) {\n clearTimeout(this.closeAnimationEndTimerId_);\n }\n\n this.adapter_.closeSurface();\n }\n\n /**\n * Handler function for the keydown events.\n * @param {!Event} evt\n */\n\n }, {\n key: 'handleKeydown',\n value: function handleKeydown(evt) {\n var key = evt.key,\n keyCode = evt.keyCode;\n\n var isTab = key === 'Tab' || keyCode === 9;\n\n if (isTab) {\n this.adapter_.closeSurface();\n }\n }\n\n /**\n * @param {!HTMLElement} listItem\n */\n\n }, {\n key: 'handleItemAction',\n value: function handleItemAction(listItem) {\n var _this2 = this;\n\n var index = this.adapter_.getElementIndex(listItem);\n if (index < 0) {\n return;\n }\n\n this.adapter_.notifySelected({ index: index });\n this.adapter_.closeSurface();\n\n // Wait for the menu to close before adding/removing classes that affect styles.\n this.closeAnimationEndTimerId_ = setTimeout(function () {\n var selectionGroup = _this2.getSelectionGroup_(listItem);\n\n if (selectionGroup !== null) {\n _this2.handleSelectionGroup_( /** @type {!HTMLElement} */selectionGroup, index);\n }\n }, __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_foundation__[\"b\" /* MDCMenuSurfaceFoundation */].numbers.TRANSITION_CLOSE_DURATION);\n }\n\n /**\n * Handles toggling the selected classes in a selection group when a\n * selection is made.\n * @param {!HTMLElement} selectionGroup\n * @param {number} index The selected index value\n * @private\n */\n\n }, {\n key: 'handleSelectionGroup_',\n value: function handleSelectionGroup_(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, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_SELECTED_ATTR);\n this.adapter_.removeClassFromElementAtIndex(selectedIndex, __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].MENU_SELECTED_LIST_ITEM);\n }\n // Select the new list item in this group.\n this.adapter_.addClassToElementAtIndex(index, __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].MENU_SELECTED_LIST_ITEM);\n this.adapter_.addAttributeToElementAtIndex(index, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_SELECTED_ATTR, 'true');\n }\n\n /**\n * Returns the parent selection group of an element if one exists.\n * @param listItem\n * @return {?HTMLElement} parent selection group element or null.\n * @private\n */\n\n }, {\n key: 'getSelectionGroup_',\n value: function getSelectionGroup_(listItem) {\n var parent = this.adapter_.getParentElement(listItem);\n var isGroup = this.adapter_.elementContainsClass(parent, __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].MENU_SELECTION_GROUP);\n\n // Iterate through ancestors until we find the group or get to the list.\n while (!isGroup && !this.adapter_.elementContainsClass(parent, __WEBPACK_IMPORTED_MODULE_4__material_list_foundation__[\"a\" /* default */].cssClasses.ROOT)) {\n parent = this.adapter_.getParentElement(parent);\n isGroup = this.adapter_.elementContainsClass(parent, __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].MENU_SELECTION_GROUP);\n }\n\n if (isGroup) {\n return parent;\n } else {\n return null;\n }\n }\n\n /**\n * Find the first ancestor with the mdc-list-item class.\n * @param {?HTMLElement} target\n * @return {?HTMLElement}\n * @private\n */\n\n }, {\n key: 'getListItem_',\n value: function getListItem_(target) {\n var isListItem = this.adapter_.elementContainsClass(target, __WEBPACK_IMPORTED_MODULE_4__material_list_foundation__[\"a\" /* default */].cssClasses.LIST_ITEM_CLASS);\n\n while (!isListItem) {\n target = this.adapter_.getParentElement(target);\n if (target) {\n isListItem = this.adapter_.elementContainsClass(target, __WEBPACK_IMPORTED_MODULE_4__material_list_foundation__[\"a\" /* default */].cssClasses.LIST_ITEM_CLASS);\n } else {\n // target has no parent element.\n return null;\n }\n }\n\n return target;\n }\n }]);\n\n return MDCMenuFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 114 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export MDCMenuAdapter */\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Menu. Provides an interface for managing\n * - selected element classes\n * - get focused elements\n * - toggling a checkbox inside a list item\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nvar MDCMenuAdapter = function () {\n function MDCMenuAdapter() {\n _classCallCheck(this, MDCMenuAdapter);\n }\n\n _createClass(MDCMenuAdapter, [{\n key: \"addClassToElementAtIndex\",\n\n /**\n * Adds a class to the element at the index provided.\n * @param {number} index\n * @param {string} className\n */\n value: function addClassToElementAtIndex(index, className) {}\n\n /**\n * Removes a class from the element at the index provided\n * @param {number} index\n * @param {string} className\n */\n\n }, {\n key: \"removeClassFromElementAtIndex\",\n value: function removeClassFromElementAtIndex(index, className) {}\n\n /**\n * Adds an attribute, with value, to the element at the index provided.\n * @param {number} index\n * @param {string} attr\n * @param {string} value\n */\n\n }, {\n key: \"addAttributeToElementAtIndex\",\n value: function addAttributeToElementAtIndex(index, attr, value) {}\n\n /**\n * Removes an attribute from an element at the index provided.\n * @param {number} index\n * @param {string} attr\n */\n\n }, {\n key: \"removeAttributeFromElementAtIndex\",\n value: function removeAttributeFromElementAtIndex(index, attr) {}\n\n /**\n * Returns true if the element contains the className.\n * @param {?HTMLElement} element\n * @param {string} className\n * @return {boolean} true if the element contains the className\n */\n\n }, {\n key: \"elementContainsClass\",\n value: function elementContainsClass(element, className) {}\n\n /**\n * Closes the menu-surface.\n */\n\n }, {\n key: \"closeSurface\",\n value: function closeSurface() {}\n\n /**\n * Returns the index for the element provided.\n * @param {?HTMLElement} element\n * @return {number} index of the element in the list or -1 if it is not in the list.\n */\n\n }, {\n key: \"getElementIndex\",\n value: function getElementIndex(element) {}\n\n /**\n * Returns the parentElement of the provided element.\n * @param {?HTMLElement} element\n * @return {?HTMLElement} parentElement of the element provided.\n */\n\n }, {\n key: \"getParentElement\",\n value: function getParentElement(element) {}\n\n /**\n * Returns the element within the selectionGroup containing the selected element class.\n * @param {!HTMLElement} selectionGroup\n * @return {number} element within the selectionGroup that contains the selected element class.\n */\n\n }, {\n key: \"getSelectedElementIndex\",\n value: function getSelectedElementIndex(selectionGroup) {}\n\n /**\n * Emits an event using the evtData.\n * @param {{\n * index: number\n * }} evtData\n */\n\n }, {\n key: \"notifySelected\",\n value: function notifySelected(evtData) {}\n }]);\n\n return MDCMenuAdapter;\n}();\n\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTransformPropertyName\", function() { return getTransformPropertyName; });\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\n/** @type {string|undefined} */\nvar storedTransformPropertyName_ = void 0;\n\n/**\n * Returns the name of the correct transform property to use on the current browser.\n * @param {!Window} globalObj\n * @param {boolean=} forceRefresh\n * @return {string}\n */\nfunction getTransformPropertyName(globalObj) {\n var forceRefresh = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (storedTransformPropertyName_ === undefined || forceRefresh) {\n var el = globalObj.document.createElement('div');\n var transformPropertyName = 'transform' in el.style ? 'transform' : 'webkitTransform';\n storedTransformPropertyName_ = transformPropertyName;\n }\n\n return storedTransformPropertyName_;\n}\n\n\n\n/***/ }),\n/* 116 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(47);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCNotchedOutlineAdapter>}\n * @final\n */\n\nvar MDCNotchedOutlineFoundation = function (_MDCFoundation) {\n _inherits(MDCNotchedOutlineFoundation, _MDCFoundation);\n\n _createClass(MDCNotchedOutlineFoundation, null, [{\n key: 'strings',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum {number} */\n\n }, {\n key: 'numbers',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* numbers */];\n }\n\n /**\n * {@see MDCNotchedOutlineAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCNotchedOutlineAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCNotchedOutlineAdapter} */{\n addClass: function addClass() {},\n removeClass: function removeClass() {},\n setNotchWidthProperty: function setNotchWidthProperty() {},\n removeNotchWidthProperty: function removeNotchWidthProperty() {}\n }\n );\n }\n\n /**\n * @param {!MDCNotchedOutlineAdapter} adapter\n */\n\n }]);\n\n function MDCNotchedOutlineFoundation(adapter) {\n _classCallCheck(this, MDCNotchedOutlineFoundation);\n\n return _possibleConstructorReturn(this, (MDCNotchedOutlineFoundation.__proto__ || Object.getPrototypeOf(MDCNotchedOutlineFoundation)).call(this, _extends(MDCNotchedOutlineFoundation.defaultAdapter, adapter)));\n }\n\n /**\n * Adds the outline notched selector and updates the notch width\n * calculated based off of notchWidth.\n * @param {number} notchWidth\n */\n\n\n _createClass(MDCNotchedOutlineFoundation, [{\n key: 'notch',\n value: function notch(notchWidth) {\n var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED;\n\n\n if (notchWidth > 0) {\n notchWidth += __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* 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\n }, {\n key: 'closeNotch',\n value: function closeNotch() {\n var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED;\n\n this.adapter_.removeClass(OUTLINE_NOTCHED);\n this.adapter_.removeNotchWidthProperty();\n }\n }]);\n\n return MDCNotchedOutlineFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCNotchedOutlineFoundation);\n\n/***/ }),\n/* 117 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCRadio\", function() { return MDCRadio; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_selection_control_index__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(118);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__ = __webpack_require__(2);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCRadioFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n/* eslint-disable no-unused-vars */\n\n/* eslint-enable no-unused-vars */\n\n\n\n/**\n * @extends MDCComponent<!MDCRadioFoundation>\n * @implements {MDCSelectionControl}\n */\n\nvar MDCRadio = function (_MDCComponent) {\n _inherits(MDCRadio, _MDCComponent);\n\n _createClass(MDCRadio, [{\n key: 'checked',\n\n\n /** @return {boolean} */\n get: function get() {\n return this.nativeControl_.checked;\n }\n\n /** @param {boolean} checked */\n ,\n set: function set(checked) {\n this.nativeControl_.checked = checked;\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'disabled',\n get: function get() {\n return this.nativeControl_.disabled;\n }\n\n /** @param {boolean} disabled */\n ,\n set: function set(disabled) {\n this.foundation_.setDisabled(disabled);\n }\n\n /** @return {?string} */\n\n }, {\n key: 'value',\n get: function get() {\n return this.nativeControl_.value;\n }\n\n /** @param {?string} value */\n ,\n set: function set(value) {\n this.nativeControl_.value = value;\n }\n\n /** @return {!MDCRipple} */\n\n }, {\n key: 'ripple',\n get: function get() {\n return this.ripple_;\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCRadio(root);\n }\n }]);\n\n function MDCRadio() {\n var _ref;\n\n _classCallCheck(this, MDCRadio);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {!MDCRipple} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCRadio.__proto__ || Object.getPrototypeOf(MDCRadio)).call.apply(_ref, [this].concat(args)));\n\n _this.ripple_ = _this.initRipple_();\n return _this;\n }\n\n /**\n * @return {!MDCRipple}\n * @private\n */\n\n\n _createClass(MDCRadio, [{\n key: 'initRipple_',\n value: function initRipple_() {\n var _this2 = this;\n\n var adapter = _extends(__WEBPACK_IMPORTED_MODULE_3__material_ripple_index__[\"MDCRipple\"].createAdapter(this), {\n isUnbounded: function isUnbounded() {\n return true;\n },\n // Radio buttons technically go \"active\" whenever there is *any* keyboard interaction. This is not the\n // UI we desire.\n isSurfaceActive: function isSurfaceActive() {\n return false;\n },\n registerInteractionHandler: function registerInteractionHandler(type, handler) {\n return _this2.nativeControl_.addEventListener(type, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {\n return _this2.nativeControl_.removeEventListener(type, handler);\n }\n });\n var foundation = new __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__[\"MDCRippleFoundation\"](adapter);\n return new __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__[\"MDCRipple\"](this.root_, foundation);\n }\n\n /**\n * Returns the state of the native control element, or null if the native control element is not present.\n * @return {?MDCSelectionControlState}\n * @private\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this.ripple_.destroy();\n _get(MDCRadio.prototype.__proto__ || Object.getPrototypeOf(MDCRadio.prototype), 'destroy', this).call(this);\n }\n\n /** @return {!MDCRadioFoundation} */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this3 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */]({\n addClass: function addClass(className) {\n return _this3.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this3.root_.classList.remove(className);\n },\n setNativeControlDisabled: function setNativeControlDisabled(disabled) {\n return _this3.nativeControl_.disabled = disabled;\n }\n });\n }\n }, {\n key: 'nativeControl_',\n get: function get() {\n var NATIVE_CONTROL_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings.NATIVE_CONTROL_SELECTOR;\n\n var el = /** @type {?MDCSelectionControlState} */this.root_.querySelector(NATIVE_CONTROL_SELECTOR);\n return el;\n }\n }]);\n\n return MDCRadio;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 118 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_selection_control_index__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(119);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(120);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n/* eslint-disable no-unused-vars */\n\n\n/* eslint-enable no-unused-vars */\n\n\n/**\n * @extends {MDCFoundation<!MDCRadioAdapter>}\n */\n\nvar MDCRadioFoundation = function (_MDCFoundation) {\n _inherits(MDCRadioFoundation, _MDCFoundation);\n\n function MDCRadioFoundation() {\n _classCallCheck(this, MDCRadioFoundation);\n\n return _possibleConstructorReturn(this, (MDCRadioFoundation.__proto__ || Object.getPrototypeOf(MDCRadioFoundation)).apply(this, arguments));\n }\n\n _createClass(MDCRadioFoundation, [{\n key: 'setDisabled',\n\n\n /** @param {boolean} disabled */\n value: function setDisabled(disabled) {\n var DISABLED = MDCRadioFoundation.cssClasses.DISABLED;\n\n this.adapter_.setNativeControlDisabled(disabled);\n if (disabled) {\n this.adapter_.addClass(DISABLED);\n } else {\n this.adapter_.removeClass(DISABLED);\n }\n }\n }], [{\n key: 'cssClasses',\n\n /** @return enum {cssClasses} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_3__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum {strings} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_3__constants__[\"b\" /* strings */];\n }\n\n /** @return {!MDCRadioAdapter} */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCRadioAdapter} */{\n addClass: function addClass() /* className: string */{},\n removeClass: function removeClass() /* className: string */{},\n setNativeControlDisabled: function setNativeControlDisabled() /* disabled: boolean */{}\n }\n );\n }\n }]);\n\n return MDCRadioFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCRadioFoundation);\n\n/***/ }),\n/* 119 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_selection_control_index__ = __webpack_require__(3);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint-disable no-unused-vars */\n\n\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Radio. Provides an interface for managing\n * - classes\n * - dom\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\n\nvar MDCRadioAdapter = function () {\n function MDCRadioAdapter() {\n _classCallCheck(this, MDCRadioAdapter);\n }\n\n _createClass(MDCRadioAdapter, [{\n key: 'addClass',\n\n /** @param {string} className */\n value: function addClass(className) {}\n\n /** @param {string} className */\n\n }, {\n key: 'removeClass',\n value: function removeClass(className) {}\n\n /** @param {boolean} disabled */\n\n }, {\n key: 'setNativeControlDisabled',\n value: function setNativeControlDisabled(disabled) {}\n }]);\n\n return MDCRadioAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCRadioAdapter);\n\n/***/ }),\n/* 120 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\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\n/** @enum {string} */\nvar strings = {\n NATIVE_CONTROL_SELECTOR: '.mdc-radio__native-control'\n};\n\n/** @enum {string} */\nvar cssClasses = {\n ROOT: 'mdc-radio',\n DISABLED: 'mdc-radio--disabled'\n};\n\n\n\n/***/ }),\n/* 121 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSelect\", function() { return MDCSelect; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_floating_label_index__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_line_ripple_index__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_menu_index__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_notched_outline_index__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__foundation__ = __webpack_require__(122);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__constants__ = __webpack_require__(51);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__adapter__ = __webpack_require__(48);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__icon_index__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__helper_text_index__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__material_menu_constants__ = __webpack_require__(17);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSelectFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_6__foundation__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSelectHelperText\", function() { return __WEBPACK_IMPORTED_MODULE_10__helper_text_index__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSelectHelperTextFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_10__helper_text_index__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSelectIcon\", function() { return __WEBPACK_IMPORTED_MODULE_9__icon_index__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSelectIconFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_9__icon_index__[\"b\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n\n\n\n/* eslint-disable no-unused-vars */\n\n\n\n/* eslint-enable no-unused-vars */\n\n// Closure has issues with {this as that} syntax.\n\n\n\nvar VALIDATION_ATTR_WHITELIST = ['required', 'aria-required'];\n\n/**\n * @extends MDCComponent<!MDCSelectFoundation>\n */\n\nvar MDCSelect = function (_MDCComponent) {\n _inherits(MDCSelect, _MDCComponent);\n\n /**\n * @param {...?} args\n */\n function MDCSelect() {\n var _ref;\n\n _classCallCheck(this, MDCSelect);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {?Element} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCSelect.__proto__ || Object.getPrototypeOf(MDCSelect)).call.apply(_ref, [this].concat(args)));\n\n _this.nativeControl_;\n /** @private {?Element} */\n _this.selectedText_;\n /** @private {?Element} */\n _this.hiddenInput_;\n /** @private {?MDCSelectIcon} */\n _this.leadingIcon_;\n /** @private {?MDCSelectHelperText} */\n _this.helperText_;\n /** @private {?Element} */\n _this.menuElement_;\n /** @type {?MDCMenu} */\n _this.menu_;\n /** @type {?MDCRipple} */\n _this.ripple;\n /** @private {?MDCLineRipple} */\n _this.lineRipple_;\n /** @private {?MDCFloatingLabel} */\n _this.label_;\n /** @private {?MDCNotchedOutline} */\n _this.outline_;\n /** @private {!Function} */\n _this.handleChange_;\n /** @private {!Function} */\n _this.handleFocus_;\n /** @private {!Function} */\n _this.handleBlur_;\n /** @private {!Function} */\n _this.handleClick_;\n /** @private {!Function} */\n _this.handleKeydown_;\n /** @private {!Function} */\n _this.handleMenuOpened_;\n /** @private {!Function} */\n _this.handleMenuClosed_;\n /** @private {!Function} */\n _this.handleMenuSelected_;\n /** @private {boolean} */\n _this.menuOpened_ = false;\n /** @private {!MutationObserver} */\n _this.validationObserver_;\n return _this;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCSelect}\n */\n\n\n _createClass(MDCSelect, [{\n key: 'layout',\n\n\n /**\n * Recomputes the outline SVG path for the outline element.\n */\n value: function layout() {\n this.foundation_.layout();\n }\n\n /**\n * @param {(function(!Element): !MDCLineRipple)=} lineRippleFactory A function which creates a new MDCLineRipple.\n * @param {(function(!Element): !MDCFloatingLabel)=} labelFactory A function which creates a new MDCFloatingLabel.\n * @param {(function(!Element): !MDCNotchedOutline)=} outlineFactory A function which creates a new MDCNotchedOutline.\n * @param {(function(!Element): !MDCMenu)=} menuFactory A function which creates a new MDCMenu.\n * @param {(function(!Element): !MDCSelectIcon)=} iconFactory A function which creates a new MDCSelectIcon.\n * @param {(function(!Element): !MDCSelectHelperText)=} helperTextFactory A function which creates a new\n * MDCSelectHelperText.\n */\n\n }, {\n key: 'initialize',\n value: function initialize() {\n var labelFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_1__material_floating_label_index__[\"MDCFloatingLabel\"](el);\n };\n var lineRippleFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_2__material_line_ripple_index__[\"MDCLineRipple\"](el);\n };\n var outlineFactory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_5__material_notched_outline_index__[\"MDCNotchedOutline\"](el);\n };\n var menuFactory = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_3__material_menu_index__[\"MDCMenu\"](el);\n };\n var iconFactory = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_9__icon_index__[\"a\" /* MDCSelectIcon */](el);\n };\n var helperTextFactory = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_10__helper_text_index__[\"a\" /* MDCSelectHelperText */](el);\n };\n\n this.nativeControl_ = /** @type {HTMLElement} */this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].NATIVE_CONTROL_SELECTOR);\n this.selectedText_ = /** @type {HTMLElement} */this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].SELECTED_TEXT_SELECTOR);\n\n if (this.selectedText_) {\n this.enhancedSelectSetup_(menuFactory);\n }\n\n var labelElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].LABEL_SELECTOR);\n if (labelElement) {\n this.label_ = labelFactory(labelElement);\n }\n var lineRippleElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].LINE_RIPPLE_SELECTOR);\n if (lineRippleElement) {\n this.lineRipple_ = lineRippleFactory(lineRippleElement);\n }\n var outlineElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].OUTLINE_SELECTOR);\n if (outlineElement) {\n this.outline_ = outlineFactory(outlineElement);\n }\n\n var leadingIcon = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].LEADING_ICON_SELECTOR);\n if (leadingIcon) {\n this.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].WITH_LEADING_ICON);\n this.leadingIcon_ = iconFactory(leadingIcon);\n\n if (this.menuElement_) {\n this.menuElement_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].WITH_LEADING_ICON);\n }\n }\n var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;\n if (element.hasAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].ARIA_CONTROLS)) {\n var helperTextElement = document.getElementById(element.getAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].ARIA_CONTROLS));\n if (helperTextElement) {\n this.helperText_ = helperTextFactory(helperTextElement);\n }\n }\n\n if (!this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].OUTLINED)) {\n this.ripple = this.initRipple_();\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 * Handles setup for the enhanced menu.\n * @private\n */\n\n }, {\n key: 'enhancedSelectSetup_',\n value: function enhancedSelectSetup_(menuFactory) {\n var isDisabled = this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].DISABLED);\n this.selectedText_.setAttribute('tabindex', isDisabled ? '-1' : '0');\n this.hiddenInput_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].HIDDEN_INPUT_SELECTOR);\n this.menuElement_ = /** @type {HTMLElement} */this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].MENU_SELECTOR);\n this.menu_ = menuFactory(this.menuElement_);\n this.menu_.hoistMenuToBody();\n this.menu_.setAnchorElement( /** @type {!HTMLElement} */this.root_);\n this.menu_.setAnchorCorner(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__[\"a\" /* Corner */].BOTTOM_START);\n this.menu_.wrapFocus = false;\n }\n\n /**\n * @private\n * @return {!MDCRipple}\n */\n\n }, {\n key: 'initRipple_',\n value: function initRipple_() {\n var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;\n var adapter = _extends(__WEBPACK_IMPORTED_MODULE_4__material_ripple_index__[\"MDCRipple\"].createAdapter(this), {\n registerInteractionHandler: function registerInteractionHandler(type, handler) {\n return element.addEventListener(type, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {\n return element.removeEventListener(type, handler);\n }\n });\n var foundation = new __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__[\"MDCRippleFoundation\"](adapter);\n return new __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__[\"MDCRipple\"](this.root_, foundation);\n }\n\n /**\n * Initializes the select's event listeners and internal state based\n * on the environment's state.\n */\n\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n var _this2 = this;\n\n this.handleChange_ = function () {\n return _this2.foundation_.handleChange( /* didChange */true);\n };\n this.handleFocus_ = function () {\n return _this2.foundation_.handleFocus();\n };\n this.handleBlur_ = function () {\n return _this2.foundation_.handleBlur();\n };\n this.handleClick_ = function (evt) {\n if (_this2.selectedText_) _this2.selectedText_.focus();\n _this2.foundation_.handleClick(_this2.getNormalizedXCoordinate_(evt));\n };\n this.handleKeydown_ = function (evt) {\n return _this2.foundation_.handleKeydown(evt);\n };\n this.handleMenuSelected_ = function (evtData) {\n return _this2.selectedIndex = evtData.detail.index;\n };\n this.handleMenuOpened_ = function () {\n // Menu should open to the last selected element.\n if (_this2.selectedIndex >= 0) {\n _this2.menu_.items[_this2.selectedIndex].focus();\n }\n };\n this.handleMenuClosed_ = function () {\n // menuOpened_ 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 _this2.menuOpened_ = false;\n _this2.selectedText_.removeAttribute('aria-expanded');\n if (document.activeElement !== _this2.selectedText_) {\n _this2.foundation_.handleBlur();\n }\n };\n\n var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;\n\n element.addEventListener('change', this.handleChange_);\n element.addEventListener('focus', this.handleFocus_);\n element.addEventListener('blur', this.handleBlur_);\n\n ['mousedown', 'touchstart'].forEach(function (evtType) {\n element.addEventListener(evtType, _this2.handleClick_);\n });\n\n if (this.menuElement_) {\n this.selectedText_.addEventListener('keydown', this.handleKeydown_);\n this.menu_.listen(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__[\"e\" /* strings */].CLOSED_EVENT, this.handleMenuClosed_);\n this.menu_.listen(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__[\"e\" /* strings */].OPENED_EVENT, this.handleMenuOpened_);\n this.menu_.listen(__WEBPACK_IMPORTED_MODULE_12__material_menu_constants__[\"b\" /* 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 var enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();\n enhancedAdapterMethods.setValue(this.hiddenInput_.value);\n } else if (this.menuElement_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* 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\n // Initially sync floating label\n this.foundation_.handleChange( /* didChange */false);\n\n if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].DISABLED) || this.nativeControl_ && this.nativeControl_.disabled) {\n this.disabled = true;\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;\n\n element.removeEventListener('change', this.handleChange_);\n element.removeEventListener('focus', this.handleFocus_);\n element.removeEventListener('blur', this.handleBlur_);\n element.removeEventListener('keydown', this.handleKeydown_);\n ['mousedown', 'touchstart'].forEach(function (evtType) {\n element.removeEventListener(evtType, _this3.handleClick_);\n });\n\n if (this.menu_) {\n this.menu_.unlisten(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__[\"e\" /* strings */].CLOSED_EVENT, this.handleMenuClosed_);\n this.menu_.unlisten(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__[\"e\" /* strings */].OPENED_EVENT, this.handleMenuOpened_);\n this.menu_.unlisten(__WEBPACK_IMPORTED_MODULE_12__material_menu_constants__[\"b\" /* 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 _get(MDCSelect.prototype.__proto__ || Object.getPrototypeOf(MDCSelect.prototype), 'destroy', this).call(this);\n }\n\n /**\n * @return {!MDCSelectFoundation}\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n return new __WEBPACK_IMPORTED_MODULE_6__foundation__[\"a\" /* default */](\n /** @type {!MDCSelectAdapter} */_extends(this.nativeControl_ ? this.getNativeSelectAdapterMethods_() : this.getEnhancedSelectAdapterMethods_(), this.getCommonAdapterMethods_(), this.getOutlineAdapterMethods_(), this.getLabelAdapterMethods_()), this.getFoundationMap_());\n }\n\n /**\n * @return {!{\n * getValue: function(): string,\n * setValue: function(string): string,\n * openMenu: function(): void,\n * closeMenu: function(): void,\n * isMenuOpen: function(): boolean,\n * setSelectedIndex: function(number): void,\n * setDisabled: function(boolean): void\n * }}\n * @private\n */\n\n }, {\n key: 'getNativeSelectAdapterMethods_',\n value: function getNativeSelectAdapterMethods_() {\n var _this4 = this;\n\n return {\n getValue: function getValue() {\n return _this4.nativeControl_.value;\n },\n setValue: function setValue(value) {\n return _this4.nativeControl_.value = value;\n },\n openMenu: function openMenu() {},\n closeMenu: function closeMenu() {},\n isMenuOpen: function isMenuOpen() {\n return false;\n },\n setSelectedIndex: function setSelectedIndex(index) {\n _this4.nativeControl_.selectedIndex = index;\n },\n setDisabled: function setDisabled(isDisabled) {\n return _this4.nativeControl_.disabled = isDisabled;\n },\n setValid: function setValid(isValid) {\n isValid ? _this4.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].INVALID) : _this4.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].INVALID);\n },\n checkValidity: function checkValidity() {\n return _this4.nativeControl_.checkValidity();\n }\n };\n }\n\n /**\n * @return {!{\n * getValue: function(): string,\n * setValue: function(string): string,\n * openMenu: function(): void,\n * closeMenu: function(): void,\n * isMenuOpen: function(): boolean,\n * setSelectedIndex: function(number): void,\n * setDisabled: function(boolean): void\n * }}\n * @private\n */\n\n }, {\n key: 'getEnhancedSelectAdapterMethods_',\n value: function getEnhancedSelectAdapterMethods_() {\n var _this5 = this;\n\n return {\n getValue: function getValue() {\n var listItem = _this5.menuElement_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].SELECTED_ITEM_SELECTOR);\n if (listItem && listItem.hasAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].ENHANCED_VALUE_ATTR)) {\n return listItem.getAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].ENHANCED_VALUE_ATTR);\n }\n return '';\n },\n setValue: function setValue(value) {\n var element =\n /** @type {HTMLElement} */_this5.menuElement_.querySelector('[' + __WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].ENHANCED_VALUE_ATTR + '=\"' + value + '\"]');\n _this5.setEnhancedSelectedIndex_(element ? _this5.menu_.items.indexOf(element) : -1);\n },\n openMenu: function openMenu() {\n if (_this5.menu_ && !_this5.menu_.open) {\n _this5.menu_.open = true;\n _this5.menuOpened_ = true;\n _this5.selectedText_.setAttribute('aria-expanded', 'true');\n }\n },\n closeMenu: function closeMenu() {\n if (_this5.menu_ && _this5.menu_.open) {\n _this5.menu_.open = false;\n }\n },\n isMenuOpen: function isMenuOpen() {\n return _this5.menu_ && _this5.menuOpened_;\n },\n setSelectedIndex: function setSelectedIndex(index) {\n _this5.setEnhancedSelectedIndex_(index);\n },\n setDisabled: function setDisabled(isDisabled) {\n _this5.selectedText_.setAttribute('tabindex', isDisabled ? '-1' : '0');\n _this5.selectedText_.setAttribute('aria-disabled', isDisabled.toString());\n if (_this5.hiddenInput_) {\n _this5.hiddenInput_.disabled = isDisabled;\n }\n },\n checkValidity: function checkValidity() {\n var classList = _this5.root_.classList;\n if (classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].REQUIRED) && !classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* 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 _this5.selectedIndex !== -1 && (_this5.selectedIndex !== 0 || _this5.value);\n } else {\n return true;\n }\n },\n setValid: function setValid(isValid) {\n _this5.selectedText_.setAttribute('aria-invalid', (!isValid).toString());\n isValid ? _this5.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].INVALID) : _this5.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].INVALID);\n }\n };\n }\n\n /**\n * @return {!{\n * addClass: function(string): void,\n * removeClass: function(string): void,\n * hasClass: function(string): void,\n * setRippleCenter: function(number): void,\n * activateBottomLine: function(): void,\n * deactivateBottomLine: function(): void,\n * notifyChange: function(string): void\n * }}\n * @private\n */\n\n }, {\n key: 'getCommonAdapterMethods_',\n value: function getCommonAdapterMethods_() {\n var _this6 = this;\n\n return {\n addClass: function addClass(className) {\n return _this6.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this6.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this6.root_.classList.contains(className);\n },\n setRippleCenter: function setRippleCenter(normalizedX) {\n return _this6.lineRipple_ && _this6.lineRipple_.setRippleCenter(normalizedX);\n },\n activateBottomLine: function activateBottomLine() {\n return _this6.lineRipple_ && _this6.lineRipple_.activate();\n },\n deactivateBottomLine: function deactivateBottomLine() {\n return _this6.lineRipple_ && _this6.lineRipple_.deactivate();\n },\n notifyChange: function notifyChange(value) {\n var index = _this6.selectedIndex;\n _this6.emit(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].CHANGE_EVENT, { value: value, index: index }, true /* shouldBubble */);\n }\n };\n }\n\n /**\n * @return {!{\n * hasOutline: function(): boolean,\n * notchOutline: function(number, boolean): undefined,\n * closeOutline: function(): undefined,\n * }}\n */\n\n }, {\n key: 'getOutlineAdapterMethods_',\n value: function getOutlineAdapterMethods_() {\n var _this7 = this;\n\n return {\n hasOutline: function hasOutline() {\n return !!_this7.outline_;\n },\n notchOutline: function notchOutline(labelWidth) {\n if (_this7.outline_) {\n _this7.outline_.notch(labelWidth);\n }\n },\n closeOutline: function closeOutline() {\n if (_this7.outline_) {\n _this7.outline_.closeNotch();\n }\n }\n };\n }\n\n /**\n * @return {!{\n * floatLabel: function(boolean): undefined,\n * getLabelWidth: function(): number,\n * }}\n */\n\n }, {\n key: 'getLabelAdapterMethods_',\n value: function getLabelAdapterMethods_() {\n var _this8 = this;\n\n return {\n floatLabel: function floatLabel(shouldFloat) {\n if (_this8.label_) {\n _this8.label_.float(shouldFloat);\n }\n },\n getLabelWidth: function getLabelWidth() {\n return _this8.label_ ? _this8.label_.getWidth() : 0;\n }\n };\n }\n\n /**\n * Calculates where the line ripple should start based on the x coordinate within the component.\n * @param {!(MouseEvent|TouchEvent)} evt\n * @return {number} normalizedX\n */\n\n }, {\n key: 'getNormalizedXCoordinate_',\n value: function getNormalizedXCoordinate_(evt) {\n var targetClientRect = evt.target.getBoundingClientRect();\n var xCoordinate = evt.clientX;\n return xCoordinate - targetClientRect.left;\n }\n\n /**\n * Returns a map of all subcomponents to subfoundations.\n * @return {!FoundationMapType}\n */\n\n }, {\n key: 'getFoundationMap_',\n value: function getFoundationMap_() {\n return {\n leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined,\n helperText: this.helperText_ ? this.helperText_.foundation : undefined\n };\n }\n\n /**\n * Sets the selected index of the enhanced menu.\n * @param {number} index\n * @private\n */\n\n }, {\n key: 'setEnhancedSelectedIndex_',\n value: function setEnhancedSelectedIndex_(index) {\n var selectedItem = this.menu_.items[index];\n this.selectedText_.textContent = selectedItem ? selectedItem.textContent.trim() : '';\n var previouslySelected = this.menuElement_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].SELECTED_ITEM_SELECTOR);\n\n if (previouslySelected) {\n previouslySelected.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].SELECTED_ITEM_CLASS);\n previouslySelected.removeAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].ARIA_SELECTED_ATTR);\n }\n\n if (selectedItem) {\n selectedItem.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].SELECTED_ITEM_CLASS);\n selectedItem.setAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* 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(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].ENHANCED_VALUE_ATTR) || '' : '';\n }\n\n this.layout();\n }\n }, {\n key: 'initialSyncRequiredState_',\n value: function initialSyncRequiredState_() {\n var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;\n var isRequired = element.required || element.getAttribute('aria-required') === 'true' || this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* 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(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].REQUIRED);\n }\n }\n }, {\n key: 'addMutationObserverForRequired_',\n value: function addMutationObserverForRequired_() {\n var _this9 = this;\n\n var observerHandler = function observerHandler(attributesList) {\n attributesList.some(function (attributeName) {\n if (VALIDATION_ATTR_WHITELIST.indexOf(attributeName) > -1) {\n if (_this9.selectedText_) {\n if (_this9.selectedText_.getAttribute('aria-required') === 'true') {\n _this9.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].REQUIRED);\n } else {\n _this9.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].REQUIRED);\n }\n } else {\n if (_this9.nativeControl_.required) {\n _this9.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].REQUIRED);\n } else {\n _this9.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].REQUIRED);\n }\n }\n return true;\n }\n });\n };\n\n var getAttributesList = function getAttributesList(mutationsList) {\n return mutationsList.map(function (mutation) {\n return mutation.attributeName;\n });\n };\n var observer = new MutationObserver(function (mutationsList) {\n return observerHandler(getAttributesList(mutationsList));\n });\n var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;\n observer.observe(element, { attributes: true });\n this.validationObserver_ = observer;\n }\n }, {\n key: 'value',\n\n\n /**\n * @return {string} The value of the select.\n */\n get: function get() {\n return this.foundation_.getValue();\n }\n\n /**\n * @param {string} value The value to set on the select.\n */\n ,\n set: function set(value) {\n this.foundation_.setValue(value);\n }\n\n /**\n * @return {number} The selected index of the select.\n */\n\n }, {\n key: 'selectedIndex',\n get: function get() {\n var selectedIndex = void 0;\n if (this.menuElement_) {\n var selectedEl = /** @type {!HTMLElement} */this.menuElement_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__[\"c\" /* strings */].SELECTED_ITEM_SELECTOR);\n selectedIndex = this.menu_.items.indexOf(selectedEl);\n } else {\n selectedIndex = this.nativeControl_.selectedIndex;\n }\n return selectedIndex;\n }\n\n /**\n * @param {number} selectedIndex The index of the option to be set on the select.\n */\n ,\n set: function set(selectedIndex) {\n this.foundation_.setSelectedIndex(selectedIndex);\n }\n\n /**\n * @return {boolean} True if the select is disabled.\n */\n\n }, {\n key: 'disabled',\n get: function get() {\n return this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* cssClasses */].DISABLED) || (this.nativeControl_ ? this.nativeControl_.disabled : false);\n }\n\n /**\n * @param {boolean} disabled Sets the select disabled or enabled.\n */\n ,\n set: function set(disabled) {\n this.foundation_.setDisabled(disabled);\n }\n\n /**\n * Sets the aria label of the leading icon.\n * @param {string} label\n */\n\n }, {\n key: 'leadingIconAriaLabel',\n set: function set(label) {\n this.foundation_.setLeadingIconAriaLabel(label);\n }\n\n /**\n * Sets the text content of the leading icon.\n * @param {string} content\n */\n\n }, {\n key: 'leadingIconContent',\n set: function set(content) {\n this.foundation_.setLeadingIconContent(content);\n }\n\n /**\n * Sets the text content of the helper text.\n * @param {string} content\n */\n\n }, {\n key: 'helperTextContent',\n set: function set(content) {\n this.foundation_.setHelperTextContent(content);\n }\n\n /**\n * Sets the current invalid state of the select.\n * @param {boolean} isValid\n */\n\n }, {\n key: 'valid',\n set: function set(isValid) {\n this.foundation_.setValid(isValid);\n }\n\n /**\n * Checks if the select is in a valid state.\n * @return {boolean}\n */\n ,\n get: function get() {\n return this.foundation_.isValid();\n }\n\n /**\n * Sets the control to the required state.\n * @param {boolean} isRequired\n */\n\n }, {\n key: 'required',\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\n /**\n * Returns whether the select is required.\n * @return {boolean}\n */\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 key: 'attachTo',\n value: function attachTo(root) {\n return new MDCSelect(root);\n }\n }]);\n\n return MDCSelect;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 122 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(48);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__icon_index__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__helper_text_index__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(51);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n/* eslint-disable no-unused-vars */\n\n\n\n/* eslint-enable no-unused-vars */\n\n\n/**\n * @extends {MDCFoundation<!MDCSelectAdapter>}\n * @final\n */\n\nvar MDCSelectFoundation = function (_MDCFoundation) {\n _inherits(MDCSelectFoundation, _MDCFoundation);\n\n _createClass(MDCSelectFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum {number} */\n\n }, {\n key: 'numbers',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* numbers */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_4__constants__[\"c\" /* strings */];\n }\n\n /**\n * {@see MDCSelectAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCSelectAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCSelectAdapter} */{\n addClass: function addClass() /* className: string */{},\n removeClass: function removeClass() /* className: string */{},\n hasClass: function hasClass() {\n return (/* className: string */false\n );\n },\n activateBottomLine: function activateBottomLine() {},\n deactivateBottomLine: function deactivateBottomLine() {},\n setValue: function setValue() {},\n getValue: function getValue() {},\n floatLabel: function floatLabel() /* value: boolean */{},\n getLabelWidth: function getLabelWidth() {},\n hasOutline: function hasOutline() {\n return false;\n },\n notchOutline: function notchOutline() /* labelWidth: number, */{},\n closeOutline: function closeOutline() {},\n openMenu: function openMenu() {},\n closeMenu: function closeMenu() {},\n isMenuOpen: function isMenuOpen() {},\n setSelectedIndex: function setSelectedIndex() {},\n setDisabled: function setDisabled() {},\n setRippleCenter: function setRippleCenter() {},\n notifyChange: function notifyChange() {},\n checkValidity: function checkValidity() {},\n setValid: function setValid() {}\n }\n );\n }\n\n /**\n * @param {!MDCSelectAdapter} adapter\n * @param {!FoundationMapType=} foundationMap Map from subcomponent names to their subfoundations.\n */\n\n }]);\n\n function MDCSelectFoundation(adapter) {\n var foundationMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /** @type {!FoundationMapType} */{};\n\n _classCallCheck(this, MDCSelectFoundation);\n\n /** @type {!MDCSelectIconFoundation|undefined} */\n var _this = _possibleConstructorReturn(this, (MDCSelectFoundation.__proto__ || Object.getPrototypeOf(MDCSelectFoundation)).call(this, _extends(MDCSelectFoundation.defaultAdapter, adapter)));\n\n _this.leadingIcon_ = foundationMap.leadingIcon;\n /** @type {!MDCSelectHelperTextFoundation|undefined} */\n _this.helperText_ = foundationMap.helperText;\n return _this;\n }\n\n _createClass(MDCSelectFoundation, [{\n key: 'setSelectedIndex',\n value: function setSelectedIndex(index) {\n this.adapter_.setSelectedIndex(index);\n this.adapter_.closeMenu();\n var didChange = true;\n this.handleChange(didChange);\n }\n }, {\n key: 'setValue',\n value: function setValue(value) {\n this.adapter_.setValue(value);\n var didChange = true;\n this.handleChange(didChange);\n }\n }, {\n key: 'getValue',\n value: function getValue() {\n return this.adapter_.getValue();\n }\n }, {\n key: 'setDisabled',\n value: function setDisabled(isDisabled) {\n isDisabled ? this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].DISABLED) : this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].DISABLED);\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 {string} content Sets the content of the helper text.\n */\n\n }, {\n key: 'setHelperTextContent',\n value: function setHelperTextContent(content) {\n if (this.helperText_) {\n this.helperText_.setContent(content);\n }\n }\n }, {\n key: 'layout',\n value: function layout() {\n var openNotch = this.getValue().length > 0;\n this.notchOutline(openNotch);\n }\n\n /**\n * Handles value changes, via change event or programmatic updates.\n */\n\n }, {\n key: 'handleChange',\n value: function handleChange() {\n var didChange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n var value = this.getValue();\n var optionHasValue = value.length > 0;\n var isRequired = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].REQUIRED);\n\n this.notchOutline(optionHasValue);\n\n if (!this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* 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\n }, {\n key: 'handleFocus',\n value: function handleFocus() {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* 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\n }, {\n key: 'handleBlur',\n value: function handleBlur() {\n if (this.adapter_.isMenuOpen()) return;\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].FOCUSED);\n this.handleChange(false);\n this.adapter_.deactivateBottomLine();\n\n var isRequired = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* 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 key: 'handleClick',\n value: function handleClick(normalizedX) {\n if (this.adapter_.isMenuOpen()) return;\n this.adapter_.setRippleCenter(normalizedX);\n\n this.adapter_.openMenu();\n }\n }, {\n key: 'handleKeydown',\n value: function handleKeydown(event) {\n if (this.adapter_.isMenuOpen()) 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\n if (this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].FOCUSED) && (isEnter || isSpace || arrowUp || arrowDown)) {\n this.adapter_.openMenu();\n event.preventDefault();\n }\n }\n\n /**\n * Opens/closes the notched outline.\n * @param {boolean} openNotch\n */\n\n }, {\n key: 'notchOutline',\n value: function notchOutline(openNotch) {\n if (!this.adapter_.hasOutline()) {\n return;\n }\n var isFocused = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__[\"a\" /* cssClasses */].FOCUSED);\n\n if (openNotch) {\n var labelScale = __WEBPACK_IMPORTED_MODULE_4__constants__[\"b\" /* 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 /**\n * Sets the aria label of the leading icon.\n * @param {string} label\n */\n\n }, {\n key: 'setLeadingIconAriaLabel',\n value: function setLeadingIconAriaLabel(label) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setAriaLabel(label);\n }\n }\n\n /**\n * Sets the text content of the leading icon.\n * @param {string} content\n */\n\n }, {\n key: 'setLeadingIconContent',\n value: function setLeadingIconContent(content) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setContent(content);\n }\n }\n }, {\n key: 'setValid',\n value: function setValid(isValid) {\n this.adapter_.setValid(isValid);\n }\n }, {\n key: 'isValid',\n value: function isValid() {\n return this.adapter_.checkValidity();\n }\n }]);\n\n return MDCSelectFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCSelectFoundation);\n\n/***/ }),\n/* 123 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(124);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCSelectIconAdapter>}\n * @final\n */\n\nvar MDCSelectIconFoundation = function (_MDCFoundation) {\n _inherits(MDCSelectIconFoundation, _MDCFoundation);\n\n _createClass(MDCSelectIconFoundation, null, [{\n key: 'strings',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* strings */];\n }\n\n /**\n * {@see MDCSelectIconAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCSelectIconAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCSelectIconAdapter} */{\n getAttr: function getAttr() {},\n setAttr: function setAttr() {},\n removeAttr: function removeAttr() {},\n setContent: function setContent() {},\n registerInteractionHandler: function registerInteractionHandler() {},\n deregisterInteractionHandler: function deregisterInteractionHandler() {},\n notifyIconAction: function notifyIconAction() {}\n }\n );\n }\n\n /**\n * @param {!MDCSelectIconAdapter} adapter\n */\n\n }]);\n\n function MDCSelectIconFoundation(adapter) {\n _classCallCheck(this, MDCSelectIconFoundation);\n\n /** @private {string?} */\n var _this = _possibleConstructorReturn(this, (MDCSelectIconFoundation.__proto__ || Object.getPrototypeOf(MDCSelectIconFoundation)).call(this, _extends(MDCSelectIconFoundation.defaultAdapter, adapter)));\n\n _this.savedTabIndex_ = null;\n\n /** @private {function(!Event): undefined} */\n _this.interactionHandler_ = function (evt) {\n return _this.handleInteraction(evt);\n };\n return _this;\n }\n\n _createClass(MDCSelectIconFoundation, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n this.savedTabIndex_ = this.adapter_.getAttr('tabindex');\n\n ['click', 'keydown'].forEach(function (evtType) {\n _this2.adapter_.registerInteractionHandler(evtType, _this2.interactionHandler_);\n });\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n ['click', 'keydown'].forEach(function (evtType) {\n _this3.adapter_.deregisterInteractionHandler(evtType, _this3.interactionHandler_);\n });\n }\n\n /** @param {boolean} disabled */\n\n }, {\n key: 'setDisabled',\n value: function setDisabled(disabled) {\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', __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* strings */].ICON_ROLE);\n }\n }\n\n /** @param {string} label */\n\n }, {\n key: 'setAriaLabel',\n value: function setAriaLabel(label) {\n this.adapter_.setAttr('aria-label', label);\n }\n\n /** @param {string} content */\n\n }, {\n key: 'setContent',\n value: function setContent(content) {\n this.adapter_.setContent(content);\n }\n\n /**\n * Handles an interaction event\n * @param {!Event} evt\n */\n\n }, {\n key: 'handleInteraction',\n value: function handleInteraction(evt) {\n if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {\n this.adapter_.notifyIconAction();\n }\n }\n }]);\n\n return MDCSelectIconFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCSelectIconFoundation);\n\n/***/ }),\n/* 124 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return strings; });\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\n/** @enum {string} */\nvar strings = {\n ICON_EVENT: 'MDCSelect:icon',\n ICON_ROLE: 'button'\n};\n\n\n\n/***/ }),\n/* 125 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(50);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(126);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCSelectHelperTextAdapter>}\n * @final\n */\n\nvar MDCSelectHelperTextFoundation = function (_MDCFoundation) {\n _inherits(MDCSelectHelperTextFoundation, _MDCFoundation);\n\n _createClass(MDCSelectHelperTextFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n\n /**\n * {@see MDCSelectHelperTextAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCSelectHelperTextAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCSelectHelperTextAdapter} */{\n addClass: function addClass() {},\n removeClass: function removeClass() {},\n hasClass: function hasClass() {},\n setAttr: function setAttr() {},\n removeAttr: function removeAttr() {},\n setContent: function setContent() {}\n }\n );\n }\n\n /**\n * @param {!MDCSelectHelperTextAdapter} adapter\n */\n\n }]);\n\n function MDCSelectHelperTextFoundation(adapter) {\n _classCallCheck(this, MDCSelectHelperTextFoundation);\n\n return _possibleConstructorReturn(this, (MDCSelectHelperTextFoundation.__proto__ || Object.getPrototypeOf(MDCSelectHelperTextFoundation)).call(this, _extends(MDCSelectHelperTextFoundation.defaultAdapter, adapter)));\n }\n\n /**\n * Sets the content of the helper text field.\n * @param {string} content\n */\n\n\n _createClass(MDCSelectHelperTextFoundation, [{\n key: 'setContent',\n value: function setContent(content) {\n this.adapter_.setContent(content);\n }\n\n /** @param {boolean} isPersistent Sets the persistency of the helper text. */\n\n }, {\n key: 'setPersistent',\n value: function setPersistent(isPersistent) {\n if (isPersistent) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].HELPER_TEXT_PERSISTENT);\n } else {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].HELPER_TEXT_PERSISTENT);\n }\n }\n\n /**\n * @param {boolean} isValidation True to make the helper text act as an\n * error validation message.\n */\n\n }, {\n key: 'setValidation',\n value: function setValidation(isValidation) {\n if (isValidation) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);\n } else {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);\n }\n }\n\n /** Makes the helper text visible to the screen reader. */\n\n }, {\n key: 'showToScreenReader',\n value: function showToScreenReader() {\n this.adapter_.removeAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_HIDDEN);\n }\n\n /**\n * Sets the validity of the helper text based on the select validity.\n * @param {boolean} selectIsValid\n */\n\n }, {\n key: 'setValidity',\n value: function setValidity(selectIsValid) {\n var helperTextIsPersistent = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].HELPER_TEXT_PERSISTENT);\n var helperTextIsValidationMsg = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);\n var validationMsgNeedsDisplay = helperTextIsValidationMsg && !selectIsValid;\n\n if (validationMsgNeedsDisplay) {\n this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ROLE, 'alert');\n } else {\n this.adapter_.removeAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ROLE);\n }\n\n if (!helperTextIsPersistent && !validationMsgNeedsDisplay) {\n this.hide_();\n }\n }\n\n /**\n * Hides the help text from screen readers.\n * @private\n */\n\n }, {\n key: 'hide_',\n value: function hide_() {\n this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_HIDDEN, 'true');\n }\n }]);\n\n return MDCSelectHelperTextFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCSelectHelperTextFoundation);\n\n/***/ }),\n/* 126 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\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\n/** @enum {string} */\nvar strings = {\n ARIA_HIDDEN: 'aria-hidden',\n ROLE: 'role'\n};\n\n/** @enum {string} */\nvar cssClasses = {\n HELPER_TEXT_PERSISTENT: 'mdc-select-helper-text--persistent',\n HELPER_TEXT_VALIDATION_MSG: 'mdc-select-helper-text--validation-msg'\n};\n\n\n\n/***/ }),\n/* 127 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSlider\", function() { return MDCSlider; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(52);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation__ = __webpack_require__(128);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSliderFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_3__foundation__[\"a\"]; });\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n/**\n * @extends MDCComponent<!MDCSliderFoundation>\n */\n\nvar MDCSlider = function (_MDCComponent) {\n _inherits(MDCSlider, _MDCComponent);\n\n _createClass(MDCSlider, null, [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCSlider(root);\n }\n }]);\n\n function MDCSlider() {\n var _ref;\n\n _classCallCheck(this, MDCSlider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @type {?Element} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCSlider.__proto__ || Object.getPrototypeOf(MDCSlider)).call.apply(_ref, [this].concat(args)));\n\n _this.thumbContainer_;\n /** @type {?Element} */\n _this.track_;\n /** @type {?Element} */\n _this.pinValueMarker_;\n /** @type {?Element} */\n _this.trackMarkerContainer_;\n return _this;\n }\n\n /** @return {number} */\n\n\n _createClass(MDCSlider, [{\n key: 'initialize',\n value: function initialize() {\n this.thumbContainer_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* strings */].THUMB_CONTAINER_SELECTOR);\n this.track_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* strings */].TRACK_SELECTOR);\n this.pinValueMarker_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* strings */].PIN_VALUE_MARKER_SELECTOR);\n this.trackMarkerContainer_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* strings */].TRACK_MARKER_CONTAINER_SELECTOR);\n }\n\n /**\n * @return {!MDCSliderFoundation}\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_3__foundation__[\"a\" /* default */](\n /** @type {!MDCSliderAdapter} */{\n hasClass: function hasClass(className) {\n return _this2.root_.classList.contains(className);\n },\n addClass: function addClass(className) {\n return _this2.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this2.root_.classList.remove(className);\n },\n getAttribute: function getAttribute(name) {\n return _this2.root_.getAttribute(name);\n },\n setAttribute: function setAttribute(name, value) {\n return _this2.root_.setAttribute(name, value);\n },\n removeAttribute: function removeAttribute(name) {\n return _this2.root_.removeAttribute(name);\n },\n computeBoundingRect: function computeBoundingRect() {\n return _this2.root_.getBoundingClientRect();\n },\n getTabIndex: function getTabIndex() {\n return _this2.root_.tabIndex;\n },\n registerInteractionHandler: function registerInteractionHandler(type, handler) {\n _this2.root_.addEventListener(type, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {\n _this2.root_.removeEventListener(type, handler);\n },\n registerThumbContainerInteractionHandler: function registerThumbContainerInteractionHandler(type, handler) {\n _this2.thumbContainer_.addEventListener(type, handler);\n },\n deregisterThumbContainerInteractionHandler: function deregisterThumbContainerInteractionHandler(type, handler) {\n _this2.thumbContainer_.removeEventListener(type, handler);\n },\n registerBodyInteractionHandler: function registerBodyInteractionHandler(type, handler) {\n document.body.addEventListener(type, handler);\n },\n deregisterBodyInteractionHandler: function deregisterBodyInteractionHandler(type, handler) {\n document.body.removeEventListener(type, handler);\n },\n registerResizeHandler: function registerResizeHandler(handler) {\n window.addEventListener('resize', handler);\n },\n deregisterResizeHandler: function deregisterResizeHandler(handler) {\n window.removeEventListener('resize', handler);\n },\n notifyInput: function notifyInput() {\n _this2.emit(__WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* strings */].INPUT_EVENT, _this2);\n },\n notifyChange: function notifyChange() {\n _this2.emit(__WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* strings */].CHANGE_EVENT, _this2);\n },\n setThumbContainerStyleProperty: function setThumbContainerStyleProperty(propertyName, value) {\n _this2.thumbContainer_.style.setProperty(propertyName, value);\n },\n setTrackStyleProperty: function setTrackStyleProperty(propertyName, value) {\n _this2.track_.style.setProperty(propertyName, value);\n },\n setMarkerValue: function setMarkerValue(value) {\n _this2.pinValueMarker_.innerText = value;\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 _this2.trackMarkerContainer_.appendChild(frag);\n },\n removeTrackMarkers: function removeTrackMarkers() {\n while (_this2.trackMarkerContainer_.firstChild) {\n _this2.trackMarkerContainer_.removeChild(_this2.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 = _this2.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* strings */].LAST_TRACK_MARKER_SELECTOR);\n lastTrackMarker.style.setProperty(propertyName, value);\n },\n isRTL: function isRTL() {\n return getComputedStyle(_this2.root_).direction === 'rtl';\n }\n });\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n var origValueNow = parseFloat(this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* strings */].ARIA_VALUENOW));\n var min = parseFloat(this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* strings */].ARIA_VALUEMIN)) || this.min;\n var max = parseFloat(this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* 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 = parseFloat(this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* strings */].STEP_DATA_ATTR)) || this.step;\n this.value = origValueNow || this.value;\n this.disabled = this.root_.hasAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* strings */].ARIA_DISABLED) && this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* strings */].ARIA_DISABLED) !== 'false';\n this.foundation_.setupTrackMarker();\n }\n }, {\n key: 'layout',\n value: function layout() {\n this.foundation_.layout();\n }\n\n /** @param {number=} amount */\n\n }, {\n key: 'stepUp',\n value: function stepUp() {\n var amount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.step || 1;\n\n this.value += amount;\n }\n\n /** @param {number=} amount */\n\n }, {\n key: 'stepDown',\n value: function stepDown() {\n var amount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.step || 1;\n\n this.value -= amount;\n }\n }, {\n key: 'value',\n get: function get() {\n return this.foundation_.getValue();\n }\n\n /** @param {number} value */\n ,\n set: function set(value) {\n this.foundation_.setValue(value);\n }\n\n /** @return {number} */\n\n }, {\n key: 'min',\n get: function get() {\n return this.foundation_.getMin();\n }\n\n /** @param {number} min */\n ,\n set: function set(min) {\n this.foundation_.setMin(min);\n }\n\n /** @return {number} */\n\n }, {\n key: 'max',\n get: function get() {\n return this.foundation_.getMax();\n }\n\n /** @param {number} max */\n ,\n set: function set(max) {\n this.foundation_.setMax(max);\n }\n\n /** @return {number} */\n\n }, {\n key: 'step',\n get: function get() {\n return this.foundation_.getStep();\n }\n\n /** @param {number} step */\n ,\n set: function set(step) {\n this.foundation_.setStep(step);\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'disabled',\n get: function get() {\n return this.foundation_.isDisabled();\n }\n\n /** @param {boolean} disabled */\n ,\n set: function set(disabled) {\n this.foundation_.setDisabled(disabled);\n }\n }]);\n\n return MDCSlider;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 128 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(52);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_animation_index__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_base_foundation__ = __webpack_require__(0);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n/** @enum {string} */\nvar KEY_IDS = {\n ARROW_LEFT: 'ArrowLeft',\n ARROW_RIGHT: 'ArrowRight',\n ARROW_UP: 'ArrowUp',\n ARROW_DOWN: 'ArrowDown',\n HOME: 'Home',\n END: 'End',\n PAGE_UP: 'PageUp',\n PAGE_DOWN: 'PageDown'\n};\n\n/** @enum {string} */\nvar MOVE_EVENT_MAP = {\n 'mousedown': 'mousemove',\n 'touchstart': 'touchmove',\n 'pointerdown': 'pointermove'\n};\n\nvar DOWN_EVENTS = ['mousedown', 'pointerdown', 'touchstart'];\nvar UP_EVENTS = ['mouseup', 'pointerup', 'touchend'];\n\n/**\n * @extends {MDCFoundation<!MDCSliderAdapter>}\n */\n\nvar MDCSliderFoundation = function (_MDCFoundation) {\n _inherits(MDCSliderFoundation, _MDCFoundation);\n\n _createClass(MDCSliderFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum {cssClasses} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum {strings} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_0__constants__[\"c\" /* strings */];\n }\n\n /** @return enum {numbers} */\n\n }, {\n key: 'numbers',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_0__constants__[\"b\" /* numbers */];\n }\n\n /** @return {!MDCSliderAdapter} */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCSliderAdapter} */{\n hasClass: function hasClass() {\n return (/* className: string */ /* boolean */false\n );\n },\n addClass: function addClass() /* className: string */{},\n removeClass: function removeClass() /* className: string */{},\n getAttribute: function getAttribute() {\n return (/* name: string */ /* string|null */null\n );\n },\n setAttribute: function setAttribute() /* name: string, value: string */{},\n removeAttribute: function removeAttribute() /* name: string */{},\n computeBoundingRect: function computeBoundingRect() {\n return (/* ClientRect */{\n top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0\n }\n );\n },\n getTabIndex: function getTabIndex() {\n return (/* number */0\n );\n },\n registerInteractionHandler: function registerInteractionHandler() /* type: string, handler: EventListener */{},\n deregisterInteractionHandler: function deregisterInteractionHandler() /* type: string, handler: EventListener */{},\n registerThumbContainerInteractionHandler: function registerThumbContainerInteractionHandler() /* type: string, handler: EventListener */{},\n deregisterThumbContainerInteractionHandler: function deregisterThumbContainerInteractionHandler() /* type: string, handler: EventListener */{},\n registerBodyInteractionHandler: function registerBodyInteractionHandler() /* type: string, handler: EventListener */{},\n deregisterBodyInteractionHandler: function deregisterBodyInteractionHandler() /* type: string, handler: EventListener */{},\n registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},\n deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{},\n notifyInput: function notifyInput() {},\n notifyChange: function notifyChange() {},\n setThumbContainerStyleProperty: function setThumbContainerStyleProperty() /* propertyName: string, value: string */{},\n setTrackStyleProperty: function setTrackStyleProperty() /* propertyName: string, value: string */{},\n setMarkerValue: function setMarkerValue() /* value: number */{},\n appendTrackMarkers: function appendTrackMarkers() /* numMarkers: number */{},\n removeTrackMarkers: function removeTrackMarkers() {},\n setLastTrackMarkersStyleProperty: function setLastTrackMarkersStyleProperty() /* propertyName: string, value: string */{},\n isRTL: function isRTL() {\n return (/* boolean */false\n );\n }\n }\n );\n }\n\n /**\n * Creates a new instance of MDCSliderFoundation\n * @param {?MDCSliderAdapter} adapter\n */\n\n }]);\n\n function MDCSliderFoundation(adapter) {\n _classCallCheck(this, MDCSliderFoundation);\n\n /** @private {?ClientRect} */\n var _this = _possibleConstructorReturn(this, (MDCSliderFoundation.__proto__ || Object.getPrototypeOf(MDCSliderFoundation)).call(this, _extends(MDCSliderFoundation.defaultAdapter, adapter)));\n\n _this.rect_ = null;\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 _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.updateUIFrame_ = 0;\n _this.thumbContainerPointerHandler_ = function () {\n _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\n _createClass(MDCSliderFoundation, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n this.isDiscrete_ = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* cssClasses */].IS_DISCRETE);\n this.hasTrackMarker_ = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* cssClasses */].HAS_TRACK_MARKER);\n DOWN_EVENTS.forEach(function (evtName) {\n return _this2.adapter_.registerInteractionHandler(evtName, _this2.interactionStartHandler_);\n });\n this.adapter_.registerInteractionHandler('keydown', this.keydownHandler_);\n this.adapter_.registerInteractionHandler('focus', this.focusHandler_);\n this.adapter_.registerInteractionHandler('blur', this.blurHandler_);\n DOWN_EVENTS.forEach(function (evtName) {\n _this2.adapter_.registerThumbContainerInteractionHandler(evtName, _this2.thumbContainerPointerHandler_);\n });\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 }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n DOWN_EVENTS.forEach(function (evtName) {\n _this3.adapter_.deregisterInteractionHandler(evtName, _this3.interactionStartHandler_);\n });\n this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_);\n this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_);\n this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_);\n DOWN_EVENTS.forEach(function (evtName) {\n _this3.adapter_.deregisterThumbContainerInteractionHandler(evtName, _this3.thumbContainerPointerHandler_);\n });\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n }\n }, {\n key: 'setupTrackMarker',\n value: function setupTrackMarker() {\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\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\n this.adapter_.removeTrackMarkers();\n this.adapter_.appendTrackMarkers(numMarkers);\n\n if (indivisible) {\n var lastStepRatio = (max - numMarkers * step) / step + 1;\n var flex = Object(__WEBPACK_IMPORTED_MODULE_2__material_animation_index__[\"b\" /* getCorrectPropertyName */])(window, 'flex');\n this.adapter_.setLastTrackMarkersStyleProperty(flex, String(lastStepRatio));\n }\n }\n }\n }, {\n key: 'layout',\n value: function layout() {\n this.rect_ = this.adapter_.computeBoundingRect();\n this.updateUIForCurrentValue_();\n }\n\n /** @return {number} */\n\n }, {\n key: 'getValue',\n value: function getValue() {\n return this.value_;\n }\n\n /** @param {number} value */\n\n }, {\n key: 'setValue',\n value: function setValue(value) {\n this.setValue_(value, false);\n }\n\n /** @return {number} */\n\n }, {\n key: 'getMax',\n value: function getMax() {\n return this.max_;\n }\n\n /** @param {number} max */\n\n }, {\n key: 'setMax',\n value: function setMax(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(__WEBPACK_IMPORTED_MODULE_0__constants__[\"c\" /* strings */].ARIA_VALUEMAX, String(this.max_));\n this.setupTrackMarker();\n }\n\n /** @return {number} */\n\n }, {\n key: 'getMin',\n value: function getMin() {\n return this.min_;\n }\n\n /** @param {number} min */\n\n }, {\n key: 'setMin',\n value: function setMin(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(__WEBPACK_IMPORTED_MODULE_0__constants__[\"c\" /* strings */].ARIA_VALUEMIN, String(this.min_));\n this.setupTrackMarker();\n }\n\n /** @return {number} */\n\n }, {\n key: 'getStep',\n value: function getStep() {\n return this.step_;\n }\n\n /** @param {number} step */\n\n }, {\n key: 'setStep',\n value: function setStep(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\n /** @return {boolean} */\n\n }, {\n key: 'isDisabled',\n value: function isDisabled() {\n return this.disabled_;\n }\n\n /** @param {boolean} disabled */\n\n }, {\n key: 'setDisabled',\n value: function setDisabled(disabled) {\n this.disabled_ = disabled;\n this.toggleClass_(__WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* cssClasses */].DISABLED, this.disabled_);\n if (this.disabled_) {\n this.savedTabIndex_ = this.adapter_.getTabIndex();\n this.adapter_.setAttribute(__WEBPACK_IMPORTED_MODULE_0__constants__[\"c\" /* strings */].ARIA_DISABLED, 'true');\n this.adapter_.removeAttribute('tabindex');\n } else {\n this.adapter_.removeAttribute(__WEBPACK_IMPORTED_MODULE_0__constants__[\"c\" /* 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 * @param {!Event} evt\n * @private\n */\n\n }, {\n key: 'handleDown_',\n value: function handleDown_(evt) {\n var _this4 = this;\n\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 var moveHandler = function moveHandler(evt) {\n _this4.handleMove_(evt);\n };\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 var upHandler = function upHandler() {\n _this4.handleUp_();\n _this4.adapter_.deregisterBodyInteractionHandler(MOVE_EVENT_MAP[evt.type], moveHandler);\n UP_EVENTS.forEach(function (evtName) {\n return _this4.adapter_.deregisterBodyInteractionHandler(evtName, upHandler);\n });\n };\n\n this.adapter_.registerBodyInteractionHandler(MOVE_EVENT_MAP[evt.type], moveHandler);\n UP_EVENTS.forEach(function (evtName) {\n return _this4.adapter_.registerBodyInteractionHandler(evtName, upHandler);\n });\n this.setValueFromEvt_(evt);\n }\n\n /**\n * Called when the user moves the slider\n * @param {!Event} evt\n * @private\n */\n\n }, {\n key: 'handleMove_',\n value: function handleMove_(evt) {\n evt.preventDefault();\n this.setValueFromEvt_(evt);\n }\n\n /**\n * Called when the user's interaction with the slider ends\n * @private\n */\n\n }, {\n key: 'handleUp_',\n value: function handleUp_() {\n this.setActive_(false);\n this.adapter_.notifyChange();\n }\n\n /**\n * Returns the pageX of the event\n * @param {!Event} evt\n * @return {number}\n * @private\n */\n\n }, {\n key: 'getPageX_',\n value: function getPageX_(evt) {\n if (evt.targetTouches && evt.targetTouches.length > 0) {\n return evt.targetTouches[0].pageX;\n }\n return evt.pageX;\n }\n\n /**\n * Sets the slider value from an event\n * @param {!Event} evt\n * @private\n */\n\n }, {\n key: 'setValueFromEvt_',\n value: function setValueFromEvt_(evt) {\n var pageX = this.getPageX_(evt);\n var value = this.computeValueFromPageX_(pageX);\n this.setValue_(value, true);\n }\n\n /**\n * Computes the new value from the pageX position\n * @param {number} pageX\n * @return {number}\n */\n\n }, {\n key: 'computeValueFromPageX_',\n value: function computeValueFromPageX_(pageX) {\n var max = this.max_,\n min = this.min_;\n\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 /**\n * Handles keydown events\n * @param {!Event} evt\n */\n\n }, {\n key: 'handleKeydown_',\n value: function handleKeydown_(evt) {\n var keyId = this.getKeyId_(evt);\n var 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(__WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* cssClasses */].FOCUS);\n this.setValue_(value, true);\n this.adapter_.notifyChange();\n }\n\n /**\n * Returns the computed name of the event\n * @param {!Event} kbdEvt\n * @return {string}\n */\n\n }, {\n key: 'getKeyId_',\n value: function getKeyId_(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\n return '';\n }\n\n /**\n * Computes the value given a keyboard key ID\n * @param {string} keyId\n * @return {number}\n */\n\n }, {\n key: 'getValueForKeyId_',\n value: function getValueForKeyId_(keyId) {\n var max = this.max_,\n min = this.min_,\n step = this.step_;\n\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\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 * __WEBPACK_IMPORTED_MODULE_0__constants__[\"b\" /* numbers */].PAGE_FACTOR;\n case KEY_IDS.PAGE_DOWN:\n return this.value_ - delta * __WEBPACK_IMPORTED_MODULE_0__constants__[\"b\" /* numbers */].PAGE_FACTOR;\n default:\n return NaN;\n }\n }\n }, {\n key: 'handleFocus_',\n value: function handleFocus_() {\n if (this.preventFocusState_) {\n return;\n }\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* cssClasses */].FOCUS);\n }\n }, {\n key: 'handleBlur_',\n value: function handleBlur_() {\n this.preventFocusState_ = false;\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* cssClasses */].FOCUS);\n }\n\n /**\n * Sets the value of the slider\n * @param {number} value\n * @param {boolean} shouldFireInput\n * @param {boolean=} force\n */\n\n }, {\n key: 'setValue_',\n value: function setValue_(value, shouldFireInput) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (value === this.value_ && !force) {\n return;\n }\n\n var min = this.min_,\n max = this.max_;\n\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(__WEBPACK_IMPORTED_MODULE_0__constants__[\"c\" /* 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 * @param {number} value\n * @return {number}\n */\n\n }, {\n key: 'quantize_',\n value: function quantize_(value) {\n var numSteps = Math.round(value / this.step_);\n var quantizedVal = numSteps * this.step_;\n return quantizedVal;\n }\n }, {\n key: 'updateUIForCurrentValue_',\n value: function updateUIForCurrentValue_() {\n var _this5 = this;\n\n var max = this.max_,\n min = this.min_,\n value = this.value_;\n\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\n var transformProp = Object(__WEBPACK_IMPORTED_MODULE_2__material_animation_index__[\"b\" /* getCorrectPropertyName */])(window, 'transform');\n var transitionendEvtName = Object(__WEBPACK_IMPORTED_MODULE_2__material_animation_index__[\"a\" /* getCorrectEventName */])(window, 'transitionend');\n\n if (this.inTransit_) {\n var onTransitionEnd = function onTransitionEnd() {\n _this5.setInTransit_(false);\n _this5.adapter_.deregisterThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd);\n };\n this.adapter_.registerThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd);\n }\n\n this.updateUIFrame_ = 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 _this5.adapter_.setThumbContainerStyleProperty(transformProp, 'translateX(' + translatePx + 'px) translateX(-50%)');\n _this5.adapter_.setTrackStyleProperty(transformProp, 'scaleX(' + pctComplete + ')');\n });\n }\n\n /**\n * Toggles the active state of the slider\n * @param {boolean} active\n */\n\n }, {\n key: 'setActive_',\n value: function setActive_(active) {\n this.active_ = active;\n this.toggleClass_(__WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* cssClasses */].ACTIVE, this.active_);\n }\n\n /**\n * Toggles the inTransit state of the slider\n * @param {boolean} inTransit\n */\n\n }, {\n key: 'setInTransit_',\n value: function setInTransit_(inTransit) {\n this.inTransit_ = inTransit;\n this.toggleClass_(__WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* cssClasses */].IN_TRANSIT, this.inTransit_);\n }\n\n /**\n * Conditionally adds or removes a class based on shouldBePresent\n * @param {string} className\n * @param {boolean} shouldBePresent\n */\n\n }, {\n key: 'toggleClass_',\n value: function toggleClass_(className, shouldBePresent) {\n if (shouldBePresent) {\n this.adapter_.addClass(className);\n } else {\n this.adapter_.removeClass(className);\n }\n }\n }]);\n\n return MDCSliderFoundation;\n}(__WEBPACK_IMPORTED_MODULE_3__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCSliderFoundation);\n\n/***/ }),\n/* 129 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSnackbar\", function() { return MDCSnackbar; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(130);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(132);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__ = __webpack_require__(8);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSnackbarFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\"]; });\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"util\", function() { return __WEBPACK_IMPORTED_MODULE_3__util__; });\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\nvar SURFACE_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].SURFACE_SELECTOR,\n LABEL_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].LABEL_SELECTOR,\n ACTION_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].ACTION_SELECTOR,\n DISMISS_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].DISMISS_SELECTOR,\n OPENING_EVENT = __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].OPENING_EVENT,\n OPENED_EVENT = __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].OPENED_EVENT,\n CLOSING_EVENT = __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].CLOSING_EVENT,\n CLOSED_EVENT = __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].CLOSED_EVENT;\n\nvar MDCSnackbar = function (_MDCComponent) {\n _inherits(MDCSnackbar, _MDCComponent);\n\n _createClass(MDCSnackbar, null, [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCSnackbar(root);\n }\n }]);\n\n function MDCSnackbar() {\n var _ref;\n\n _classCallCheck(this, MDCSnackbar);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @type {!HTMLElement} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCSnackbar.__proto__ || Object.getPrototypeOf(MDCSnackbar)).call.apply(_ref, [this].concat(args)));\n\n _this.surfaceEl_;\n\n /** @type {!HTMLElement} */\n _this.labelEl_;\n\n /** @type {!HTMLElement} */\n _this.actionEl_;\n\n /** @type {function(!HTMLElement, !HTMLElement=): void} */\n _this.announce_;\n\n /** @private {!Function} */\n _this.handleKeyDown_;\n\n /** @private {!Function} */\n _this.handleSurfaceClick_;\n return _this;\n }\n\n /**\n * @param {function(): function(!HTMLElement, !HTMLElement=):void} announceFactory\n */\n\n\n _createClass(MDCSnackbar, [{\n key: 'initialize',\n value: function initialize() {\n var announceFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {\n return __WEBPACK_IMPORTED_MODULE_3__util__[\"announce\"];\n };\n\n this.announce_ = announceFactory();\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n var _this2 = this;\n\n this.surfaceEl_ = /** @type {!HTMLElement} */this.root_.querySelector(SURFACE_SELECTOR);\n this.labelEl_ = /** @type {!HTMLElement} */this.root_.querySelector(LABEL_SELECTOR);\n this.actionEl_ = /** @type {!HTMLElement} */this.root_.querySelector(ACTION_SELECTOR);\n\n this.handleKeyDown_ = function (evt) {\n return _this2.foundation_.handleKeyDown(evt);\n };\n this.handleSurfaceClick_ = function (evt) {\n if (_this2.isActionButton_(evt.target)) {\n _this2.foundation_.handleActionButtonClick(evt);\n } else if (_this2.isActionIcon_(evt.target)) {\n _this2.foundation_.handleActionIconClick(evt);\n }\n };\n\n this.registerKeyDownHandler_(this.handleKeyDown_);\n this.registerSurfaceClickHandler_(this.handleSurfaceClick_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n _get(MDCSnackbar.prototype.__proto__ || Object.getPrototypeOf(MDCSnackbar.prototype), 'destroy', this).call(this);\n this.deregisterKeyDownHandler_(this.handleKeyDown_);\n this.deregisterSurfaceClickHandler_(this.handleSurfaceClick_);\n }\n }, {\n key: 'open',\n value: function open() {\n this.foundation_.open();\n }\n\n /**\n * @param {string=} 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\n }, {\n key: 'close',\n value: function close() {\n var reason = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n this.foundation_.close(reason);\n }\n\n /**\n * @return {!MDCSnackbarFoundation}\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this3 = this;\n\n /* eslint brace-style: \"off\" */\n return new __WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */]({\n addClass: function addClass(className) {\n return _this3.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this3.root_.classList.remove(className);\n },\n announce: function announce() {\n return _this3.announce_(_this3.labelEl_);\n },\n notifyOpening: function notifyOpening() {\n return _this3.emit(OPENING_EVENT, {});\n },\n notifyOpened: function notifyOpened() {\n return _this3.emit(OPENED_EVENT, {});\n },\n notifyClosing: function notifyClosing(reason) {\n return _this3.emit(CLOSING_EVENT, reason ? { reason: reason } : {});\n },\n notifyClosed: function notifyClosed(reason) {\n return _this3.emit(CLOSED_EVENT, reason ? { reason: reason } : {});\n }\n });\n }\n\n /**\n * @return {number}\n */\n\n }, {\n key: 'registerKeyDownHandler_',\n\n\n /**\n * @param {!Function} handler\n * @private\n */\n value: function registerKeyDownHandler_(handler) {\n this.listen('keydown', handler);\n }\n\n /**\n * @param {!Function} handler\n * @private\n */\n\n }, {\n key: 'deregisterKeyDownHandler_',\n value: function deregisterKeyDownHandler_(handler) {\n this.unlisten('keydown', handler);\n }\n\n /**\n * @param {!Function} handler\n * @private\n */\n\n }, {\n key: 'registerSurfaceClickHandler_',\n value: function registerSurfaceClickHandler_(handler) {\n this.surfaceEl_.addEventListener('click', handler);\n }\n\n /**\n * @param {!Function} handler\n * @private\n */\n\n }, {\n key: 'deregisterSurfaceClickHandler_',\n value: function deregisterSurfaceClickHandler_(handler) {\n this.surfaceEl_.removeEventListener('click', handler);\n }\n\n /**\n * @param {!Element} target\n * @return {boolean}\n * @private\n */\n\n }, {\n key: 'isActionButton_',\n value: function isActionButton_(target) {\n return Boolean(__WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__[\"closest\"](target, ACTION_SELECTOR));\n }\n\n /**\n * @param {!Element} target\n * @return {boolean}\n * @private\n */\n\n }, {\n key: 'isActionIcon_',\n value: function isActionIcon_(target) {\n return Boolean(__WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__[\"closest\"](target, DISMISS_SELECTOR));\n }\n }, {\n key: 'timeoutMs',\n get: function get() {\n return this.foundation_.getTimeoutMs();\n }\n\n /**\n * @param {number} timeoutMs\n */\n ,\n set: function set(timeoutMs) {\n this.foundation_.setTimeoutMs(timeoutMs);\n }\n\n /**\n * @return {boolean}\n */\n\n }, {\n key: 'closeOnEscape',\n get: function get() {\n return this.foundation_.getCloseOnEscape();\n }\n\n /**\n * @param {boolean} closeOnEscape\n */\n ,\n set: function set(closeOnEscape) {\n this.foundation_.setCloseOnEscape(closeOnEscape);\n }\n\n /**\n * @return {boolean}\n */\n\n }, {\n key: 'isOpen',\n get: function get() {\n return this.foundation_.isOpen();\n }\n\n /**\n * @return {string}\n */\n\n }, {\n key: 'labelText',\n get: function get() {\n return this.labelEl_.textContent;\n }\n\n /**\n * @param {string} labelText\n */\n ,\n set: function set(labelText) {\n this.labelEl_.textContent = labelText;\n }\n\n /**\n * @return {string}\n */\n\n }, {\n key: 'actionButtonText',\n get: function get() {\n return this.actionEl_.textContent;\n }\n\n /**\n * @param {string} actionButtonText\n */\n ,\n set: function set(actionButtonText) {\n this.actionEl_.textContent = actionButtonText;\n }\n }]);\n\n return MDCSnackbar;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 130 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(131);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(23);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n/* eslint no-unused-vars: [\"error\", {\"argsIgnorePattern\": \"evt\", \"varsIgnorePattern\": \"Adapter$\"}] */\n\n\n\n\n\nvar OPENING = __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPENING,\n OPEN = __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPEN,\n CLOSING = __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CLOSING;\nvar REASON_ACTION = __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].REASON_ACTION,\n REASON_DISMISS = __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */].REASON_DISMISS;\n\nvar MDCSnackbarFoundation = function (_MDCFoundation) {\n _inherits(MDCSnackbarFoundation, _MDCFoundation);\n\n _createClass(MDCSnackbarFoundation, null, [{\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"c\" /* strings */];\n }\n }, {\n key: 'numbers',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* numbers */];\n }\n\n /**\n * @return {!MDCSnackbarAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCSnackbarAdapter} */{\n addClass: function addClass() /* className: string */{},\n removeClass: function removeClass() /* className: string */{},\n announce: function announce() {},\n notifyOpening: function notifyOpening() {},\n notifyOpened: function notifyOpened() {},\n notifyClosing: function notifyClosing() /* reason: string */{},\n notifyClosed: function notifyClosed() /* reason: string */{}\n }\n );\n }\n\n /**\n * @param {!MDCSnackbarAdapter=} adapter\n */\n\n }]);\n\n function MDCSnackbarFoundation(adapter) {\n _classCallCheck(this, MDCSnackbarFoundation);\n\n /** @private {boolean} */\n var _this = _possibleConstructorReturn(this, (MDCSnackbarFoundation.__proto__ || Object.getPrototypeOf(MDCSnackbarFoundation)).call(this, _extends(MDCSnackbarFoundation.defaultAdapter, adapter)));\n\n _this.isOpen_ = false;\n\n /** @private {number} */\n _this.animationFrame_ = 0;\n\n /** @private {number} */\n _this.animationTimer_ = 0;\n\n /** @private {number} */\n _this.autoDismissTimer_ = 0;\n\n /** @private {number} */\n _this.autoDismissTimeoutMs_ = __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* numbers */].DEFAULT_AUTO_DISMISS_TIMEOUT_MS;\n\n /** @private {boolean} */\n _this.closeOnEscape_ = true;\n return _this;\n }\n\n _createClass(MDCSnackbarFoundation, [{\n key: 'destroy',\n value: function 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 key: 'open',\n value: function open() {\n var _this2 = this;\n\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_(function () {\n _this2.adapter_.addClass(OPEN);\n\n _this2.animationTimer_ = setTimeout(function () {\n _this2.handleAnimationTimerEnd_();\n _this2.adapter_.notifyOpened();\n _this2.autoDismissTimer_ = setTimeout(function () {\n _this2.close(REASON_DISMISS);\n }, _this2.getTimeoutMs());\n }, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* numbers */].SNACKBAR_ANIMATION_OPEN_TIME_MS);\n });\n }\n\n /**\n * @param {string=} 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\n }, {\n key: 'close',\n value: function close() {\n var _this3 = this;\n\n var reason = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\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\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(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CLOSING);\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPEN);\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPENING);\n\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = setTimeout(function () {\n _this3.handleAnimationTimerEnd_();\n _this3.adapter_.notifyClosed(reason);\n }, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* numbers */].SNACKBAR_ANIMATION_CLOSE_TIME_MS);\n }\n\n /**\n * @return {boolean}\n */\n\n }, {\n key: 'isOpen',\n value: function isOpen() {\n return this.isOpen_;\n }\n\n /**\n * @return {number}\n */\n\n }, {\n key: 'getTimeoutMs',\n value: function getTimeoutMs() {\n return this.autoDismissTimeoutMs_;\n }\n\n /**\n * @param {number} timeoutMs\n */\n\n }, {\n key: 'setTimeoutMs',\n value: function setTimeoutMs(timeoutMs) {\n // Use shorter variable names to make the code more readable\n var minValue = __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* numbers */].MIN_AUTO_DISMISS_TIMEOUT_MS;\n var maxValue = __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* 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 + '\\u2013' + maxValue + ', but got \\'' + timeoutMs + '\\'');\n }\n }\n\n /**\n * @return {boolean}\n */\n\n }, {\n key: 'getCloseOnEscape',\n value: function getCloseOnEscape() {\n return this.closeOnEscape_;\n }\n\n /**\n * @param {boolean} closeOnEscape\n */\n\n }, {\n key: 'setCloseOnEscape',\n value: function setCloseOnEscape(closeOnEscape) {\n this.closeOnEscape_ = closeOnEscape;\n }\n\n /**\n * @param {!KeyboardEvent} evt\n */\n\n }, {\n key: 'handleKeyDown',\n value: function handleKeyDown(evt) {\n if (this.getCloseOnEscape() && (evt.key === 'Escape' || evt.keyCode === 27)) {\n this.close(REASON_DISMISS);\n }\n }\n\n /**\n * @param {!MouseEvent} evt\n */\n\n }, {\n key: 'handleActionButtonClick',\n value: function handleActionButtonClick(evt) {\n this.close(REASON_ACTION);\n }\n\n /**\n * @param {!MouseEvent} evt\n */\n\n }, {\n key: 'handleActionIconClick',\n value: function handleActionIconClick(evt) {\n this.close(REASON_DISMISS);\n }\n\n /** @private */\n\n }, {\n key: 'clearAutoDismissTimer_',\n value: function clearAutoDismissTimer_() {\n clearTimeout(this.autoDismissTimer_);\n this.autoDismissTimer_ = 0;\n }\n\n /** @private */\n\n }, {\n key: 'handleAnimationTimerEnd_',\n value: function handleAnimationTimerEnd_() {\n this.animationTimer_ = 0;\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].OPENING);\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CLOSING);\n }\n\n /**\n * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.\n * @param {Function} callback\n * @private\n */\n\n }, {\n key: 'runNextAnimationFrame_',\n value: function runNextAnimationFrame_(callback) {\n var _this4 = this;\n\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = requestAnimationFrame(function () {\n _this4.animationFrame_ = 0;\n clearTimeout(_this4.animationTimer_);\n _this4.animationTimer_ = setTimeout(callback, 0);\n });\n }\n }]);\n\n return MDCSnackbarFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCSnackbarFoundation);\n\n/***/ }),\n/* 131 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Snackbar. Provides an interface for managing:\n * - CSS classes\n * - Event handlers\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nvar MDCSnackbarAdapter = function () {\n function MDCSnackbarAdapter() {\n _classCallCheck(this, MDCSnackbarAdapter);\n }\n\n _createClass(MDCSnackbarAdapter, [{\n key: \"addClass\",\n\n /** @param {string} className */\n value: function addClass(className) {}\n\n /** @param {string} className */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n }, {\n key: \"announce\",\n value: function announce() {}\n }, {\n key: \"notifyOpening\",\n value: function notifyOpening() {}\n }, {\n key: \"notifyOpened\",\n value: function notifyOpened() {}\n\n /**\n * @param {string} reason\n */\n\n }, {\n key: \"notifyClosing\",\n value: function notifyClosing(reason) {}\n\n /**\n * @param {string} reason\n */\n\n }, {\n key: \"notifyClosed\",\n value: function notifyClosed(reason) {}\n }]);\n\n return MDCSnackbarAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCSnackbarAdapter);\n\n/***/ }),\n/* 132 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"announce\", function() { return announce; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(23);\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\n\n\nvar ARIA_LIVE_DELAY_MS = __WEBPACK_IMPORTED_MODULE_0__constants__[\"b\" /* numbers */].ARIA_LIVE_DELAY_MS;\nvar ARIA_LIVE_LABEL_TEXT_ATTR = __WEBPACK_IMPORTED_MODULE_0__constants__[\"c\" /* strings */].ARIA_LIVE_LABEL_TEXT_ATTR;\n\n/**\n * @param {!HTMLElement} ariaEl\n * @param {!HTMLElement=} labelEl\n */\n\nfunction announce(ariaEl) {\n var labelEl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ariaEl;\n\n var priority = ariaEl.getAttribute('aria-live');\n var labelText = labelEl.textContent.trim(); // Ignore ` ` (see below)\n if (!labelText) {\n return;\n }\n\n // Temporarily disable `aria-live` to prevent JAWS+Firefox from announcing the message twice.\n ariaEl.setAttribute('aria-live', 'off');\n\n // Temporarily clear `textContent` to force a DOM mutation event that will be detected by screen readers.\n // `aria-live` elements are only announced when the element's `textContent` *changes*, so snackbars\n // sent to the browser in the initial HTML response won't be read unless we clear the element's `textContent` first.\n // Similarly, displaying the same snackbar message twice in a row doesn't trigger a DOM mutation event,\n // so screen readers won't announce the second message unless we first clear `textContent`.\n //\n // We have to clear the label text two different ways to make it work in all browsers and screen readers:\n //\n // 1. `textContent = ''` is required for IE11 + JAWS\n // 2. `innerHTML = ' '` is required for Chrome + JAWS and NVDA\n //\n // All other browser/screen reader combinations support both methods.\n //\n // The wrapper `<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;\"> </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(function () {\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\n\n\n/***/ }),\n/* 133 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSwitch\", function() { return MDCSwitch; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_selection_control_index__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(134);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_ripple_util__ = __webpack_require__(5);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCSwitchFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n/* eslint-disable no-unused-vars */\n\n/* eslint-enable no-unused-vars */\n\n\n\n\n/**\n * @extends MDCComponent<!MDCSwitchFoundation>\n * @implements {MDCSelectionControl}\n */\n\nvar MDCSwitch = function (_MDCComponent) {\n _inherits(MDCSwitch, _MDCComponent);\n\n _createClass(MDCSwitch, null, [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCSwitch(root);\n }\n }]);\n\n function MDCSwitch() {\n var _ref;\n\n _classCallCheck(this, MDCSwitch);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {!MDCRipple} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCSwitch.__proto__ || Object.getPrototypeOf(MDCSwitch)).call.apply(_ref, [this].concat(args)));\n\n _this.ripple_ = _this.initRipple_();\n\n /** @private {!Function} */\n _this.changeHandler_;\n return _this;\n }\n\n _createClass(MDCSwitch, [{\n key: 'destroy',\n value: function destroy() {\n _get(MDCSwitch.prototype.__proto__ || Object.getPrototypeOf(MDCSwitch.prototype), 'destroy', this).call(this);\n this.ripple_.destroy();\n this.nativeControl_.removeEventListener('change', this.changeHandler_);\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n this.changeHandler_ = this.foundation_.handleChange.bind(this.foundation_);\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 /**\n * Returns the state of the native control element, or null if the native control element is not present.\n * @return {?MDCSelectionControlState}\n * @private\n */\n\n }, {\n key: 'initRipple_',\n\n\n /**\n * @return {!MDCRipple}\n * @private\n */\n value: function initRipple_() {\n var _this2 = this;\n\n var RIPPLE_SURFACE_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings.RIPPLE_SURFACE_SELECTOR;\n\n var rippleSurface = /** @type {!Element} */this.root_.querySelector(RIPPLE_SURFACE_SELECTOR);\n\n var MATCHES = Object(__WEBPACK_IMPORTED_MODULE_4__material_ripple_util__[\"getMatchesProperty\"])(HTMLElement.prototype);\n var adapter = _extends(__WEBPACK_IMPORTED_MODULE_3__material_ripple_index__[\"MDCRipple\"].createAdapter(this), {\n isUnbounded: function isUnbounded() {\n return true;\n },\n isSurfaceActive: function isSurfaceActive() {\n return _this2.nativeControl_[MATCHES](':active');\n },\n addClass: function addClass(className) {\n return rippleSurface.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return rippleSurface.classList.remove(className);\n },\n registerInteractionHandler: function registerInteractionHandler(type, handler) {\n return _this2.nativeControl_.addEventListener(type, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {\n return _this2.nativeControl_.removeEventListener(type, handler);\n },\n updateCssVariable: function updateCssVariable(varName, value) {\n return rippleSurface.style.setProperty(varName, value);\n },\n computeBoundingRect: function computeBoundingRect() {\n return rippleSurface.getBoundingClientRect();\n }\n });\n var foundation = new __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__[\"MDCRippleFoundation\"](adapter);\n return new __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__[\"MDCRipple\"](this.root_, foundation);\n }\n\n /** @return {!MDCSwitchFoundation} */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this3 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */]({\n addClass: function addClass(className) {\n return _this3.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this3.root_.classList.remove(className);\n },\n setNativeControlChecked: function setNativeControlChecked(checked) {\n return _this3.nativeControl_.checked = checked;\n },\n setNativeControlDisabled: function setNativeControlDisabled(disabled) {\n return _this3.nativeControl_.disabled = disabled;\n }\n });\n }\n\n /** @return {!MDCRipple} */\n\n }, {\n key: 'nativeControl_',\n get: function get() {\n var NATIVE_CONTROL_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings.NATIVE_CONTROL_SELECTOR;\n\n var el = /** @type {?MDCSelectionControlState} */this.root_.querySelector(NATIVE_CONTROL_SELECTOR);\n return el;\n }\n }, {\n key: 'ripple',\n get: function get() {\n return this.ripple_;\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'checked',\n get: function get() {\n return this.nativeControl_.checked;\n }\n\n /** @param {boolean} checked */\n ,\n set: function set(checked) {\n this.foundation_.setChecked(checked);\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'disabled',\n get: function get() {\n return this.nativeControl_.disabled;\n }\n\n /** @param {boolean} disabled */\n ,\n set: function set(disabled) {\n this.foundation_.setDisabled(disabled);\n }\n }]);\n\n return MDCSwitch;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 134 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(135);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(136);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n/* eslint-enable no-unused-vars */\n\n\n/**\n * @extends {MDCFoundation<!MDCSwitchAdapter>}\n */\n\nvar MDCSwitchFoundation = function (_MDCFoundation) {\n _inherits(MDCSwitchFoundation, _MDCFoundation);\n\n _createClass(MDCSwitchFoundation, null, [{\n key: 'strings',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return {!MDCSwitchAdapter} */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCSwitchAdapter} */{\n addClass: function addClass() /* className: string */{},\n removeClass: function removeClass() /* className: string */{},\n setNativeControlChecked: function setNativeControlChecked() /* checked: boolean */{},\n setNativeControlDisabled: function setNativeControlDisabled() /* disabled: boolean */{}\n }\n );\n }\n }]);\n\n function MDCSwitchFoundation(adapter) {\n _classCallCheck(this, MDCSwitchFoundation);\n\n return _possibleConstructorReturn(this, (MDCSwitchFoundation.__proto__ || Object.getPrototypeOf(MDCSwitchFoundation)).call(this, _extends(MDCSwitchFoundation.defaultAdapter, adapter)));\n }\n\n /** @param {boolean} checked */\n\n\n _createClass(MDCSwitchFoundation, [{\n key: 'setChecked',\n value: function setChecked(checked) {\n this.adapter_.setNativeControlChecked(checked);\n this.updateCheckedStyling_(checked);\n }\n\n /** @param {boolean} disabled */\n\n }, {\n key: 'setDisabled',\n value: function setDisabled(disabled) {\n this.adapter_.setNativeControlDisabled(disabled);\n if (disabled) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].DISABLED);\n } else {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].DISABLED);\n }\n }\n\n /**\n * Handles the change event for the switch native control.\n * @param {!Event} evt\n */\n\n }, {\n key: 'handleChange',\n value: function handleChange(evt) {\n this.updateCheckedStyling_(evt.target.checked);\n }\n\n /**\n * Updates the styling of the switch based on its checked state.\n * @param {boolean} checked\n * @private\n */\n\n }, {\n key: 'updateCheckedStyling_',\n value: function updateCheckedStyling_(checked) {\n if (checked) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CHECKED);\n } else {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].CHECKED);\n }\n }\n }]);\n\n return MDCSwitchFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCSwitchFoundation);\n\n/***/ }),\n/* 135 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Switch. Provides an interface for managing\n * - classes\n * - dom\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nvar MDCSwitchAdapter = function () {\n function MDCSwitchAdapter() {\n _classCallCheck(this, MDCSwitchAdapter);\n }\n\n _createClass(MDCSwitchAdapter, [{\n key: \"addClass\",\n\n /** @param {string} className */\n value: function addClass(className) {}\n\n /** @param {string} className */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {}\n\n /** @param {boolean} checked */\n\n }, {\n key: \"setNativeControlChecked\",\n value: function setNativeControlChecked(checked) {}\n\n /** @param {boolean} disabled */\n\n }, {\n key: \"setNativeControlDisabled\",\n value: function setNativeControlDisabled(disabled) {}\n }]);\n\n return MDCSwitchAdapter;\n}();\n\n/* unused harmony default export */ var _unused_webpack_default_export = (MDCSwitchAdapter);\n\n/***/ }),\n/* 136 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\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\n/** @enum {string} */\nvar cssClasses = {\n CHECKED: 'mdc-switch--checked',\n DISABLED: 'mdc-switch--disabled'\n};\n\n/** @enum {string} */\nvar strings = {\n NATIVE_CONTROL_SELECTOR: '.mdc-switch__native-control',\n RIPPLE_SURFACE_SELECTOR: '.mdc-switch__thumb-underlay'\n};\n\n\n\n/***/ }),\n/* 137 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\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\n/** @enum {string} */\nvar cssClasses = {\n ACTIVE: 'mdc-tab-indicator--active',\n FADE: 'mdc-tab-indicator--fade',\n NO_TRANSITION: 'mdc-tab-indicator--no-transition'\n};\n\n/** @enum {string} */\nvar strings = {\n CONTENT_SELECTOR: '.mdc-tab-indicator__content'\n};\n\n\n\n/***/ }),\n/* 138 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(24);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n/**\n * @extends {MDCTabIndicatorFoundation}\n * @final\n */\n\nvar MDCSlidingTabIndicatorFoundation = function (_MDCTabIndicatorFound) {\n _inherits(MDCSlidingTabIndicatorFoundation, _MDCTabIndicatorFound);\n\n function MDCSlidingTabIndicatorFoundation() {\n _classCallCheck(this, MDCSlidingTabIndicatorFoundation);\n\n return _possibleConstructorReturn(this, (MDCSlidingTabIndicatorFoundation.__proto__ || Object.getPrototypeOf(MDCSlidingTabIndicatorFoundation)).apply(this, arguments));\n }\n\n _createClass(MDCSlidingTabIndicatorFoundation, [{\n key: 'activate',\n\n /** @param {!ClientRect=} previousIndicatorClientRect */\n value: function activate(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(__WEBPACK_IMPORTED_MODULE_0__foundation__[\"a\" /* default */].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 var currentClientRect = this.computeContentClientRect();\n var widthDelta = previousIndicatorClientRect.width / currentClientRect.width;\n var xPosition = previousIndicatorClientRect.left - currentClientRect.left;\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__foundation__[\"a\" /* default */].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(__WEBPACK_IMPORTED_MODULE_0__foundation__[\"a\" /* default */].cssClasses.NO_TRANSITION);\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__foundation__[\"a\" /* default */].cssClasses.ACTIVE);\n this.adapter_.setContentStyleProperty('transform', '');\n }\n }, {\n key: 'deactivate',\n value: function deactivate() {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_0__foundation__[\"a\" /* default */].cssClasses.ACTIVE);\n }\n }]);\n\n return MDCSlidingTabIndicatorFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCSlidingTabIndicatorFoundation);\n\n/***/ }),\n/* 139 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(24);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n/**\n * @extends {MDCTabIndicatorFoundation}\n * @final\n */\n\nvar MDCFadingTabIndicatorFoundation = function (_MDCTabIndicatorFound) {\n _inherits(MDCFadingTabIndicatorFoundation, _MDCTabIndicatorFound);\n\n function MDCFadingTabIndicatorFoundation() {\n _classCallCheck(this, MDCFadingTabIndicatorFoundation);\n\n return _possibleConstructorReturn(this, (MDCFadingTabIndicatorFoundation.__proto__ || Object.getPrototypeOf(MDCFadingTabIndicatorFoundation)).apply(this, arguments));\n }\n\n _createClass(MDCFadingTabIndicatorFoundation, [{\n key: 'activate',\n value: function activate() {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__foundation__[\"a\" /* default */].cssClasses.ACTIVE);\n }\n }, {\n key: 'deactivate',\n value: function deactivate() {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_0__foundation__[\"a\" /* default */].cssClasses.ACTIVE);\n }\n }]);\n\n return MDCFadingTabIndicatorFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCFadingTabIndicatorFoundation);\n\n/***/ }),\n/* 140 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(141);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n/* eslint-disable no-unused-vars */\n\n/* eslint-enable no-unused-vars */\n\n\n\n/**\n * @extends {MDCFoundation<!MDCTabAdapter>}\n * @final\n */\n\nvar MDCTabFoundation = function (_MDCFoundation) {\n _inherits(MDCTabFoundation, _MDCFoundation);\n\n _createClass(MDCTabFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */];\n }\n\n /**\n * @see MDCTabAdapter for typing information\n * @return {!MDCTabAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCTabAdapter} */{\n addClass: function addClass() {},\n removeClass: function removeClass() {},\n hasClass: function hasClass() {},\n setAttr: function setAttr() {},\n activateIndicator: function activateIndicator() {},\n deactivateIndicator: function deactivateIndicator() {},\n notifyInteracted: function notifyInteracted() {},\n getOffsetLeft: function getOffsetLeft() {},\n getOffsetWidth: function getOffsetWidth() {},\n getContentOffsetLeft: function getContentOffsetLeft() {},\n getContentOffsetWidth: function getContentOffsetWidth() {},\n focus: function focus() {}\n }\n );\n }\n\n /** @param {!MDCTabAdapter} adapter */\n\n }]);\n\n function MDCTabFoundation(adapter) {\n _classCallCheck(this, MDCTabFoundation);\n\n /** @private {boolean} */\n var _this = _possibleConstructorReturn(this, (MDCTabFoundation.__proto__ || Object.getPrototypeOf(MDCTabFoundation)).call(this, _extends(MDCTabFoundation.defaultAdapter, adapter)));\n\n _this.focusOnActivate_ = true;\n return _this;\n }\n\n /**\n * Handles the \"click\" event\n */\n\n\n _createClass(MDCTabFoundation, [{\n key: 'handleClick',\n value: function 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 /**\n * Returns the Tab's active state\n * @return {boolean}\n */\n\n }, {\n key: 'isActive',\n value: function isActive() {\n return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].ACTIVE);\n }\n\n /**\n * Sets whether the tab should focus itself when activated\n * @param {boolean} focusOnActivate\n */\n\n }, {\n key: 'setFocusOnActivate',\n value: function setFocusOnActivate(focusOnActivate) {\n this.focusOnActivate_ = focusOnActivate;\n }\n\n /**\n * Activates the Tab\n * @param {!ClientRect=} previousIndicatorClientRect\n */\n\n }, {\n key: 'activate',\n value: function activate(previousIndicatorClientRect) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].ACTIVE);\n this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_SELECTED, 'true');\n this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* 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\n }, {\n key: 'deactivate',\n value: function deactivate() {\n // Early exit\n if (!this.isActive()) {\n return;\n }\n\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].ACTIVE);\n this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].ARIA_SELECTED, 'false');\n this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* strings */].TABINDEX, '-1');\n this.adapter_.deactivateIndicator();\n }\n\n /**\n * Returns the dimensions of the Tab\n * @return {!MDCTabDimensions}\n */\n\n }, {\n key: 'computeDimensions',\n value: function computeDimensions() {\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\n return {\n rootLeft: rootLeft,\n rootRight: rootLeft + rootWidth,\n contentLeft: rootLeft + contentLeft,\n contentRight: rootLeft + contentLeft + contentWidth\n };\n }\n }]);\n\n return MDCTabFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTabFoundation);\n\n/***/ }),\n/* 141 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\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\n/** @enum {string} */\nvar cssClasses = {\n ACTIVE: 'mdc-tab--active'\n};\n\n/** @enum {string} */\nvar strings = {\n ARIA_SELECTED: 'aria-selected',\n RIPPLE_SELECTOR: '.mdc-tab__ripple',\n CONTENT_SELECTOR: '.mdc-tab__content',\n TAB_INDICATOR_SELECTOR: '.mdc-tab-indicator',\n TABINDEX: 'tabIndex',\n INTERACTED_EVENT: 'MDCTab:interacted'\n};\n\n\n\n/***/ }),\n/* 142 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTabBar\", function() { return MDCTabBar; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_tab_index__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_tab_scroller_index__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__adapter__ = __webpack_require__(59);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__foundation__ = __webpack_require__(148);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTabBarFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_4__foundation__[\"a\"]; });\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n\n\nvar tabIdCounter = 0;\n\n/**\n * @extends {MDCComponent<!MDCTabBarFoundation>}\n * @final\n */\n\nvar MDCTabBar = function (_MDCComponent) {\n _inherits(MDCTabBar, _MDCComponent);\n\n /**\n * @param {...?} args\n */\n function MDCTabBar() {\n var _ref;\n\n _classCallCheck(this, MDCTabBar);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {!Array<!MDCTab>} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCTabBar.__proto__ || Object.getPrototypeOf(MDCTabBar)).call.apply(_ref, [this].concat(args)));\n\n _this.tabList_;\n\n /** @private {?MDCTabScroller} */\n _this.tabScroller_;\n\n /** @private {?function(?Event): undefined} */\n _this.handleTabInteraction_;\n\n /** @private {?function(?Event): undefined} */\n _this.handleKeyDown_;\n return _this;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCTabBar}\n */\n\n\n _createClass(MDCTabBar, [{\n key: 'initialize',\n\n\n /**\n * @param {(function(!Element): !MDCTab)=} tabFactory A function which creates a new MDCTab\n * @param {(function(!Element): !MDCTabScroller)=} tabScrollerFactory A function which creates a new MDCTabScroller\n */\n value: function initialize() {\n var tabFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_1__material_tab_index__[\"MDCTab\"](el);\n };\n var tabScrollerFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_2__material_tab_scroller_index__[\"MDCTabScroller\"](el);\n };\n\n this.tabList_ = this.instantiateTabs_(tabFactory);\n this.tabScroller_ = this.instantiateTabScroller_(tabScrollerFactory);\n }\n }, {\n key: 'initialSyncWithDOM',\n value: function initialSyncWithDOM() {\n var _this2 = this;\n\n this.handleTabInteraction_ = function (evt) {\n return _this2.foundation_.handleTabInteraction(evt);\n };\n this.handleKeyDown_ = function (evt) {\n return _this2.foundation_.handleKeyDown(evt);\n };\n\n this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_1__material_tab_index__[\"MDCTabFoundation\"].strings.INTERACTED_EVENT, this.handleTabInteraction_);\n this.root_.addEventListener('keydown', this.handleKeyDown_);\n\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 }, {\n key: 'destroy',\n value: function destroy() {\n _get(MDCTabBar.prototype.__proto__ || Object.getPrototypeOf(MDCTabBar.prototype), 'destroy', this).call(this);\n this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_1__material_tab_index__[\"MDCTabFoundation\"].strings.INTERACTED_EVENT, this.handleTabInteraction_);\n this.root_.removeEventListener('keydown', this.handleKeyDown_);\n this.tabList_.forEach(function (tab) {\n return tab.destroy();\n });\n this.tabScroller_.destroy();\n }\n\n /**\n * @return {!MDCTabBarFoundation}\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this3 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_4__foundation__[\"a\" /* default */](\n /** @type {!MDCTabBarAdapter} */{\n scrollTo: function scrollTo(scrollX) {\n return _this3.tabScroller_.scrollTo(scrollX);\n },\n incrementScroll: function incrementScroll(scrollXIncrement) {\n return _this3.tabScroller_.incrementScroll(scrollXIncrement);\n },\n getScrollPosition: function getScrollPosition() {\n return _this3.tabScroller_.getScrollPosition();\n },\n getScrollContentWidth: function getScrollContentWidth() {\n return _this3.tabScroller_.getScrollContentWidth();\n },\n getOffsetWidth: function getOffsetWidth() {\n return _this3.root_.offsetWidth;\n },\n isRTL: function isRTL() {\n return window.getComputedStyle(_this3.root_).getPropertyValue('direction') === 'rtl';\n },\n setActiveTab: function setActiveTab(index) {\n return _this3.foundation_.activateTab(index);\n },\n activateTabAtIndex: function activateTabAtIndex(index, clientRect) {\n return _this3.tabList_[index].activate(clientRect);\n },\n deactivateTabAtIndex: function deactivateTabAtIndex(index) {\n return _this3.tabList_[index].deactivate();\n },\n focusTabAtIndex: function focusTabAtIndex(index) {\n return _this3.tabList_[index].focus();\n },\n getTabIndicatorClientRectAtIndex: function getTabIndicatorClientRectAtIndex(index) {\n return _this3.tabList_[index].computeIndicatorClientRect();\n },\n getTabDimensionsAtIndex: function getTabDimensionsAtIndex(index) {\n return _this3.tabList_[index].computeDimensions();\n },\n getPreviousActiveTabIndex: function getPreviousActiveTabIndex() {\n for (var i = 0; i < _this3.tabList_.length; i++) {\n if (_this3.tabList_[i].active) {\n return i;\n }\n }\n return -1;\n },\n getFocusedTabIndex: function getFocusedTabIndex() {\n var tabElements = _this3.getTabElements_();\n var activeElement = document.activeElement;\n return tabElements.indexOf(activeElement);\n },\n getIndexOfTabById: function getIndexOfTabById(id) {\n for (var i = 0; i < _this3.tabList_.length; i++) {\n if (_this3.tabList_[i].id === id) {\n return i;\n }\n }\n return -1;\n },\n getTabListLength: function getTabListLength() {\n return _this3.tabList_.length;\n },\n notifyTabActivated: function notifyTabActivated(index) {\n return _this3.emit(__WEBPACK_IMPORTED_MODULE_4__foundation__[\"a\" /* default */].strings.TAB_ACTIVATED_EVENT, { index: index }, true);\n }\n });\n }\n\n /**\n * Activates the tab at the given index\n * @param {number} index The index of the tab\n */\n\n }, {\n key: 'activateTab',\n value: function activateTab(index) {\n this.foundation_.activateTab(index);\n }\n\n /**\n * Scrolls the tab at the given index into view\n * @param {number} index THe index of the tab\n */\n\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView(index) {\n this.foundation_.scrollIntoView(index);\n }\n\n /**\n * Returns all the tab elements in a nice clean array\n * @return {!Array<!Element>}\n * @private\n */\n\n }, {\n key: 'getTabElements_',\n value: function getTabElements_() {\n return [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__foundation__[\"a\" /* default */].strings.TAB_SELECTOR));\n }\n\n /**\n * Instantiates tab components on all child tab elements\n * @param {(function(!Element): !MDCTab)} tabFactory\n * @return {!Array<!MDCTab>}\n * @private\n */\n\n }, {\n key: 'instantiateTabs_',\n value: function instantiateTabs_(tabFactory) {\n return this.getTabElements_().map(function (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 * @param {(function(!Element): !MDCTabScroller)} tabScrollerFactory\n * @return {?MDCTabScroller}\n * @private\n */\n\n }, {\n key: 'instantiateTabScroller_',\n value: function instantiateTabScroller_(tabScrollerFactory) {\n var tabScrollerElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__foundation__[\"a\" /* default */].strings.TAB_SCROLLER_SELECTOR);\n if (tabScrollerElement) {\n return tabScrollerFactory(tabScrollerElement);\n }\n return null;\n }\n }, {\n key: 'focusOnActivate',\n set: function set(focusOnActivate) {\n this.tabList_.forEach(function (tab) {\n return tab.focusOnActivate = focusOnActivate;\n });\n }\n }, {\n key: 'useAutomaticActivation',\n set: function set(useAutomaticActivation) {\n this.foundation_.setUseAutomaticActivation(useAutomaticActivation);\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCTabBar(root);\n }\n }]);\n\n return MDCTabBar;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 143 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(58);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__rtl_scroller__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__rtl_default_scroller__ = __webpack_require__(144);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__rtl_negative_scroller__ = __webpack_require__(145);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__rtl_reverse_scroller__ = __webpack_require__(146);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n/* eslint-disable no-unused-vars */\n\n\n/* eslint-enable no-unused-vars */\n\n\n\n\n/**\n * @extends {MDCFoundation<!MDCTabScrollerAdapter>}\n * @final\n */\n\nvar MDCTabScrollerFoundation = function (_MDCFoundation) {\n _inherits(MDCTabScrollerFoundation, _MDCFoundation);\n\n _createClass(MDCTabScrollerFoundation, null, [{\n key: 'cssClasses',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* cssClasses */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */];\n }\n\n /**\n * @see MDCTabScrollerAdapter for typing information\n * @return {!MDCTabScrollerAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCTabScrollerAdapter} */{\n eventTargetMatchesSelector: function eventTargetMatchesSelector() {},\n addClass: function addClass() {},\n removeClass: function removeClass() {},\n addScrollAreaClass: function addScrollAreaClass() {},\n setScrollAreaStyleProperty: function setScrollAreaStyleProperty() {},\n setScrollContentStyleProperty: function setScrollContentStyleProperty() {},\n getScrollContentStyleValue: function getScrollContentStyleValue() {},\n setScrollAreaScrollLeft: function setScrollAreaScrollLeft() {},\n getScrollAreaScrollLeft: function getScrollAreaScrollLeft() {},\n getScrollContentOffsetWidth: function getScrollContentOffsetWidth() {},\n getScrollAreaOffsetWidth: function getScrollAreaOffsetWidth() {},\n computeScrollAreaClientRect: function computeScrollAreaClientRect() {},\n computeScrollContentClientRect: function computeScrollContentClientRect() {},\n computeHorizontalScrollbarHeight: function computeHorizontalScrollbarHeight() {}\n }\n );\n }\n\n /** @param {!MDCTabScrollerAdapter} adapter */\n\n }]);\n\n function MDCTabScrollerFoundation(adapter) {\n _classCallCheck(this, MDCTabScrollerFoundation);\n\n /**\n * This boolean controls whether we should handle the transitionend and interaction events during the animation.\n * @private {boolean}\n */\n var _this = _possibleConstructorReturn(this, (MDCTabScrollerFoundation.__proto__ || Object.getPrototypeOf(MDCTabScrollerFoundation)).call(this, _extends(MDCTabScrollerFoundation.defaultAdapter, adapter)));\n\n _this.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 * @private {?MDCTabScrollerRTL}\n */\n _this.rtlScrollerInstance_;\n return _this;\n }\n\n _createClass(MDCTabScrollerFoundation, [{\n key: 'init',\n value: function 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 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 /**\n * Computes the current visual scroll position\n * @return {number}\n */\n\n }, {\n key: 'getScrollPosition',\n value: function getScrollPosition() {\n if (this.isRTL_()) {\n return this.computeCurrentScrollPositionRTL_();\n }\n\n var currentTranslateX = this.calculateCurrentTranslateX_();\n var scrollLeft = this.adapter_.getScrollAreaScrollLeft();\n return scrollLeft - currentTranslateX;\n }\n\n /**\n * Handles interaction events that occur during transition\n */\n\n }, {\n key: 'handleInteraction',\n value: function 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 * @param {!Event} evt\n */\n\n }, {\n key: 'handleTransitionEnd',\n value: function handleTransitionEnd(evt) {\n // Early exit if we aren't animating or the event was triggered by a different element.\n if (!this.isAnimating_ || !this.adapter_.eventTargetMatchesSelector(evt.target, 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 {number} scrollXIncrement The value by which to increment the scroll position\n */\n\n }, {\n key: 'incrementScroll',\n value: function incrementScroll(scrollXIncrement) {\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 * @param {number} scrollX\n */\n\n }, {\n key: 'scrollTo',\n value: function scrollTo(scrollX) {\n if (this.isRTL_()) {\n return this.scrollToRTL_(scrollX);\n }\n\n this.scrollTo_(scrollX);\n }\n\n /**\n * Returns the appropriate version of the MDCTabScrollerRTL\n * @return {!MDCTabScrollerRTL}\n */\n\n }, {\n key: 'getRTLScroller',\n value: function getRTLScroller() {\n if (!this.rtlScrollerInstance_) {\n this.rtlScrollerInstance_ = this.rtlScrollerFactory_();\n }\n\n return this.rtlScrollerInstance_;\n }\n\n /**\n * Returns the translateX value from a CSS matrix transform function string\n * @return {number}\n * @private\n */\n\n }, {\n key: 'calculateCurrentTranslateX_',\n value: function calculateCurrentTranslateX_() {\n var 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 var results = /\\((.+)\\)/.exec(transformValue)[1];\n var parts = results.split(',');\n return parseFloat(parts[4]);\n }\n\n /**\n * Calculates a safe scroll value that is > 0 and < the max scroll value\n * @param {number} scrollX The distance to scroll\n * @return {number}\n * @private\n */\n\n }, {\n key: 'clampScrollValue_',\n value: function clampScrollValue_(scrollX) {\n var edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.left, scrollX), edges.right);\n }\n\n /**\n * @return {number}\n * @private\n */\n\n }, {\n key: 'computeCurrentScrollPositionRTL_',\n value: function computeCurrentScrollPositionRTL_() {\n var translateX = this.calculateCurrentTranslateX_();\n return this.getRTLScroller().getScrollPositionRTL(translateX);\n }\n\n /**\n * @return {!MDCTabScrollerHorizontalEdges}\n * @private\n */\n\n }, {\n key: 'calculateScrollEdges_',\n value: function calculateScrollEdges_() {\n var contentWidth = this.adapter_.getScrollContentOffsetWidth();\n var rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return (/** @type {!MDCTabScrollerHorizontalEdges} */{\n left: 0,\n right: contentWidth - rootWidth\n }\n );\n }\n\n /**\n * Internal scroll method\n * @param {number} scrollX The new scroll position\n * @private\n */\n\n }, {\n key: 'scrollTo_',\n value: function scrollTo_(scrollX) {\n var currentScrollX = this.getScrollPosition();\n var safeScrollX = this.clampScrollValue_(scrollX);\n var scrollDelta = safeScrollX - currentScrollX;\n this.animate_( /** @type {!MDCTabScrollerAnimation} */{\n finalScrollPosition: safeScrollX,\n scrollDelta: scrollDelta\n });\n }\n\n /**\n * Internal RTL scroll method\n * @param {number} scrollX The new scroll position\n * @private\n */\n\n }, {\n key: 'scrollToRTL_',\n value: function scrollToRTL_(scrollX) {\n var animation = this.getRTLScroller().scrollToRTL(scrollX);\n this.animate_(animation);\n }\n\n /**\n * Internal increment scroll method\n * @param {number} scrollX The new scroll position increment\n * @private\n */\n\n }, {\n key: 'incrementScroll_',\n value: function incrementScroll_(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_( /** @type {!MDCTabScrollerAnimation} */{\n finalScrollPosition: safeScrollX,\n scrollDelta: scrollDelta\n });\n }\n\n /**\n * Internal incremenet scroll RTL method\n * @param {number} scrollX The new scroll position RTL increment\n * @private\n */\n\n }, {\n key: 'incrementScrollRTL_',\n value: function incrementScrollRTL_(scrollX) {\n var animation = this.getRTLScroller().incrementScrollRTL(scrollX);\n this.animate_(animation);\n }\n\n /**\n * Animates the tab scrolling\n * @param {!MDCTabScrollerAnimation} animation The animation to apply\n * @private\n */\n\n }, {\n key: 'animate_',\n value: function animate_(animation) {\n var _this2 = this;\n\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(function () {\n _this2.adapter_.addClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);\n _this2.adapter_.setScrollContentStyleProperty('transform', 'none');\n });\n\n this.isAnimating_ = true;\n }\n\n /**\n * Stops scroll animation\n * @private\n */\n\n }, {\n key: 'stopScrollAnimation_',\n value: function stopScrollAnimation_() {\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 /**\n * Gets the current scroll position during animation\n * @return {number}\n * @private\n */\n\n }, {\n key: 'getAnimatingScrollPosition_',\n value: function getAnimatingScrollPosition_() {\n var currentTranslateX = this.calculateCurrentTranslateX_();\n var 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 * @return {!MDCTabScrollerRTL}\n * @private\n */\n\n }, {\n key: 'rtlScrollerFactory_',\n value: function rtlScrollerFactory_() {\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\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 __WEBPACK_IMPORTED_MODULE_5__rtl_negative_scroller__[\"a\" /* default */](this.adapter_);\n }\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\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 __WEBPACK_IMPORTED_MODULE_6__rtl_reverse_scroller__[\"a\" /* default */](this.adapter_);\n }\n\n return new __WEBPACK_IMPORTED_MODULE_4__rtl_default_scroller__[\"a\" /* default */](this.adapter_);\n }\n\n /**\n * @return {boolean}\n * @private\n */\n\n }, {\n key: 'isRTL_',\n value: function isRTL_() {\n return this.adapter_.getScrollContentStyleValue('direction') === 'rtl';\n }\n }]);\n\n return MDCTabScrollerFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTabScrollerFoundation);\n\n/***/ }),\n/* 144 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__rtl_scroller__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(4);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n/* eslint-disable no-unused-vars */\n\n/* eslint-enable no-unused-vars */\n\n/**\n * @extends {MDCTabScrollerRTL}\n * @final\n */\n\nvar MDCTabScrollerRTLDefault = function (_MDCTabScrollerRTL) {\n _inherits(MDCTabScrollerRTLDefault, _MDCTabScrollerRTL);\n\n function MDCTabScrollerRTLDefault() {\n _classCallCheck(this, MDCTabScrollerRTLDefault);\n\n return _possibleConstructorReturn(this, (MDCTabScrollerRTLDefault.__proto__ || Object.getPrototypeOf(MDCTabScrollerRTLDefault)).apply(this, arguments));\n }\n\n _createClass(MDCTabScrollerRTLDefault, [{\n key: 'getScrollPositionRTL',\n\n /**\n * @return {number}\n */\n value: function getScrollPositionRTL() {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n\n var _calculateScrollEdges = this.calculateScrollEdges_(),\n right = _calculateScrollEdges.right;\n // Scroll values on most browsers are ints instead of floats so we round\n\n\n return Math.round(right - currentScrollLeft);\n }\n\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n */\n\n }, {\n key: 'scrollToRTL',\n value: function scrollToRTL(scrollX) {\n var edges = this.calculateScrollEdges_();\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(edges.right - scrollX);\n return (/** @type {!MDCTabScrollerAnimation} */{\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft\n }\n );\n }\n\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n */\n\n }, {\n key: 'incrementScrollRTL',\n value: function incrementScrollRTL(scrollX) {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);\n return (/** @type {!MDCTabScrollerAnimation} */{\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft\n }\n );\n }\n\n /**\n * @param {number} scrollX\n * @return {number}\n */\n\n }, {\n key: 'getAnimatingScrollPosition',\n value: function getAnimatingScrollPosition(scrollX) {\n return scrollX;\n }\n\n /**\n * @return {!MDCTabScrollerHorizontalEdges}\n * @private\n */\n\n }, {\n key: 'calculateScrollEdges_',\n value: function calculateScrollEdges_() {\n var contentWidth = this.adapter_.getScrollContentOffsetWidth();\n var rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return (/** @type {!MDCTabScrollerHorizontalEdges} */{\n left: 0,\n right: contentWidth - rootWidth\n }\n );\n }\n\n /**\n * @param {number} scrollX\n * @return {number}\n * @private\n */\n\n }, {\n key: 'clampScrollValue_',\n value: function clampScrollValue_(scrollX) {\n var edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.left, scrollX), edges.right);\n }\n }]);\n\n return MDCTabScrollerRTLDefault;\n}(__WEBPACK_IMPORTED_MODULE_0__rtl_scroller__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTabScrollerRTLDefault);\n\n/***/ }),\n/* 145 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__rtl_scroller__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(4);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n/* eslint-disable no-unused-vars */\n\n/* eslint-enable no-unused-vars */\n\n/**\n * @extends {MDCTabScrollerRTL}\n * @final\n */\n\nvar MDCTabScrollerRTLNegative = function (_MDCTabScrollerRTL) {\n _inherits(MDCTabScrollerRTLNegative, _MDCTabScrollerRTL);\n\n function MDCTabScrollerRTLNegative() {\n _classCallCheck(this, MDCTabScrollerRTLNegative);\n\n return _possibleConstructorReturn(this, (MDCTabScrollerRTLNegative.__proto__ || Object.getPrototypeOf(MDCTabScrollerRTLNegative)).apply(this, arguments));\n }\n\n _createClass(MDCTabScrollerRTLNegative, [{\n key: 'getScrollPositionRTL',\n\n /**\n * @param {number} translateX The current translateX position\n * @return {number}\n */\n value: function getScrollPositionRTL(translateX) {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n return Math.round(translateX - currentScrollLeft);\n }\n\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n */\n\n }, {\n key: 'scrollToRTL',\n value: function scrollToRTL(scrollX) {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(-scrollX);\n return (/** @type {!MDCTabScrollerAnimation} */{\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft\n }\n );\n }\n\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n */\n\n }, {\n key: 'incrementScrollRTL',\n value: function incrementScrollRTL(scrollX) {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);\n return (/** @type {!MDCTabScrollerAnimation} */{\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft\n }\n );\n }\n\n /**\n * @param {number} scrollX\n * @param {number} translateX\n * @return {number}\n */\n\n }, {\n key: 'getAnimatingScrollPosition',\n value: function getAnimatingScrollPosition(scrollX, translateX) {\n return scrollX - translateX;\n }\n\n /**\n * @return {!MDCTabScrollerHorizontalEdges}\n * @private\n */\n\n }, {\n key: 'calculateScrollEdges_',\n value: function calculateScrollEdges_() {\n var contentWidth = this.adapter_.getScrollContentOffsetWidth();\n var rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return (/** @type {!MDCTabScrollerHorizontalEdges} */{\n left: rootWidth - contentWidth,\n right: 0\n }\n );\n }\n\n /**\n * @param {number} scrollX\n * @return {number}\n * @private\n */\n\n }, {\n key: 'clampScrollValue_',\n value: function clampScrollValue_(scrollX) {\n var edges = this.calculateScrollEdges_();\n return Math.max(Math.min(edges.right, scrollX), edges.left);\n }\n }]);\n\n return MDCTabScrollerRTLNegative;\n}(__WEBPACK_IMPORTED_MODULE_0__rtl_scroller__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTabScrollerRTLNegative);\n\n/***/ }),\n/* 146 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__rtl_scroller__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(4);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n/* eslint-disable no-unused-vars */\n\n/* eslint-enable no-unused-vars */\n\n/**\n * @extends {MDCTabScrollerRTL}\n * @final\n */\n\nvar MDCTabScrollerRTLReverse = function (_MDCTabScrollerRTL) {\n _inherits(MDCTabScrollerRTLReverse, _MDCTabScrollerRTL);\n\n function MDCTabScrollerRTLReverse() {\n _classCallCheck(this, MDCTabScrollerRTLReverse);\n\n return _possibleConstructorReturn(this, (MDCTabScrollerRTLReverse.__proto__ || Object.getPrototypeOf(MDCTabScrollerRTLReverse)).apply(this, arguments));\n }\n\n _createClass(MDCTabScrollerRTLReverse, [{\n key: 'getScrollPositionRTL',\n\n /**\n * @param {number} translateX\n * @return {number}\n */\n value: function getScrollPositionRTL(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\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n */\n\n }, {\n key: 'scrollToRTL',\n value: function scrollToRTL(scrollX) {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(scrollX);\n return (/** @type {!MDCTabScrollerAnimation} */{\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: currentScrollLeft - clampedScrollLeft\n }\n );\n }\n\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n */\n\n }, {\n key: 'incrementScrollRTL',\n value: function incrementScrollRTL(scrollX) {\n var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft + scrollX);\n return (/** @type {!MDCTabScrollerAnimation} */{\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: currentScrollLeft - clampedScrollLeft\n }\n );\n }\n\n /**\n * @param {number} scrollX\n * @return {number}\n */\n\n }, {\n key: 'getAnimatingScrollPosition',\n value: function getAnimatingScrollPosition(scrollX, translateX) {\n return scrollX + translateX;\n }\n\n /**\n * @return {!MDCTabScrollerHorizontalEdges}\n * @private\n */\n\n }, {\n key: 'calculateScrollEdges_',\n value: function calculateScrollEdges_() {\n var contentWidth = this.adapter_.getScrollContentOffsetWidth();\n var rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return (/** @type {!MDCTabScrollerHorizontalEdges} */{\n left: contentWidth - rootWidth,\n right: 0\n }\n );\n }\n\n /**\n * @param {number} scrollX\n * @return {number}\n * @private\n */\n\n }, {\n key: 'clampScrollValue_',\n value: function clampScrollValue_(scrollX) {\n var edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.right, scrollX), edges.left);\n }\n }]);\n\n return MDCTabScrollerRTLReverse;\n}(__WEBPACK_IMPORTED_MODULE_0__rtl_scroller__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTabScrollerRTLReverse);\n\n/***/ }),\n/* 147 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"computeHorizontalScrollbarHeight\", function() { return computeHorizontalScrollbarHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMatchesProperty\", function() { return getMatchesProperty; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(58);\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\n\n\n/**\n * Stores result from computeHorizontalScrollbarHeight to avoid redundant processing.\n * @private {number|undefined}\n */\nvar horizontalScrollbarHeight_ = void 0;\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 * @param {!Document} documentObj\n * @param {boolean=} shouldCacheResult\n * @return {number}\n */\nfunction computeHorizontalScrollbarHeight(documentObj) {\n var shouldCacheResult = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (shouldCacheResult && typeof horizontalScrollbarHeight_ !== 'undefined') {\n return horizontalScrollbarHeight_;\n }\n\n var el = documentObj.createElement('div');\n el.classList.add(__WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* cssClasses */].SCROLL_TEST);\n documentObj.body.appendChild(el);\n\n var 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 * @param {!Object} HTMLElementPrototype\n * @return {string}\n */\nfunction getMatchesProperty(HTMLElementPrototype) {\n return ['msMatchesSelector', 'matches'].filter(function (p) {\n return p in HTMLElementPrototype;\n }).pop();\n}\n\n\n\n/***/ }),\n/* 148 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(149);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(59);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_tab_adapter__ = __webpack_require__(10);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n/* eslint-disable no-unused-vars */\n\n/* eslint-enable no-unused-vars */\n\n/**\n * @type {Set<string>}\n */\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(__WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].ARROW_LEFT_KEY);\nACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].ARROW_RIGHT_KEY);\nACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].END_KEY);\nACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].HOME_KEY);\nACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].ENTER_KEY);\nACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].SPACE_KEY);\n\n/**\n * @type {Map<number, string>}\n */\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(__WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* numbers */].ARROW_LEFT_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].ARROW_LEFT_KEY);\nKEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* numbers */].ARROW_RIGHT_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].ARROW_RIGHT_KEY);\nKEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* numbers */].END_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].END_KEY);\nKEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* numbers */].HOME_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].HOME_KEY);\nKEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* numbers */].ENTER_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].ENTER_KEY);\nKEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* numbers */].SPACE_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].SPACE_KEY);\n\n/**\n * @extends {MDCFoundation<!MDCTabBarAdapter>}\n * @final\n */\n\nvar MDCTabBarFoundation = function (_MDCFoundation) {\n _inherits(MDCTabBarFoundation, _MDCFoundation);\n\n _createClass(MDCTabBarFoundation, null, [{\n key: 'strings',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */];\n }\n\n /** @return enum {number} */\n\n }, {\n key: 'numbers',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* numbers */];\n }\n\n /**\n * @see MDCTabBarAdapter for typing information\n * @return {!MDCTabBarAdapter}\n */\n\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCTabBarAdapter} */{\n scrollTo: function scrollTo() {},\n incrementScroll: function incrementScroll() {},\n getScrollPosition: function getScrollPosition() {},\n getScrollContentWidth: function getScrollContentWidth() {},\n getOffsetWidth: function getOffsetWidth() {},\n isRTL: function isRTL() {},\n setActiveTab: function setActiveTab() {},\n activateTabAtIndex: function activateTabAtIndex() {},\n deactivateTabAtIndex: function deactivateTabAtIndex() {},\n focusTabAtIndex: function focusTabAtIndex() {},\n getTabIndicatorClientRectAtIndex: function getTabIndicatorClientRectAtIndex() {},\n getTabDimensionsAtIndex: function getTabDimensionsAtIndex() {},\n getPreviousActiveTabIndex: function getPreviousActiveTabIndex() {},\n getFocusedTabIndex: function getFocusedTabIndex() {},\n getIndexOfTabById: function getIndexOfTabById() {},\n getTabListLength: function getTabListLength() {},\n notifyTabActivated: function notifyTabActivated() {}\n }\n );\n }\n\n /**\n * @param {!MDCTabBarAdapter} adapter\n * */\n\n }]);\n\n function MDCTabBarFoundation(adapter) {\n _classCallCheck(this, MDCTabBarFoundation);\n\n /** @private {boolean} */\n var _this = _possibleConstructorReturn(this, (MDCTabBarFoundation.__proto__ || Object.getPrototypeOf(MDCTabBarFoundation)).call(this, _extends(MDCTabBarFoundation.defaultAdapter, adapter)));\n\n _this.useAutomaticActivation_ = false;\n return _this;\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 * @param {boolean} useAutomaticActivation\n */\n\n\n _createClass(MDCTabBarFoundation, [{\n key: 'setUseAutomaticActivation',\n value: function setUseAutomaticActivation(useAutomaticActivation) {\n this.useAutomaticActivation_ = useAutomaticActivation;\n }\n\n /**\n * Activates the tab at the given index\n * @param {number} index\n */\n\n }, {\n key: 'activateTab',\n value: function activateTab(index) {\n var previousActiveIndex = this.adapter_.getPreviousActiveTabIndex();\n if (!this.indexIsInRange_(index) || index === previousActiveIndex) {\n return;\n }\n\n this.adapter_.deactivateTabAtIndex(previousActiveIndex);\n this.adapter_.activateTabAtIndex(index, this.adapter_.getTabIndicatorClientRectAtIndex(previousActiveIndex));\n this.scrollIntoView(index);\n\n this.adapter_.notifyTabActivated(index);\n }\n\n /**\n * Handles the keydown event\n * @param {!Event} evt\n */\n\n }, {\n key: 'handleKeyDown',\n value: function handleKeyDown(evt) {\n // Get the key from the event\n var 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 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 /**\n * Handles the MDCTab:interacted event\n * @param {!CustomEvent} evt\n */\n\n }, {\n key: 'handleTabInteraction',\n value: function handleTabInteraction(evt) {\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 {number} index The tab index to make visible\n */\n\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView(index) {\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 {number} origin The original index from which to determine the destination\n * @param {string} key The name of the key\n * @return {number}\n * @private\n */\n\n }, {\n key: 'determineTargetFromKey_',\n value: function determineTargetFromKey_(origin, key) {\n var isRTL = this.isRTL_();\n var maxIndex = this.adapter_.getTabListLength() - 1;\n var shouldGoToEnd = key === __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].END_KEY;\n var shouldDecrement = key === __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].ARROW_LEFT_KEY && !isRTL || key === __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].ARROW_RIGHT_KEY && isRTL;\n var shouldIncrement = key === __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].ARROW_RIGHT_KEY && !isRTL || key === __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].ARROW_LEFT_KEY && isRTL;\n var 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 {number} index The index of the tab\n * @param {number} nextIndex The index of the next tab\n * @param {number} scrollPosition The current scroll position\n * @param {number} barWidth The width of the Tab Bar\n * @return {number}\n * @private\n */\n\n }, {\n key: 'calculateScrollIncrement_',\n value: function calculateScrollIncrement_(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 - __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* numbers */].EXTRA_SCROLL_AMOUNT;\n var rightIncrement = relativeContentLeft + __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* 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 {number} index The index of the tab\n * @param {number} nextIndex The index of the next tab\n * @param {number} scrollPosition The current scroll position\n * @param {number} barWidth The width of the Tab Bar\n * @param {number} scrollContentWidth The width of the scroll content\n * @return {number}\n * @private\n */\n\n }, {\n key: 'calculateScrollIncrementRTL_',\n value: function calculateScrollIncrementRTL_(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 + __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* numbers */].EXTRA_SCROLL_AMOUNT;\n var rightIncrement = relativeContentLeft - __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* 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 {number} index The index of the tab\n * @param {!MDCTabDimensions} tabDimensions The dimensions of the tab\n * @param {number} scrollPosition The current scroll position\n * @param {number} barWidth The width of the tab bar\n * @return {number}\n * @private\n */\n\n }, {\n key: 'findAdjacentTabIndexClosestToEdge_',\n value: function findAdjacentTabIndexClosestToEdge_(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\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 {number} index The index of the tab\n * @param {!MDCTabDimensions} tabDimensions The dimensions of the tab\n * @param {number} scrollPosition The current scroll position\n * @param {number} barWidth The width of the tab bar\n * @param {number} scrollContentWidth The width of the scroller content\n * @return {number}\n * @private\n */\n\n }, {\n key: 'findAdjacentTabIndexClosestToEdgeRTL_',\n value: function findAdjacentTabIndexClosestToEdgeRTL_(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\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 {!Event} evt The keydown event\n * @return {string}\n * @private\n */\n\n }, {\n key: 'getKeyFromEvent_',\n value: function getKeyFromEvent_(evt) {\n if (ACCEPTABLE_KEYS.has(evt.key)) {\n return evt.key;\n }\n\n return KEYCODE_MAP.get(evt.keyCode);\n }\n }, {\n key: 'isActivationKey_',\n value: function isActivationKey_(key) {\n return key === __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].SPACE_KEY || key === __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* strings */].ENTER_KEY;\n }\n\n /**\n * Returns whether a given index is inclusively between the ends\n * @param {number} index The index to test\n * @private\n */\n\n }, {\n key: 'indexIsInRange_',\n value: function indexIsInRange_(index) {\n return index >= 0 && index < this.adapter_.getTabListLength();\n }\n\n /**\n * Returns the view's RTL property\n * @return {boolean}\n * @private\n */\n\n }, {\n key: 'isRTL_',\n value: function isRTL_() {\n return this.adapter_.isRTL();\n }\n\n /**\n * Scrolls the tab at the given index into view for left-to-right useragents\n * @param {number} index The index of the tab to scroll into view\n * @private\n */\n\n }, {\n key: 'scrollIntoView_',\n value: function scrollIntoView_(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\n if (!this.indexIsInRange_(nextIndex)) {\n return;\n }\n\n var 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 {number} index The tab index to make visible\n * @private\n */\n\n }, {\n key: 'scrollIntoViewRTL_',\n value: function scrollIntoViewRTL_(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\n if (!this.indexIsInRange_(nextIndex)) {\n return;\n }\n\n var scrollIncrement = this.calculateScrollIncrementRTL_(index, nextIndex, scrollPosition, barWidth, scrollWidth);\n this.adapter_.incrementScroll(scrollIncrement);\n }\n }]);\n\n return MDCTabBarFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTabBarFoundation);\n\n/***/ }),\n/* 149 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return numbers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\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\n/** @enum {string} */\nvar strings = {\n TAB_ACTIVATED_EVENT: 'MDCTabBar:activated',\n TAB_SCROLLER_SELECTOR: '.mdc-tab-scroller',\n TAB_SELECTOR: '.mdc-tab',\n ARROW_LEFT_KEY: 'ArrowLeft',\n ARROW_RIGHT_KEY: 'ArrowRight',\n END_KEY: 'End',\n HOME_KEY: 'Home',\n ENTER_KEY: 'Enter',\n SPACE_KEY: 'Space'\n};\n\n/** @enum {number} */\nvar numbers = {\n EXTRA_SCROLL_AMOUNT: 20,\n ARROW_LEFT_KEYCODE: 37,\n ARROW_RIGHT_KEYCODE: 39,\n END_KEYCODE: 35,\n HOME_KEYCODE: 36,\n ENTER_KEYCODE: 13,\n SPACE_KEYCODE: 32\n};\n\n\n\n/***/ }),\n/* 150 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTextField\", function() { return MDCTextField; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_ripple_util__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(60);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__adapter__ = __webpack_require__(61);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__foundation__ = __webpack_require__(154);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__material_line_ripple_index__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__helper_text_index__ = __webpack_require__(155);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__character_counter_index__ = __webpack_require__(156);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__icon_index__ = __webpack_require__(157);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__material_floating_label_index__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__material_notched_outline_index__ = __webpack_require__(20);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTextFieldFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_5__foundation__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTextFieldHelperText\", function() { return __WEBPACK_IMPORTED_MODULE_7__helper_text_index__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTextFieldHelperTextFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_7__helper_text_index__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTextFieldCharacterCounter\", function() { return __WEBPACK_IMPORTED_MODULE_8__character_counter_index__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTextFieldCharacterCounterFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_8__character_counter_index__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTextFieldIcon\", function() { return __WEBPACK_IMPORTED_MODULE_9__icon_index__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTextFieldIconFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_9__icon_index__[\"b\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n/* eslint-disable no-unused-vars */\n\n/* eslint-enable no-unused-vars */\n\n\n\n\n\n/* eslint-disable no-unused-vars */\n\n\n\n\n\n\n/* eslint-enable no-unused-vars */\n\n/**\n * @extends {MDCComponent<!MDCTextFieldFoundation>}\n * @final\n */\n\nvar MDCTextField = function (_MDCComponent) {\n _inherits(MDCTextField, _MDCComponent);\n\n /**\n * @param {...?} args\n */\n function MDCTextField() {\n var _ref;\n\n _classCallCheck(this, MDCTextField);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {?Element} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCTextField.__proto__ || Object.getPrototypeOf(MDCTextField)).call.apply(_ref, [this].concat(args)));\n\n _this.input_;\n /** @type {?MDCRipple} */\n _this.ripple;\n /** @private {?MDCLineRipple} */\n _this.lineRipple_;\n /** @private {?MDCTextFieldHelperText} */\n _this.helperText_;\n /** @private {?MDCTextFieldCharacterCounter} */\n _this.characterCounter_;\n /** @private {?MDCTextFieldIcon} */\n _this.leadingIcon_;\n /** @private {?MDCTextFieldIcon} */\n _this.trailingIcon_;\n /** @private {?MDCFloatingLabel} */\n _this.label_;\n /** @private {?MDCNotchedOutline} */\n _this.outline_;\n return _this;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCTextField}\n */\n\n\n _createClass(MDCTextField, [{\n key: 'initialize',\n\n\n /**\n * @param {(function(!Element, MDCRippleFoundation): !MDCRipple)=} rippleFactory A function which\n * creates a new MDCRipple.\n * @param {(function(!Element): !MDCLineRipple)=} lineRippleFactory A function which\n * creates a new MDCLineRipple.\n * @param {(function(!Element): !MDCTextFieldHelperText)=} helperTextFactory A function which\n * creates a new MDCTextFieldHelperText.\n * @param {(function(!Element): !MDCTextFieldCharacterCounter)=} characterCounterFactory A function which\n * creates a new MDCTextFieldCharacterCounter.\n * @param {(function(!Element): !MDCTextFieldIcon)=} iconFactory A function which\n * creates a new MDCTextFieldIcon.\n * @param {(function(!Element): !MDCFloatingLabel)=} labelFactory A function which\n * creates a new MDCFloatingLabel.\n * @param {(function(!Element): !MDCNotchedOutline)=} outlineFactory A function which\n * creates a new MDCNotchedOutline.\n */\n value: function initialize() {\n var rippleFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el, foundation) {\n return new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__[\"MDCRipple\"](el, foundation);\n };\n var lineRippleFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_6__material_line_ripple_index__[\"MDCLineRipple\"](el);\n };\n var helperTextFactory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_7__helper_text_index__[\"a\" /* MDCTextFieldHelperText */](el);\n };\n var characterCounterFactory = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_8__character_counter_index__[\"a\" /* MDCTextFieldCharacterCounter */](el);\n };\n var iconFactory = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_9__icon_index__[\"a\" /* MDCTextFieldIcon */](el);\n };\n\n var _this2 = this;\n\n var labelFactory = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_10__material_floating_label_index__[\"MDCFloatingLabel\"](el);\n };\n var outlineFactory = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : function (el) {\n return new __WEBPACK_IMPORTED_MODULE_11__material_notched_outline_index__[\"MDCNotchedOutline\"](el);\n };\n\n this.input_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__[\"e\" /* strings */].INPUT_SELECTOR);\n var labelElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__[\"e\" /* strings */].LABEL_SELECTOR);\n if (labelElement) {\n this.label_ = labelFactory(labelElement);\n }\n var lineRippleElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__[\"e\" /* strings */].LINE_RIPPLE_SELECTOR);\n if (lineRippleElement) {\n this.lineRipple_ = lineRippleFactory(lineRippleElement);\n }\n var outlineElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__[\"e\" /* strings */].OUTLINE_SELECTOR);\n if (outlineElement) {\n this.outline_ = outlineFactory(outlineElement);\n }\n\n // Helper text\n var helperTextStrings = __WEBPACK_IMPORTED_MODULE_7__helper_text_index__[\"b\" /* MDCTextFieldHelperTextFoundation */].strings;\n var nextElementSibling = this.root_.nextElementSibling;\n var hasHelperLine = nextElementSibling && nextElementSibling.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* cssClasses */].HELPER_LINE);\n var helperTextEl = hasHelperLine && nextElementSibling.querySelector(helperTextStrings.ROOT_SELECTOR);\n if (helperTextEl) {\n this.helperText_ = helperTextFactory(helperTextEl);\n }\n\n // Character counter\n var characterCounterStrings = __WEBPACK_IMPORTED_MODULE_8__character_counter_index__[\"b\" /* 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) {\n characterCounterEl = nextElementSibling.querySelector(characterCounterStrings.ROOT_SELECTOR);\n }\n\n if (characterCounterEl) {\n this.characterCounter_ = characterCounterFactory(characterCounterEl);\n }\n\n var iconElements = this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_3__constants__[\"e\" /* 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(__WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* 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 = null;\n if (!this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* cssClasses */].TEXTAREA) && !this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* cssClasses */].OUTLINED)) {\n var MATCHES = Object(__WEBPACK_IMPORTED_MODULE_2__material_ripple_util__[\"getMatchesProperty\"])(HTMLElement.prototype);\n var adapter = _extends(__WEBPACK_IMPORTED_MODULE_1__material_ripple_index__[\"MDCRipple\"].createAdapter( /** @type {!RippleCapableSurface} */this), {\n isSurfaceActive: function isSurfaceActive() {\n return _this2.input_[MATCHES](':active');\n },\n registerInteractionHandler: function registerInteractionHandler(type, handler) {\n return _this2.input_.addEventListener(type, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {\n return _this2.input_.removeEventListener(type, handler);\n }\n });\n var foundation = new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__[\"MDCRippleFoundation\"](adapter);\n this.ripple = rippleFactory(this.root_, foundation);\n }\n }\n }, {\n key: 'destroy',\n value: function 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 _get(MDCTextField.prototype.__proto__ || Object.getPrototypeOf(MDCTextField.prototype), 'destroy', this).call(this);\n }\n\n /**\n * Initiliazes the Text Field's internal state based on the environment's\n * state.\n */\n\n }, {\n key: 'initialSyncWithDom',\n value: function initialSyncWithDom() {\n this.disabled = this.input_.disabled;\n }\n\n /**\n * @return {string} The value of the input.\n */\n\n }, {\n key: 'focus',\n\n\n /**\n * Focuses the input element.\n */\n value: function focus() {\n this.input_.focus();\n }\n\n /**\n * Recomputes the outline SVG path for the outline element.\n */\n\n }, {\n key: 'layout',\n value: function layout() {\n var openNotch = this.foundation_.shouldFloat;\n this.foundation_.notchOutline(openNotch);\n }\n\n /**\n * @return {!MDCTextFieldFoundation}\n */\n\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this3 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_5__foundation__[\"a\" /* default */](\n /** @type {!MDCTextFieldAdapter} */_extends({\n addClass: function addClass(className) {\n return _this3.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this3.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this3.root_.classList.contains(className);\n },\n registerTextFieldInteractionHandler: function registerTextFieldInteractionHandler(evtType, handler) {\n return _this3.root_.addEventListener(evtType, handler);\n },\n deregisterTextFieldInteractionHandler: function deregisterTextFieldInteractionHandler(evtType, handler) {\n return _this3.root_.removeEventListener(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 });\n };\n var observer = new MutationObserver(function (mutationsList) {\n return handler(getAttributesList(mutationsList));\n });\n var targetNode = _this3.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__[\"e\" /* strings */].INPUT_SELECTOR);\n var config = { attributes: true };\n observer.observe(targetNode, config);\n return observer;\n },\n deregisterValidationAttributeChangeHandler: function deregisterValidationAttributeChangeHandler(observer) {\n return observer.disconnect();\n },\n isFocused: function isFocused() {\n return document.activeElement === _this3.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__[\"e\" /* strings */].INPUT_SELECTOR);\n }\n }, this.getInputAdapterMethods_(), this.getLabelAdapterMethods_(), this.getLineRippleAdapterMethods_(), this.getOutlineAdapterMethods_()), this.getFoundationMap_());\n }\n\n /**\n * @return {!{\n * shakeLabel: function(boolean): undefined,\n * floatLabel: function(boolean): undefined,\n * hasLabel: function(): boolean,\n * getLabelWidth: function(): number,\n * }}\n */\n\n }, {\n key: 'getLabelAdapterMethods_',\n value: function getLabelAdapterMethods_() {\n var _this4 = this;\n\n return {\n shakeLabel: function shakeLabel(shouldShake) {\n return _this4.label_.shake(shouldShake);\n },\n floatLabel: function floatLabel(shouldFloat) {\n return _this4.label_.float(shouldFloat);\n },\n hasLabel: function hasLabel() {\n return !!_this4.label_;\n },\n getLabelWidth: function getLabelWidth() {\n return _this4.label_ ? _this4.label_.getWidth() : 0;\n }\n };\n }\n\n /**\n * @return {!{\n * activateLineRipple: function(): undefined,\n * deactivateLineRipple: function(): undefined,\n * setLineRippleTransformOrigin: function(number): undefined,\n * }}\n */\n\n }, {\n key: 'getLineRippleAdapterMethods_',\n value: function getLineRippleAdapterMethods_() {\n var _this5 = this;\n\n return {\n activateLineRipple: function activateLineRipple() {\n if (_this5.lineRipple_) {\n _this5.lineRipple_.activate();\n }\n },\n deactivateLineRipple: function deactivateLineRipple() {\n if (_this5.lineRipple_) {\n _this5.lineRipple_.deactivate();\n }\n },\n setLineRippleTransformOrigin: function setLineRippleTransformOrigin(normalizedX) {\n if (_this5.lineRipple_) {\n _this5.lineRipple_.setRippleCenter(normalizedX);\n }\n }\n };\n }\n\n /**\n * @return {!{\n * notchOutline: function(number, boolean): undefined,\n * hasOutline: function(): boolean,\n * }}\n */\n\n }, {\n key: 'getOutlineAdapterMethods_',\n value: function getOutlineAdapterMethods_() {\n var _this6 = this;\n\n return {\n notchOutline: function notchOutline(labelWidth) {\n return _this6.outline_.notch(labelWidth);\n },\n closeOutline: function closeOutline() {\n return _this6.outline_.closeNotch();\n },\n hasOutline: function hasOutline() {\n return !!_this6.outline_;\n }\n };\n }\n\n /**\n * @return {!{\n * registerInputInteractionHandler: function(string, function()): undefined,\n * deregisterInputInteractionHandler: function(string, function()): undefined,\n * getNativeInput: function(): ?Element,\n * }}\n */\n\n }, {\n key: 'getInputAdapterMethods_',\n value: function getInputAdapterMethods_() {\n var _this7 = this;\n\n return {\n registerInputInteractionHandler: function registerInputInteractionHandler(evtType, handler) {\n return _this7.input_.addEventListener(evtType, handler);\n },\n deregisterInputInteractionHandler: function deregisterInputInteractionHandler(evtType, handler) {\n return _this7.input_.removeEventListener(evtType, handler);\n },\n getNativeInput: function getNativeInput() {\n return _this7.input_;\n }\n };\n }\n\n /**\n * Returns a map of all subcomponents to subfoundations.\n * @return {!FoundationMapType}\n */\n\n }, {\n key: 'getFoundationMap_',\n value: function getFoundationMap_() {\n return {\n helperText: this.helperText_ ? this.helperText_.foundation : undefined,\n characterCounter: this.characterCounter_ ? this.characterCounter_.foundation : undefined,\n leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined,\n trailingIcon: this.trailingIcon_ ? this.trailingIcon_.foundation : undefined\n };\n }\n }, {\n key: 'value',\n get: function get() {\n return this.foundation_.getValue();\n }\n\n /**\n * @param {string} value The value to set on the input.\n */\n ,\n set: function set(value) {\n this.foundation_.setValue(value);\n }\n\n /**\n * @return {boolean} True if the Text Field is disabled.\n */\n\n }, {\n key: 'disabled',\n get: function get() {\n return this.foundation_.isDisabled();\n }\n\n /**\n * @param {boolean} disabled Sets the Text Field disabled or enabled.\n */\n ,\n set: function set(disabled) {\n this.foundation_.setDisabled(disabled);\n }\n\n /**\n * @return {boolean} valid True if the Text Field is valid.\n */\n\n }, {\n key: 'valid',\n get: function get() {\n return this.foundation_.isValid();\n }\n\n /**\n * @param {boolean} valid Sets the Text Field valid or invalid.\n */\n ,\n set: function set(valid) {\n this.foundation_.setValid(valid);\n }\n\n /**\n * @return {boolean} True if the Text Field is required.\n */\n\n }, {\n key: 'required',\n get: function get() {\n return this.input_.required;\n }\n\n /**\n * @param {boolean} required Sets the Text Field to required.\n */\n ,\n set: function set(required) {\n this.input_.required = required;\n }\n\n /**\n * @return {string} The input element's validation pattern.\n */\n\n }, {\n key: 'pattern',\n get: function get() {\n return this.input_.pattern;\n }\n\n /**\n * @param {string} pattern Sets the input element's validation pattern.\n */\n ,\n set: function set(pattern) {\n this.input_.pattern = pattern;\n }\n\n /**\n * @return {number} The input element's minLength.\n */\n\n }, {\n key: 'minLength',\n get: function get() {\n return this.input_.minLength;\n }\n\n /**\n * @param {number} minLength Sets the input element's minLength.\n */\n ,\n set: function set(minLength) {\n this.input_.minLength = minLength;\n }\n\n /**\n * @return {number} The input element's maxLength.\n */\n\n }, {\n key: 'maxLength',\n get: function get() {\n return this.input_.maxLength;\n }\n\n /**\n * @param {number} maxLength Sets the input element's maxLength.\n */\n ,\n set: function set(maxLength) {\n // Chrome throws exception if maxLength is set < 0\n if (maxLength < 0) {\n this.input_.removeAttribute('maxLength');\n } else {\n this.input_.maxLength = maxLength;\n }\n }\n\n /**\n * @return {string} The input element's min.\n */\n\n }, {\n key: 'min',\n get: function get() {\n return this.input_.min;\n }\n\n /**\n * @param {string} min Sets the input element's min.\n */\n ,\n set: function set(min) {\n this.input_.min = min;\n }\n\n /**\n * @return {string} The input element's max.\n */\n\n }, {\n key: 'max',\n get: function get() {\n return this.input_.max;\n }\n\n /**\n * @param {string} max Sets the input element's max.\n */\n ,\n set: function set(max) {\n this.input_.max = max;\n }\n\n /**\n * @return {string} The input element's step.\n */\n\n }, {\n key: 'step',\n get: function get() {\n return this.input_.step;\n }\n\n /**\n * @param {string} step Sets the input element's step.\n */\n ,\n set: function set(step) {\n this.input_.step = step;\n }\n\n /**\n * Sets the helper text element content.\n * @param {string} content\n */\n\n }, {\n key: 'helperTextContent',\n set: function set(content) {\n this.foundation_.setHelperTextContent(content);\n }\n\n /**\n * Sets the aria label of the leading icon.\n * @param {string} label\n */\n\n }, {\n key: 'leadingIconAriaLabel',\n set: function set(label) {\n this.foundation_.setLeadingIconAriaLabel(label);\n }\n\n /**\n * Sets the text content of the leading icon.\n * @param {string} content\n */\n\n }, {\n key: 'leadingIconContent',\n set: function set(content) {\n this.foundation_.setLeadingIconContent(content);\n }\n\n /**\n * Sets the aria label of the trailing icon.\n * @param {string} label\n */\n\n }, {\n key: 'trailingIconAriaLabel',\n set: function set(label) {\n this.foundation_.setTrailingIconAriaLabel(label);\n }\n\n /**\n * Sets the text content of the trailing icon.\n * @param {string} content\n */\n\n }, {\n key: 'trailingIconContent',\n set: function set(content) {\n this.foundation_.setTrailingIconContent(content);\n }\n\n /**\n * Enables or disables the use of native validation. Use this for custom validation.\n * @param {boolean} useNativeValidation Set this to false to ignore native input validation.\n */\n\n }, {\n key: 'useNativeValidation',\n set: function set(useNativeValidation) {\n this.foundation_.setUseNativeValidation(useNativeValidation);\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCTextField(root);\n }\n }]);\n\n return MDCTextField;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 151 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\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\n/** @enum {string} */\nvar cssClasses = {\n ROOT: 'mdc-text-field-helper-text',\n HELPER_TEXT_PERSISTENT: 'mdc-text-field-helper-text--persistent',\n HELPER_TEXT_VALIDATION_MSG: 'mdc-text-field-helper-text--validation-msg'\n};\n\n/** @enum {string} */\nvar strings = {\n ARIA_HIDDEN: 'aria-hidden',\n ROLE: 'role',\n ROOT_SELECTOR: '.' + cssClasses.ROOT\n};\n\n\n\n/***/ }),\n/* 152 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\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\n/** @enum {string} */\nvar cssClasses = {\n ROOT: 'mdc-text-field-character-counter'\n};\n\n/** @enum {string} */\nvar strings = {\n ROOT_SELECTOR: '.' + cssClasses.ROOT\n};\n\n\n\n/***/ }),\n/* 153 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return strings; });\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\n/** @enum {string} */\nvar strings = {\n ICON_EVENT: 'MDCTextField:icon',\n ICON_ROLE: 'button'\n};\n\n\n\n/***/ }),\n/* 154 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helper_text_foundation__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__character_counter_foundation__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__icon_foundation__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__adapter__ = __webpack_require__(61);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__constants__ = __webpack_require__(60);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n/* eslint-disable no-unused-vars */\n\n\n\n/* eslint-enable no-unused-vars */\n\n\n\n/**\n * @extends {MDCFoundation<!MDCTextFieldAdapter>}\n * @final\n */\n\nvar MDCTextFieldFoundation = function (_MDCFoundation) {\n _inherits(MDCTextFieldFoundation, _MDCFoundation);\n\n _createClass(MDCTextFieldFoundation, [{\n key: 'shouldShake',\n\n\n /** @return {boolean} */\n get: function get() {\n return !this.isValid() && !this.isFocused_ && !!this.getValue();\n }\n\n /**\n * @return {boolean}\n * @private\n */\n\n }, {\n key: 'shouldAlwaysFloat_',\n get: function get() {\n var type = this.getNativeInput_().type;\n return __WEBPACK_IMPORTED_MODULE_5__constants__[\"a\" /* ALWAYS_FLOAT_TYPES */].indexOf(type) >= 0;\n }\n\n /** @return {boolean} */\n\n }, {\n key: 'shouldFloat',\n get: function get() {\n return this.shouldAlwaysFloat_ || this.isFocused_ || !!this.getValue() || this.isBadInput_();\n }\n\n /**\n * {@see MDCTextFieldAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCTextFieldAdapter}\n */\n\n }], [{\n key: 'cssClasses',\n\n /** @return enum {string} */\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_5__constants__[\"c\" /* cssClasses */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_5__constants__[\"e\" /* strings */];\n }\n\n /** @return enum {string} */\n\n }, {\n key: 'numbers',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_5__constants__[\"d\" /* numbers */];\n }\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return (/** @type {!MDCTextFieldAdapter} */{\n addClass: function addClass() {},\n removeClass: function removeClass() {},\n hasClass: function hasClass() {},\n registerTextFieldInteractionHandler: function registerTextFieldInteractionHandler() {},\n deregisterTextFieldInteractionHandler: function deregisterTextFieldInteractionHandler() {},\n registerInputInteractionHandler: function registerInputInteractionHandler() {},\n deregisterInputInteractionHandler: function deregisterInputInteractionHandler() {},\n registerValidationAttributeChangeHandler: function registerValidationAttributeChangeHandler() {},\n deregisterValidationAttributeChangeHandler: function deregisterValidationAttributeChangeHandler() {},\n getNativeInput: function getNativeInput() {},\n isFocused: function isFocused() {},\n activateLineRipple: function activateLineRipple() {},\n deactivateLineRipple: function deactivateLineRipple() {},\n setLineRippleTransformOrigin: function setLineRippleTransformOrigin() {},\n shakeLabel: function shakeLabel() {},\n floatLabel: function floatLabel() {},\n hasLabel: function hasLabel() {},\n getLabelWidth: function getLabelWidth() {},\n hasOutline: function hasOutline() {},\n notchOutline: function notchOutline() {},\n closeOutline: function closeOutline() {}\n }\n );\n }\n\n /**\n * @param {!MDCTextFieldAdapter} adapter\n * @param {!FoundationMapType=} foundationMap Map from subcomponent names to their subfoundations.\n */\n\n }]);\n\n function MDCTextFieldFoundation(adapter) {\n var foundationMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /** @type {!FoundationMapType} */{};\n\n _classCallCheck(this, MDCTextFieldFoundation);\n\n /** @type {!MDCTextFieldHelperTextFoundation|undefined} */\n var _this = _possibleConstructorReturn(this, (MDCTextFieldFoundation.__proto__ || Object.getPrototypeOf(MDCTextFieldFoundation)).call(this, _extends(MDCTextFieldFoundation.defaultAdapter, adapter)));\n\n _this.helperText_ = foundationMap.helperText;\n /** @type {!MDCTextFieldCharacterCounterFoundation|undefined} */\n _this.characterCounter_ = foundationMap.characterCounter;\n /** @type {!MDCTextFieldIconFoundation|undefined} */\n _this.leadingIcon_ = foundationMap.leadingIcon;\n /** @type {!MDCTextFieldIconFoundation|undefined} */\n _this.trailingIcon_ = foundationMap.trailingIcon;\n\n /** @private {boolean} */\n _this.isFocused_ = false;\n /** @private {boolean} */\n _this.receivedUserInput_ = false;\n /** @private {boolean} */\n _this.useCustomValidityChecking_ = false;\n /** @private {boolean} */\n _this.isValid_ = true;\n\n /** @private {boolean} */\n _this.useNativeValidation_ = true;\n\n /** @private {function(): undefined} */\n _this.inputFocusHandler_ = function () {\n return _this.activateFocus();\n };\n /** @private {function(): undefined} */\n _this.inputBlurHandler_ = function () {\n return _this.deactivateFocus();\n };\n /** @private {function(): undefined} */\n _this.inputInputHandler_ = function () {\n return _this.handleInput();\n };\n /** @private {function(!Event): undefined} */\n _this.setPointerXOffset_ = function (evt) {\n return _this.setTransformOrigin(evt);\n };\n /** @private {function(!Event): undefined} */\n _this.textFieldInteractionHandler_ = function () {\n return _this.handleTextFieldInteraction();\n };\n /** @private {function(!Array): undefined} */\n _this.validationAttributeChangeHandler_ = function (attributesList) {\n return _this.handleValidationAttributeChange(attributesList);\n };\n\n /** @private {!MutationObserver} */\n _this.validationObserver_;\n return _this;\n }\n\n _createClass(MDCTextFieldFoundation, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\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 ['mousedown', 'touchstart'].forEach(function (evtType) {\n _this2.adapter_.registerInputInteractionHandler(evtType, _this2.setPointerXOffset_);\n });\n ['click', 'keydown'].forEach(function (evtType) {\n _this2.adapter_.registerTextFieldInteractionHandler(evtType, _this2.textFieldInteractionHandler_);\n });\n this.validationObserver_ = this.adapter_.registerValidationAttributeChangeHandler(this.validationAttributeChangeHandler_);\n this.setCharacterCounter_(this.getValue().length);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n this.adapter_.deregisterInputInteractionHandler('focus', this.inputFocusHandler_);\n this.adapter_.deregisterInputInteractionHandler('blur', this.inputBlurHandler_);\n this.adapter_.deregisterInputInteractionHandler('input', this.inputInputHandler_);\n ['mousedown', 'touchstart'].forEach(function (evtType) {\n _this3.adapter_.deregisterInputInteractionHandler(evtType, _this3.setPointerXOffset_);\n });\n ['click', 'keydown'].forEach(function (evtType) {\n _this3.adapter_.deregisterTextFieldInteractionHandler(evtType, _this3.textFieldInteractionHandler_);\n });\n this.adapter_.deregisterValidationAttributeChangeHandler(this.validationObserver_);\n }\n\n /**\n * Handles user interactions with the Text Field.\n */\n\n }, {\n key: 'handleTextFieldInteraction',\n value: function handleTextFieldInteraction() {\n if (this.adapter_.getNativeInput().disabled) {\n return;\n }\n this.receivedUserInput_ = true;\n }\n\n /**\n * Handles validation attribute changes\n * @param {!Array<string>} attributesList\n */\n\n }, {\n key: 'handleValidationAttributeChange',\n value: function handleValidationAttributeChange(attributesList) {\n var _this4 = this;\n\n attributesList.some(function (attributeName) {\n if (__WEBPACK_IMPORTED_MODULE_5__constants__[\"b\" /* VALIDATION_ATTR_WHITELIST */].indexOf(attributeName) > -1) {\n _this4.styleValidity_(true);\n return true;\n }\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 * @param {boolean} openNotch\n */\n\n }, {\n key: 'notchOutline',\n value: function notchOutline(openNotch) {\n if (!this.adapter_.hasOutline()) {\n return;\n }\n\n if (openNotch) {\n var isDense = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_5__constants__[\"c\" /* cssClasses */].DENSE);\n var labelScale = isDense ? __WEBPACK_IMPORTED_MODULE_5__constants__[\"d\" /* numbers */].DENSE_LABEL_SCALE : __WEBPACK_IMPORTED_MODULE_5__constants__[\"d\" /* 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 /**\n * Activates the text field focus state.\n */\n\n }, {\n key: 'activateFocus',\n value: function 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 * @param {!Event} evt\n */\n\n }, {\n key: 'setTransformOrigin',\n value: function setTransformOrigin(evt) {\n var targetEvent = void 0;\n if (evt.touches) {\n targetEvent = evt.touches[0];\n } else {\n targetEvent = evt;\n }\n var targetClientRect = targetEvent.target.getBoundingClientRect();\n var normalizedX = targetEvent.clientX - targetClientRect.left;\n this.adapter_.setLineRippleTransformOrigin(normalizedX);\n }\n\n /**\n * Handles input change of text input and text area.\n */\n\n }, {\n key: 'handleInput',\n value: function 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. programatically).\n */\n\n }, {\n key: 'autoCompleteFocus',\n value: function autoCompleteFocus() {\n if (!this.receivedUserInput_) {\n this.activateFocus();\n }\n }\n\n /**\n * Deactivates the Text Field's focus state.\n */\n\n }, {\n key: 'deactivateFocus',\n value: function deactivateFocus() {\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\n /**\n * @return {string} The value of the input Element.\n */\n\n }, {\n key: 'getValue',\n value: function getValue() {\n return this.getNativeInput_().value;\n }\n\n /**\n * @param {string} value The value to set on the input Element.\n */\n\n }, {\n key: 'setValue',\n value: function setValue(value) {\n // Prevent Safari from moving the caret to the end of the input when the value has not changed.\n if (this.getValue() !== value) {\n this.getNativeInput_().value = value;\n }\n var isValid = this.isValid();\n this.styleValidity_(isValid);\n if (this.adapter_.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter_.floatLabel(this.shouldFloat);\n this.adapter_.shakeLabel(this.shouldShake);\n }\n }\n\n /**\n * @return {boolean} If a custom validity is set, returns that value.\n * Otherwise, returns the result of native validity checks.\n */\n\n }, {\n key: 'isValid',\n value: function isValid() {\n return this.useNativeValidation_ ? this.isNativeInputValid_() : this.isValid_;\n }\n\n /**\n * @param {boolean} isValid Sets the validity state of the Text Field.\n */\n\n }, {\n key: 'setValid',\n value: function setValid(isValid) {\n this.isValid_ = isValid;\n this.styleValidity_(isValid);\n\n var 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 {boolean} useNativeValidation Set this to false to ignore native input validation.\n */\n\n }, {\n key: 'setUseNativeValidation',\n value: function setUseNativeValidation(useNativeValidation) {\n this.useNativeValidation_ = useNativeValidation;\n }\n\n /**\n * @return {boolean} True if the Text Field is disabled.\n */\n\n }, {\n key: 'isDisabled',\n value: function isDisabled() {\n return this.getNativeInput_().disabled;\n }\n\n /**\n * @param {boolean} disabled Sets the text-field disabled or enabled.\n */\n\n }, {\n key: 'setDisabled',\n value: function setDisabled(disabled) {\n this.getNativeInput_().disabled = disabled;\n this.styleDisabled_(disabled);\n }\n\n /**\n * @param {string} content Sets the content of the helper text.\n */\n\n }, {\n key: 'setHelperTextContent',\n value: function setHelperTextContent(content) {\n if (this.helperText_) {\n this.helperText_.setContent(content);\n }\n }\n\n /**\n * Sets character counter values that shows characters used and the total character limit.\n * @param {number} currentLength\n * @private\n */\n\n }, {\n key: 'setCharacterCounter_',\n value: function setCharacterCounter_(currentLength) {\n if (!this.characterCounter_) 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\n this.characterCounter_.setCounterValue(currentLength, maxLength);\n }\n\n /**\n * Sets the aria label of the leading icon.\n * @param {string} label\n */\n\n }, {\n key: 'setLeadingIconAriaLabel',\n value: function setLeadingIconAriaLabel(label) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setAriaLabel(label);\n }\n }\n\n /**\n * Sets the text content of the leading icon.\n * @param {string} content\n */\n\n }, {\n key: 'setLeadingIconContent',\n value: function setLeadingIconContent(content) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setContent(content);\n }\n }\n\n /**\n * Sets the aria label of the trailing icon.\n * @param {string} label\n */\n\n }, {\n key: 'setTrailingIconAriaLabel',\n value: function setTrailingIconAriaLabel(label) {\n if (this.trailingIcon_) {\n this.trailingIcon_.setAriaLabel(label);\n }\n }\n\n /**\n * Sets the text content of the trailing icon.\n * @param {string} content\n */\n\n }, {\n key: 'setTrailingIconContent',\n value: function setTrailingIconContent(content) {\n if (this.trailingIcon_) {\n this.trailingIcon_.setContent(content);\n }\n }\n\n /**\n * @return {boolean} True if the Text Field input fails in converting the\n * user-supplied value.\n * @private\n */\n\n }, {\n key: 'isBadInput_',\n value: function isBadInput_() {\n return this.getNativeInput_().validity.badInput;\n }\n\n /**\n * @return {boolean} The result of native validity checking\n * (ValidityState.valid).\n */\n\n }, {\n key: 'isNativeInputValid_',\n value: function isNativeInputValid_() {\n return this.getNativeInput_().validity.valid;\n }\n\n /**\n * Styles the component based on the validity state.\n * @param {boolean} isValid\n * @private\n */\n\n }, {\n key: 'styleValidity_',\n value: function styleValidity_(isValid) {\n var INVALID = MDCTextFieldFoundation.cssClasses.INVALID;\n\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 * @param {boolean} isFocused\n * @private\n */\n\n }, {\n key: 'styleFocused_',\n value: function styleFocused_(isFocused) {\n var FOCUSED = MDCTextFieldFoundation.cssClasses.FOCUSED;\n\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 * @param {boolean} isDisabled\n * @private\n */\n\n }, {\n key: 'styleDisabled_',\n value: function styleDisabled_(isDisabled) {\n var _MDCTextFieldFoundati = MDCTextFieldFoundation.cssClasses,\n DISABLED = _MDCTextFieldFoundati.DISABLED,\n INVALID = _MDCTextFieldFoundati.INVALID;\n\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 {!Element|!NativeInputType} The native text input from the\n * host environment, or a dummy if none exists.\n * @private\n */\n\n }, {\n key: 'getNativeInput_',\n value: function getNativeInput_() {\n return this.adapter_.getNativeInput() ||\n /** @type {!NativeInputType} */{\n value: '',\n disabled: false,\n validity: {\n badInput: false,\n valid: true\n }\n };\n }\n }]);\n\n return MDCTextFieldFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTextFieldFoundation);\n\n/***/ }),\n/* 155 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return MDCTextFieldHelperText; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(25);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCTextFieldHelperTextFoundation>}\n * @final\n */\n\nvar MDCTextFieldHelperText = function (_MDCComponent) {\n _inherits(MDCTextFieldHelperText, _MDCComponent);\n\n function MDCTextFieldHelperText() {\n _classCallCheck(this, MDCTextFieldHelperText);\n\n return _possibleConstructorReturn(this, (MDCTextFieldHelperText.__proto__ || Object.getPrototypeOf(MDCTextFieldHelperText)).apply(this, arguments));\n }\n\n _createClass(MDCTextFieldHelperText, [{\n key: 'getDefaultFoundation',\n\n\n /**\n * @return {!MDCTextFieldHelperTextFoundation}\n */\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */]( /** @type {!MDCTextFieldHelperTextAdapter} */_extends({\n addClass: function addClass(className) {\n return _this2.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this2.root_.classList.remove(className);\n },\n hasClass: function hasClass(className) {\n return _this2.root_.classList.contains(className);\n },\n setAttr: function setAttr(attr, value) {\n return _this2.root_.setAttribute(attr, value);\n },\n removeAttr: function removeAttr(attr) {\n return _this2.root_.removeAttribute(attr);\n },\n setContent: function setContent(content) {\n _this2.root_.textContent = content;\n }\n }));\n }\n }, {\n key: 'foundation',\n\n\n /**\n * @return {!MDCTextFieldHelperTextFoundation}\n */\n get: function get() {\n return this.foundation_;\n }\n }], [{\n key: 'attachTo',\n\n /**\n * @param {!Element} root\n * @return {!MDCTextFieldHelperText}\n */\n value: function attachTo(root) {\n return new MDCTextFieldHelperText(root);\n }\n }]);\n\n return MDCTextFieldHelperText;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 156 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return MDCTextFieldCharacterCounter; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(63);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(26);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCTextFieldCharacterCounterFoundation>}\n * @final\n */\n\nvar MDCTextFieldCharacterCounter = function (_MDCComponent) {\n _inherits(MDCTextFieldCharacterCounter, _MDCComponent);\n\n function MDCTextFieldCharacterCounter() {\n _classCallCheck(this, MDCTextFieldCharacterCounter);\n\n return _possibleConstructorReturn(this, (MDCTextFieldCharacterCounter.__proto__ || Object.getPrototypeOf(MDCTextFieldCharacterCounter)).apply(this, arguments));\n }\n\n _createClass(MDCTextFieldCharacterCounter, [{\n key: 'getDefaultFoundation',\n\n\n /**\n * @return {!MDCTextFieldCharacterCounterFoundation}\n */\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */](\n /** @type {!MDCTextFieldCharacterCounterAdapter} */_extends({\n setContent: function setContent(content) {\n _this2.root_.textContent = content;\n }\n }));\n }\n }, {\n key: 'foundation',\n\n\n /**\n * @return {!MDCTextFieldCharacterCounterFoundation}\n */\n get: function get() {\n return this.foundation_;\n }\n }], [{\n key: 'attachTo',\n\n /**\n * @param {!Element} root\n * @return {!MDCTextFieldCharacterCounter}\n */\n value: function attachTo(root) {\n return new MDCTextFieldCharacterCounter(root);\n }\n }]);\n\n return MDCTextFieldCharacterCounter;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 157 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return MDCTextFieldIcon; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(64);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(27);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCTextFieldIconFoundation>}\n * @final\n */\n\nvar MDCTextFieldIcon = function (_MDCComponent) {\n _inherits(MDCTextFieldIcon, _MDCComponent);\n\n function MDCTextFieldIcon() {\n _classCallCheck(this, MDCTextFieldIcon);\n\n return _possibleConstructorReturn(this, (MDCTextFieldIcon.__proto__ || Object.getPrototypeOf(MDCTextFieldIcon)).apply(this, arguments));\n }\n\n _createClass(MDCTextFieldIcon, [{\n key: 'getDefaultFoundation',\n\n\n /**\n * @return {!MDCTextFieldIconFoundation}\n */\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */]( /** @type {!MDCTextFieldIconAdapter} */_extends({\n getAttr: function getAttr(attr) {\n return _this2.root_.getAttribute(attr);\n },\n setAttr: function setAttr(attr, value) {\n return _this2.root_.setAttribute(attr, value);\n },\n removeAttr: function removeAttr(attr) {\n return _this2.root_.removeAttribute(attr);\n },\n setContent: function setContent(content) {\n _this2.root_.textContent = content;\n },\n registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return _this2.root_.addEventListener(evtType, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return _this2.root_.removeEventListener(evtType, handler);\n },\n notifyIconAction: function notifyIconAction() {\n return _this2.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */);\n }\n }));\n }\n }, {\n key: 'foundation',\n\n\n /**\n * @return {!MDCTextFieldIconFoundation}\n */\n get: function get() {\n return this.foundation_;\n }\n }], [{\n key: 'attachTo',\n\n /**\n * @param {!Element} root\n * @return {!MDCTextFieldIcon}\n */\n value: function attachTo(root) {\n return new MDCTextFieldIcon(root);\n }\n }]);\n\n return MDCTextFieldIcon;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 158 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCToolbar\", function() { return MDCToolbar; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(159);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCToolbarFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\"]; });\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n\nvar MDCToolbar = function (_MDCComponent) {\n _inherits(MDCToolbar, _MDCComponent);\n\n function MDCToolbar() {\n _classCallCheck(this, MDCToolbar);\n\n return _possibleConstructorReturn(this, (MDCToolbar.__proto__ || Object.getPrototypeOf(MDCToolbar)).apply(this, arguments));\n }\n\n _createClass(MDCToolbar, [{\n key: 'initialize',\n value: function initialize() {\n this.ripples_ = [].map.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings.ICON_SELECTOR), function (icon) {\n var ripple = __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__[\"MDCRipple\"].attachTo(icon);\n ripple.unbounded = true;\n return ripple;\n });\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.ripples_.forEach(function (ripple) {\n ripple.destroy();\n });\n _get(MDCToolbar.prototype.__proto__ || Object.getPrototypeOf(MDCToolbar.prototype), 'destroy', this).call(this);\n }\n }, {\n key: 'getDefaultFoundation',\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n return new __WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */]({\n hasClass: function hasClass(className) {\n return _this2.root_.classList.contains(className);\n },\n addClass: function addClass(className) {\n return _this2.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this2.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 _this2.root_.offsetHeight;\n },\n getFirstRowElementOffsetHeight: function getFirstRowElementOffsetHeight() {\n return _this2.firstRowElement_.offsetHeight;\n },\n notifyChange: function notifyChange(evtData) {\n return _this2.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings.CHANGE_EVENT, evtData);\n },\n setStyle: function setStyle(property, value) {\n return _this2.root_.style.setProperty(property, value);\n },\n setStyleForTitleElement: function setStyleForTitleElement(property, value) {\n return _this2.titleElement_.style.setProperty(property, value);\n },\n setStyleForFlexibleRowElement: function setStyleForFlexibleRowElement(property, value) {\n return _this2.firstRowElement_.style.setProperty(property, value);\n },\n setStyleForFixedAdjustElement: function setStyleForFixedAdjustElement(property, value) {\n if (_this2.fixedAdjustElement) {\n _this2.fixedAdjustElement.style.setProperty(property, value);\n }\n }\n });\n }\n }, {\n key: 'firstRowElement_',\n get: function get() {\n return this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings.FIRST_ROW_SELECTOR);\n }\n }, {\n key: 'titleElement_',\n get: function get() {\n return this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */].strings.TITLE_SELECTOR);\n }\n }, {\n key: 'fixedAdjustElement',\n set: function set(fixedAdjustElement) {\n this.fixedAdjustElement_ = fixedAdjustElement;\n this.foundation_.updateAdjustElementStyles();\n },\n get: function get() {\n return this.fixedAdjustElement_;\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCToolbar(root);\n }\n }]);\n\n return MDCToolbar;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__[\"a\" /* default */]);\n\n/***/ }),\n/* 159 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(160);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\nvar MDCToolbarFoundation = function (_MDCFoundation) {\n _inherits(MDCToolbarFoundation, _MDCFoundation);\n\n _createClass(MDCToolbarFoundation, null, [{\n key: 'cssClasses',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* cssClasses */];\n }\n }, {\n key: 'strings',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* strings */];\n }\n }, {\n key: 'numbers',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* numbers */];\n }\n }, {\n key: 'defaultAdapter',\n get: function get() {\n return {\n hasClass: function hasClass() {\n return (/* className: string */ /* boolean */false\n );\n },\n addClass: function addClass() /* className: string */{},\n removeClass: function removeClass() /* className: string */{},\n registerScrollHandler: function registerScrollHandler() /* handler: EventListener */{},\n deregisterScrollHandler: function deregisterScrollHandler() /* handler: EventListener */{},\n registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},\n deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{},\n getViewportWidth: function getViewportWidth() {\n return (/* number */0\n );\n },\n getViewportScrollY: function getViewportScrollY() {\n return (/* number */0\n );\n },\n getOffsetHeight: function getOffsetHeight() {\n return (/* number */0\n );\n },\n getFirstRowElementOffsetHeight: function getFirstRowElementOffsetHeight() {\n return (/* number */0\n );\n },\n notifyChange: function notifyChange() /* evtData: {flexibleExpansionRatio: number} */{},\n setStyle: function setStyle() /* property: string, value: string */{},\n setStyleForTitleElement: function setStyleForTitleElement() /* property: string, value: string */{},\n setStyleForFlexibleRowElement: function setStyleForFlexibleRowElement() /* property: string, value: string */{},\n setStyleForFixedAdjustElement: function setStyleForFixedAdjustElement() /* property: string, value: string */{}\n };\n }\n }]);\n\n function MDCToolbarFoundation(adapter) {\n _classCallCheck(this, MDCToolbarFoundation);\n\n var _this = _possibleConstructorReturn(this, (MDCToolbarFoundation.__proto__ || Object.getPrototypeOf(MDCToolbarFoundation)).call(this, _extends(MDCToolbarFoundation.defaultAdapter, adapter)));\n\n _this.resizeHandler_ = function () {\n return _this.checkRowHeight_();\n };\n _this.scrollHandler_ = function () {\n return _this.updateToolbarStyles_();\n };\n _this.checkRowHeightFrame_ = 0;\n _this.scrollFrame_ = 0;\n _this.executedLastChange_ = false;\n\n _this.calculations_ = {\n toolbarRowHeight: 0,\n // Calculated Height ratio. We use ratio to calculate corresponding heights in resize event.\n toolbarRatio: 0, // The ratio of toolbar height to row height\n flexibleExpansionRatio: 0, // The ratio of flexible space height to row height\n maxTranslateYRatio: 0, // The ratio of max toolbar move up distance to row height\n scrollThresholdRatio: 0, // The ratio of max scrollTop that we should listen to to row height\n // Derived Heights based on the above key ratios.\n toolbarHeight: 0,\n flexibleExpansionHeight: 0, // Flexible row minus toolbar height (derived)\n maxTranslateYDistance: 0, // When toolbar only fix last row (derived)\n scrollThreshold: 0\n };\n // Toolbar fixed behavior\n // If toolbar is fixed\n _this.fixed_ = false;\n // If fixed is targeted only at the last row\n _this.fixedLastrow_ = false;\n // Toolbar flexible behavior\n // If the first row is flexible\n _this.hasFlexibleRow_ = false;\n // If use the default behavior\n _this.useFlexDefaultBehavior_ = false;\n return _this;\n }\n\n _createClass(MDCToolbarFoundation, [{\n key: 'init',\n value: function init() {\n this.fixed_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.FIXED);\n this.fixedLastrow_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.FIXED_LASTROW) & this.fixed_;\n this.hasFlexibleRow_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.TOOLBAR_ROW_FLEXIBLE);\n if (this.hasFlexibleRow_) {\n this.useFlexDefaultBehavior_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_DEFAULT_BEHAVIOR);\n }\n this.initKeyRatio_();\n this.setKeyHeights_();\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n }\n }, {\n key: 'updateAdjustElementStyles',\n value: function updateAdjustElementStyles() {\n if (this.fixed_) {\n this.adapter_.setStyleForFixedAdjustElement('margin-top', this.calculations_.toolbarHeight + 'px');\n }\n }\n }, {\n key: 'getFlexibleExpansionRatio_',\n value: function getFlexibleExpansionRatio_(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 }, {\n key: 'checkRowHeight_',\n value: function checkRowHeight_() {\n var _this2 = this;\n\n cancelAnimationFrame(this.checkRowHeightFrame_);\n this.checkRowHeightFrame_ = requestAnimationFrame(function () {\n return _this2.setKeyHeights_();\n });\n }\n }, {\n key: 'setKeyHeights_',\n value: function setKeyHeights_() {\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 }, {\n key: 'updateToolbarStyles_',\n value: function updateToolbarStyles_() {\n var _this3 = this;\n\n cancelAnimationFrame(this.scrollFrame_);\n this.scrollFrame_ = requestAnimationFrame(function () {\n var scrollTop = _this3.adapter_.getViewportScrollY();\n var hasScrolledOutOfThreshold = _this3.scrolledOutOfThreshold_(scrollTop);\n\n if (hasScrolledOutOfThreshold && _this3.executedLastChange_) {\n return;\n }\n\n var flexibleExpansionRatio = _this3.getFlexibleExpansionRatio_(scrollTop);\n\n _this3.updateToolbarFlexibleState_(flexibleExpansionRatio);\n if (_this3.fixedLastrow_) {\n _this3.updateToolbarFixedState_(scrollTop);\n }\n if (_this3.hasFlexibleRow_) {\n _this3.updateFlexibleRowElementStyles_(flexibleExpansionRatio);\n }\n _this3.executedLastChange_ = hasScrolledOutOfThreshold;\n _this3.adapter_.notifyChange({ flexibleExpansionRatio: flexibleExpansionRatio });\n });\n }\n }, {\n key: 'scrolledOutOfThreshold_',\n value: function scrolledOutOfThreshold_(scrollTop) {\n return scrollTop > this.calculations_.scrollThreshold;\n }\n }, {\n key: 'initKeyRatio_',\n value: function initKeyRatio_() {\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.fixedLastrow_ ? this.calculations_.toolbarRatio - firstRowMaxRatio : 0;\n this.calculations_.scrollThresholdRatio = (this.fixedLastrow_ ? this.calculations_.toolbarRatio : firstRowMaxRatio) - 1;\n }\n }, {\n key: 'getRowHeight_',\n value: function getRowHeight_() {\n var breakpoint = MDCToolbarFoundation.numbers.TOOLBAR_MOBILE_BREAKPOINT;\n return this.adapter_.getViewportWidth() < breakpoint ? MDCToolbarFoundation.numbers.TOOLBAR_ROW_MOBILE_HEIGHT : MDCToolbarFoundation.numbers.TOOLBAR_ROW_HEIGHT;\n }\n }, {\n key: 'updateToolbarFlexibleState_',\n value: function updateToolbarFlexibleState_(flexibleExpansionRatio) {\n this.adapter_.removeClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MAX);\n this.adapter_.removeClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MIN);\n if (flexibleExpansionRatio === 1) {\n this.adapter_.addClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MAX);\n } else if (flexibleExpansionRatio === 0) {\n this.adapter_.addClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MIN);\n }\n }\n }, {\n key: 'updateToolbarFixedState_',\n value: function updateToolbarFixedState_(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\n if (translateDistance === this.calculations_.maxTranslateYDistance) {\n this.adapter_.addClass(MDCToolbarFoundation.cssClasses.FIXED_AT_LAST_ROW);\n } else {\n this.adapter_.removeClass(MDCToolbarFoundation.cssClasses.FIXED_AT_LAST_ROW);\n }\n }\n }, {\n key: 'updateFlexibleRowElementStyles_',\n value: function updateFlexibleRowElementStyles_(flexibleExpansionRatio) {\n if (this.fixed_) {\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 }, {\n key: 'updateElementStylesDefaultBehavior_',\n value: function updateElementStylesDefaultBehavior_(flexibleExpansionRatio) {\n var maxTitleSize = MDCToolbarFoundation.numbers.MAX_TITLE_SIZE;\n var minTitleSize = MDCToolbarFoundation.numbers.MIN_TITLE_SIZE;\n var currentTitleSize = (maxTitleSize - minTitleSize) * flexibleExpansionRatio + minTitleSize;\n\n this.adapter_.setStyleForTitleElement('font-size', currentTitleSize + 'rem');\n }\n }]);\n\n return MDCToolbarFoundation;\n}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCToolbarFoundation);\n\n/***/ }),\n/* 160 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return cssClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return strings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return numbers; });\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 cssClasses = {\n FIXED: 'mdc-toolbar--fixed',\n FIXED_LASTROW: 'mdc-toolbar--fixed-lastrow-only',\n FIXED_AT_LAST_ROW: 'mdc-toolbar--fixed-at-last-row',\n TOOLBAR_ROW_FLEXIBLE: 'mdc-toolbar--flexible',\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};\n\nvar strings = {\n TITLE_SELECTOR: '.mdc-toolbar__title',\n ICON_SELECTOR: '.mdc-toolbar__icon',\n FIRST_ROW_SELECTOR: '.mdc-toolbar__row:first-child',\n CHANGE_EVENT: 'MDCToolbar:change'\n};\n\nvar numbers = {\n MAX_TITLE_SIZE: 2.125,\n MIN_TITLE_SIZE: 1.25,\n TOOLBAR_ROW_HEIGHT: 64,\n TOOLBAR_ROW_MOBILE_HEIGHT: 56,\n TOOLBAR_MOBILE_BREAKPOINT: 600\n};\n\n/***/ }),\n/* 161 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTopAppBar\", function() { return MDCTopAppBar; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_base_component__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__foundation__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__fixed_foundation__ = __webpack_require__(162);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__short_foundation__ = __webpack_require__(163);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__standard_foundation__ = __webpack_require__(164);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTopAppBarBaseFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_4__foundation__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCTopAppBarFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_7__standard_foundation__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCFixedTopAppBarFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_5__fixed_foundation__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"MDCShortTopAppBarFoundation\", function() { return __WEBPACK_IMPORTED_MODULE_6__short_foundation__[\"a\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n\n\n\n\n\n/**\n * @extends {MDCComponent<!MDCTopAppBarBaseFoundation>}\n * @final\n */\n\nvar MDCTopAppBar = function (_MDCComponent) {\n _inherits(MDCTopAppBar, _MDCComponent);\n\n /**\n * @param {...?} args\n */\n function MDCTopAppBar() {\n var _ref;\n\n _classCallCheck(this, MDCTopAppBar);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n /** @private {?Element} */\n var _this = _possibleConstructorReturn(this, (_ref = MDCTopAppBar.__proto__ || Object.getPrototypeOf(MDCTopAppBar)).call.apply(_ref, [this].concat(args)));\n\n _this.navIcon_;\n /** @type {?Array<MDCRipple>} */\n _this.iconRipples_;\n /** @type {Object} */\n _this.scrollTarget_;\n return _this;\n }\n\n _createClass(MDCTopAppBar, [{\n key: 'initialize',\n value: function initialize() {\n var rippleFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {\n return __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__[\"MDCRipple\"].attachTo(el);\n };\n\n this.navIcon_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */].NAVIGATION_ICON_SELECTOR);\n\n // Get all icons in the toolbar and instantiate the ripples\n var icons = [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */].ACTION_ITEM_SELECTOR));\n if (this.navIcon_) {\n icons.push(this.navIcon_);\n }\n\n this.iconRipples_ = icons.map(function (icon) {\n var ripple = rippleFactory(icon);\n ripple.unbounded = true;\n return ripple;\n });\n\n this.scrollTarget_ = window;\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.iconRipples_.forEach(function (iconRipple) {\n return iconRipple.destroy();\n });\n _get(MDCTopAppBar.prototype.__proto__ || Object.getPrototypeOf(MDCTopAppBar.prototype), 'destroy', this).call(this);\n }\n }, {\n key: 'setScrollTarget',\n value: function setScrollTarget(target) {\n this.foundation_.destroyScrollHandler();\n this.scrollTarget_ = target;\n this.foundation_.initScrollHandler();\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCTopAppBar}\n */\n\n }, {\n key: 'getDefaultFoundation',\n\n\n /**\n * @return {!MDCTopAppBarBaseFoundation}\n */\n value: function getDefaultFoundation() {\n var _this2 = this;\n\n /** @type {!MDCTopAppBarAdapter} */\n var adapter = /** @type {!MDCTopAppBarAdapter} */_extends({\n hasClass: function hasClass(className) {\n return _this2.root_.classList.contains(className);\n },\n addClass: function addClass(className) {\n return _this2.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this2.root_.classList.remove(className);\n },\n setStyle: function setStyle(property, value) {\n return _this2.root_.style.setProperty(property, value);\n },\n getTopAppBarHeight: function getTopAppBarHeight() {\n return _this2.root_.clientHeight;\n },\n registerNavigationIconInteractionHandler: function registerNavigationIconInteractionHandler(evtType, handler) {\n if (_this2.navIcon_) {\n _this2.navIcon_.addEventListener(evtType, handler);\n }\n },\n deregisterNavigationIconInteractionHandler: function deregisterNavigationIconInteractionHandler(evtType, handler) {\n if (_this2.navIcon_) {\n _this2.navIcon_.removeEventListener(evtType, handler);\n }\n },\n notifyNavigationIconClicked: function notifyNavigationIconClicked() {\n _this2.emit(__WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */].NAVIGATION_EVENT, {});\n },\n registerScrollHandler: function registerScrollHandler(handler) {\n return _this2.scrollTarget_.addEventListener('scroll', handler);\n },\n deregisterScrollHandler: function deregisterScrollHandler(handler) {\n return _this2.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 return _this2.scrollTarget_[_this2.scrollTarget_ === window ? 'pageYOffset' : 'scrollTop'];\n },\n getTotalActionItems: function getTotalActionItems() {\n return _this2.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* strings */].ACTION_ITEM_SELECTOR).length;\n }\n });\n\n /** @type {!MDCTopAppBarBaseFoundation} */\n var foundation = void 0;\n if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__[\"a\" /* cssClasses */].SHORT_CLASS)) {\n foundation = new __WEBPACK_IMPORTED_MODULE_6__short_foundation__[\"a\" /* default */](adapter);\n } else if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__[\"a\" /* cssClasses */].FIXED_CLASS)) {\n foundation = new __WEBPACK_IMPORTED_MODULE_5__fixed_foundation__[\"a\" /* default */](adapter);\n } else {\n foundation = new __WEBPACK_IMPORTED_MODULE_7__standard_foundation__[\"a\" /* default */](adapter);\n }\n\n return foundation;\n }\n }], [{\n key: 'attachTo',\n value: function attachTo(root) {\n return new MDCTopAppBar(root);\n }\n }]);\n\n return MDCTopAppBar;\n}(__WEBPACK_IMPORTED_MODULE_1__material_base_component__[\"a\" /* default */]);\n\n\n\n/***/ }),\n/* 162 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(12);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCTopAppBarFoundation<!MDCFixedTopAppBarFoundation>}\n * @final\n */\n\nvar MDCFixedTopAppBarFoundation = function (_MDCTopAppBarFoundati) {\n _inherits(MDCFixedTopAppBarFoundation, _MDCTopAppBarFoundati);\n\n /**\n * @param {!MDCTopAppBarAdapter} adapter\n */\n function MDCFixedTopAppBarFoundation(adapter) {\n _classCallCheck(this, MDCFixedTopAppBarFoundation);\n\n /** State variable for the previous scroll iteration top app bar state */\n var _this = _possibleConstructorReturn(this, (MDCFixedTopAppBarFoundation.__proto__ || Object.getPrototypeOf(MDCFixedTopAppBarFoundation)).call(this, adapter));\n\n _this.wasScrolled_ = false;\n\n _this.scrollHandler_ = function () {\n return _this.fixedScrollHandler_();\n };\n return _this;\n }\n\n _createClass(MDCFixedTopAppBarFoundation, [{\n key: 'init',\n value: function init() {\n _get(MDCFixedTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCFixedTopAppBarFoundation.prototype), 'init', this).call(this);\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n _get(MDCFixedTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCFixedTopAppBarFoundation.prototype), 'destroy', this).call(this);\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n }\n\n /**\n * Scroll handler for applying/removing the modifier class\n * on the fixed top app bar.\n */\n\n }, {\n key: 'fixedScrollHandler_',\n value: function fixedScrollHandler_() {\n var currentScroll = this.adapter_.getViewportScrollY();\n\n if (currentScroll <= 0) {\n if (this.wasScrolled_) {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* cssClasses */].FIXED_SCROLLED_CLASS);\n this.wasScrolled_ = false;\n }\n } else {\n if (!this.wasScrolled_) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__constants__[\"a\" /* cssClasses */].FIXED_SCROLLED_CLASS);\n this.wasScrolled_ = true;\n }\n }\n }\n }]);\n\n return MDCFixedTopAppBarFoundation;\n}(__WEBPACK_IMPORTED_MODULE_2__foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCFixedTopAppBarFoundation);\n\n/***/ }),\n/* 163 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(7);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\n/**\n * @extends {MDCTopAppBarBaseFoundation<!MDCShortTopAppBarFoundation>}\n * @final\n */\n\nvar MDCShortTopAppBarFoundation = function (_MDCTopAppBarBaseFoun) {\n _inherits(MDCShortTopAppBarFoundation, _MDCTopAppBarBaseFoun);\n\n /**\n * @param {!MDCTopAppBarAdapter} adapter\n */\n function MDCShortTopAppBarFoundation(adapter) {\n _classCallCheck(this, MDCShortTopAppBarFoundation);\n\n // State variable for the current top app bar state\n var _this = _possibleConstructorReturn(this, (MDCShortTopAppBarFoundation.__proto__ || Object.getPrototypeOf(MDCShortTopAppBarFoundation)).call(this, adapter));\n\n _this.isCollapsed = false;\n\n _this.scrollHandler_ = function () {\n return _this.shortAppBarScrollHandler_();\n };\n return _this;\n }\n\n _createClass(MDCShortTopAppBarFoundation, [{\n key: 'init',\n value: function init() {\n _get(MDCShortTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCShortTopAppBarFoundation.prototype), 'init', this).call(this);\n var isAlwaysCollapsed = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].SHORT_COLLAPSED_CLASS);\n\n if (this.adapter_.getTotalActionItems() > 0) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].SHORT_HAS_ACTION_ITEM_CLASS);\n }\n\n if (!isAlwaysCollapsed) {\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n this.shortAppBarScrollHandler_();\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n _get(MDCShortTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCShortTopAppBarFoundation.prototype), 'destroy', this).call(this);\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n }\n\n /**\n * Scroll handler for applying/removing the collapsed modifier class\n * on the short top app bar.\n * @private\n */\n\n }, {\n key: 'shortAppBarScrollHandler_',\n value: function shortAppBarScrollHandler_() {\n var currentScroll = this.adapter_.getViewportScrollY();\n\n if (currentScroll <= 0) {\n if (this.isCollapsed) {\n this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].SHORT_COLLAPSED_CLASS);\n this.isCollapsed = false;\n }\n } else {\n if (!this.isCollapsed) {\n this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__[\"a\" /* cssClasses */].SHORT_COLLAPSED_CLASS);\n this.isCollapsed = true;\n }\n }\n }\n }]);\n\n return MDCShortTopAppBarFoundation;\n}(__WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCShortTopAppBarFoundation);\n\n/***/ }),\n/* 164 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(7);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\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\n\n\n\n\nvar INITIAL_VALUE = 0;\n/**\n * @extends {MDCTopAppBarBaseFoundation<!MDCTopAppBarFoundation>}\n * @final\n */\n\nvar MDCTopAppBarFoundation = function (_MDCTopAppBarBaseFoun) {\n _inherits(MDCTopAppBarFoundation, _MDCTopAppBarBaseFoun);\n\n /**\n * @param {!MDCTopAppBarAdapter} adapter\n */\n function MDCTopAppBarFoundation(adapter) {\n _classCallCheck(this, MDCTopAppBarFoundation);\n\n /**\n * Used for diffs of current scroll position vs previous scroll position\n * @private {number}\n */\n var _this = _possibleConstructorReturn(this, (MDCTopAppBarFoundation.__proto__ || Object.getPrototypeOf(MDCTopAppBarFoundation)).call(this, adapter));\n\n _this.lastScrollPosition_ = _this.adapter_.getViewportScrollY();\n\n /**\n * Used to verify when the top app bar is completely showing or completely hidden\n * @private {number}\n */\n _this.topAppBarHeight_ = _this.adapter_.getTopAppBarHeight();\n\n /**\n * wasDocked_ is used to indicate if the top app bar was docked in the previous\n * scroll handler iteration.\n * @private {boolean}\n */\n _this.wasDocked_ = true;\n\n /**\n * isDockedShowing_ is used to indicate if the top app bar is docked in the fully\n * shown position.\n * @private {boolean}\n */\n _this.isDockedShowing_ = true;\n\n /**\n * Variable for current scroll position of the top app bar\n * @private {number}\n */\n _this.currentAppBarOffsetTop_ = 0;\n\n /**\n * Used to prevent the top app bar from being scrolled out of view during resize events\n * @private {boolean} */\n _this.isCurrentlyBeingResized_ = false;\n\n /**\n * The timeout that's used to throttle the resize events\n * @private {number}\n */\n _this.resizeThrottleId_ = INITIAL_VALUE;\n\n /**\n * The timeout that's used to debounce toggling the isCurrentlyBeingResized_ variable after a resize\n * @private {number}\n */\n _this.resizeDebounceId_ = INITIAL_VALUE;\n\n _this.scrollHandler_ = function () {\n return _this.topAppBarScrollHandler_();\n };\n _this.resizeHandler_ = function () {\n return _this.topAppBarResizeHandler_();\n };\n return _this;\n }\n\n _createClass(MDCTopAppBarFoundation, [{\n key: 'init',\n value: function init() {\n _get(MDCTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCTopAppBarFoundation.prototype), 'init', this).call(this);\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n _get(MDCTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCTopAppBarFoundation.prototype), 'destroy', this).call(this);\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n this.adapter_.setStyle('top', '');\n }\n\n /**\n * Function to determine if the DOM needs to update.\n * @return {boolean}\n * @private\n */\n\n }, {\n key: 'checkForUpdate_',\n value: function checkForUpdate_() {\n var offscreenBoundaryTop = -this.topAppBarHeight_;\n var hasAnyPixelsOffscreen = this.currentAppBarOffsetTop_ < 0;\n var hasAnyPixelsOnscreen = this.currentAppBarOffsetTop_ > offscreenBoundaryTop;\n var 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 * @private\n */\n\n }, {\n key: 'moveTopAppBar_',\n value: function 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 var offset = this.currentAppBarOffsetTop_;\n if (Math.abs(offset) >= this.topAppBarHeight_) {\n offset = -__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* 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 * @private\n */\n\n }, {\n key: 'topAppBarScrollHandler_',\n value: function topAppBarScrollHandler_() {\n var currentScrollPosition = Math.max(this.adapter_.getViewportScrollY(), 0);\n var 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 * @private\n */\n\n }, {\n key: 'topAppBarResizeHandler_',\n value: function topAppBarResizeHandler_() {\n var _this2 = this;\n\n // Throttle resize events 10 p/s\n if (!this.resizeThrottleId_) {\n this.resizeThrottleId_ = setTimeout(function () {\n _this2.resizeThrottleId_ = INITIAL_VALUE;\n _this2.throttledResizeHandler_();\n }, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* 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(function () {\n _this2.topAppBarScrollHandler_();\n _this2.isCurrentlyBeingResized_ = false;\n _this2.resizeDebounceId_ = INITIAL_VALUE;\n }, __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* 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 * @private\n */\n\n }, {\n key: 'throttledResizeHandler_',\n value: function throttledResizeHandler_() {\n var 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 return MDCTopAppBarFoundation;\n}(__WEBPACK_IMPORTED_MODULE_1__foundation__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MDCTopAppBarFoundation);\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 = 65);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap cfe37351a35b5fc8ba58","/**\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/**\n * @template A\n */\nclass MDCFoundation {\n /** @return enum{cssClasses} */\n static get cssClasses() {\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 /** @return enum{strings} */\n static get strings() {\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 /** @return enum{numbers} */\n static get numbers() {\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 /** @return {!Object} */\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 /**\n * @param {A=} adapter\n */\n constructor(adapter = {}) {\n /** @protected {!A} */\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\nexport default MDCFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-base/foundation.js","/**\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';\n\n/**\n * @template F\n */\nclass MDCComponent {\n /**\n * @param {!Element} root\n * @return {!MDCComponent}\n */\n static attachTo(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 MDCFoundation());\n }\n\n /**\n * @param {!Element} root\n * @param {F=} foundation\n * @param {...?} args\n */\n constructor(root, foundation = undefined, ...args) {\n /** @protected {!Element} */\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 /** @protected {!F} */\n this.foundation_ = foundation === undefined ? this.getDefaultFoundation() : foundation;\n this.foundation_.init();\n this.initialSyncWithDOM();\n }\n\n initialize(/* ...args */) {\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 /**\n * @return {!F} foundation\n */\n getDefaultFoundation() {\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 * @param {string} evtType\n * @param {!Function} handler\n */\n listen(evtType, handler) {\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 * @param {string} evtType\n * @param {!Function} handler\n */\n unlisten(evtType, handler) {\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,\n * with the given data.\n * @param {string} evtType\n * @param {!Object} evtData\n * @param {boolean=} shouldBubble\n */\n emit(evtType, evtData, shouldBubble = false) {\n let evt;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent(evtType, {\n detail: evtData,\n bubbles: shouldBubble,\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\nexport default MDCComponent;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-base/component.js","/**\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 './adapter';\nimport MDCRippleFoundation from './foundation';\nimport * as util from './util';\n\n/**\n * @extends MDCComponent<!MDCRippleFoundation>\n */\nclass MDCRipple extends MDCComponent {\n /** @param {...?} args */\n constructor(...args) {\n super(...args);\n\n /** @type {boolean} */\n this.disabled = false;\n\n /** @private {boolean} */\n this.unbounded_;\n }\n\n /**\n * @param {!Element} root\n * @param {{isUnbounded: (boolean|undefined)}=} options\n * @return {!MDCRipple}\n */\n static attachTo(root, {isUnbounded = undefined} = {}) {\n const ripple = new MDCRipple(root);\n // Only override unbounded behavior if option is explicitly specified\n if (isUnbounded !== undefined) {\n ripple.unbounded = /** @type {boolean} */ (isUnbounded);\n }\n return ripple;\n }\n\n /**\n * @param {!RippleCapableSurface} instance\n * @return {!MDCRippleAdapter}\n */\n static createAdapter(instance) {\n const MATCHES = util.getMatchesProperty(HTMLElement.prototype);\n\n return {\n browserSupportsCssVars: () => util.supportsCssVariables(window),\n isUnbounded: () => instance.unbounded,\n isSurfaceActive: () => instance.root_[MATCHES](':active'),\n isSurfaceDisabled: () => instance.disabled,\n addClass: (className) => instance.root_.classList.add(className),\n removeClass: (className) => instance.root_.classList.remove(className),\n containsEventTarget: (target) => instance.root_.contains(target),\n registerInteractionHandler: (evtType, handler) =>\n instance.root_.addEventListener(evtType, handler, util.applyPassive()),\n deregisterInteractionHandler: (evtType, handler) =>\n instance.root_.removeEventListener(evtType, handler, util.applyPassive()),\n registerDocumentInteractionHandler: (evtType, handler) =>\n document.documentElement.addEventListener(evtType, handler, util.applyPassive()),\n deregisterDocumentInteractionHandler: (evtType, handler) =>\n document.documentElement.removeEventListener(evtType, handler, util.applyPassive()),\n registerResizeHandler: (handler) => window.addEventListener('resize', handler),\n deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler),\n updateCssVariable: (varName, value) => instance.root_.style.setProperty(varName, value),\n computeBoundingRect: () => instance.root_.getBoundingClientRect(),\n getWindowPageOffset: () => ({x: window.pageXOffset, y: window.pageYOffset}),\n };\n }\n\n /** @return {boolean} */\n get unbounded() {\n return this.unbounded_;\n }\n\n /** @param {boolean} unbounded */\n set unbounded(unbounded) {\n this.unbounded_ = Boolean(unbounded);\n this.setUnbounded_();\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 * @private\n */\n setUnbounded_() {\n this.foundation_.setUnbounded(this.unbounded_);\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 /**\n * @return {!MDCRippleFoundation}\n * @override\n */\n getDefaultFoundation() {\n return new MDCRippleFoundation(MDCRipple.createAdapter(this));\n }\n\n /** @override */\n initialSyncWithDOM() {\n this.unbounded = 'mdcRippleIsUnbounded' in this.root_.dataset;\n }\n}\n\n/**\n * See Material Design spec for more details on when to use ripples.\n * https://material.io/guidelines/motion/choreography.html#choreography-creation\n * @record\n */\nclass RippleCapableSurface {}\n\n/** @protected {!Element} */\nRippleCapableSurface.prototype.root_;\n\n/**\n * Whether or not the ripple bleeds out of the bounds of the element.\n * @type {boolean|undefined}\n */\nRippleCapableSurface.prototype.unbounded;\n\n/**\n * Whether or not the ripple is attached to a disabled component.\n * @type {boolean|undefined}\n */\nRippleCapableSurface.prototype.disabled;\n\nexport {MDCRipple, MDCRippleFoundation, RippleCapableSurface, util};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/index.js","/**\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\n/* eslint-disable no-unused-vars */\nimport {MDCRipple} from '@material/ripple/index';\n/* eslint-enable no-unused-vars */\n\n/**\n * @typedef {{\n * checked: boolean,\n * indeterminate: boolean,\n * disabled: boolean,\n * value: ?string\n * }}\n */\nlet MDCSelectionControlState;\n\n/**\n * @record\n */\nclass MDCSelectionControl {\n /** @return {?MDCRipple} */\n get ripple() {}\n}\n\nexport {MDCSelectionControlState, MDCSelectionControl};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-selection-control/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * MDCTabScrollerAnimation contains the values required for animating from the\n * current scroll position to the new scroll position. The \"finalScrollPosition\"\n * value represents the new scroll position while the \"scrollDelta\" value is the\n * corresponding transformation that is applied to the scroll content. Together,\n * they create the animation by first updating the scroll value then applying\n * the transformation and animating the transition. Both pieces are necessary\n * for the scroll animation to work. The values are used as-is by the tab\n * scroller animation method, ensuring that all logic for determining scroll\n * position or transformation is abstracted away from the animation method.\n * @typedef {{finalScrollPosition: number, scrollDelta: number}}\n */\nlet MDCTabScrollerAnimation;\n\n/**\n * MDCTabScrollerHorizontalEdges represents the left and right edges of the\n * scroll content. These values vary depending on how scrolling in RTL is\n * implemented by the browser. One value is always 0 and one value is always\n * the max scrollable value as either a positive or negative integer.\n * @typedef {{left: number, right: number}}\n */\nlet MDCTabScrollerHorizontalEdges;\n\n/**\n * Adapter for MDC Tab Scroller.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Tab into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCTabScrollerAdapter {\n /**\n * Adds the given className to the root element.\n * @param {string} className The className to add\n */\n addClass(className) {}\n\n /**\n * Removes the given className from the root element.\n * @param {string} className The className to remove\n */\n removeClass(className) {}\n\n /**\n * Adds the given className to the scroll area element.\n * @param {string} className The className to add\n */\n addScrollAreaClass(className) {}\n\n /**\n * Returns whether the event target matches given className.\n * @param {EventTarget} evtTarget The event target\n * @param {string} selector The selector to check\n * @return {boolean}\n */\n eventTargetMatchesSelector(evtTarget, selector) {}\n\n /**\n * Sets a style property of the area element to the passed value.\n * @param {string} propName The style property name to set\n * @param {string} value The style property value\n */\n setScrollAreaStyleProperty(propName, value) {}\n\n /**\n * Sets a style property of the content element to the passed value.\n * @param {string} propName The style property name to set\n * @param {string} value The style property value\n */\n setScrollContentStyleProperty(propName, value) {}\n\n /**\n * Returns the scroll content element's computed style value of the given css property `propertyName`.\n * We achieve this via `getComputedStyle(...).getPropertyValue(propertyName)`.\n * @param {string} propertyName\n * @return {string}\n */\n getScrollContentStyleValue(propertyName) {}\n\n /**\n * Sets the scrollLeft value of the scroll area element to the passed value.\n * @param {number} scrollLeft The new scrollLeft value\n */\n setScrollAreaScrollLeft(scrollLeft) {}\n\n /**\n * Returns the scrollLeft value of the scroll area element.\n * @return {number}\n */\n getScrollAreaScrollLeft() {}\n\n /**\n * Returns the offsetWidth of the scroll content element.\n * @return {number}\n */\n getScrollContentOffsetWidth() {}\n\n /**\n * Returns the offsetWitdth of the scroll area element.\n * @return {number}\n */\n getScrollAreaOffsetWidth() {}\n\n /**\n * Returns the bounding client rect of the scroll area element.\n * @return {!ClientRect}\n */\n computeScrollAreaClientRect() {}\n\n /**\n * Returns the bounding client rect of the scroll content element.\n * @return {!ClientRect}\n */\n computeScrollContentClientRect() {}\n\n /**\n * Returns the height of the browser's horizontal scrollbars (in px).\n * @return {number}\n */\n computeHorizontalScrollbarHeight() {}\n}\n\nexport {MDCTabScrollerAnimation, MDCTabScrollerHorizontalEdges, MDCTabScrollerAdapter};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/adapter.js","/**\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/**\n * Stores result from supportsCssVariables to avoid redundant processing to detect CSS custom variable support.\n * @private {boolean|undefined}\n */\nlet supportsCssVariables_;\n\n/**\n * Stores result from applyPassive to avoid redundant processing to detect passive event listener support.\n * @private {boolean|undefined}\n */\nlet supportsPassive_;\n\n/**\n * @param {!Window} windowObj\n * @return {boolean}\n */\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 const document = windowObj.document;\n const node = document.createElement('div');\n node.className = 'mdc-ripple-surface--test-edge-var-bug';\n document.body.appendChild(node);\n\n // The bug exists if ::before style ends up propagating to the parent element.\n // Additionally, getComputedStyle returns null in iframes with display: \"none\" in Firefox,\n // but Firefox is known to support CSS custom properties correctly.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n const computedStyle = windowObj.getComputedStyle(node);\n const hasPseudoVarBug = computedStyle !== null && computedStyle.borderTopStyle === 'solid';\n node.remove();\n return hasPseudoVarBug;\n}\n\n/**\n * @param {!Window} windowObj\n * @param {boolean=} forceRefresh\n * @return {boolean|undefined}\n */\n\nfunction supportsCssVariables(windowObj, forceRefresh = false) {\n let supportsCssVariables = supportsCssVariables_;\n if (typeof supportsCssVariables_ === 'boolean' && !forceRefresh) {\n return supportsCssVariables;\n }\n\n const supportsFunctionPresent = windowObj.CSS && typeof windowObj.CSS.supports === 'function';\n if (!supportsFunctionPresent) {\n return;\n }\n\n const explicitlySupportsCssVars = windowObj.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 windowObj.CSS.supports('(--css-vars: yes)') &&\n windowObj.CSS.supports('color', '#00000000')\n );\n\n if (explicitlySupportsCssVars || weAreFeatureDetectingSafari10plus) {\n supportsCssVariables = !detectEdgePseudoVarBug(windowObj);\n } else {\n supportsCssVariables = false;\n }\n\n if (!forceRefresh) {\n supportsCssVariables_ = supportsCssVariables;\n }\n return supportsCssVariables;\n}\n\n//\n/**\n * Determine whether the current browser supports passive event listeners, and if so, use them.\n * @param {!Window=} globalObj\n * @param {boolean=} forceRefresh\n * @return {boolean|!EventListenerOptions}\n */\nfunction applyPassive(globalObj = window, forceRefresh = false) {\n if (supportsPassive_ === undefined || forceRefresh) {\n let isSupported = false;\n try {\n globalObj.document.addEventListener('test', null, {get passive() {\n isSupported = true;\n return isSupported;\n }});\n } catch (e) { }\n\n supportsPassive_ = isSupported;\n }\n\n return supportsPassive_\n ? /** @type {!EventListenerOptions} */ ({passive: true})\n : false;\n}\n\n/**\n * @param {!Object} HTMLElementPrototype\n * @return {string}\n */\nfunction getMatchesProperty(HTMLElementPrototype) {\n /**\n * Order is important because we return the first existing method we find.\n * Do not change the order of the items in the below array.\n */\n const matchesMethods = ['matches', 'webkitMatchesSelector', 'msMatchesSelector'];\n let method = 'matches';\n for (let i = 0; i < matchesMethods.length; i++) {\n const matchesMethod = matchesMethods[i];\n if (matchesMethod in HTMLElementPrototype) {\n method = matchesMethod;\n break;\n }\n }\n\n return method;\n}\n\n/**\n * @param {!Event} ev\n * @param {{x: number, y: number}} pageOffset\n * @param {!ClientRect} clientRect\n * @return {{x: number, y: number}}\n */\nfunction getNormalizedEventCoords(ev, pageOffset, clientRect) {\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 (ev.type === 'touchstart') {\n ev = /** @type {!TouchEvent} */ (ev);\n normalizedX = ev.changedTouches[0].pageX - documentX;\n normalizedY = ev.changedTouches[0].pageY - documentY;\n } else {\n ev = /** @type {!MouseEvent} */ (ev);\n normalizedX = ev.pageX - documentX;\n normalizedY = ev.pageY - documentY;\n }\n\n return {x: normalizedX, y: normalizedY};\n}\n\nexport {supportsCssVariables, applyPassive, getMatchesProperty, getNormalizedEventCoords};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/util.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Top App Bar\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Top App Bar into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCTopAppBarAdapter {\n /**\n * Adds a class to the root Element.\n * @param {string} className\n */\n addClass(className) {}\n\n /**\n * Removes a class from the root Element.\n * @param {string} className\n */\n removeClass(className) {}\n\n /**\n * Returns true if the root Element contains the given class.\n * @param {string} className\n * @return {boolean}\n */\n hasClass(className) {}\n\n /**\n * Sets the specified inline style property on the root Element to the given value.\n * @param {string} property\n * @param {string} value\n */\n setStyle(property, value) {}\n\n /**\n * Gets the height of the top app bar.\n * @return {number}\n */\n getTopAppBarHeight() {}\n\n /**\n * Registers an event handler on the navigation icon element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n registerNavigationIconInteractionHandler(type, handler) {}\n\n /**\n * Deregisters an event handler on the navigation icon element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n deregisterNavigationIconInteractionHandler(type, handler) {}\n\n /**\n * Emits an event when the navigation icon is clicked.\n */\n notifyNavigationIconClicked() {}\n\n /** @param {function(!Event)} handler */\n registerScrollHandler(handler) {}\n\n /** @param {function(!Event)} handler */\n deregisterScrollHandler(handler) {}\n\n /** @param {function(!Event)} handler */\n registerResizeHandler(handler) {}\n\n /** @param {function(!Event)} handler */\n deregisterResizeHandler(handler) {}\n\n /** @return {number} */\n getViewportScrollY() {}\n\n /** @return {number} */\n getTotalActionItems() {}\n}\n\nexport default MDCTopAppBarAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\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_HAS_ACTION_ITEM_CLASS: 'mdc-top-app-bar--short-has-action-item',\n SHORT_COLLAPSED_CLASS: 'mdc-top-app-bar--short-collapsed',\n};\n\n/** @enum {number} */\nconst numbers = {\n DEBOUNCE_THROTTLE_RESIZE_TIME_MS: 100,\n MAX_TOP_APP_BAR_HEIGHT: 128,\n};\n\n/** @enum {string} */\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 {strings, cssClasses, numbers};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/constants.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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\n/**\n * @param {!Element} element\n * @param {string} selector\n * @return {?Element}\n */\nfunction closest(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n\n let el = element;\n while (el) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentElement;\n }\n return null;\n}\n\n/**\n * @param {!Element} element\n * @param {string} selector\n * @return {boolean}\n */\nfunction matches(element, selector) {\n const nativeMatches = element.matches\n || element.webkitMatchesSelector\n || element.msMatchesSelector;\n return nativeMatches.call(element, selector);\n}\n\nexport {closest, matches};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dom/ponyfill.js","/**\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\n/**\n * @extends {MDCComponent<!MDCFloatingLabelFoundation>}\n * @final\n */\nclass MDCFloatingLabel extends MDCComponent {\n /**\n * @param {!Element} root\n * @return {!MDCFloatingLabel}\n */\n static attachTo(root) {\n return new MDCFloatingLabel(root);\n }\n\n /**\n * Styles the label to produce the label shake for errors.\n * @param {boolean} shouldShake styles the label to shake by adding shake class\n * if true, otherwise will stop shaking by removing shake class.\n */\n shake(shouldShake) {\n this.foundation_.shake(shouldShake);\n }\n\n /**\n * Styles label to float/dock.\n * @param {boolean} shouldFloat styles the label to float by adding float class\n * if true, otherwise docks the label by removing the float class.\n */\n float(shouldFloat) {\n this.foundation_.float(shouldFloat);\n }\n\n /**\n * @return {number}\n */\n getWidth() {\n return this.foundation_.getWidth();\n }\n\n /**\n * @return {!MDCFloatingLabelFoundation}\n */\n getDefaultFoundation() {\n return new MDCFloatingLabelFoundation({\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.root_.addEventListener(evtType, handler),\n deregisterInteractionHandler: (evtType, handler) => this.root_.removeEventListener(evtType, handler),\n });\n }\n}\n\nexport {MDCFloatingLabel, MDCFloatingLabelFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-floating-label/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * MDCTabDimensions provides details about the left and right edges of the Tab\n * root element and the Tab content element. These values are used to determine\n * the visual position of the Tab with respect it's parent container.\n * @typedef {{rootLeft: number, rootRight: number, contentLeft: number, contentRight: number}}\n */\nlet MDCTabDimensions;\n\n/**\n * @typedef {{\n * detail: {\n * tabId: string,\n * },\n * bubbles: boolean,\n * }}\n */\nlet MDCTabInteractionEventType;\n\n/**\n * Adapter for MDC Tab.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Tab into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCTabAdapter {\n /**\n * Adds the given className to the root element.\n * @param {string} className The className to add\n */\n addClass(className) {}\n\n /**\n * Removes the given className from the root element.\n * @param {string} className The className to remove\n */\n removeClass(className) {}\n\n /**\n * Returns whether the root element has the given className.\n * @param {string} className The className to remove\n * @return {boolean}\n */\n hasClass(className) {}\n\n /**\n * Sets the given attrName of the root element to the given value.\n * @param {string} attr The attribute name to set\n * @param {string} value The value so give the attribute\n */\n setAttr(attr, value) {}\n\n /**\n * Activates the indicator element.\n * @param {!ClientRect=} previousIndicatorClientRect The client rect of the previously activated indicator\n */\n activateIndicator(previousIndicatorClientRect) {}\n\n /** Deactivates the indicator. */\n deactivateIndicator() {}\n\n /**\n * Emits the MDCTab:interacted event for use by parent components\n */\n notifyInteracted() {}\n\n /**\n * Returns the offsetLeft value of the root element.\n * @return {number}\n */\n getOffsetLeft() {}\n\n /**\n * Returns the offsetWidth value of the root element.\n * @return {number}\n */\n getOffsetWidth() {}\n\n /**\n * Returns the offsetLeft of the content element.\n * @return {number}\n */\n getContentOffsetLeft() {}\n\n /**\n * Returns the offsetWidth of the content element.\n * @return {number}\n */\n getContentOffsetWidth() {}\n\n /**\n * Applies focus to the root element\n */\n focus() {}\n}\n\nexport {MDCTabDimensions, MDCTabInteractionEventType, MDCTabAdapter};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/* eslint-disable no-unused-vars */\nimport {MDCTabScrollerAdapter, MDCTabScrollerAnimation} from './adapter';\n/* eslint-enable no-unused-vars */\n\n/**\n * @abstract\n */\nclass MDCTabScrollerRTL {\n /** @param {!MDCTabScrollerAdapter} adapter */\n constructor(adapter) {\n /** @private */\n this.adapter_ = adapter;\n }\n\n /**\n * @param {number} translateX The current translateX position\n * @return {number}\n * @abstract\n */\n getScrollPositionRTL(translateX) {}\n\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n * @abstract\n */\n scrollToRTL(scrollX) {}\n\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n * @abstract\n */\n incrementScrollRTL(scrollX) {}\n\n /**\n * @param {number} scrollX The current scrollX position\n * @param {number} translateX The current translateX position\n * @return {number}\n * @abstract\n */\n getAnimatingScrollPosition(scrollX, translateX) {}\n}\n\nexport default MDCTabScrollerRTL;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/rtl-scroller.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {strings, cssClasses, numbers} from './constants';\nimport MDCTopAppBarAdapter from './adapter';\nimport MDCFoundation from '@material/base/foundation';\n\n/**\n * @extends {MDCFoundation<!MDCTopAppBarAdapter>}\n */\nclass MDCTopAppBarBaseFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {number} */\n static get numbers() {\n return numbers;\n }\n\n /**\n * {@see MDCTopAppBarAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCTopAppBarAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCTopAppBarAdapter} */ ({\n hasClass: (/* className: string */) => {},\n addClass: (/* className: string */) => {},\n removeClass: (/* className: string */) => {},\n setStyle: (/* property: string, value: string */) => {},\n getTopAppBarHeight: () => {},\n registerNavigationIconInteractionHandler: (/* type: string, handler: EventListener */) => {},\n deregisterNavigationIconInteractionHandler: (/* type: string, handler: EventListener */) => {},\n notifyNavigationIconClicked: () => {},\n registerScrollHandler: (/* handler: EventListener */) => {},\n deregisterScrollHandler: (/* handler: EventListener */) => {},\n registerResizeHandler: (/* handler: EventListener */) => {},\n deregisterResizeHandler: (/* handler: EventListener */) => {},\n getViewportScrollY: () => /* number */ 0,\n getTotalActionItems: () => /* number */ 0,\n });\n }\n\n /**\n * @param {!MDCTopAppBarAdapter} adapter\n */\n constructor(/** @type {!MDCTopAppBarAdapter} */ adapter) {\n super(Object.assign(MDCTopAppBarBaseFoundation.defaultAdapter, adapter));\n\n this.navClickHandler_ = () => this.adapter_.notifyNavigationIconClicked();\n\n this.scrollHandler_ = () => {};\n }\n\n init() {\n this.adapter_.registerNavigationIconInteractionHandler('click', this.navClickHandler_);\n }\n\n destroy() {\n this.adapter_.deregisterNavigationIconInteractionHandler('click', this.navClickHandler_);\n }\n\n initScrollHandler() {\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n }\n\n destroyScrollHandler() {\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n }\n}\n\nexport default MDCTopAppBarBaseFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/foundation.js","/**\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/**\n * @typedef {{\n * noPrefix: string,\n * webkitPrefix: string,\n * styleProperty: string\n * }}\n */\nlet VendorPropertyMapType;\n\n/** @const {Object<string, !VendorPropertyMapType>} */\nconst eventTypeMap = {\n 'animationstart': {\n noPrefix: 'animationstart',\n webkitPrefix: 'webkitAnimationStart',\n styleProperty: 'animation',\n },\n 'animationend': {\n noPrefix: 'animationend',\n webkitPrefix: 'webkitAnimationEnd',\n styleProperty: 'animation',\n },\n 'animationiteration': {\n noPrefix: 'animationiteration',\n webkitPrefix: 'webkitAnimationIteration',\n styleProperty: 'animation',\n },\n 'transitionend': {\n noPrefix: 'transitionend',\n webkitPrefix: 'webkitTransitionEnd',\n styleProperty: 'transition',\n },\n};\n\n/** @const {Object<string, !VendorPropertyMapType>} */\nconst cssPropertyMap = {\n 'animation': {\n noPrefix: 'animation',\n webkitPrefix: '-webkit-animation',\n },\n 'transform': {\n noPrefix: 'transform',\n webkitPrefix: '-webkit-transform',\n },\n 'transition': {\n noPrefix: 'transition',\n webkitPrefix: '-webkit-transition',\n },\n};\n\n/**\n * @param {!Object} windowObj\n * @return {boolean}\n */\nfunction hasProperShape(windowObj) {\n return (windowObj['document'] !== undefined && typeof windowObj['document']['createElement'] === 'function');\n}\n\n/**\n * @param {string} eventType\n * @return {boolean}\n */\nfunction eventFoundInMaps(eventType) {\n return (eventType in eventTypeMap || eventType in cssPropertyMap);\n}\n\n/**\n * @param {string} eventType\n * @param {!Object<string, !VendorPropertyMapType>} map\n * @param {!Element} el\n * @return {string}\n */\nfunction getJavaScriptEventName(eventType, map, el) {\n return map[eventType].styleProperty in el.style ? map[eventType].noPrefix : map[eventType].webkitPrefix;\n}\n\n/**\n * Helper function to determine browser prefix for CSS3 animation events\n * and property names.\n * @param {!Object} windowObj\n * @param {string} eventType\n * @return {string}\n */\nfunction getAnimationName(windowObj, eventType) {\n if (!hasProperShape(windowObj) || !eventFoundInMaps(eventType)) {\n return eventType;\n }\n\n const map = /** @type {!Object<string, !VendorPropertyMapType>} */ (\n eventType in eventTypeMap ? eventTypeMap : cssPropertyMap\n );\n const el = windowObj['document']['createElement']('div');\n let eventName = '';\n\n if (map === eventTypeMap) {\n eventName = getJavaScriptEventName(eventType, map, el);\n } else {\n eventName = map[eventType].noPrefix in el.style ? map[eventType].noPrefix : map[eventType].webkitPrefix;\n }\n\n return eventName;\n}\n\n// Public functions to access getAnimationName() for JavaScript events or CSS\n// property names.\n\nconst transformStyleProperties = ['transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'MSTransform'];\n\n/**\n * @param {!Object} windowObj\n * @param {string} eventType\n * @return {string}\n */\nfunction getCorrectEventName(windowObj, eventType) {\n return getAnimationName(windowObj, eventType);\n}\n\n/**\n * @param {!Object} windowObj\n * @param {string} eventType\n * @return {string}\n */\nfunction getCorrectPropertyName(windowObj, eventType) {\n return getAnimationName(windowObj, eventType);\n}\n\nexport {transformStyleProperties, getCorrectEventName, getCorrectPropertyName};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-animation/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 MDCListFoundation from './foundation';\nimport MDCListAdapter from './adapter';\nimport {matches} from '@material/dom/ponyfill';\nimport {cssClasses, strings, Index} from './constants'; // eslint-disable-line no-unused-vars\n\n/**\n * @extends MDCComponent<!MDCListFoundation>\n */\nclass MDCList extends MDCComponent {\n /** @param {...?} args */\n constructor(...args) {\n super(...args);\n /** @private {!Function} */\n this.handleKeydown_;\n /** @private {!Function} */\n this.handleClick_;\n /** @private {!Function} */\n this.focusInEventListener_;\n /** @private {!Function} */\n this.focusOutEventListener_;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCList}\n */\n static attachTo(root) {\n return new MDCList(root);\n }\n\n destroy() {\n this.root_.removeEventListener('keydown', this.handleKeydown_);\n this.root_.removeEventListener('click', this.handleClick_);\n this.root_.removeEventListener('focusin', this.focusInEventListener_);\n this.root_.removeEventListener('focusout', this.focusOutEventListener_);\n }\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.root_.addEventListener('keydown', this.handleKeydown_);\n this.root_.addEventListener('focusin', this.focusInEventListener_);\n this.root_.addEventListener('focusout', this.focusOutEventListener_);\n this.root_.addEventListener('click', this.handleClick_);\n this.layout();\n this.initializeListType();\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((ele) => {\n ele.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((ele) => ele.setAttribute('tabindex', -1));\n\n this.foundation_.layout();\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 * @param {Event} evt\n * @private\n */\n getListItemIndex_(evt) {\n let eventTarget = /** @type {HTMLElement} */ (evt.target);\n let index = -1;\n\n // Find the first ancestor that is a list item or the list.\n while (!eventTarget.classList.contains(cssClasses.LIST_ITEM_CLASS)\n && !eventTarget.classList.contains(cssClasses.ROOT)) {\n eventTarget = eventTarget.parentElement;\n }\n\n // Get the index of the element if it is a list item.\n if (eventTarget.classList.contains(cssClasses.LIST_ITEM_CLASS)) {\n index = this.listElements.indexOf(eventTarget);\n }\n\n return index;\n }\n\n /**\n * Used to figure out which element was clicked before sending the event to the foundation.\n * @param {Event} evt\n * @private\n */\n handleFocusInEvent_(evt) {\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 * @param {Event} evt\n * @private\n */\n handleFocusOutEvent_(evt) {\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 * @param {Event} evt\n * @private\n */\n handleKeydownEvent_(evt) {\n const index = this.getListItemIndex_(evt);\n\n if (index >= 0) {\n this.foundation_.handleKeydown(evt, evt.target.classList.contains(cssClasses.LIST_ITEM_CLASS), index);\n }\n }\n\n /**\n * Used to figure out which element was clicked before sending the event to the foundation.\n * @param {Event} evt\n * @private\n */\n handleClickEvent_(evt) {\n const index = this.getListItemIndex_(evt);\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(/** @type {!Element} */ (evt.target), strings.CHECKBOX_RADIO_SELECTOR);\n this.foundation_.handleClick(index, toggleCheckbox);\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(`.${cssClasses.LIST_ITEM_ACTIVATED_CLASS},\n .${cssClasses.LIST_ITEM_SELECTED_CLASS}`);\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 = [].map.call(preselectedItems, (listItem) => this.listElements.indexOf(listItem));\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 /** @param {boolean} value */\n set vertical(value) {\n this.foundation_.setVerticalOrientation(value);\n }\n\n /** @return Array<!Element>*/\n get listElements() {\n return [].slice.call(this.root_.querySelectorAll(strings.ENABLED_ITEMS_SELECTOR));\n }\n\n /** @param {boolean} value */\n set wrapFocus(value) {\n this.foundation_.setWrapFocus(value);\n }\n\n /** @param {boolean} isSingleSelectionList */\n set singleSelection(isSingleSelectionList) {\n this.foundation_.setSingleSelection(isSingleSelectionList);\n }\n\n /** @return {!Index} */\n get selectedIndex() {\n return this.foundation_.getSelectedIndex();\n }\n\n /** @param {!Index} index */\n set selectedIndex(index) {\n this.foundation_.setSelectedIndex(index);\n }\n\n /** @return {!MDCListFoundation} */\n getDefaultFoundation() {\n return new MDCListFoundation(/** @type {!MDCListAdapter} */ (Object.assign({\n getListItemCount: () => this.listElements.length,\n getFocusedElementIndex: () => this.listElements.indexOf(document.activeElement),\n setAttributeForElementIndex: (index, attr, value) => {\n const element = this.listElements[index];\n if (element) {\n element.setAttribute(attr, value);\n }\n },\n removeAttributeForElementIndex: (index, attr) => {\n const element = this.listElements[index];\n if (element) {\n element.removeAttribute(attr);\n }\n },\n addClassForElementIndex: (index, className) => {\n const element = this.listElements[index];\n if (element) {\n element.classList.add(className);\n }\n },\n removeClassForElementIndex: (index, className) => {\n const element = this.listElements[index];\n if (element) {\n element.classList.remove(className);\n }\n },\n focusItemAtIndex: (index) => {\n const element = this.listElements[index];\n if (element) {\n element.focus();\n }\n },\n setTabIndexForListItemChildren: (listItemIndex, tabIndexValue) => {\n const element = this.listElements[listItemIndex];\n const listItemChildren = [].slice.call(element.querySelectorAll(strings.CHILD_ELEMENTS_TO_TOGGLE_TABINDEX));\n listItemChildren.forEach((ele) => ele.setAttribute('tabindex', tabIndexValue));\n },\n hasCheckboxAtIndex: (index) => {\n const listItem = this.listElements[index];\n return !!listItem.querySelector(strings.CHECKBOX_SELECTOR);\n },\n hasRadioAtIndex: (index) => {\n const listItem = this.listElements[index];\n return !!listItem.querySelector(strings.RADIO_SELECTOR);\n },\n isCheckboxCheckedAtIndex: (index) => {\n const listItem = this.listElements[index];\n const toggleEl = listItem.querySelector(strings.CHECKBOX_SELECTOR);\n return toggleEl.checked;\n },\n setCheckedCheckboxOrRadioAtIndex: (index, isChecked) => {\n const listItem = this.listElements[index];\n const toggleEl = listItem.querySelector(strings.CHECKBOX_RADIO_SELECTOR);\n toggleEl.checked = isChecked;\n\n const event = document.createEvent('Event');\n event.initEvent('change', true, true);\n toggleEl.dispatchEvent(event);\n },\n notifyAction: (index) => {\n this.emit(strings.ACTION_EVENT, index, /** shouldBubble */ true);\n },\n isFocusInsideList: () => {\n return this.root_.contains(document.activeElement);\n },\n })));\n }\n}\n\nexport {MDCList, MDCListFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-list/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 {strings, cssClasses, Index} from './constants'; // eslint-disable-line no-unused-vars\n\nconst ELEMENTS_KEY_ALLOWED_IN = ['input', 'button', 'textarea', 'select'];\n\nclass MDCListFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /**\n * {@see MDCListAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCListAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCListAdapter} */ ({\n getListItemCount: () => {},\n getFocusedElementIndex: () => {},\n setAttributeForElementIndex: () => {},\n removeAttributeForElementIndex: () => {},\n addClassForElementIndex: () => {},\n removeClassForElementIndex: () => {},\n focusItemAtIndex: () => {},\n setTabIndexForListItemChildren: () => {},\n hasRadioAtIndex: () => {},\n hasCheckboxAtIndex: () => {},\n isCheckboxCheckedAtIndex: () => {},\n setCheckedCheckboxOrRadioAtIndex: () => {},\n notifyAction: () => {},\n isFocusInsideList: () => {},\n });\n }\n\n /**\n * @param {!MDCListAdapter=} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCListFoundation.defaultAdapter, adapter));\n /** @private {boolean} */\n this.wrapFocus_ = false;\n\n /** @private {boolean} */\n this.isVertical_ = true;\n\n /** @private {boolean} */\n this.isSingleSelectionList_ = false;\n\n /** @private {!Index} */\n this.selectedIndex_ = -1;\n\n /** @private {number} */\n this.focusedItemIndex_ = -1;\n\n /** @private {boolean} */\n this.useActivatedClass_ = false;\n\n /** @private {boolean} */\n this.isCheckboxList_ = false;\n\n /** @private {boolean} */\n this.isRadioList_ = false;\n }\n\n layout() {\n if (this.adapter_.getListItemCount() === 0) 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 /**\n * Sets the private wrapFocus_ variable.\n * @param {boolean} value\n */\n setWrapFocus(value) {\n this.wrapFocus_ = value;\n }\n\n /**\n * Sets the isVertical_ private variable.\n * @param {boolean} value\n */\n setVerticalOrientation(value) {\n this.isVertical_ = value;\n }\n\n /**\n * Sets the isSingleSelectionList_ private variable.\n * @param {boolean} value\n */\n setSingleSelection(value) {\n this.isSingleSelectionList_ = value;\n }\n\n /**\n * Sets the useActivatedClass_ private variable.\n * @param {boolean} useActivated\n */\n setUseActivatedClass(useActivated) {\n this.useActivatedClass_ = useActivated;\n }\n\n /** @return {!Index} */\n getSelectedIndex() {\n return this.selectedIndex_;\n }\n\n /** @param {!Index} index */\n setSelectedIndex(index) {\n if (!this.isIndexValid_(index)) return;\n\n if (this.isCheckboxList_) {\n this.setCheckboxAtIndex_(/** @type {!Array<number>} */ (index));\n } else if (this.isRadioList_) {\n this.setRadioAtIndex_(/** @type {number} */ (index));\n } else {\n this.setSingleSelectionAtIndex_(/** @type {number} */ (index));\n }\n }\n\n /**\n * Focus in handler for the list items.\n * @param evt\n * @param {number} listItemIndex\n */\n handleFocusIn(evt, listItemIndex) {\n if (listItemIndex >= 0) {\n this.adapter_.setTabIndexForListItemChildren(listItemIndex, 0);\n }\n }\n\n /**\n * Focus out handler for the list items.\n * @param {Event} evt\n * @param {number} listItemIndex\n */\n handleFocusOut(evt, listItemIndex) {\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 * @param {Event} evt\n * @param {boolean} isRootListItem\n * @param {number} listItemIndex\n */\n handleKeydown(evt, isRootListItem, listItemIndex) {\n const arrowLeft = evt.key === 'ArrowLeft' || evt.keyCode === 37;\n const arrowUp = evt.key === 'ArrowUp' || evt.keyCode === 38;\n const arrowRight = evt.key === 'ArrowRight' || evt.keyCode === 39;\n const arrowDown = evt.key === 'ArrowDown' || evt.keyCode === 40;\n const isHome = evt.key === 'Home' || evt.keyCode === 36;\n const isEnd = evt.key === 'End' || evt.keyCode === 35;\n const isEnter = evt.key === 'Enter' || evt.keyCode === 13;\n const isSpace = evt.key === 'Space' || evt.keyCode === 32;\n\n let currentIndex = this.adapter_.getFocusedElementIndex();\n let nextIndex = -1;\n if (currentIndex === -1) {\n currentIndex = listItemIndex;\n if (currentIndex < 0) {\n // If this event doesn't have a mdc-list-item ancestor from the\n // current list (not from a sublist), return early.\n return;\n }\n }\n\n if ((this.isVertical_ && arrowDown) || (!this.isVertical_ && arrowRight)) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusNextElement(currentIndex);\n } else if ((this.isVertical_ && arrowUp) || (!this.isVertical_ && arrowLeft)) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusPrevElement(currentIndex);\n } else if (isHome) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusFirstElement();\n } else if (isEnd) {\n this.preventDefaultEvent_(evt);\n nextIndex = this.focusLastElement();\n } else if (isEnter || isSpace) {\n if (isRootListItem) {\n // Return early if enter key is pressed on anchor element which triggers synthetic MouseEvent event.\n if (evt.target.tagName === 'A' && isEnter) return;\n this.preventDefaultEvent_(evt);\n\n if (this.isSelectableList_()) {\n this.setSelectedIndexOnAction_(currentIndex);\n }\n\n this.adapter_.notifyAction(currentIndex);\n }\n }\n\n this.focusedItemIndex_ = currentIndex;\n\n if (nextIndex >= 0) {\n this.setTabindexAtIndex_(nextIndex);\n this.focusedItemIndex_ = nextIndex;\n }\n }\n\n /**\n * Click handler for the list.\n * @param {number} index\n * @param {boolean} toggleCheckbox\n */\n handleClick(index, toggleCheckbox) {\n if (index === -1) return;\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 * Ensures that preventDefault is only called if the containing element doesn't\n * consume the event, and it will cause an unintended scroll.\n * @param {Event} evt\n * @private\n */\n preventDefaultEvent_(evt) {\n const tagName = `${evt.target.tagName}`.toLowerCase();\n if (ELEMENTS_KEY_ALLOWED_IN.indexOf(tagName) === -1) {\n evt.preventDefault();\n }\n }\n\n /**\n * Focuses the next element on the list.\n * @param {number} index\n * @return {number}\n */\n focusNextElement(index) {\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 * @param {number} index\n * @return {number}\n */\n focusPrevElement(index) {\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 /**\n * @return {number}\n */\n focusFirstElement() {\n this.adapter_.focusItemAtIndex(0);\n return 0;\n }\n\n /**\n * @return {number}\n */\n focusLastElement() {\n const lastIndex = this.adapter_.getListItemCount() - 1;\n this.adapter_.focusItemAtIndex(lastIndex);\n return lastIndex;\n }\n\n /**\n * @param {number} index\n * @private\n */\n setSingleSelectionAtIndex_(index) {\n let selectedClassName = cssClasses.LIST_ITEM_SELECTED_CLASS;\n if (this.useActivatedClass_) {\n selectedClassName = cssClasses.LIST_ITEM_ACTIVATED_CLASS;\n }\n\n if (this.selectedIndex_ >= 0 && this.selectedIndex_ !== index) {\n this.adapter_.removeClassForElementIndex(this.selectedIndex_, selectedClassName);\n this.adapter_.setAttributeForElementIndex(this.selectedIndex_, strings.ARIA_SELECTED, 'false');\n }\n\n this.adapter_.addClassForElementIndex(index, selectedClassName);\n this.adapter_.setAttributeForElementIndex(index, strings.ARIA_SELECTED, 'true');\n\n this.selectedIndex_ = index;\n }\n\n /**\n * Toggles radio at give index. Radio doesn't change the checked state if it is already checked.\n * @param {number} index\n * @private\n */\n setRadioAtIndex_(index) {\n this.adapter_.setCheckedCheckboxOrRadioAtIndex(index, true);\n\n if (this.selectedIndex_ >= 0) {\n this.adapter_.setAttributeForElementIndex(this.selectedIndex_, strings.ARIA_CHECKED, 'false');\n }\n\n this.adapter_.setAttributeForElementIndex(index, strings.ARIA_CHECKED, 'true');\n\n this.selectedIndex_ = index;\n }\n\n /**\n * @param {!Array<number>} index\n * @private\n */\n setCheckboxAtIndex_(index) {\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 /**\n * @param {number} index\n * @private\n */\n setTabindexAtIndex_(index) {\n if (this.focusedItemIndex_ === -1 && index !== 0) {\n // If no list item was selected set first list item's tabindex to -1.\n // Generally, tabindex is set to 0 on first list item of list that has no preselected items.\n this.adapter_.setAttributeForElementIndex(0, 'tabindex', -1);\n } else if (this.focusedItemIndex_ >= 0 && this.focusedItemIndex_ !== index) {\n this.adapter_.setAttributeForElementIndex(this.focusedItemIndex_, 'tabindex', -1);\n }\n\n this.adapter_.setAttributeForElementIndex(index, 'tabindex', 0);\n }\n\n /**\n * @return {boolean} Return true if it is single selectin list, checkbox list or radio list.\n * @private\n */\n isSelectableList_() {\n return this.isSingleSelectionList_ || this.isCheckboxList_ || this.isRadioList_;\n }\n\n /** @private */\n setTabindexToFirstSelectedItem_() {\n let targetIndex = 0;\n\n if (this.isSelectableList_()) {\n if (typeof this.selectedIndex_ === 'number' && this.selectedIndex_ !== -1) {\n targetIndex = this.selectedIndex_;\n } else if (this.selectedIndex_ instanceof Array && 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 /**\n * @param {!Index} index\n * @return {boolean}\n * @private\n */\n isIndexValid_(index) {\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 /**\n * @param {number} index\n * @return {boolean}\n * @private\n */\n isIndexInRange_(index) {\n const listSize = this.adapter_.getListItemCount();\n return index >= 0 && index < listSize;\n }\n\n /**\n * @param {number} index\n * @param {boolean=} toggleCheckbox\n * @private\n */\n setSelectedIndexOnAction_(index, toggleCheckbox = true) {\n if (this.isCheckboxList_) {\n this.toggleCheckboxAtIndex_(index, toggleCheckbox);\n } else {\n this.setSelectedIndex(index);\n }\n }\n\n /**\n * @param {number} index\n * @param {boolean} toggleCheckbox\n * @private\n */\n toggleCheckboxAtIndex_(index, toggleCheckbox) {\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 if (this.selectedIndex_ === -1) {\n this.selectedIndex_ = [];\n }\n\n if (isChecked) {\n this.selectedIndex_.push(index);\n } else {\n this.selectedIndex_ = this.selectedIndex_.filter((i) => i !== index);\n }\n }\n}\n\nexport default MDCListFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-list/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 MDCLineRippleAdapter from './adapter';\nimport MDCLineRippleFoundation from './foundation';\n\n/**\n * @extends {MDCComponent<!MDCLineRippleFoundation>}\n * @final\n */\nclass MDCLineRipple extends MDCComponent {\n /**\n * @param {!Element} root\n * @return {!MDCLineRipple}\n */\n static attachTo(root) {\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. The `rippleCenter` is the\n * x-coordinate of the middle of the ripple.\n * @param {number} xCoordinate\n */\n setRippleCenter(xCoordinate) {\n this.foundation_.setRippleCenter(xCoordinate);\n }\n\n /**\n * @return {!MDCLineRippleFoundation}\n */\n getDefaultFoundation() {\n return new MDCLineRippleFoundation(/** @type {!MDCLineRippleAdapter} */ (Object.assign({\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_.style[propertyName] = value,\n registerEventHandler: (evtType, handler) => this.root_.addEventListener(evtType, handler),\n deregisterEventHandler: (evtType, handler) => this.root_.removeEventListener(evtType, handler),\n })));\n }\n}\n\nexport {MDCLineRipple, MDCLineRippleFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-line-ripple/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\nconst cssClasses = {\n ROOT: 'mdc-menu',\n MENU_SELECTED_LIST_ITEM: 'mdc-menu-item--selected',\n MENU_SELECTION_GROUP: 'mdc-menu__selection-group',\n};\n\n/** @enum {string} */\nconst strings = {\n SELECTED_EVENT: 'MDCMenu:selected',\n ARIA_SELECTED_ATTR: 'aria-selected',\n LIST_SELECTOR: '.mdc-list',\n CHECKBOX_SELECTOR: 'input[type=\"checkbox\"]',\n};\n\nexport {cssClasses, strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu/constants.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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 * @typedef {{\n * top: number,\n * right: number,\n * bottom: number,\n * left: number\n * }}\n */\nlet AnchorMargin;\n\n/* eslint-disable no-unused-vars */\n/**\n * @typedef {{\n * viewport: { width: number, height: number },\n * viewportDistance: {top: number, right: number, bottom: number, left: number},\n * anchorHeight: number,\n * anchorWidth: number,\n * surfaceHeight: number,\n * surfaceWidth: number,\n * bodyDimensions,\n * windowScroll,\n * }}\n */\nlet AutoLayoutMeasurements;\n/* eslint-enable no-unused-vars */\n\nimport MDCFoundation from '@material/base/foundation';\nimport {MDCMenuSurfaceAdapter} from './adapter';\nimport {cssClasses, strings, numbers, Corner, CornerBit} from './constants';\n\n/**\n * @extends {MDCFoundation<!MDCMenuSurfaceAdapter>}\n */\nclass MDCMenuSurfaceFoundation extends MDCFoundation {\n /** @return enum{cssClasses} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum{string} */\n static get strings() {\n return strings;\n }\n\n /** @return enum {number} */\n static get numbers() {\n return numbers;\n }\n\n /** @return enum{number} */\n static get Corner() {\n return Corner;\n }\n\n /**\n * {@see MDCMenuSurfaceAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCMenuSurfaceAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCMenuSurfaceAdapter} */ ({\n addClass: () => {},\n removeClass: () => {},\n hasClass: () => false,\n hasAnchor: () => false,\n notifyClose: () => {},\n notifyOpen: () => {},\n isElementInContainer: () => false,\n isRtl: () => false,\n setTransformOrigin: () => {},\n isFocused: () => false,\n saveFocus: () => {},\n restoreFocus: () => {},\n isFirstElementFocused: () => {},\n isLastElementFocused: () => {},\n focusFirstElement: () => {},\n focusLastElement: () => {},\n getInnerDimensions: () => ({}),\n getAnchorDimensions: () => ({}),\n getWindowDimensions: () => ({}),\n getBodyDimensions: () => ({}),\n getWindowScroll: () => ({}),\n setPosition: () => {},\n setMaxHeight: () => {},\n });\n }\n\n /** @param {!MDCMenuSurfaceAdapter} adapter */\n constructor(adapter) {\n super(Object.assign(MDCMenuSurfaceFoundation.defaultAdapter, adapter));\n\n /** @private {boolean} */\n this.isOpen_ = false;\n /** @private {number} */\n this.openAnimationEndTimerId_ = 0;\n /** @private {number} */\n this.closeAnimationEndTimerId_ = 0;\n /** @private {number} */\n this.animationRequestId_ = 0;\n /** @private {!{ width: number, height: number }} */\n this.dimensions_;\n /** @private {!Corner} */\n this.anchorCorner_ = Corner.TOP_START;\n /** @private {!AnchorMargin} */\n this.anchorMargin_ = {top: 0, right: 0, bottom: 0, left: 0};\n /** @private {?AutoLayoutMeasurements} */\n this.measures_ = null;\n /** @private {boolean} */\n this.quickOpen_ = false;\n /** @private {boolean} */\n this.hoistedElement_ = false;\n /** @private {boolean} */\n this.isFixedPosition_ = false;\n /** @private {!{x: number, y: number}} */\n this.position_ = {x: 0, y: 0};\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} corner Default anchor corner alignment of top-left menu surface corner.\n */\n setAnchorCorner(corner) {\n this.anchorCorner_ = corner;\n }\n\n /**\n * @param {!AnchorMargin} margin set of margin values from anchor.\n */\n setAnchorMargin(margin) {\n this.anchorMargin_.top = typeof margin.top === 'number' ? margin.top : 0;\n this.anchorMargin_.right = typeof margin.right === 'number' ? margin.right : 0;\n this.anchorMargin_.bottom = typeof margin.bottom === 'number' ? margin.bottom : 0;\n this.anchorMargin_.left = typeof margin.left === 'number' ? margin.left : 0;\n }\n\n /**\n * Used to indicate if the menu-surface is hoisted to the body.\n * @param {boolean} isHoisted\n */\n setIsHoisted(isHoisted) {\n this.hoistedElement_ = isHoisted;\n }\n\n /**\n * Used to set the menu-surface calculations based on a fixed position menu.\n * @param {boolean} isFixedPosition\n */\n setFixedPosition(isFixedPosition) {\n this.isFixedPosition_ = isFixedPosition;\n }\n\n /**\n * Sets the menu-surface position on the page.\n * @param {number} x\n * @param {number} y\n */\n setAbsolutePosition(x, y) {\n this.position_.x = this.typeCheckisFinite_(x) ? x : 0;\n this.position_.y = this.typeCheckisFinite_(y) ? y : 0;\n }\n\n /** @param {boolean} quickOpen */\n setQuickOpen(quickOpen) {\n this.quickOpen_ = quickOpen;\n }\n\n /**\n * Handle clicks and close if not within menu-surface element.\n * @param {!Event} evt\n */\n handleBodyClick(evt) {\n const el = evt.target;\n\n if (this.adapter_.isElementInContainer(el)) {\n return;\n }\n\n this.close();\n };\n\n /**\n * Handle keys that close the surface.\n * @param {!Event} evt\n */\n handleKeydown(evt) {\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 /**\n * @return {!AutoLayoutMeasurements} Measurements used to position menu surface popup.\n */\n getAutoLayoutMeasurements_() {\n let anchorRect = this.adapter_.getAnchorDimensions();\n const viewport = this.adapter_.getWindowDimensions();\n const bodyDimensions = this.adapter_.getBodyDimensions();\n const windowScroll = this.adapter_.getWindowScroll();\n\n if (!anchorRect) {\n anchorRect = /** @type {ClientRect} */ ({\n x: this.position_.x,\n y: this.position_.y,\n top: this.position_.y,\n bottom: this.position_.y,\n left: this.position_.x,\n right: this.position_.x,\n height: 0,\n width: 0,\n });\n }\n\n return {\n viewport,\n bodyDimensions,\n windowScroll,\n viewportDistance: {\n top: anchorRect.top,\n right: viewport.width - anchorRect.right,\n left: anchorRect.left,\n bottom: viewport.height - anchorRect.bottom,\n },\n anchorHeight: anchorRect.height,\n anchorWidth: anchorRect.width,\n surfaceHeight: this.dimensions_.height,\n surfaceWidth: this.dimensions_.width,\n };\n }\n\n /**\n * Computes the corner of the anchor from which to animate and position the menu surface.\n * @return {!Corner}\n * @private\n */\n getOriginCorner_() {\n // Defaults: open from the top left.\n let corner = Corner.TOP_LEFT;\n\n const {viewportDistance, anchorHeight, anchorWidth, surfaceHeight, surfaceWidth} = this.measures_;\n const isBottomAligned = Boolean(this.anchorCorner_ & CornerBit.BOTTOM);\n const availableTop = isBottomAligned ? viewportDistance.top + anchorHeight + this.anchorMargin_.bottom\n : viewportDistance.top + this.anchorMargin_.top;\n const availableBottom = isBottomAligned ? viewportDistance.bottom - this.anchorMargin_.bottom\n : viewportDistance.bottom + anchorHeight - this.anchorMargin_.top;\n\n const topOverflow = surfaceHeight - availableTop;\n const bottomOverflow = surfaceHeight - availableBottom;\n if (bottomOverflow > 0 && topOverflow < bottomOverflow) {\n corner |= CornerBit.BOTTOM;\n }\n\n const isRtl = this.adapter_.isRtl();\n const isFlipRtl = Boolean(this.anchorCorner_ & CornerBit.FLIP_RTL);\n const avoidHorizontalOverlap = Boolean(this.anchorCorner_ & CornerBit.RIGHT);\n const isAlignedRight = (avoidHorizontalOverlap && !isRtl) ||\n (!avoidHorizontalOverlap && isFlipRtl && isRtl);\n const availableLeft = isAlignedRight ? viewportDistance.left + anchorWidth + this.anchorMargin_.right :\n viewportDistance.left + this.anchorMargin_.left;\n const availableRight = isAlignedRight ? viewportDistance.right - this.anchorMargin_.right :\n viewportDistance.right + anchorWidth - this.anchorMargin_.left;\n\n const leftOverflow = surfaceWidth - availableLeft;\n const rightOverflow = surfaceWidth - availableRight;\n\n if ((leftOverflow < 0 && isAlignedRight && isRtl) ||\n (avoidHorizontalOverlap && !isAlignedRight && leftOverflow < 0) ||\n (rightOverflow > 0 && leftOverflow < rightOverflow)) {\n corner |= CornerBit.RIGHT;\n }\n\n return /** @type {Corner} */ (corner);\n }\n\n /**\n * @param {!Corner} corner Origin corner of the menu surface.\n * @return {number} Horizontal offset of menu surface origin corner from corresponding anchor corner.\n * @private\n */\n getHorizontalOriginOffset_(corner) {\n const {anchorWidth} = this.measures_;\n // isRightAligned corresponds to using the 'right' property on the surface.\n const isRightAligned = Boolean(corner & CornerBit.RIGHT);\n const avoidHorizontalOverlap = Boolean(this.anchorCorner_ & CornerBit.RIGHT);\n\n if (isRightAligned) {\n const rightOffset = avoidHorizontalOverlap ? anchorWidth - 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.hoistedElement_ || this.isFixedPosition_) {\n return rightOffset - (this.measures_.viewport.width - this.measures_.bodyDimensions.width);\n }\n\n return rightOffset;\n }\n\n return avoidHorizontalOverlap ? anchorWidth - this.anchorMargin_.right : this.anchorMargin_.left;\n }\n\n /**\n * @param {!Corner} corner Origin corner of the menu surface.\n * @return {number} Vertical offset of menu surface origin corner from corresponding anchor corner.\n * @private\n */\n getVerticalOriginOffset_(corner) {\n const {anchorHeight} = this.measures_;\n const isBottomAligned = Boolean(corner & CornerBit.BOTTOM);\n const avoidVerticalOverlap = Boolean(this.anchorCorner_ & CornerBit.BOTTOM);\n let y = 0;\n\n if (isBottomAligned) {\n y = avoidVerticalOverlap ? anchorHeight - this.anchorMargin_.top : -this.anchorMargin_.bottom;\n } else {\n y = avoidVerticalOverlap ? (anchorHeight + this.anchorMargin_.bottom) : this.anchorMargin_.top;\n }\n return y;\n }\n\n /**\n * @param {!Corner} corner Origin corner of the menu surface.\n * @return {number} Maximum height of the menu surface, based on available space. 0 indicates should not be set.\n * @private\n */\n getMenuSurfaceMaxHeight_(corner) {\n let maxHeight = 0;\n const {viewportDistance} = this.measures_;\n const isBottomAligned = Boolean(corner & 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 (!(this.anchorCorner_ & CornerBit.BOTTOM)) {\n maxHeight += this.measures_.anchorHeight;\n }\n } else {\n maxHeight = viewportDistance.bottom - this.anchorMargin_.bottom + this.measures_.anchorHeight - MARGIN_TO_EDGE;\n if (this.anchorCorner_ & CornerBit.BOTTOM) {\n maxHeight -= this.measures_.anchorHeight;\n }\n }\n\n return maxHeight;\n }\n\n /** @private */\n autoPosition_() {\n // Compute measurements for autoposition methods reuse.\n this.measures_ = this.getAutoLayoutMeasurements_();\n\n const corner = this.getOriginCorner_();\n const maxMenuSurfaceHeight = this.getMenuSurfaceMaxHeight_(corner);\n const verticalAlignment = (corner & CornerBit.BOTTOM) ? 'bottom' : 'top';\n let horizontalAlignment = (corner & CornerBit.RIGHT) ? 'right' : 'left';\n const horizontalOffset = this.getHorizontalOriginOffset_(corner);\n const verticalOffset = this.getVerticalOriginOffset_(corner);\n let position = {\n [horizontalAlignment]: horizontalOffset ? horizontalOffset : '0',\n [verticalAlignment]: verticalOffset ? verticalOffset : '0',\n };\n const {anchorWidth, surfaceWidth} = this.measures_;\n // Center align when anchor width is comparable or greater than menu surface, otherwise keep corner.\n if (anchorWidth / surfaceWidth > 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.hoistedElement_ || this.isFixedPosition_) {\n position = this.adjustPositionForHoistedElement_(position);\n }\n\n for (const prop in position) {\n if (position.hasOwnProperty(prop) && position[prop] !== '0') {\n position[prop] = `${parseInt(position[prop], 10)}px`;\n }\n }\n\n this.adapter_.setTransformOrigin(`${horizontalAlignment} ${verticalAlignment}`);\n this.adapter_.setPosition(position);\n this.adapter_.setMaxHeight(maxMenuSurfaceHeight ? maxMenuSurfaceHeight + 'px' : '');\n\n // Clear measures after positioning is complete.\n this.measures_ = null;\n }\n\n /**\n * Calculates the offsets for positioning the menu-surface when the menu-surface has been\n * hoisted to the body.\n * @param {!{\n * top: (string|undefined),\n * right: (string|undefined),\n * bottom: (string|undefined),\n * left: (string|undefined)\n * }} position\n * @return {!{\n * top: (string|undefined),\n * right: (string|undefined),\n * bottom: (string|undefined),\n * left: (string|undefined)\n * }} position\n * @private\n */\n adjustPositionForHoistedElement_(position) {\n const {windowScroll, viewportDistance} = this.measures_;\n\n for (const prop in position) {\n if (position.hasOwnProperty(prop)) {\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 if (viewportDistance.hasOwnProperty(prop)) {\n position[prop] = parseInt(position[prop], 10) + viewportDistance[prop];\n }\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 position[prop] = parseInt(position[prop], 10) + windowScroll.y;\n } else if (prop === 'bottom') {\n position[prop] = parseInt(position[prop], 10) - windowScroll.y;\n } else if (prop === 'left') {\n position[prop] = parseInt(position[prop], 10) + windowScroll.x;\n } else if (prop === 'right') {\n position[prop] = parseInt(position[prop], 10) - windowScroll.x;\n }\n }\n }\n }\n\n return position;\n }\n\n /**\n * Open the menu surface.\n */\n open() {\n this.adapter_.saveFocus();\n\n if (!this.quickOpen_) {\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.quickOpen_) {\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 this.isOpen_ = true;\n }\n\n /**\n * Closes the menu surface.\n */\n close() {\n if (!this.quickOpen_) {\n this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);\n }\n\n requestAnimationFrame(() => {\n this.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);\n if (this.quickOpen_) {\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 /**\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 * @private\n */\n maybeRestoreFocus_() {\n if (this.adapter_.isFocused() || this.adapter_.isElementInContainer(document.activeElement)) {\n this.adapter_.restoreFocus();\n }\n }\n\n /** @return {boolean} */\n isOpen() {\n return this.isOpen_;\n }\n\n /**\n * isFinite that doesn't force conversion to number type.\n * Equivalent to Number.isFinite in ES2015, but is not included in IE11.\n * @param {number} num\n * @return {boolean}\n * @private\n */\n typeCheckisFinite_(num) {\n return typeof num === 'number' && isFinite(num);\n }\n}\n\nexport {MDCMenuSurfaceFoundation, AnchorMargin};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu-surface/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\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/** @enum {string} */\nconst 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), ' +\n 'select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex=\"-1\"]):not([aria-disabled=\"true\"])',\n};\n\n/** @enum {number} */\nconst 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};\n\n/**\n * Enum for bits in the {@see Corner) bitmap.\n * @enum {number}\n */\nconst 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 *\n * @enum {number}\n */\nconst Corner = {\n TOP_LEFT: 0,\n TOP_RIGHT: CornerBit.RIGHT,\n BOTTOM_LEFT: CornerBit.BOTTOM,\n BOTTOM_RIGHT: CornerBit.BOTTOM | CornerBit.RIGHT,\n TOP_START: CornerBit.FLIP_RTL,\n TOP_END: CornerBit.FLIP_RTL | CornerBit.RIGHT,\n BOTTOM_START: CornerBit.BOTTOM | CornerBit.FLIP_RTL,\n BOTTOM_END: CornerBit.BOTTOM | CornerBit.RIGHT | CornerBit.FLIP_RTL,\n};\n\nexport {cssClasses, strings, numbers, CornerBit, Corner};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu-surface/constants.js","/**\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';\n\nimport MDCNotchedOutlineAdapter from './adapter';\nimport MDCNotchedOutlineFoundation from './foundation';\nimport {MDCFloatingLabelFoundation} from '@material/floating-label/index';\nimport {cssClasses, strings} from './constants';\n\n/**\n * @extends {MDCComponent<!MDCNotchedOutlineFoundation>}\n * @final\n */\nclass MDCNotchedOutline extends MDCComponent {\n /**\n * @param {!Element} root\n * @return {!MDCNotchedOutline}\n */\n static attachTo(root) {\n return new MDCNotchedOutline(root);\n }\n /** @param {...?} args */\n constructor(...args) {\n super(...args);\n /** @private {Element} */\n this.notchElement_;\n }\n\n initialSyncWithDOM() {\n const label = this.root_.querySelector('.' + MDCFloatingLabelFoundation.cssClasses.ROOT);\n this.notchElement_ = this.root_.querySelector(strings.NOTCH_ELEMENT_SELECTOR);\n\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 {number} notchWidth The notch width in the outline.\n */\n notch(notchWidth) {\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 /**\n * @return {!MDCNotchedOutlineFoundation}\n */\n getDefaultFoundation() {\n return new MDCNotchedOutlineFoundation(\n /** @type {!MDCNotchedOutlineAdapter} */ (Object.assign({\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 }\n}\n\nexport {MDCNotchedOutline, MDCNotchedOutlineFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-notched-outline/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 MDCSelectIconAdapter from './adapter';\nimport MDCSelectIconFoundation from './foundation';\n\n/**\n * @extends {MDCComponent<!MDCSelectIconFoundation>}\n * @final\n */\nclass MDCSelectIcon extends MDCComponent {\n /**\n * @param {!Element} root\n * @return {!MDCSelectIcon}\n */\n static attachTo(root) {\n return new MDCSelectIcon(root);\n }\n\n /**\n * @return {!MDCSelectIconFoundation}\n */\n get foundation() {\n return this.foundation_;\n }\n\n /**\n * @return {!MDCSelectIconFoundation}\n */\n getDefaultFoundation() {\n return new MDCSelectIconFoundation(/** @type {!MDCSelectIconAdapter} */ (Object.assign({\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.root_.addEventListener(evtType, handler),\n deregisterInteractionHandler: (evtType, handler) => this.root_.removeEventListener(evtType, handler),\n notifyIconAction: () => this.emit(\n MDCSelectIconFoundation.strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */),\n })));\n }\n}\n\nexport {MDCSelectIcon, MDCSelectIconFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/icon/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 MDCSelectHelperTextAdapter from './adapter';\nimport MDCSelectHelperTextFoundation from './foundation';\n\n/**\n * @extends {MDCComponent<!MDCSelectHelperTextFoundation>}\n * @final\n */\nclass MDCSelectHelperText extends MDCComponent {\n /**\n * @param {!Element} root\n * @return {!MDCSelectHelperText}\n */\n static attachTo(root) {\n return new MDCSelectHelperText(root);\n }\n\n /**\n * @return {!MDCSelectHelperTextFoundation}\n */\n get foundation() {\n return this.foundation_;\n }\n\n /**\n * @return {!MDCSelectHelperTextFoundation}\n */\n getDefaultFoundation() {\n return new MDCSelectHelperTextFoundation(/** @type {!MDCSelectHelperTextAdapter} */ (Object.assign({\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 }\n}\n\nexport {MDCSelectHelperText, MDCSelectHelperTextFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/helper-text/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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 OPENING: 'mdc-snackbar--opening',\n OPEN: 'mdc-snackbar--open',\n CLOSING: 'mdc-snackbar--closing',\n};\n\nconst strings = {\n SURFACE_SELECTOR: '.mdc-snackbar__surface',\n LABEL_SELECTOR: '.mdc-snackbar__label',\n ACTION_SELECTOR: '.mdc-snackbar__action',\n DISMISS_SELECTOR: '.mdc-snackbar__dismiss',\n\n OPENING_EVENT: 'MDCSnackbar:opening',\n OPENED_EVENT: 'MDCSnackbar:opened',\n CLOSING_EVENT: 'MDCSnackbar:closing',\n CLOSED_EVENT: 'MDCSnackbar:closed',\n\n REASON_ACTION: 'action',\n REASON_DISMISS: 'dismiss',\n\n ARIA_LIVE_LABEL_TEXT_ATTR: 'data-mdc-snackbar-label-text',\n};\n\nconst numbers = {\n MIN_AUTO_DISMISS_TIMEOUT_MS: 4000,\n MAX_AUTO_DISMISS_TIMEOUT_MS: 10000,\n DEFAULT_AUTO_DISMISS_TIMEOUT_MS: 5000,\n\n // These variables need to be kept in sync with the values in _variables.scss.\n SNACKBAR_ANIMATION_OPEN_TIME_MS: 150,\n SNACKBAR_ANIMATION_CLOSE_TIME_MS: 75,\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.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 {\n cssClasses,\n strings,\n} from './constants';\n\n/**\n * @extends {MDCFoundation<!MDCTabIndicatorAdapter>}\n * @abstract\n */\nclass MDCTabIndicatorFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /**\n * @see MDCTabIndicatorAdapter for typing information\n * @return {!MDCTabIndicatorAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCTabIndicatorAdapter} */ ({\n addClass: () => {},\n removeClass: () => {},\n computeContentClientRect: () => {},\n setContentStyleProperty: () => {},\n });\n }\n\n /** @param {!MDCTabIndicatorAdapter} adapter */\n constructor(adapter) {\n super(Object.assign(MDCTabIndicatorFoundation.defaultAdapter, adapter));\n }\n\n /** @return {!ClientRect} */\n computeContentClientRect() {\n return this.adapter_.computeContentClientRect();\n }\n\n /**\n * Activates the indicator\n * @param {!ClientRect=} previousIndicatorClientRect\n * @abstract\n */\n activate(previousIndicatorClientRect) {} // eslint-disable-line no-unused-vars\n\n /** @abstract */\n deactivate() {}\n}\n\nexport default MDCTabIndicatorFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/foundation.js","/**\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\n\n/**\n * @extends {MDCFoundation<!MDCTextFieldHelperTextAdapter>}\n * @final\n */\nclass MDCTextFieldHelperTextFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /**\n * {@see MDCTextFieldHelperTextAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCTextFieldHelperTextAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCTextFieldHelperTextAdapter} */ ({\n addClass: () => {},\n removeClass: () => {},\n hasClass: () => {},\n setAttr: () => {},\n removeAttr: () => {},\n setContent: () => {},\n });\n }\n\n /**\n * @param {!MDCTextFieldHelperTextAdapter} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCTextFieldHelperTextFoundation.defaultAdapter, adapter));\n }\n\n /**\n * Sets the content of the helper text field.\n * @param {string} content\n */\n setContent(content) {\n this.adapter_.setContent(content);\n }\n\n /** @param {boolean} isPersistent Sets the persistency of the helper text. */\n setPersistent(isPersistent) {\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 {boolean} isValidation True to make the helper text act as an\n * error validation message.\n */\n setValidation(isValidation) {\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 /** Makes the helper text visible to the screen reader. */\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 * @param {boolean} inputIsValid\n */\n setValidity(inputIsValid) {\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 * @private\n */\n hide_() {\n this.adapter_.setAttr(strings.ARIA_HIDDEN, 'true');\n }\n}\n\nexport default MDCTextFieldHelperTextFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/helper-text/foundation.js","/**\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\n/**\n * @extends {MDCFoundation<!MDCTextFieldCharacterCounterAdapter>}\n * @final\n */\nclass MDCTextFieldCharacterCounterFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /**\n * {@see MDCTextFieldCharacterCounterAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCTextFieldCharacterCounterAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCTextFieldCharacterCounterAdapter} */ ({\n setContent: () => {},\n });\n }\n\n /**\n * @param {!MDCTextFieldCharacterCounterAdapter} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCTextFieldCharacterCounterFoundation.defaultAdapter, adapter));\n }\n\n /**\n * @param {number} currentLength\n * @param {number} maxLength\n */\n setCounterValue(currentLength, maxLength) {\n currentLength = Math.min(currentLength, maxLength);\n this.adapter_.setContent(`${currentLength} / ${maxLength}`);\n }\n}\n\nexport default MDCTextFieldCharacterCounterFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/character-counter/foundation.js","/**\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 MDCTextFieldIconAdapter from './adapter';\nimport {strings} from './constants';\n\n\n/**\n * @extends {MDCFoundation<!MDCTextFieldIconAdapter>}\n * @final\n */\nclass MDCTextFieldIconFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /**\n * {@see MDCTextFieldIconAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCTextFieldIconAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCTextFieldIconAdapter} */ ({\n getAttr: () => {},\n setAttr: () => {},\n removeAttr: () => {},\n setContent: () => {},\n registerInteractionHandler: () => {},\n deregisterInteractionHandler: () => {},\n notifyIconAction: () => {},\n });\n }\n\n /**\n * @param {!MDCTextFieldIconAdapter} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCTextFieldIconFoundation.defaultAdapter, adapter));\n\n /** @private {string?} */\n this.savedTabIndex_ = null;\n\n /** @private {function(!Event): undefined} */\n this.interactionHandler_ = (evt) => this.handleInteraction(evt);\n }\n\n init() {\n this.savedTabIndex_ = this.adapter_.getAttr('tabindex');\n\n ['click', 'keydown'].forEach((evtType) => {\n this.adapter_.registerInteractionHandler(evtType, this.interactionHandler_);\n });\n }\n\n destroy() {\n ['click', 'keydown'].forEach((evtType) => {\n this.adapter_.deregisterInteractionHandler(evtType, this.interactionHandler_);\n });\n }\n\n /** @param {boolean} disabled */\n setDisabled(disabled) {\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 /** @param {string} label */\n setAriaLabel(label) {\n this.adapter_.setAttr('aria-label', label);\n }\n\n /** @param {string} content */\n setContent(content) {\n this.adapter_.setContent(content);\n }\n\n /**\n * Handles an interaction event\n * @param {!Event} evt\n */\n handleInteraction(evt) {\n if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {\n this.adapter_.notifyIconAction();\n }\n }\n}\n\nexport default MDCTextFieldIconFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/icon/foundation.js","/**\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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Ripple. Provides an interface for managing\n * - classes\n * - dom\n * - CSS variables\n * - position\n * - dimensions\n * - scroll position\n * - event handlers\n * - unbounded, active and disabled states\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nclass MDCRippleAdapter {\n /** @return {boolean} */\n browserSupportsCssVars() {}\n\n /** @return {boolean} */\n isUnbounded() {}\n\n /** @return {boolean} */\n isSurfaceActive() {}\n\n /** @return {boolean} */\n isSurfaceDisabled() {}\n\n /** @param {string} className */\n addClass(className) {}\n\n /** @param {string} className */\n removeClass(className) {}\n\n /** @param {!EventTarget} target */\n containsEventTarget(target) {}\n\n /**\n * @param {string} evtType\n * @param {!Function} handler\n */\n registerInteractionHandler(evtType, handler) {}\n\n /**\n * @param {string} evtType\n * @param {!Function} handler\n */\n deregisterInteractionHandler(evtType, handler) {}\n\n /**\n * @param {string} evtType\n * @param {!Function} handler\n */\n registerDocumentInteractionHandler(evtType, handler) {}\n\n /**\n * @param {string} evtType\n * @param {!Function} handler\n */\n deregisterDocumentInteractionHandler(evtType, handler) {}\n\n /**\n * @param {!Function} handler\n */\n registerResizeHandler(handler) {}\n\n /**\n * @param {!Function} handler\n */\n deregisterResizeHandler(handler) {}\n\n /**\n * @param {string} varName\n * @param {?number|string} value\n */\n updateCssVariable(varName, value) {}\n\n /** @return {!ClientRect} */\n computeBoundingRect() {}\n\n /** @return {{x: number, y: number}} */\n getWindowPageOffset() {}\n}\n\nexport default MDCRippleAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/adapter.js","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport MDCComponent from '@material/base/component';\nimport {MDCRipple, MDCRippleFoundation} from '@material/ripple/index';\n\nimport MDCChipAdapter from './adapter';\nimport {MDCChipFoundation} from './foundation';\nimport {strings} from './constants';\n\nconst INTERACTION_EVENTS = ['click', 'keydown'];\n\n/**\n * @extends {MDCComponent<!MDCChipFoundation>}\n * @final\n */\nclass MDCChip extends MDCComponent {\n /**\n * @param {...?} args\n */\n constructor(...args) {\n super(...args);\n\n /** @type {string} */\n this.id;\n /** @private {?Element} */\n this.leadingIcon_;\n /** @private {?Element} */\n this.trailingIcon_;\n /** @private {?Element} */\n this.checkmark_;\n /** @private {!MDCRipple} */\n this.ripple_;\n\n /** @private {?function(?Event): undefined} */\n this.handleInteraction_;\n /** @private {?function(!Event): undefined} */\n this.handleTransitionEnd_;\n /** @private {function(!Event): undefined} */\n this.handleTrailingIconInteraction_;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCChip}\n */\n static attachTo(root) {\n return new MDCChip(root);\n }\n\n initialize(\n rippleFactory = (el, foundation) => new MDCRipple(el, foundation)) {\n this.id = this.root_.id;\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 const adapter = Object.assign(MDCRipple.createAdapter(this), {\n computeBoundingRect: () => this.foundation_.getDimensions(),\n });\n this.ripple_ = rippleFactory(this.root_, new MDCRippleFoundation(adapter));\n }\n\n initialSyncWithDOM() {\n this.handleInteraction_ = (evt) => this.foundation_.handleInteraction(evt);\n this.handleTransitionEnd_ = (evt) => this.foundation_.handleTransitionEnd(evt);\n this.handleTrailingIconInteraction_ = (evt) => this.foundation_.handleTrailingIconInteraction(evt);\n\n INTERACTION_EVENTS.forEach((evtType) => {\n this.root_.addEventListener(evtType, this.handleInteraction_);\n });\n this.root_.addEventListener('transitionend', this.handleTransitionEnd_);\n\n if (this.trailingIcon_) {\n INTERACTION_EVENTS.forEach((evtType) => {\n this.trailingIcon_.addEventListener(evtType, this.handleTrailingIconInteraction_);\n });\n }\n }\n\n destroy() {\n this.ripple_.destroy();\n\n INTERACTION_EVENTS.forEach((evtType) => {\n this.root_.removeEventListener(evtType, this.handleInteraction_);\n });\n this.root_.removeEventListener('transitionend', this.handleTransitionEnd_);\n\n if (this.trailingIcon_) {\n INTERACTION_EVENTS.forEach((evtType) => {\n this.trailingIcon_.removeEventListener(evtType, this.handleTrailingIconInteraction_);\n });\n }\n\n super.destroy();\n }\n\n /**\n * Returns whether the chip is selected.\n * @return {boolean}\n */\n get selected() {\n return this.foundation_.isSelected();\n }\n\n /**\n * Sets selected state on the chip.\n * @param {boolean} selected\n */\n set selected(selected) {\n this.foundation_.setSelected(selected);\n }\n\n /**\n * Returns whether a trailing icon click should trigger exit/removal of the chip.\n * @return {boolean}\n */\n get shouldRemoveOnTrailingIconClick() {\n return this.foundation_.getShouldRemoveOnTrailingIconClick();\n }\n\n /**\n * Sets whether a trailing icon click should trigger exit/removal of the chip.\n * @param {boolean} shouldRemove\n */\n set shouldRemoveOnTrailingIconClick(shouldRemove) {\n this.foundation_.setShouldRemoveOnTrailingIconClick(shouldRemove);\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 /**\n * @return {!MDCChipFoundation}\n */\n getDefaultFoundation() {\n return new MDCChipFoundation(/** @type {!MDCChipAdapter} */ (Object.assign({\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 addClassToLeadingIcon: (className) => {\n if (this.leadingIcon_) {\n this.leadingIcon_.classList.add(className);\n }\n },\n removeClassFromLeadingIcon: (className) => {\n if (this.leadingIcon_) {\n this.leadingIcon_.classList.remove(className);\n }\n },\n eventTargetHasClass: (target, className) => target.classList.contains(className),\n notifyInteraction: () => this.emit(strings.INTERACTION_EVENT, {chipId: this.id}, true /* shouldBubble */),\n notifySelection: (selected) => this.emit(\n strings.SELECTION_EVENT, {chipId: this.id, selected: selected}, true /* shouldBubble */),\n notifyTrailingIconInteraction: () => this.emit(\n strings.TRAILING_ICON_INTERACTION_EVENT, {chipId: this.id}, true /* shouldBubble */),\n notifyRemoval: () =>\n this.emit(strings.REMOVAL_EVENT, {chipId: this.id, root: this.root_}, true /* shouldBubble */),\n getComputedStyleValue: (propertyName) => window.getComputedStyle(this.root_).getPropertyValue(propertyName),\n setStyleProperty: (propertyName, value) => this.root_.style.setProperty(propertyName, value),\n hasLeadingIcon: () => !!this.leadingIcon_,\n getRootBoundingClientRect: () => this.root_.getBoundingClientRect(),\n getCheckmarkBoundingClientRect: () => this.checkmark_ ? this.checkmark_.getBoundingClientRect() : null,\n })));\n }\n\n /** @return {!MDCRipple} */\n get ripple() {\n return this.ripple_;\n }\n}\n\nexport {MDCChip, MDCChipFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip/index.js","/**\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Chip.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Chip into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCChipAdapter {\n /**\n * Adds a class to the root element.\n * @param {string} className\n */\n addClass(className) {}\n\n /**\n * Removes a class from the root element.\n * @param {string} className\n */\n removeClass(className) {}\n\n /**\n * Returns true if the root element contains the given class.\n * @param {string} className\n * @return {boolean}\n */\n hasClass(className) {}\n\n /**\n * Adds a class to the leading icon element.\n * @param {string} className\n */\n addClassToLeadingIcon(className) {}\n\n /**\n * Removes a class from the leading icon element.\n * @param {string} className\n */\n removeClassFromLeadingIcon(className) {}\n\n /**\n * Returns true if target has className, false otherwise.\n * @param {!EventTarget} target\n * @param {string} className\n * @return {boolean}\n */\n eventTargetHasClass(target, className) {}\n\n /**\n * Emits a custom \"MDCChip:interaction\" event denoting the chip has been\n * interacted with (typically on click or keydown).\n */\n notifyInteraction() {}\n\n /**\n * Emits a custom \"MDCChip:selection\" event denoting the chip has been selected or deselected.\n * @param {boolean} selected\n */\n notifySelection(selected) {}\n\n /**\n * Emits a custom \"MDCChip:trailingIconInteraction\" event denoting the trailing icon has been\n * interacted with (typically on click or keydown).\n */\n notifyTrailingIconInteraction() {}\n\n /**\n * Emits a custom event \"MDCChip:removal\" denoting the chip will be removed.\n */\n notifyRemoval() {}\n\n /**\n * Returns the computed property value of the given style property on the root element.\n * @param {string} propertyName\n * @return {string}\n */\n getComputedStyleValue(propertyName) {}\n\n /**\n * Sets the property value of the given style property on the root element.\n * @param {string} propertyName\n * @param {string} value\n */\n setStyleProperty(propertyName, value) {}\n\n /**\n * Returns whether the chip has a leading icon.\n * @return {boolean}\n */\n hasLeadingIcon() {}\n\n /**\n * Returns the bounding client rect of the root element.\n * @return {!ClientRect}\n */\n getRootBoundingClientRect() {}\n\n /**\n * Returns the bounding client rect of the checkmark element or null if it doesn't exist.\n * @return {?ClientRect}\n */\n getCheckmarkBoundingClientRect() {}\n}\n\nexport default MDCChipAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip/adapter.js","/**\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 {strings, cssClasses} from './constants';\n\n\n/**\n * @extends {MDCFoundation<!MDCChipAdapter>}\n * @final\n */\nclass MDCChipFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /**\n * {@see MDCChipAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCChipAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCChipAdapter} */ ({\n addClass: () => {},\n removeClass: () => {},\n hasClass: () => {},\n addClassToLeadingIcon: () => {},\n removeClassFromLeadingIcon: () => {},\n eventTargetHasClass: () => {},\n notifyInteraction: () => {},\n notifySelection: () => {},\n notifyTrailingIconInteraction: () => {},\n notifyRemoval: () => {},\n getComputedStyleValue: () => {},\n setStyleProperty: () => {},\n hasLeadingIcon: () => {},\n getRootBoundingClientRect: () => {},\n getCheckmarkBoundingClientRect: () => {},\n });\n }\n\n /**\n * @param {!MDCChipAdapter} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCChipFoundation.defaultAdapter, adapter));\n\n /**\n * Whether a trailing icon click should immediately trigger exit/removal of the chip.\n * @private {boolean}\n * */\n this.shouldRemoveOnTrailingIconClick_ = true;\n }\n\n /**\n * @return {boolean}\n */\n isSelected() {\n return this.adapter_.hasClass(cssClasses.SELECTED);\n }\n\n /**\n * @param {boolean} selected\n */\n setSelected(selected) {\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 /**\n * @return {boolean}\n */\n getShouldRemoveOnTrailingIconClick() {\n return this.shouldRemoveOnTrailingIconClick_;\n }\n\n /**\n * @param {boolean} shouldRemove\n */\n setShouldRemoveOnTrailingIconClick(shouldRemove) {\n this.shouldRemoveOnTrailingIconClick_ = shouldRemove;\n }\n\n /** @return {!ClientRect} */\n getDimensions() {\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() && this.adapter_.getCheckmarkBoundingClientRect() !== null) {\n const height = this.adapter_.getRootBoundingClientRect().height;\n // The checkmark's width is initially set to 0, so use the checkmark's height as a proxy since the checkmark\n // should always be square.\n const width =\n this.adapter_.getRootBoundingClientRect().width + this.adapter_.getCheckmarkBoundingClientRect().height;\n return /** @type {!ClientRect} */ ({height, width});\n } else {\n return this.adapter_.getRootBoundingClientRect();\n }\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 * @param {!Event} evt\n */\n handleInteraction(evt) {\n if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {\n this.adapter_.notifyInteraction();\n }\n }\n\n /**\n * Handles a transition end event on the root element.\n * @param {!Event} evt\n */\n handleTransitionEnd(evt) {\n // Handle transition end event on the chip when it is about to be removed.\n if (this.adapter_.eventTargetHasClass(/** @type {!EventTarget} */ (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(/** @type {!EventTarget} */ (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(/** @type {!EventTarget} */ (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 * @param {!Event} evt\n */\n handleTrailingIconInteraction(evt) {\n evt.stopPropagation();\n if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {\n this.adapter_.notifyTrailingIconInteraction();\n if (this.shouldRemoveOnTrailingIconClick_) {\n this.beginExit();\n }\n }\n }\n}\n\n/**\n * @typedef {{\n * detail: {\n * chipId: string,\n * },\n * bubbles: boolean,\n * }}\n */\nlet MDCChipInteractionEventType;\n\n/**\n * @typedef {{\n * detail: {\n * chipId: string,\n * selected: boolean,\n * },\n * bubbles: boolean,\n * }}\n */\nlet MDCChipSelectionEventType;\n\n/**\n * @typedef {{\n * detail: {\n * chipId: string,\n * root: Element,\n * },\n * bubbles: boolean,\n * }}\n */\nlet MDCChipRemovalEventType;\n\nexport {MDCChipFoundation, MDCChipInteractionEventType, MDCChipSelectionEventType, MDCChipRemovalEventType};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip/foundation.js","/**\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/** @enum {string} */\nconst strings = {\n ENTRY_ANIMATION_NAME: 'mdc-chip-entry',\n INTERACTION_EVENT: 'MDCChip:interaction',\n SELECTION_EVENT: 'MDCChip:selection',\n TRAILING_ICON_INTERACTION_EVENT: 'MDCChip:trailingIconInteraction',\n REMOVAL_EVENT: 'MDCChip:removal',\n CHECKMARK_SELECTOR: '.mdc-chip__checkmark',\n LEADING_ICON_SELECTOR: '.mdc-chip__icon--leading',\n TRAILING_ICON_SELECTOR: '.mdc-chip__icon--trailing',\n};\n\n/** @enum {string} */\nconst 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 TRAILING_ICON: 'mdc-chip__icon--trailing',\n SELECTED: 'mdc-chip--selected',\n};\n\nexport {strings, cssClasses};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip/constants.js","/**\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Chip Set.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Chip Set into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCChipSetAdapter {\n /**\n * Returns true if the root element contains the given class name.\n * @param {string} className\n * @return {boolean}\n */\n hasClass(className) {}\n\n /**\n * Removes the chip with the given id from the chip set.\n * @param {string} chipId\n */\n removeChip(chipId) {}\n\n /**\n * Sets the selected state of the chip with the given id.\n * @param {string} chipId\n * @param {boolean} selected\n */\n setSelected(chipId, selected) {}\n}\n\nexport default MDCChipSetAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip-set/adapter.js","var tabbable = require('tabbable');\nvar xtend = require('xtend');\n\nvar activeFocusTraps = (function() {\n var trapQueue = [];\n return {\n activateTrap: function(trap) {\n if (trapQueue.length > 0) {\n var activeTrap = trapQueue[trapQueue.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex === -1) {\n trapQueue.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapQueue.splice(trapIndex, 1);\n trapQueue.push(trap);\n }\n },\n\n deactivateTrap: function(trap) {\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex !== -1) {\n trapQueue.splice(trapIndex, 1);\n }\n\n if (trapQueue.length > 0) {\n trapQueue[trapQueue.length - 1].unpause();\n }\n }\n };\n})();\n\nfunction focusTrap(element, userOptions) {\n var doc = document;\n var container =\n typeof element === 'string' ? doc.querySelector(element) : element;\n\n var config = xtend(\n {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true\n },\n userOptions\n );\n\n var state = {\n firstTabbableNode: null,\n lastTabbableNode: null,\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false\n };\n\n var trap = {\n activate: activate,\n deactivate: deactivate,\n pause: pause,\n unpause: unpause\n };\n\n return trap;\n\n function activate(activateOptions) {\n if (state.active) return;\n\n updateTabbableNodes();\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n var onActivate =\n activateOptions && activateOptions.onActivate\n ? activateOptions.onActivate\n : config.onActivate;\n if (onActivate) {\n onActivate();\n }\n\n addListeners();\n return trap;\n }\n\n function deactivate(deactivateOptions) {\n if (!state.active) return;\n\n removeListeners();\n state.active = false;\n state.paused = false;\n\n activeFocusTraps.deactivateTrap(trap);\n\n var onDeactivate =\n deactivateOptions && deactivateOptions.onDeactivate !== undefined\n ? deactivateOptions.onDeactivate\n : config.onDeactivate;\n if (onDeactivate) {\n onDeactivate();\n }\n\n var returnFocus =\n deactivateOptions && deactivateOptions.returnFocus !== undefined\n ? deactivateOptions.returnFocus\n : config.returnFocusOnDeactivate;\n if (returnFocus) {\n delay(function() {\n tryFocus(state.nodeFocusedBeforeActivation);\n });\n }\n\n return trap;\n }\n\n function pause() {\n if (state.paused || !state.active) return;\n state.paused = true;\n removeListeners();\n }\n\n function unpause() {\n if (!state.paused || !state.active) return;\n state.paused = false;\n addListeners();\n }\n\n function addListeners() {\n if (!state.active) return;\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trap);\n\n updateTabbableNodes();\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n delay(function() {\n tryFocus(getInitialFocusNode());\n });\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, true);\n doc.addEventListener('touchstart', checkPointerDown, true);\n doc.addEventListener('click', checkClick, true);\n doc.addEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function removeListeners() {\n if (!state.active) return;\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n var node = optionValue;\n if (!optionValue) {\n return null;\n }\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue);\n if (!node) {\n throw new Error('`' + optionName + '` refers to no known node');\n }\n }\n if (typeof optionValue === 'function') {\n node = optionValue();\n if (!node) {\n throw new Error('`' + optionName + '` did not return a node');\n }\n }\n return node;\n }\n\n function getInitialFocusNode() {\n var node;\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (container.contains(doc.activeElement)) {\n node = doc.activeElement;\n } else {\n node = state.firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error(\n \"You can't have a focus-trap without at least one focusable element\"\n );\n }\n\n return node;\n }\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n function checkPointerDown(e) {\n if (container.contains(e.target)) return;\n if (config.clickOutsideDeactivates) {\n deactivate({\n returnFocus: !tabbable.isFocusable(e.target)\n });\n } else {\n e.preventDefault();\n }\n }\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n function checkFocusIn(e) {\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (container.contains(e.target) || e.target instanceof Document) {\n return;\n }\n e.stopImmediatePropagation();\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n\n function checkKey(e) {\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n e.preventDefault();\n deactivate();\n return;\n }\n if (isTabEvent(e)) {\n checkTab(e);\n return;\n }\n }\n\n // Hijack Tab events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n function checkTab(e) {\n updateTabbableNodes();\n if (e.shiftKey && e.target === state.firstTabbableNode) {\n e.preventDefault();\n tryFocus(state.lastTabbableNode);\n return;\n }\n if (!e.shiftKey && e.target === state.lastTabbableNode) {\n e.preventDefault();\n tryFocus(state.firstTabbableNode);\n return;\n }\n }\n\n function checkClick(e) {\n if (config.clickOutsideDeactivates) return;\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n function updateTabbableNodes() {\n var tabbableNodes = tabbable(container);\n state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();\n state.lastTabbableNode =\n tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();\n }\n\n function tryFocus(node) {\n if (node === doc.activeElement) return;\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus();\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n }\n}\n\nfunction isSelectableInput(node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n}\n\nfunction isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction isTabEvent(e) {\n return e.key === 'Tab' || e.keyCode === 9;\n}\n\nfunction delay(fn) {\n return setTimeout(fn, 0);\n}\n\nmodule.exports = focusTrap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./packages/mdc-dialog/node_modules/focus-trap/index.js\n// module id = 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\nimport MDCDrawerAdapter from '../adapter';\nimport MDCFoundation from '@material/base/foundation';\nimport {cssClasses, strings} from '../constants';\n\n/**\n * @extends {MDCFoundation<!MDCDrawerAdapter>}\n */\nclass MDCDismissibleDrawerFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n static get defaultAdapter() {\n return /** @type {!MDCDrawerAdapter} */ ({\n addClass: (/* className: string */) => {},\n removeClass: (/* className: string */) => {},\n hasClass: (/* className: string */) => {},\n elementHasClass: (/* element: !Element, className: string */) => {},\n notifyClose: () => {},\n notifyOpen: () => {},\n saveFocus: () => {},\n restoreFocus: () => {},\n focusActiveNavigationItem: () => {},\n trapFocus: () => {},\n releaseFocus: () => {},\n });\n }\n\n constructor(adapter) {\n super(Object.assign(MDCDismissibleDrawerFoundation.defaultAdapter, adapter));\n\n /** @private {number} */\n this.animationFrame_ = 0;\n\n /** @private {number} */\n this.animationTimer_ = 0;\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 /**\n * Function to open the drawer.\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 /**\n * Function to close the drawer.\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 * Extension point for when drawer finishes open animation.\n * @protected\n */\n opened() {}\n\n /**\n * Extension point for when drawer finishes close animation.\n * @protected\n */\n closed() {}\n\n /**\n * Returns true if drawer is in open state.\n * @return {boolean}\n */\n isOpen() {\n return this.adapter_.hasClass(cssClasses.OPEN);\n }\n\n /**\n * Returns true if drawer is animating open.\n * @return {boolean}\n */\n isOpening() {\n return this.adapter_.hasClass(cssClasses.OPENING) || this.adapter_.hasClass(cssClasses.ANIMATE);\n }\n\n /**\n * Returns true if drawer is animating closed.\n * @return {boolean}\n */\n isClosing() {\n return this.adapter_.hasClass(cssClasses.CLOSING);\n }\n\n /**\n * Keydown handler to close drawer when key is escape.\n * @param evt\n */\n handleKeydown(evt) {\n const {keyCode, key} = evt;\n\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 * @param {!Event} evt\n */\n handleTransitionEnd(evt) {\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 isElement = evt.target instanceof Element;\n if (!isElement || !this.adapter_.elementHasClass(/** @type {!Element} */ (evt.target), ROOT)) {\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 * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.\n * @param {Function} callback\n * @private\n */\n runNextAnimationFrame_(callback) {\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\nexport default MDCDismissibleDrawerFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/dismissible/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Drawer\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Drawer into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCDrawerAdapter {\n /**\n * Adds a class to the root Element.\n * @param {string} className\n */\n addClass(className) {}\n\n /**\n * Removes a class from the root Element.\n * @param {string} className\n */\n removeClass(className) {}\n\n /**\n * Returns true if the root Element contains the given class.\n * @param {string} className\n * @return {boolean}\n */\n hasClass(className) {}\n\n /**\n * @param {!Element} element target element to verify class name\n * @param {string} className class name\n */\n elementHasClass(element, className) {}\n\n /**\n * Saves the focus of currently active element.\n */\n saveFocus() {}\n\n /**\n * Restores focus to element previously saved with 'saveFocus'.\n */\n restoreFocus() {}\n\n /**\n * Focuses the active / selected navigation item.\n */\n focusActiveNavigationItem() {}\n\n /**\n * Emits a custom event \"MDCDrawer:closed\" denoting the drawer has closed.\n */\n notifyClose() {}\n\n /**\n * Emits a custom event \"MDCDrawer:opened\" denoting the drawer has opened.\n */\n notifyOpen() {}\n\n /**\n * Traps focus on root element and focuses the active navigation element.\n */\n trapFocus() {}\n\n /**\n * Releases focus trap from root element which was set by `trapFocus`\n * and restores focus to where it was prior to calling `trapFocus`.\n */\n releaseFocus() {}\n}\n\nexport default MDCDrawerAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/adapter.js","/**\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/** @enum {string} */\nconst cssClasses = {\n ROOT: 'mdc-drawer',\n DISMISSIBLE: 'mdc-drawer--dismissible',\n MODAL: 'mdc-drawer--modal',\n OPEN: 'mdc-drawer--open',\n ANIMATE: 'mdc-drawer--animate',\n OPENING: 'mdc-drawer--opening',\n CLOSING: 'mdc-drawer--closing',\n};\n\n/** @enum {string} */\nconst strings = {\n APP_CONTENT_SELECTOR: '.mdc-drawer-app-content',\n SCRIM_SELECTOR: '.mdc-drawer-scrim',\n CLOSE_EVENT: 'MDCDrawer:closed',\n OPEN_EVENT: 'MDCDrawer:opened',\n};\n\nexport {cssClasses, strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/constants.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC List. Provides an interface for managing focus.\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nclass MDCListAdapter {\n /** @return {number} */\n getListItemCount() {}\n\n /**\n * @return {number} */\n getFocusedElementIndex() {}\n\n /**\n * @param {number} index\n * @param {string} attribute\n * @param {string} value\n */\n setAttributeForElementIndex(index, attribute, value) {}\n\n /**\n * @param {number} index\n * @param {string} attribute\n */\n removeAttributeForElementIndex(index, attribute) {}\n\n /**\n * @param {number} index\n * @param {string} className\n */\n addClassForElementIndex(index, className) {}\n\n /**\n * @param {number} index\n * @param {string} className\n */\n removeClassForElementIndex(index, className) {}\n\n /**\n * Focuses list item at the index specified.\n * @param {number} index\n */\n focusItemAtIndex(index) {}\n\n /**\n * Sets the tabindex to the value specified for all button/a element children of\n * the list item at the index specified.\n * @param {number} listItemIndex\n * @param {number} tabIndexValue\n */\n setTabIndexForListItemChildren(listItemIndex, tabIndexValue) {}\n\n /**\n * @param {number} index\n * @return {boolean} Returns true if radio button is present at given list item index.\n */\n hasRadioAtIndex(index) {}\n\n /**\n * @param {number} index\n * @return {boolean} Returns true if checkbox is present at given list item index.\n */\n hasCheckboxAtIndex(index) {}\n\n /**\n * @param {number} index\n * @return {boolean} Returns true if checkbox inside a list item is checked.\n */\n isCheckboxCheckedAtIndex(index) {}\n\n /**\n * Sets the checked status of checkbox or radio at given list item index.\n * @param {number} index\n * @param {boolean} isChecked\n */\n setCheckedCheckboxOrRadioAtIndex(index, isChecked) {}\n\n /**\n * Notifies user action on list item.\n */\n notifyAction(index) {}\n\n /**\n * @return {boolean} Returns true when the current focused element is inside list root.\n */\n isFocusInsideList() {}\n}\n\nexport default MDCListAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-list/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\nconst cssClasses = {\n ROOT: 'mdc-list',\n LIST_ITEM_CLASS: 'mdc-list-item',\n LIST_ITEM_SELECTED_CLASS: 'mdc-list-item--selected',\n LIST_ITEM_ACTIVATED_CLASS: 'mdc-list-item--activated',\n};\n\n/** @enum {string} */\nconst strings = {\n ARIA_ORIENTATION: 'aria-orientation',\n ARIA_ORIENTATION_HORIZONTAL: 'horizontal',\n ARIA_SELECTED: 'aria-selected',\n ARIA_CHECKED: 'aria-checked',\n ARIA_CHECKED_RADIO_SELECTOR: '[role=\"radio\"][aria-checked=\"true\"]',\n ARIA_ROLE_CHECKBOX_SELECTOR: '[role=\"checkbox\"]',\n ARIA_CHECKED_CHECKBOX_SELECTOR: '[role=\"checkbox\"][aria-checked=\"true\"]',\n RADIO_SELECTOR: 'input[type=\"radio\"]:not(:disabled)',\n CHECKBOX_SELECTOR: 'input[type=\"checkbox\"]:not(:disabled)',\n CHECKBOX_RADIO_SELECTOR: 'input[type=\"checkbox\"]:not(:disabled), input[type=\"radio\"]:not(:disabled)',\n CHILD_ELEMENTS_TO_TOGGLE_TABINDEX: `.${cssClasses.LIST_ITEM_CLASS} button:not(:disabled),\n .${cssClasses.LIST_ITEM_CLASS} a`,\n FOCUSABLE_CHILD_ELEMENTS: `.${cssClasses.LIST_ITEM_CLASS} button:not(:disabled), .${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 ENABLED_ITEMS_SELECTOR: '.mdc-list-item:not(.mdc-list-item--disabled)',\n ACTION_EVENT: 'MDCList:action',\n};\n\n/** @typedef {number|!Array<number>} */\nlet Index;\n\nexport {strings, cssClasses, Index};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-list/constants.js","var tabbable = require('tabbable');\nvar xtend = require('xtend');\n\nvar activeFocusTraps = (function() {\n var trapQueue = [];\n return {\n activateTrap: function(trap) {\n if (trapQueue.length > 0) {\n var activeTrap = trapQueue[trapQueue.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex === -1) {\n trapQueue.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapQueue.splice(trapIndex, 1);\n trapQueue.push(trap);\n }\n },\n\n deactivateTrap: function(trap) {\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex !== -1) {\n trapQueue.splice(trapIndex, 1);\n }\n\n if (trapQueue.length > 0) {\n trapQueue[trapQueue.length - 1].unpause();\n }\n }\n };\n})();\n\nfunction focusTrap(element, userOptions) {\n var doc = document;\n var container =\n typeof element === 'string' ? doc.querySelector(element) : element;\n\n var config = xtend(\n {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true\n },\n userOptions\n );\n\n var state = {\n firstTabbableNode: null,\n lastTabbableNode: null,\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false\n };\n\n var trap = {\n activate: activate,\n deactivate: deactivate,\n pause: pause,\n unpause: unpause\n };\n\n return trap;\n\n function activate(activateOptions) {\n if (state.active) return;\n\n updateTabbableNodes();\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n var onActivate =\n activateOptions && activateOptions.onActivate\n ? activateOptions.onActivate\n : config.onActivate;\n if (onActivate) {\n onActivate();\n }\n\n addListeners();\n return trap;\n }\n\n function deactivate(deactivateOptions) {\n if (!state.active) return;\n\n removeListeners();\n state.active = false;\n state.paused = false;\n\n activeFocusTraps.deactivateTrap(trap);\n\n var onDeactivate =\n deactivateOptions && deactivateOptions.onDeactivate !== undefined\n ? deactivateOptions.onDeactivate\n : config.onDeactivate;\n if (onDeactivate) {\n onDeactivate();\n }\n\n var returnFocus =\n deactivateOptions && deactivateOptions.returnFocus !== undefined\n ? deactivateOptions.returnFocus\n : config.returnFocusOnDeactivate;\n if (returnFocus) {\n delay(function() {\n tryFocus(state.nodeFocusedBeforeActivation);\n });\n }\n\n return trap;\n }\n\n function pause() {\n if (state.paused || !state.active) return;\n state.paused = true;\n removeListeners();\n }\n\n function unpause() {\n if (!state.paused || !state.active) return;\n state.paused = false;\n addListeners();\n }\n\n function addListeners() {\n if (!state.active) return;\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trap);\n\n updateTabbableNodes();\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n delay(function() {\n tryFocus(getInitialFocusNode());\n });\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, true);\n doc.addEventListener('touchstart', checkPointerDown, true);\n doc.addEventListener('click', checkClick, true);\n doc.addEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function removeListeners() {\n if (!state.active) return;\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n var node = optionValue;\n if (!optionValue) {\n return null;\n }\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue);\n if (!node) {\n throw new Error('`' + optionName + '` refers to no known node');\n }\n }\n if (typeof optionValue === 'function') {\n node = optionValue();\n if (!node) {\n throw new Error('`' + optionName + '` did not return a node');\n }\n }\n return node;\n }\n\n function getInitialFocusNode() {\n var node;\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (container.contains(doc.activeElement)) {\n node = doc.activeElement;\n } else {\n node = state.firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error(\n \"You can't have a focus-trap without at least one focusable element\"\n );\n }\n\n return node;\n }\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n function checkPointerDown(e) {\n if (container.contains(e.target)) return;\n if (config.clickOutsideDeactivates) {\n deactivate({\n returnFocus: !tabbable.isFocusable(e.target)\n });\n } else {\n e.preventDefault();\n }\n }\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n function checkFocusIn(e) {\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (container.contains(e.target) || e.target instanceof Document) {\n return;\n }\n e.stopImmediatePropagation();\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n\n function checkKey(e) {\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n e.preventDefault();\n deactivate();\n return;\n }\n if (isTabEvent(e)) {\n checkTab(e);\n return;\n }\n }\n\n // Hijack Tab events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n function checkTab(e) {\n updateTabbableNodes();\n if (e.shiftKey && e.target === state.firstTabbableNode) {\n e.preventDefault();\n tryFocus(state.lastTabbableNode);\n return;\n }\n if (!e.shiftKey && e.target === state.lastTabbableNode) {\n e.preventDefault();\n tryFocus(state.firstTabbableNode);\n return;\n }\n }\n\n function checkClick(e) {\n if (config.clickOutsideDeactivates) return;\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n function updateTabbableNodes() {\n var tabbableNodes = tabbable(container);\n state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();\n state.lastTabbableNode =\n tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();\n }\n\n function tryFocus(node) {\n if (node === doc.activeElement) return;\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus();\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n }\n}\n\nfunction isSelectableInput(node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n}\n\nfunction isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction isTabEvent(e) {\n return e.key === 'Tab' || e.keyCode === 9;\n}\n\nfunction delay(fn) {\n return setTimeout(fn, 0);\n}\n\nmodule.exports = focusTrap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./packages/mdc-drawer/node_modules/focus-trap/index.js\n// module id = 40\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Floating Label.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the floating label into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCFloatingLabelAdapter {\n /**\n * Adds a class to the label element.\n * @param {string} className\n */\n addClass(className) {}\n\n /**\n * Removes a class from the label element.\n * @param {string} className\n */\n removeClass(className) {}\n\n /**\n * Returns the width of the label element.\n * @return {number}\n */\n getWidth() {}\n\n /**\n * Registers an event listener on the root element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n registerInteractionHandler(evtType, handler) {}\n\n /**\n * Deregisters an event listener on the root element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n deregisterInteractionHandler(evtType, handler) {}\n}\n\nexport default MDCFloatingLabelAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-floating-label/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC TextField Line Ripple.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the line ripple into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCLineRippleAdapter {\n /**\n * Adds a class to the line ripple element.\n * @param {string} className\n */\n addClass(className) {}\n\n /**\n * Removes a class from the line ripple element.\n * @param {string} className\n */\n removeClass(className) {}\n\n /**\n * @param {string} className\n * @return {boolean}\n */\n hasClass(className) {}\n\n /**\n * Sets the style property with propertyName to value on the root element.\n * @param {string} propertyName\n * @param {string} value\n */\n setStyle(propertyName, value) {}\n\n /**\n * Registers an event listener on the line ripple element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n registerEventHandler(evtType, handler) {}\n\n /**\n * Deregisters an event listener on the line ripple element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n deregisterEventHandler(evtType, handler) {}\n}\n\nexport default MDCLineRippleAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-line-ripple/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 {MDCMenuFoundation} from './foundation';\nimport {strings, cssClasses} from './constants';\nimport {MDCMenuSurface, Corner} from '@material/menu-surface/index';\nimport {MDCMenuSurfaceFoundation, AnchorMargin} from '@material/menu-surface/foundation';\nimport {MDCList, MDCListFoundation} from '@material/list/index';\n\n/**\n * @extends MDCComponent<!MDCMenuFoundation>\n */\nclass MDCMenu extends MDCComponent {\n /** @param {...?} args */\n constructor(...args) {\n super(...args);\n /** @private {!MDCMenuSurface} */\n this.menuSurface_;\n /** @private {!MDCList} */\n this.list_;\n /** @private {!Function} */\n this.handleKeydown_;\n\n /** @private {!Function} */\n this.handleItemAction_;\n\n /** @private {!Function} */\n this.afterOpenedCallback_;\n }\n\n /**\n * @param {!HTMLElement} root\n * @return {!MDCMenu}\n */\n static attachTo(root) {\n return new MDCMenu(root);\n }\n\n initialize(\n menuSurfaceFactory = (el) => new MDCMenuSurface(el),\n listFactory = (el) => new MDCList(el)) {\n this.menuSurface_ = menuSurfaceFactory(this.root_);\n\n const list = this.root_.querySelector(strings.LIST_SELECTOR);\n if (list) {\n this.list_ = listFactory(list);\n this.list_.wrapFocus = true;\n }\n }\n\n initialSyncWithDOM() {\n this.afterOpenedCallback_ = () => this.handleAfterOpened_();\n this.handleKeydown_ = (evt) => this.foundation_.handleKeydown(evt);\n this.handleItemAction_ = (evt) => this.foundation_.handleItemAction(this.items[evt.detail]);\n\n this.menuSurface_.listen(MDCMenuSurfaceFoundation.strings.OPENED_EVENT, this.afterOpenedCallback_);\n this.listen('keydown', this.handleKeydown_);\n this.listen(MDCListFoundation.strings.ACTION_EVENT, this.handleItemAction_);\n }\n\n destroy() {\n if (this.list_) {\n this.list_.destroy();\n }\n\n this.menuSurface_.destroy();\n this.menuSurface_.unlisten(MDCMenuSurfaceFoundation.strings.OPENED_EVENT, this.afterOpenedCallback_);\n this.unlisten('keydown', this.handleKeydown_);\n this.unlisten(MDCListFoundation.strings.ACTION_EVENT, this.handleItemAction_);\n super.destroy();\n }\n\n /** @return {boolean} */\n get open() {\n return this.menuSurface_.open;\n }\n\n /** @param {boolean} value */\n set open(value) {\n this.menuSurface_.open = value;\n }\n\n /** @return {boolean} */\n get wrapFocus() {\n return this.list_.wrapFocus;\n }\n\n /** @param {boolean} value */\n set wrapFocus(value) {\n this.list_.wrapFocus = value;\n }\n\n /**\n * @param {!Corner} corner Default anchor corner alignment of top-left\n * menu corner.\n */\n setAnchorCorner(corner) {\n this.menuSurface_.setAnchorCorner(corner);\n }\n\n /**\n * @param {!AnchorMargin} margin\n */\n setAnchorMargin(margin) {\n this.menuSurface_.setAnchorMargin(margin);\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 * @return {!Array<!HTMLElement>}\n */\n get items() {\n return this.list_.listElements;\n }\n\n /**\n * Return the item within the menu at the index specified.\n * @param {number} index\n * @return {?HTMLElement}\n */\n getOptionByIndex(index) {\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 /** @param {boolean} quickOpen */\n set quickOpen(quickOpen) {\n this.menuSurface_.quickOpen = quickOpen;\n }\n\n /** @param {boolean} isFixed */\n setFixedPosition(isFixed) {\n this.menuSurface_.setFixedPosition(isFixed);\n }\n\n hoistMenuToBody() {\n this.menuSurface_.hoistMenuToBody();\n }\n\n /** @param {boolean} isHoisted */\n setIsHoisted(isHoisted) {\n this.menuSurface_.setIsHoisted(isHoisted);\n }\n\n /**\n * @param {number} x\n * @param {number} y\n */\n setAbsolutePosition(x, y) {\n this.menuSurface_.setAbsolutePosition(x, y);\n }\n\n /**\n * Sets the element that the menu-surface is anchored to.\n * @param {!HTMLElement} element\n */\n setAnchorElement(element) {\n this.menuSurface_.anchorElement = element;\n }\n\n handleAfterOpened_() {\n const list = this.items;\n if (list.length > 0) {\n list[0].focus();\n }\n }\n\n /** @return {!MDCMenuFoundation} */\n getDefaultFoundation() {\n return new MDCMenuFoundation({\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 return this.items.indexOf(selectionGroup.querySelector(`.${cssClasses.MENU_SELECTED_LIST_ITEM}`));\n },\n notifySelected: (evtData) => this.emit(strings.SELECTED_EVENT, {\n index: evtData.index,\n item: this.items[evtData.index],\n }),\n });\n }\n}\n\nexport {MDCMenuFoundation, MDCMenu, AnchorMargin, Corner};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDCMenuSurface. Provides an interface for managing\n * - classes\n * - dom\n * - focus\n * - position\n * - dimensions\n * - event handlers\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nclass MDCMenuSurfaceAdapter {\n /** @param {string} className */\n addClass(className) {}\n\n /** @param {string} className */\n removeClass(className) {}\n\n /**\n * @param {string} className\n * @return {boolean}\n */\n hasClass(className) {}\n\n /** @return {boolean} */\n hasAnchor() {}\n\n /** Emits an event when the menu surface is closed. */\n notifyClose() {}\n\n /** Emits an event when the menu surface is opened. */\n notifyOpen() {}\n\n /**\n * @return {boolean}\n * @param {EventTarget} el\n */\n isElementInContainer(el) {}\n\n /** @return {boolean} */\n isRtl() {}\n\n /** @param {string} origin */\n setTransformOrigin(origin) {}\n\n /** @return {boolean} */\n isFocused() {}\n\n /** Saves the element that was focused before the menu surface was opened. */\n saveFocus() {}\n\n /** Restores focus to the element that was focused before the menu surface was opened. */\n restoreFocus() {}\n\n /** @return {boolean} */\n isFirstElementFocused() {}\n\n /** @return {boolean} */\n isLastElementFocused() {}\n\n /** Focuses the first focusable element in the menu-surface. */\n focusFirstElement() {}\n\n /** Focuses the first focusable element in the menu-surface. */\n focusLastElement() {}\n\n /** @return {!{width: number, height: number}} */\n getInnerDimensions() {}\n\n /** @return {!{width: number, height: number, top: number, right: number, bottom: number, left: number}} */\n getAnchorDimensions() {}\n\n /** @return {!{ width: number, height: number }} */\n getWindowDimensions() {}\n\n /** @return {!{ width: number, height: number }} */\n getBodyDimensions() {}\n\n /** @return {!{ width: number, height: number }} */\n getWindowScroll() {}\n\n /** @param {!{\n * top: (string|undefined),\n * right: (string|undefined),\n * bottom: (string|undefined),\n * left: (string|undefined)\n * }} position */\n setPosition(position) {}\n\n /** @param {string} height */\n setMaxHeight(height) {}\n}\n\nexport {MDCMenuSurfaceAdapter};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu-surface/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 util from './util';\nimport {MDCMenuSurfaceFoundation, AnchorMargin} from './foundation';\nimport {MDCMenuSurfaceAdapter} from './adapter';\nimport {Corner, CornerBit, strings, cssClasses} from './constants';\n\n/**\n * @extends MDCComponent<!MDCMenuSurfaceFoundation>\n */\nclass MDCMenuSurface extends MDCComponent {\n /** @param {...?} args */\n constructor(...args) {\n super(...args);\n\n /** @private {!Element} */\n this.previousFocus_;\n /** @private {!Element} */\n this.anchorElement;\n /** @private {Element} */\n this.firstFocusableElement_;\n /** @private {Element} */\n this.lastFocusableElement_;\n /** @private {!Function} */\n this.handleKeydown_;\n /** @private {!Function} */\n this.handleBodyClick_;\n /** @private {!Function} */\n this.registerBodyClickListener_;\n /** @private {!Function} */\n this.deregisterBodyClickListener_;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCMenuSurface}\n */\n static attachTo(root) {\n return new MDCMenuSurface(root);\n }\n\n initialSyncWithDOM() {\n if (this.root_.parentElement && this.root_.parentElement.classList.contains(cssClasses.ANCHOR)) {\n this.anchorElement = this.root_.parentElement;\n }\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.root_.addEventListener('keydown', this.handleKeydown_);\n this.root_.addEventListener(strings.OPENED_EVENT, this.registerBodyClickListener_);\n this.root_.addEventListener(strings.CLOSED_EVENT, this.deregisterBodyClickListener_);\n }\n\n destroy() {\n this.root_.removeEventListener('keydown', this.handleKeydown_);\n this.root_.removeEventListener(strings.OPENED_EVENT, this.registerBodyClickListener_);\n this.root_.removeEventListener(strings.CLOSED_EVENT, this.deregisterBodyClickListener_);\n super.destroy();\n }\n\n /** @return {boolean} */\n get open() {\n return this.foundation_.isOpen();\n }\n\n /** @param {boolean} value */\n set open(value) {\n if (value) {\n const focusableElements = this.root_.querySelectorAll(strings.FOCUSABLE_ELEMENTS);\n this.firstFocusableElement_ = focusableElements.length > 0 ? focusableElements[0] : null;\n this.lastFocusableElement_ = focusableElements.length > 0 ?\n focusableElements[focusableElements.length - 1] : null;\n this.foundation_.open();\n } else {\n this.foundation_.close();\n }\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_.parentElement.removeChild(this.root_));\n this.setIsHoisted(true);\n }\n\n /**\n * Sets the foundation to use page offsets for an positioning when the menu\n * is hoisted to the body.\n * @param {boolean} isHoisted\n */\n setIsHoisted(isHoisted) {\n this.foundation_.setIsHoisted(isHoisted);\n }\n\n /**\n * Sets the element that the menu-surface is anchored to.\n * @param {!Element} element\n */\n setMenuSurfaceAnchorElement(element) {\n this.anchorElement = element;\n }\n\n /**\n * Sets the menu-surface to position: fixed.\n * @param {boolean} isFixed\n */\n setFixedPosition(isFixed) {\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 /**\n * Sets the absolute x/y position to position based on. Requires the menu to be hoisted.\n * @param {number} x\n * @param {number} y\n */\n setAbsolutePosition(x, y) {\n this.foundation_.setAbsolutePosition(x, y);\n this.setIsHoisted(true);\n }\n\n /**\n * @param {!Corner} corner Default anchor corner alignment of top-left\n * surface corner.\n */\n setAnchorCorner(corner) {\n this.foundation_.setAnchorCorner(corner);\n }\n\n /**\n * @param {!AnchorMargin} margin\n */\n setAnchorMargin(margin) {\n this.foundation_.setAnchorMargin(margin);\n }\n\n /** @param {boolean} quickOpen */\n set quickOpen(quickOpen) {\n this.foundation_.setQuickOpen(quickOpen);\n }\n\n /** @return {!MDCMenuSurfaceFoundation} */\n getDefaultFoundation() {\n return new MDCMenuSurfaceFoundation(\n /** @type {!MDCMenuSurfaceAdapter} */ (Object.assign({\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_ === el || this.root_.contains(el),\n isRtl: () => getComputedStyle(this.root_).getPropertyValue('direction') === 'rtl',\n setTransformOrigin: (origin) => {\n this.root_.style[`${util.getTransformPropertyName(window)}-origin`] = origin;\n },\n },\n this.getFocusAdapterMethods_(),\n this.getDimensionAdapterMethods_())\n ));\n }\n\n /**\n * @return {!{\n * isFocused: function(): boolean,\n * saveFocus: function(),\n * restoreFocus: function(),\n * isFirstElementFocused: function(): boolean,\n * isLastElementFocused: function(): boolean,\n * focusFirstElement: function(),\n * focusLastElement: function(),\n * }}\n * @private\n */\n getFocusAdapterMethods_() {\n return {\n isFocused: () => document.activeElement === this.root_,\n saveFocus: () => {\n this.previousFocus_ = document.activeElement;\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,\n isLastElementFocused: () =>\n this.lastFocusableElement_ && this.lastFocusableElement_ === document.activeElement,\n focusFirstElement: () =>\n this.firstFocusableElement_ && this.firstFocusableElement_.focus && this.firstFocusableElement_.focus(),\n focusLastElement: () =>\n this.lastFocusableElement_ && this.lastFocusableElement_.focus && this.lastFocusableElement_.focus(),\n };\n }\n\n /**\n * @return {!{\n * getInnerDimensions: function(),\n * getAnchorDimensions: function(): (HTMLElement | null | * | ClientRect),\n * getWindowDimensions: function(),\n * setPosition: function(*),\n * setMaxHeight: function(string)}}\n * @private\n */\n getDimensionAdapterMethods_() {\n return {\n getInnerDimensions: () => {\n return {width: this.root_.offsetWidth, height: this.root_.offsetHeight};\n },\n getAnchorDimensions: () => this.anchorElement && this.anchorElement.getBoundingClientRect(),\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 : null;\n this.root_.style.right = 'right' in position ? position.right : null;\n this.root_.style.top = 'top' in position ? position.top : null;\n this.root_.style.bottom = 'bottom' in position ? position.bottom : null;\n },\n setMaxHeight: (height) => {\n this.root_.style.maxHeight = height;\n },\n };\n }\n}\n\nexport {MDCMenuSurfaceFoundation, MDCMenuSurface, AnchorMargin, Corner, CornerBit, util};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu-surface/index.js","/**\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Notched Outline.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Notched Outline into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCNotchedOutlineAdapter {\n /**\n * Adds a class to the root element.\n * @param {string} className\n */\n addClass(className) {}\n\n /**\n * Removes a class from the root element.\n * @param {string} className\n */\n removeClass(className) {}\n\n /**\n * Sets the width style property of the notch element.\n * @param {number} width\n */\n setNotchWidthProperty(width) {}\n\n /**\n * Removes the width style property from the notch element.\n */\n removeNotchWidthProperty() {}\n}\n\nexport default MDCNotchedOutlineAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-notched-outline/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\nconst strings = {\n NOTCH_ELEMENT_SELECTOR: '.mdc-notched-outline__notch',\n};\n\n/** @enum {number} */\nconst numbers = {\n // This should stay in sync with $mdc-notched-outline-padding * 2.\n NOTCH_ELEMENT_PADDING: 8,\n};\n\n/** @enum {string} */\nconst cssClasses = {\n OUTLINE_NOTCHED: 'mdc-notched-outline--notched',\n OUTLINE_UPGRADED: 'mdc-notched-outline--upgraded',\n NO_LABEL: 'mdc-notched-outline--no-label',\n};\n\nexport {cssClasses, numbers, strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-notched-outline/constants.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n/* eslint-disable no-unused-vars */\nimport {MDCSelectIconFoundation} from './icon/index';\nimport {MDCSelectHelperTextFoundation} from './helper-text/index';\n/* eslint-enable no-unused-vars */\n\n/**\n * @typedef {{\n * leadingIcon: (!MDCSelectIconFoundation|undefined),\n * helperText: (!MDCSelectHelperTextFoundation|undefined),\n * }}\n */\nlet FoundationMapType;\n\n/**\n * Adapter for MDC Select. Provides an interface for managing\n * - classes\n * - dom\n * - event handlers\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\n\nclass MDCSelectAdapter {\n /**\n * Adds class to root element.\n * @param {string} className\n */\n addClass(className) {}\n\n /**\n * Removes a class from the root element.\n * @param {string} className\n */\n removeClass(className) {}\n\n /**\n * Returns true if the root element contains the given class name.\n * @param {string} className\n * @return {boolean}\n */\n hasClass(className) {}\n\n /**\n * Activates the bottom line, showing a focused state.\n */\n activateBottomLine() {}\n\n /**\n * Deactivates the bottom line.\n */\n deactivateBottomLine() {}\n\n /**\n * Sets the value of the select.\n * @param {string} value\n */\n setValue(value) {}\n\n /**\n * Returns the selected value of the select element.\n * @return {string}\n */\n getValue() {}\n\n /**\n * Floats label determined based off of the shouldFloat argument.\n * @param {boolean} shouldFloat\n */\n floatLabel(shouldFloat) {}\n\n /**\n * Returns width of label in pixels, if the label exists.\n * @return {number}\n */\n getLabelWidth() {}\n\n /**\n * Returns true if outline element exists, false if it doesn't.\n * @return {boolean}\n */\n hasOutline() {}\n\n /**\n * Only implement if outline element exists.\n * @param {number} labelWidth\n */\n notchOutline(labelWidth) {}\n\n /**\n * Closes notch in outline element, if the outline exists.\n */\n closeOutline() {}\n\n /**\n * Opens the menu.\n */\n openMenu() {}\n\n /**\n * Closes the menu.\n */\n closeMenu() {}\n\n /**\n * Returns true if the menu is currently open.\n * @return {boolean}\n */\n isMenuOpen() {}\n\n /**\n * Sets the selected index of the select to the index provided.\n * @param {number} index\n */\n setSelectedIndex(index) {}\n\n /**\n * Sets the select to disabled.\n * @param {boolean} isDisabled\n */\n setDisabled(isDisabled) {}\n\n /**\n * Sets the line ripple transform origin center.\n * @param {number} normalizedX\n */\n setRippleCenter(normalizedX) {}\n\n /**\n * Emits a change event when an element is selected.\n * @param {string} value\n */\n notifyChange(value) {}\n\n /**\n * Checks if the select is currently valid.\n * @return {boolean} isValid\n */\n checkValidity() {}\n\n /**\n * Adds/Removes the invalid class.\n * @param {boolean} isValid\n */\n setValid(isValid) {}\n}\n\nexport {MDCSelectAdapter, FoundationMapType};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Select Icon.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the select icon into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCSelectIconAdapter {\n /**\n * Gets the value of an attribute on the icon element.\n * @param {string} attr\n * @return {string}\n */\n getAttr(attr) {}\n\n /**\n * Sets an attribute on the icon element.\n * @param {string} attr\n * @param {string} value\n */\n setAttr(attr, value) {}\n\n /**\n * Removes an attribute from the icon element.\n * @param {string} attr\n */\n removeAttr(attr) {}\n\n /**\n * Sets the text content of the icon element.\n * @param {string} content\n */\n setContent(content) {}\n\n /**\n * Registers an event listener on the icon element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n registerInteractionHandler(evtType, handler) {}\n\n /**\n * Deregisters an event listener on the icon element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n deregisterInteractionHandler(evtType, handler) {}\n\n /**\n * Emits a custom event \"MDCSelect:icon\" denoting a user has clicked the icon.\n */\n notifyIconAction() {}\n}\n\nexport default MDCSelectIconAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/icon/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Select Helper Text.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Select helper text into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCSelectHelperTextAdapter {\n /**\n * Adds a class to the helper text element.\n * @param {string} className\n */\n addClass(className) {}\n\n /**\n * Removes a class from the helper text element.\n * @param {string} className\n */\n removeClass(className) {}\n\n /**\n * Returns whether or not the helper text element contains the given class.\n * @param {string} className\n * @return {boolean}\n */\n hasClass(className) {}\n\n /**\n * Sets an attribute with a given value on the helper text element.\n * @param {string} attr\n * @param {string} value\n */\n setAttr(attr, value) {}\n\n /**\n * Removes an attribute from the helper text element.\n * @param {string} attr\n */\n removeAttr(attr) {}\n\n /**\n * Sets the text content for the helper text element.\n * @param {string} content\n */\n setContent(content) {}\n}\n\nexport default MDCSelectHelperTextAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/helper-text/adapter.js","/**\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/** @enum {string} */\nconst cssClasses = {\n DISABLED: 'mdc-select--disabled',\n ROOT: 'mdc-select',\n OUTLINED: 'mdc-select--outlined',\n FOCUSED: 'mdc-select--focused',\n SELECTED_ITEM_CLASS: 'mdc-list-item--selected',\n WITH_LEADING_ICON: 'mdc-select--with-leading-icon',\n INVALID: 'mdc-select--invalid',\n REQUIRED: 'mdc-select--required',\n};\n\n/** @enum {string} */\nconst strings = {\n ARIA_CONTROLS: 'aria-controls',\n CHANGE_EVENT: 'MDCSelect:change',\n SELECTED_ITEM_SELECTOR: `.${cssClasses.SELECTED_ITEM_CLASS}`,\n LEADING_ICON_SELECTOR: '.mdc-select__icon',\n SELECTED_TEXT_SELECTOR: '.mdc-select__selected-text',\n HIDDEN_INPUT_SELECTOR: 'input[type=\"hidden\"]',\n MENU_SELECTOR: '.mdc-select__menu',\n LINE_RIPPLE_SELECTOR: '.mdc-line-ripple',\n LABEL_SELECTOR: '.mdc-floating-label',\n NATIVE_CONTROL_SELECTOR: '.mdc-select__native-control',\n OUTLINE_SELECTOR: '.mdc-notched-outline',\n ENHANCED_VALUE_ATTR: 'data-value',\n ARIA_SELECTED_ATTR: 'aria-selected',\n};\n\n/** @enum {number} */\nconst numbers = {\n LABEL_SCALE: 0.75,\n};\n\nexport {cssClasses, strings, numbers};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/constants.js","/**\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\n/** @enum {string} */\nconst cssClasses = {\n ACTIVE: 'mdc-slider--active',\n DISABLED: 'mdc-slider--disabled',\n DISCRETE: 'mdc-slider--discrete',\n FOCUS: 'mdc-slider--focus',\n IN_TRANSIT: 'mdc-slider--in-transit',\n IS_DISCRETE: 'mdc-slider--discrete',\n HAS_TRACK_MARKER: 'mdc-slider--display-markers',\n};\n\n/** @enum {string} */\nconst strings = {\n TRACK_SELECTOR: '.mdc-slider__track',\n TRACK_MARKER_CONTAINER_SELECTOR: '.mdc-slider__track-marker-container',\n LAST_TRACK_MARKER_SELECTOR: '.mdc-slider__track-marker:last-child',\n THUMB_CONTAINER_SELECTOR: '.mdc-slider__thumb-container',\n PIN_VALUE_MARKER_SELECTOR: '.mdc-slider__pin-value-marker',\n ARIA_VALUEMIN: 'aria-valuemin',\n ARIA_VALUEMAX: 'aria-valuemax',\n ARIA_VALUENOW: 'aria-valuenow',\n ARIA_DISABLED: 'aria-disabled',\n STEP_DATA_ATTR: 'data-step',\n CHANGE_EVENT: 'MDCSlider:change',\n INPUT_EVENT: 'MDCSlider:input',\n};\n\n/** @enum {number} */\nconst numbers = {\n PAGE_FACTOR: 4,\n};\n\nexport {cssClasses, strings, numbers};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-slider/constants.js","/**\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\n/* eslint-disable no-unused-vars */\n\n/**\n * Adapter for MDC Slider.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Slider into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCSliderAdapter {\n /**\n * Returns true if className exists for the slider Element\n * @param {string} className\n * @return {boolean}\n */\n hasClass(className) {}\n\n /**\n * Adds a class to the slider Element\n * @param {string} className\n */\n addClass(className) {}\n\n /**\n * Removes a class from the slider Element\n * @param {string} className\n */\n removeClass(className) {}\n\n /**\n * Returns a string if attribute name exists on the slider Element,\n * otherwise returns null\n * @param {string} name\n * @return {?string}\n */\n getAttribute(name) {}\n\n /**\n * Sets attribute name on slider Element to value\n * @param {string} name\n * @param {string} value\n */\n setAttribute(name, value) {}\n\n /**\n * Removes attribute name from slider Element\n * @param {string} name\n */\n removeAttribute(name) {}\n\n /**\n * Returns the bounding client rect for the slider Element\n * @return {?ClientRect}\n */\n computeBoundingRect() {}\n\n /**\n * Returns the tab index of the slider Element\n * @return {number}\n */\n getTabIndex() {}\n\n /**\n * Registers an event handler on the root element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n registerInteractionHandler(type, handler) {}\n\n /**\n * Deregisters an event handler on the root element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n deregisterInteractionHandler(type, handler) {}\n\n /**\n * Registers an event handler on the thumb container element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n registerThumbContainerInteractionHandler(type, handler) {}\n\n /**\n * Deregisters an event handler on the thumb container element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n deregisterThumbContainerInteractionHandler(type, handler) {}\n\n /**\n * Registers an event handler on the body for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n registerBodyInteractionHandler(type, handler) {}\n\n /**\n * Deregisters an event handler on the body for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n deregisterBodyInteractionHandler(type, handler) {}\n\n /**\n * Registers an event handler for the window resize event\n * @param {function(!Event): undefined} handler\n */\n registerResizeHandler(handler) {}\n\n /**\n * Deregisters an event handler for the window resize event\n * @param {function(!Event): undefined} handler\n */\n deregisterResizeHandler(handler) {}\n\n /**\n * Emits a custom event MDCSlider:input from the root\n */\n notifyInput() {}\n\n /**\n * Emits a custom event MDCSlider:change from the root\n */\n notifyChange() {}\n\n /**\n * Sets a style property of the thumb container element to the passed value\n * @param {string} propertyName\n * @param {string} value\n */\n setThumbContainerStyleProperty(propertyName, value) {}\n\n /**\n * Sets a style property of the track element to the passed value\n * @param {string} propertyName\n * @param {string} value\n */\n setTrackStyleProperty(propertyName, value) {}\n\n /**\n * Sets the inner text of the pin marker to the passed value\n * @param {number} value\n */\n setMarkerValue(value) {}\n\n /**\n * Appends the passed number of track markers to the track mark container element\n * @param {number} numMarkers\n */\n appendTrackMarkers(numMarkers) {}\n\n /**\n * Removes all track markers fromt he track mark container element\n */\n removeTrackMarkers() {}\n\n /**\n * Sets a style property of the last track marker to the passed value\n * @param {string} propertyName\n * @param {string} value\n */\n setLastTrackMarkersStyleProperty(propertyName, value) {}\n\n /**\n * Returns true if the root element is RTL, otherwise false\n * @return {boolean}\n */\n isRTL() {}\n}\n\nexport default MDCSliderAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-slider/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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\n/* eslint-disable no-unused-vars */\nimport {MDCRipple, MDCRippleFoundation, RippleCapableSurface} from '@material/ripple/index';\nimport {MDCTabIndicator, MDCTabIndicatorFoundation} from '@material/tab-indicator/index';\nimport {MDCTabAdapter, MDCTabDimensions, MDCTabInteractionEventType} from './adapter';\n/* eslint-enable no-unused-vars */\n\nimport MDCTabFoundation from './foundation';\n\n/**\n * @extends {MDCComponent<!MDCTabFoundation>}\n * @final\n */\nclass MDCTab extends MDCComponent {\n /**\n * @param {...?} args\n */\n constructor(...args) {\n super(...args);\n\n /** @type {string} */\n this.id;\n /** @private {?MDCRipple} */\n this.ripple_;\n /** @private {?MDCTabIndicator} */\n this.tabIndicator_;\n /** @private {?Element} */\n this.content_;\n\n /** @private {?Function} */\n this.handleClick_;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCTab}\n */\n static attachTo(root) {\n return new MDCTab(root);\n }\n\n initialize(\n rippleFactory = (el, foundation) => new MDCRipple(el, foundation),\n tabIndicatorFactory = (el) => new MDCTabIndicator(el)) {\n this.id = this.root_.id;\n const rippleSurface = this.root_.querySelector(MDCTabFoundation.strings.RIPPLE_SELECTOR);\n const rippleAdapter = Object.assign(MDCRipple.createAdapter(/** @type {!RippleCapableSurface} */ (this)), {\n addClass: (className) => rippleSurface.classList.add(className),\n removeClass: (className) => rippleSurface.classList.remove(className),\n updateCssVariable: (varName, value) => 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\n this.content_ = this.root_.querySelector(MDCTabFoundation.strings.CONTENT_SELECTOR);\n }\n\n initialSyncWithDOM() {\n this.handleClick_ = this.foundation_.handleClick.bind(this.foundation_);\n this.listen('click', this.handleClick_);\n }\n\n destroy() {\n this.unlisten('click', /** @type {!Function} */ (this.handleClick_));\n this.ripple_.destroy();\n super.destroy();\n }\n\n /**\n * @return {!MDCTabFoundation}\n */\n getDefaultFoundation() {\n return new MDCTabFoundation(\n /** @type {!MDCTabAdapter} */ ({\n setAttr: (attr, value) => this.root_.setAttribute(attr, value),\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n hasClass: (className) => this.root_.classList.contains(className),\n activateIndicator: (previousIndicatorClientRect) => this.tabIndicator_.activate(previousIndicatorClientRect),\n deactivateIndicator: () => this.tabIndicator_.deactivate(),\n notifyInteracted: () => this.emit(\n MDCTabFoundation.strings.INTERACTED_EVENT, {tabId: this.id}, true /* bubble */),\n getOffsetLeft: () => this.root_.offsetLeft,\n getOffsetWidth: () => this.root_.offsetWidth,\n getContentOffsetLeft: () => this.content_.offsetLeft,\n getContentOffsetWidth: () => this.content_.offsetWidth,\n focus: () => this.root_.focus(),\n }));\n }\n\n /**\n * Getter for the active state of the tab\n * @return {boolean}\n */\n get active() {\n return this.foundation_.isActive();\n }\n\n set focusOnActivate(focusOnActivate) {\n this.foundation_.setFocusOnActivate(focusOnActivate);\n }\n\n /**\n * Activates the tab\n * @param {!ClientRect=} computeIndicatorClientRect\n */\n activate(computeIndicatorClientRect) {\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 * @return {!ClientRect}\n */\n computeIndicatorClientRect() {\n return this.tabIndicator_.computeContentClientRect();\n }\n\n /**\n * @return {!MDCTabDimensions}\n */\n computeDimensions() {\n return this.foundation_.computeDimensions();\n }\n\n /**\n * Focuses the tab\n */\n focus() {\n this.root_.focus();\n }\n}\n\nexport {MDCTab, MDCTabFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 MDCTabIndicatorFoundation from './foundation';\n\nimport MDCSlidingTabIndicatorFoundation from './sliding-foundation';\nimport MDCFadingTabIndicatorFoundation from './fading-foundation';\n\n/**\n * @extends {MDCComponent<!MDCTabIndicatorFoundation>}\n * @final\n */\nclass MDCTabIndicator extends MDCComponent {\n /**\n * @param {!Element} root\n * @return {!MDCTabIndicator}\n */\n static attachTo(root) {\n return new MDCTabIndicator(root);\n }\n\n /**\n * @param {...?} args\n */\n constructor(...args) {\n super(...args);\n /** @type {?Element} */\n this.content_;\n }\n\n initialize() {\n this.content_ = this.root_.querySelector(MDCTabIndicatorFoundation.strings.CONTENT_SELECTOR);\n }\n\n /**\n * @return {!ClientRect}\n */\n computeContentClientRect() {\n return this.foundation_.computeContentClientRect();\n }\n\n /**\n * @return {!MDCTabIndicatorFoundation}\n */\n getDefaultFoundation() {\n const adapter = /** @type {!MDCTabIndicatorAdapter} */ (Object.assign({\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\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 /**\n * @param {!ClientRect=} previousIndicatorClientRect\n */\n activate(previousIndicatorClientRect) {\n this.foundation_.activate(previousIndicatorClientRect);\n }\n\n deactivate() {\n this.foundation_.deactivate();\n }\n}\n\nexport {MDCTabIndicator, MDCTabIndicatorFoundation, MDCSlidingTabIndicatorFoundation, MDCFadingTabIndicatorFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Tab Indicator.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Tab Indicator into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCTabIndicatorAdapter {\n /**\n * Adds the given className to the root element.\n * @param {string} className The className to add\n */\n addClass(className) {}\n\n /**\n * Removes the given className from the root element.\n * @param {string} className The className to remove\n */\n removeClass(className) {}\n\n /**\n * Returns the client rect of the content element.\n * @return {!ClientRect}\n */\n computeContentClientRect() {}\n\n /**\n * Sets a style property of the content element to the passed value\n * @param {string} propName The style property name to set\n * @param {string} value The style property value\n */\n setContentStyleProperty(propName, value) {}\n}\n\nexport default MDCTabIndicatorAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 {MDCTabScrollerAdapter} from './adapter';\nimport MDCTabScrollerFoundation from './foundation';\nimport * as util from './util';\n\n/**\n * @extends {MDCComponent<!MDCTabScrollerFoundation>}\n * @final\n */\nclass MDCTabScroller extends MDCComponent {\n /**\n * @param {!Element} root\n * @return {!MDCTabScroller}\n */\n static attachTo(root) {\n return new MDCTabScroller(root);\n }\n\n constructor(...args) {\n super(...args);\n\n /** @private {?Element} */\n this.content_;\n\n /** @private {?Element} */\n this.area_;\n\n /** @private {?function(?Event): undefined} */\n this.handleInteraction_;\n\n /** @private {?function(!Event): undefined} */\n this.handleTransitionEnd_;\n }\n\n initialize() {\n this.area_ = this.root_.querySelector(MDCTabScrollerFoundation.strings.AREA_SELECTOR);\n this.content_ = this.root_.querySelector(MDCTabScrollerFoundation.strings.CONTENT_SELECTOR);\n }\n\n initialSyncWithDOM() {\n this.handleInteraction_ = () => this.foundation_.handleInteraction();\n this.handleTransitionEnd_ = (evt) => this.foundation_.handleTransitionEnd(evt);\n\n this.area_.addEventListener('wheel', this.handleInteraction_);\n this.area_.addEventListener('touchstart', this.handleInteraction_);\n this.area_.addEventListener('pointerdown', this.handleInteraction_);\n this.area_.addEventListener('mousedown', this.handleInteraction_);\n this.area_.addEventListener('keydown', this.handleInteraction_);\n this.content_.addEventListener('transitionend', this.handleTransitionEnd_);\n }\n\n destroy() {\n super.destroy();\n\n this.area_.removeEventListener('wheel', this.handleInteraction_);\n this.area_.removeEventListener('touchstart', this.handleInteraction_);\n this.area_.removeEventListener('pointerdown', this.handleInteraction_);\n this.area_.removeEventListener('mousedown', this.handleInteraction_);\n this.area_.removeEventListener('keydown', this.handleInteraction_);\n this.content_.removeEventListener('transitionend', this.handleTransitionEnd_);\n }\n\n /**\n * @return {!MDCTabScrollerFoundation}\n */\n getDefaultFoundation() {\n const adapter = /** @type {!MDCTabScrollerAdapter} */ ({\n eventTargetMatchesSelector: (evtTarget, selector) => {\n const MATCHES = util.getMatchesProperty(HTMLElement.prototype);\n return evtTarget[MATCHES](selector);\n },\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\n return new MDCTabScrollerFoundation(adapter);\n }\n\n /**\n * Returns the current visual scroll position\n * @return {number}\n */\n getScrollPosition() {\n return this.foundation_.getScrollPosition();\n }\n\n /**\n * Returns the width of the scroll content\n * @return {number}\n */\n getScrollContentWidth() {\n return this.content_.offsetWidth;\n }\n\n /**\n * Increments the scroll value by the given amount\n * @param {number} scrollXIncrement The pixel value by which to increment the scroll value\n */\n incrementScroll(scrollXIncrement) {\n this.foundation_.incrementScroll(scrollXIncrement);\n }\n\n /**\n * Scrolls to the given pixel position\n * @param {number} scrollX The pixel value to scroll to\n */\n scrollTo(scrollX) {\n this.foundation_.scrollTo(scrollX);\n }\n}\n\nexport {MDCTabScroller, MDCTabScrollerFoundation, util};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\nconst cssClasses = {\n ANIMATING: 'mdc-tab-scroller--animating',\n SCROLL_TEST: 'mdc-tab-scroller__test',\n SCROLL_AREA_SCROLL: 'mdc-tab-scroller__scroll-area--scroll',\n};\n\n/** @enum {string} */\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.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/* eslint-disable no-unused-vars */\nimport {MDCTabDimensions} from '@material/tab/adapter';\n/* eslint-enable no-unused-vars */\n\n/**\n * Adapter for MDC Tab Bar.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Tab Bar into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCTabBarAdapter {\n /**\n * Scrolls to the given position\n * @param {number} scrollX The position to scroll to\n */\n scrollTo(scrollX) {}\n\n /**\n * Increments the current scroll position by the given amount\n * @param {number} scrollXIncrement The amount to increment scroll\n */\n incrementScroll(scrollXIncrement) {}\n\n /**\n * Returns the current scroll position\n * @return {number}\n */\n getScrollPosition() {}\n\n /**\n * Returns the width of the scroll content\n * @return {number}\n */\n getScrollContentWidth() {}\n\n /**\n * Returns the root element's offsetWidth\n * @return {number}\n */\n getOffsetWidth() {}\n\n /**\n * Returns if the Tab Bar language direction is RTL\n * @return {boolean}\n */\n isRTL() {}\n\n /**\n * Sets the tab at the given index to be activated\n * @param {number} index The index of the tab to activate\n */\n setActiveTab(index) {}\n\n /**\n * Activates the tab at the given index with the given client rect\n * @param {number} index The index of the tab to activate\n * @param {!ClientRect} clientRect The client rect of the previously active Tab Indicator\n */\n activateTabAtIndex(index, clientRect) {}\n\n /**\n * Deactivates the tab at the given index\n * @param {number} index The index of the tab to deactivate\n */\n deactivateTabAtIndex(index) {}\n\n /**\n * Focuses the tab at the given index\n * @param {number} index The index of the tab to focus\n */\n focusTabAtIndex(index) {}\n\n /**\n * Returns the client rect of the tab's indicator\n * @param {number} index The index of the tab\n * @return {!ClientRect}\n */\n getTabIndicatorClientRectAtIndex(index) {}\n\n /**\n * Returns the tab dimensions of the tab at the given index\n * @param {number} index The index of the tab\n * @return {!MDCTabDimensions}\n */\n getTabDimensionsAtIndex(index) {}\n\n /**\n * Returns the length of the tab list\n * @return {number}\n */\n getTabListLength() {}\n\n /**\n * Returns the index of the previously active tab\n * @return {number}\n */\n getPreviousActiveTabIndex() {}\n\n /**\n * Returns the index of the focused tab\n * @return {number}\n */\n getFocusedTabIndex() {}\n\n /**\n * Returns the index of the given tab\n * @param {string} id The ID of the tab whose index to determine\n * @return {number}\n */\n getIndexOfTabById(id) {}\n\n /**\n * Emits the MDCTabBar:activated event\n * @param {number} index The index of the activated tab\n */\n notifyTabActivated(index) {}\n}\n\nexport default MDCTabBarAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-bar/adapter.js","/**\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/** @enum {string} */\nconst strings = {\n ARIA_CONTROLS: 'aria-controls',\n INPUT_SELECTOR: '.mdc-text-field__input',\n LABEL_SELECTOR: '.mdc-floating-label',\n ICON_SELECTOR: '.mdc-text-field__icon',\n OUTLINE_SELECTOR: '.mdc-notched-outline',\n LINE_RIPPLE_SELECTOR: '.mdc-line-ripple',\n};\n\n/** @enum {string} */\nconst cssClasses = {\n ROOT: 'mdc-text-field',\n DISABLED: 'mdc-text-field--disabled',\n DENSE: 'mdc-text-field--dense',\n FOCUSED: 'mdc-text-field--focused',\n INVALID: 'mdc-text-field--invalid',\n TEXTAREA: 'mdc-text-field--textarea',\n OUTLINED: 'mdc-text-field--outlined',\n WITH_LEADING_ICON: 'mdc-text-field--with-leading-icon',\n HELPER_LINE: 'mdc-text-field-helper-line',\n};\n\n/** @enum {number} */\nconst numbers = {\n LABEL_SCALE: 0.75,\n DENSE_LABEL_SCALE: 0.923,\n};\n\n// whitelist based off of https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation\n// under section: `Validation-related attributes`\nconst VALIDATION_ATTR_WHITELIST = [\n 'pattern', 'min', 'max', 'required', 'step', 'minlength', 'maxlength',\n];\n\n// Label should always float for these types as they show some UI even if value is empty.\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.js","/**\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\n/* eslint-disable no-unused-vars */\nimport MDCTextFieldHelperTextFoundation from './helper-text/foundation';\n/* eslint-disable no-unused-vars */\nimport MDCTextFieldCharacterCounterFoundation from './character-counter/foundation';\nimport MDCTextFieldIconFoundation from './icon/foundation';\n\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * @typedef {{\n * value: string,\n * disabled: boolean,\n * badInput: boolean,\n * validity: {\n * badInput: boolean,\n * valid: boolean,\n * },\n * }}\n */\nlet NativeInputType;\n\n/**\n * @typedef {{\n * helperText: (!MDCTextFieldHelperTextFoundation|undefined),\n * characterCounter: (!MDCTextFieldCharacterCounterFoundation|undefined),\n * leadingIcon: (!MDCTextFieldIconFoundation|undefined),\n * trailingIcon: (!MDCTextFieldIconFoundation|undefined),\n * }}\n */\nlet FoundationMapType;\n\n/**\n * Adapter for MDC Text Field.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the Text Field into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCTextFieldAdapter {\n /**\n * Adds a class to the root Element.\n * @param {string} className\n */\n addClass(className) {}\n\n /**\n * Removes a class from the root Element.\n * @param {string} className\n */\n removeClass(className) {}\n\n /**\n * Returns true if the root element contains the given class name.\n * @param {string} className\n * @return {boolean}\n */\n hasClass(className) {}\n\n /**\n * Registers an event handler on the root element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n registerTextFieldInteractionHandler(type, handler) {}\n\n /**\n * Deregisters an event handler on the root element for a given event.\n * @param {string} type\n * @param {function(!Event): undefined} handler\n */\n deregisterTextFieldInteractionHandler(type, handler) {}\n\n /**\n * Registers an event listener on the native input element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n registerInputInteractionHandler(evtType, handler) {}\n\n /**\n * Deregisters an event listener on the native input element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n deregisterInputInteractionHandler(evtType, handler) {}\n\n /**\n * Registers a validation attribute change listener on the input element.\n * Handler accepts list of attribute names.\n * @param {function(!Array<string>): undefined} handler\n * @return {!MutationObserver}\n */\n registerValidationAttributeChangeHandler(handler) {}\n\n /**\n * Disconnects a validation attribute observer on the input element.\n * @param {!MutationObserver} observer\n */\n deregisterValidationAttributeChangeHandler(observer) {}\n\n /**\n * Returns an object representing the native text input element, with a\n * similar API shape. The object returned should include the value, disabled\n * and badInput properties, as well as the checkValidity() function. We never\n * alter the value within our code, however we do update the disabled\n * property, so if you choose to duck-type the return value for this method\n * in your implementation it's important to keep this in mind. Also note that\n * this method can return null, which the foundation will handle gracefully.\n * @return {?Element|?NativeInputType}\n */\n getNativeInput() {}\n\n /**\n * Returns true if the textfield is focused.\n * We achieve this via `document.activeElement === this.root_`.\n * @return {boolean}\n */\n isFocused() {}\n\n /**\n * Activates the line ripple.\n */\n activateLineRipple() {}\n\n /**\n * Deactivates the line ripple.\n */\n deactivateLineRipple() {}\n\n /**\n * Sets the transform origin of the line ripple.\n * @param {number} normalizedX\n */\n setLineRippleTransformOrigin(normalizedX) {}\n\n /**\n * Only implement if label exists.\n * Shakes label if shouldShake is true.\n * @param {boolean} shouldShake\n */\n shakeLabel(shouldShake) {}\n\n /**\n * Only implement if label exists.\n * Floats the label above the input element if shouldFloat is true.\n * @param {boolean} shouldFloat\n */\n floatLabel(shouldFloat) {}\n\n /**\n * Returns true if label element exists, false if it doesn't.\n * @return {boolean}\n */\n hasLabel() {}\n\n /**\n * Only implement if label exists.\n * Returns width of label in pixels.\n * @return {number}\n */\n getLabelWidth() {}\n\n /**\n * Returns true if outline element exists, false if it doesn't.\n * @return {boolean}\n */\n hasOutline() {}\n\n /**\n * Only implement if outline element exists.\n * @param {number} labelWidth\n */\n notchOutline(labelWidth) {}\n\n /**\n * Only implement if outline element exists.\n * Closes notch in outline element.\n */\n closeOutline() {}\n}\n\nexport {MDCTextFieldAdapter, NativeInputType, FoundationMapType};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/adapter.js","/**\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Text Field Helper Text.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the TextField helper text into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCTextFieldHelperTextAdapter {\n /**\n * Adds a class to the helper text element.\n * @param {string} className\n */\n addClass(className) {}\n\n /**\n * Removes a class from the helper text element.\n * @param {string} className\n */\n removeClass(className) {}\n\n /**\n * Returns whether or not the helper text element contains the given class.\n * @param {string} className\n * @return {boolean}\n */\n hasClass(className) {}\n\n /**\n * Sets an attribute with a given value on the helper text element.\n * @param {string} attr\n * @param {string} value\n */\n setAttr(attr, value) {}\n\n /**\n * Removes an attribute from the helper text element.\n * @param {string} attr\n */\n removeAttr(attr) {}\n\n /**\n * Sets the text content for the helper text element.\n * @param {string} content\n */\n setContent(content) {}\n}\n\nexport default MDCTextFieldHelperTextAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/helper-text/adapter.js","/**\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Text Field Character Counter.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the TextField character counter into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCTextFieldCharacterCounterAdapter {\n /**\n * Sets the text content of character counter element.\n * @param {string} content\n */\n setContent(content) {}\n}\n\nexport default MDCTextFieldCharacterCounterAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/character-counter/adapter.js","/**\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Text Field Icon.\n *\n * Defines the shape of the adapter expected by the foundation. Implement this\n * adapter to integrate the text field icon into your framework. See\n * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md\n * for more information.\n *\n * @record\n */\nclass MDCTextFieldIconAdapter {\n /**\n * Gets the value of an attribute on the icon element.\n * @param {string} attr\n * @return {string}\n */\n getAttr(attr) {}\n\n /**\n * Sets an attribute on the icon element.\n * @param {string} attr\n * @param {string} value\n */\n setAttr(attr, value) {}\n\n /**\n * Removes an attribute from the icon element.\n * @param {string} attr\n */\n removeAttr(attr) {}\n\n /**\n * Sets the text content of the icon element.\n * @param {string} content\n */\n setContent(content) {}\n\n /**\n * Registers an event listener on the icon element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n registerInteractionHandler(evtType, handler) {}\n\n /**\n * Deregisters an event listener on the icon element for a given event.\n * @param {string} evtType\n * @param {function(!Event): undefined} handler\n */\n deregisterInteractionHandler(evtType, handler) {}\n\n /**\n * Emits a custom event \"MDCTextField:icon\" denoting a user has clicked the icon.\n */\n notifyIconAction() {}\n}\n\nexport default MDCTextFieldIconAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/icon/adapter.js","/**\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 iconToggle from '@material/icon-toggle/index';\nimport * as linearProgress from '@material/linear-progress/index';\nimport * as lineRipple from '@material/line-ripple/index';\nimport * as list from '@material/list/index';\nimport * as menu from '@material/menu/index';\nimport * as menuSurface from '@material/menu-surface/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 selectionControl from '@material/selection-control/index';\nimport * as slider from '@material/slider/index';\nimport * as snackbar from '@material/snackbar/index';\nimport * as switchControl from '@material/switch/index';\nimport * as tab from '@material/tab/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 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('MDCRipple', ripple.MDCRipple);\nautoInit.register('MDCGridList', gridList.MDCGridList);\nautoInit.register('MDCIconButtonToggle', iconButton.MDCIconButtonToggle);\nautoInit.register('MDCIconToggle', iconToggle.MDCIconToggle);\nautoInit.register('MDCLineRipple', lineRipple.MDCLineRipple);\nautoInit.register('MDCLinearProgress', linearProgress.MDCLinearProgress);\nautoInit.register('MDCList', list.MDCList);\nautoInit.register('MDCNotchedOutline', notchedOutline.MDCNotchedOutline);\nautoInit.register('MDCRadio', radio.MDCRadio);\nautoInit.register('MDCSnackbar', snackbar.MDCSnackbar);\nautoInit.register('MDCTabBar', tabBar.MDCTabBar);\nautoInit.register('MDCTextField', textField.MDCTextField);\nautoInit.register('MDCMenu', menu.MDCMenu);\nautoInit.register('MDCMenuSurface', menuSurface.MDCMenuSurface);\nautoInit.register('MDCSelect', select.MDCSelect);\nautoInit.register('MDCSlider', slider.MDCSlider);\nautoInit.register('MDCSwitch', switchControl.MDCSwitch);\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 iconToggle,\n lineRipple,\n linearProgress,\n list,\n menu,\n menuSurface,\n notchedOutline,\n radio,\n ripple,\n select,\n selectionControl,\n slider,\n switchControl,\n snackbar,\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.js","/**\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 registry = Object.create(null);\n\nconst CONSOLE_WARN = console.warn.bind(console);\n\nfunction _emit(evtType, evtData, shouldBubble = false) {\n let evt;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent(evtType, {\n detail: evtData,\n bubbles: shouldBubble,\n });\n } else {\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(evtType, shouldBubble, false, evtData);\n }\n\n document.dispatchEvent(evt);\n}\n\n/**\n * Auto-initializes all mdc components on a page.\n */\nexport default function mdcAutoInit(root = document, warn = CONSOLE_WARN) {\n const components = [];\n const nodes = root.querySelectorAll('[data-mdc-auto-init]');\n for (let i = 0, node; (node = nodes[i]); i++) {\n const ctorName = node.dataset.mdcAutoInit;\n if (!ctorName) {\n throw new Error('(mdc-auto-init) Constructor name must be given.');\n }\n\n const Ctor = registry[ctorName];\n if (typeof Ctor !== 'function') {\n throw new Error(\n `(mdc-auto-init) Could not find constructor in registry for ${ctorName}`);\n }\n\n if (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 const component = Ctor.attachTo(node);\n Object.defineProperty(node, ctorName, {\n value: component,\n writable: false,\n enumerable: false,\n configurable: true,\n });\n components.push(component);\n }\n\n _emit('MDCAutoInit:End', {});\n return components;\n}\n\nmdcAutoInit.register = function(componentName, Ctor, warn = CONSOLE_WARN) {\n if (typeof Ctor !== 'function') {\n throw new Error(`(mdc-auto-init) Invalid Ctor value ${Ctor}. Expected function`);\n }\n if (registry[componentName]) {\n warn(\n `(mdc-auto-init) Overriding registration for ${componentName} with ${Ctor}. ` +\n `Was: ${registry[componentName]}`);\n }\n registry[componentName] = Ctor;\n};\n\nmdcAutoInit.deregister = function(componentName) {\n delete registry[componentName];\n};\n\nmdcAutoInit.deregisterAll = function() {\n Object.keys(registry).forEach(this.deregister, this);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-auto-init/index.js","/**\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 MDCComponent from './component';\n\nexport {MDCFoundation, MDCComponent};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-base/index.js","/**\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/index';\nimport MDCComponent from '@material/base/component';\n/* eslint-disable no-unused-vars */\nimport {MDCSelectionControlState, MDCSelectionControl} from '@material/selection-control/index';\n/* eslint-enable no-unused-vars */\nimport MDCCheckboxFoundation from './foundation';\nimport {MDCRipple, MDCRippleFoundation} from '@material/ripple/index';\nimport {getMatchesProperty} from '@material/ripple/util';\n\n/** @const {!Array<string>} */\nconst CB_PROTO_PROPS = ['checked', 'indeterminate'];\n\n/**\n * @extends MDCComponent<!MDCCheckboxFoundation>\n * @implements {MDCSelectionControl}\n */\nclass MDCCheckbox extends MDCComponent {\n static attachTo(root) {\n return new MDCCheckbox(root);\n }\n\n /**\n * Returns the state of the native control element, or null if the native control element is not present.\n * @return {!MDCSelectionControlState}\n * @private\n */\n get nativeCb_() {\n const {NATIVE_CONTROL_SELECTOR} = MDCCheckboxFoundation.strings;\n const cbEl = /** @type {!MDCSelectionControlState} */ (\n this.root_.querySelector(NATIVE_CONTROL_SELECTOR));\n return cbEl;\n }\n\n constructor(...args) {\n super(...args);\n\n /** @private {!MDCRipple} */\n this.ripple_ = this.initRipple_();\n /** @private {!Function} */\n this.handleChange_;\n /** @private {!Function} */\n this.handleAnimationEnd_;\n }\n\n initialSyncWithDOM() {\n this.handleChange_ = () => this.foundation_.handleChange();\n this.handleAnimationEnd_= () => this.foundation_.handleAnimationEnd();\n this.nativeCb_.addEventListener('change', this.handleChange_);\n this.listen(getCorrectEventName(window, 'animationend'), this.handleAnimationEnd_);\n this.installPropertyChangeHooks_();\n }\n\n /**\n * @return {!MDCRipple}\n * @private\n */\n initRipple_() {\n const MATCHES = getMatchesProperty(HTMLElement.prototype);\n const adapter = Object.assign(MDCRipple.createAdapter(this), {\n isUnbounded: () => true,\n isSurfaceActive: () => this.nativeCb_[MATCHES](':active'),\n registerInteractionHandler: (type, handler) => this.nativeCb_.addEventListener(type, handler),\n deregisterInteractionHandler: (type, handler) => this.nativeCb_.removeEventListener(type, handler),\n });\n const foundation = new MDCRippleFoundation(adapter);\n return new MDCRipple(this.root_, foundation);\n }\n\n /** @private */\n installPropertyChangeHooks_() {\n const nativeCb = this.nativeCb_;\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 const nativeCbDesc = /** @type {!ObjectPropertyDescriptor} */ ({\n get: desc.get,\n set: (state) => {\n desc.set.call(nativeCb, state);\n this.foundation_.handleChange();\n },\n configurable: desc.configurable,\n enumerable: desc.enumerable,\n });\n Object.defineProperty(nativeCb, controlState, nativeCbDesc);\n }\n });\n }\n\n /** @private */\n uninstallPropertyChangeHooks_() {\n const nativeCb = this.nativeCb_;\n const cbProto = Object.getPrototypeOf(nativeCb);\n\n CB_PROTO_PROPS.forEach((controlState) => {\n const desc = /** @type {!ObjectPropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(cbProto, controlState));\n if (validDescriptor(desc)) {\n Object.defineProperty(nativeCb, controlState, desc);\n }\n });\n }\n\n /** @return {!MDCCheckboxFoundation} */\n getDefaultFoundation() {\n return new MDCCheckboxFoundation({\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n setNativeControlAttr: (attr, value) => this.nativeCb_.setAttribute(attr, value),\n removeNativeControlAttr: (attr) => this.nativeCb_.removeAttribute(attr),\n isIndeterminate: () => this.indeterminate,\n isChecked: () => this.checked,\n hasNativeControl: () => !!this.nativeCb_,\n setNativeControlDisabled: (disabled) => this.nativeCb_.disabled = disabled,\n forceLayout: () => this.root_.offsetWidth,\n isAttachedToDOM: () => Boolean(this.root_.parentNode),\n });\n }\n\n /** @return {!MDCRipple} */\n get ripple() {\n return this.ripple_;\n }\n\n /** @return {boolean} */\n get checked() {\n return this.nativeCb_.checked;\n }\n\n /** @param {boolean} checked */\n set checked(checked) {\n this.nativeCb_.checked = checked;\n }\n\n /** @return {boolean} */\n get indeterminate() {\n return this.nativeCb_.indeterminate;\n }\n\n /** @param {boolean} indeterminate */\n set indeterminate(indeterminate) {\n this.nativeCb_.indeterminate = indeterminate;\n }\n\n /** @return {boolean} */\n get disabled() {\n return this.nativeCb_.disabled;\n }\n\n /** @param {boolean} disabled */\n set disabled(disabled) {\n this.foundation_.setDisabled(disabled);\n }\n\n /** @return {?string} */\n get value() {\n return this.nativeCb_.value;\n }\n\n /** @param {?string} value */\n set value(value) {\n this.nativeCb_.value = value;\n }\n\n destroy() {\n this.ripple_.destroy();\n this.nativeCb_.removeEventListener('change', this.handleChange_);\n this.unlisten(getCorrectEventName(window, 'animationend'), this.handleAnimationEnd_);\n this.uninstallPropertyChangeHooks_();\n super.destroy();\n }\n}\n\n/**\n * @param {ObjectPropertyDescriptor|undefined} inputPropDesc\n * @return {boolean}\n */\nfunction validDescriptor(inputPropDesc) {\n return !!inputPropDesc && typeof inputPropDesc.set === 'function';\n}\n\nexport {MDCCheckboxFoundation, MDCCheckbox};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-checkbox/index.js","/**\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, strings, numbers} from './constants';\nimport {getNormalizedEventCoords} from './util';\n\n/**\n * @typedef {{\n * isActivated: (boolean|undefined),\n * hasDeactivationUXRun: (boolean|undefined),\n * wasActivatedByPointer: (boolean|undefined),\n * wasElementMadeActive: (boolean|undefined),\n * activationEvent: (!Event|undefined),\n * isProgrammatic: (boolean|undefined)\n * }}\n */\nlet ActivationStateType;\n\n/**\n * @typedef {{\n * activate: (string|undefined),\n * deactivate: (string|undefined),\n * focus: (string|undefined),\n * blur: (string|undefined)\n * }}\n */\nlet ListenerInfoType;\n\n/**\n * @typedef {{\n * activate: function(!Event),\n * deactivate: function(!Event=),\n * focus: function(),\n * blur: function()\n * }}\n */\nlet ListenersType;\n\n/**\n * @typedef {{\n * x: number,\n * y: number\n * }}\n */\nlet PointType;\n\n// Activation events registered on the root element of each instance for activation\nconst ACTIVATION_EVENT_TYPES = ['touchstart', 'pointerdown', 'mousedown', 'keydown'];\n\n// Deactivation events registered on documentElement when a pointer-related down event occurs\nconst POINTER_DEACTIVATION_EVENT_TYPES = ['touchend', 'pointerup', 'mouseup', 'contextmenu'];\n\n// Tracks activations that have occurred on the current frame, to avoid simultaneous nested activations\n/** @type {!Array<!EventTarget>} */\nlet activatedTargets = [];\n\n/**\n * @extends {MDCFoundation<!MDCRippleAdapter>}\n */\nclass MDCRippleFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get defaultAdapter() {\n return {\n browserSupportsCssVars: () => /* boolean - cached */ {},\n isUnbounded: () => /* boolean */ {},\n isSurfaceActive: () => /* boolean */ {},\n isSurfaceDisabled: () => /* boolean */ {},\n addClass: (/* className: string */) => {},\n removeClass: (/* className: string */) => {},\n containsEventTarget: (/* target: !EventTarget */) => {},\n registerInteractionHandler: (/* evtType: string, handler: EventListener */) => {},\n deregisterInteractionHandler: (/* evtType: string, handler: EventListener */) => {},\n registerDocumentInteractionHandler: (/* evtType: string, handler: EventListener */) => {},\n deregisterDocumentInteractionHandler: (/* evtType: string, handler: EventListener */) => {},\n registerResizeHandler: (/* handler: EventListener */) => {},\n deregisterResizeHandler: (/* handler: EventListener */) => {},\n updateCssVariable: (/* varName: string, value: string */) => {},\n computeBoundingRect: () => /* ClientRect */ {},\n getWindowPageOffset: () => /* {x: number, y: number} */ {},\n };\n }\n\n constructor(adapter) {\n super(Object.assign(MDCRippleFoundation.defaultAdapter, adapter));\n\n /** @private {number} */\n this.layoutFrame_ = 0;\n\n /** @private {!ClientRect} */\n this.frame_ = /** @type {!ClientRect} */ ({width: 0, height: 0});\n\n /** @private {!ActivationStateType} */\n this.activationState_ = this.defaultActivationState_();\n\n /** @private {number} */\n this.initialSize_ = 0;\n\n /** @private {number} */\n this.maxRadius_ = 0;\n\n /** @private {function(!Event)} */\n this.activateHandler_ = (e) => this.activate_(e);\n\n /** @private {function(!Event=)} */\n this.deactivateHandler_ = () => this.deactivate_();\n\n /** @private {function(!Event=)} */\n this.focusHandler_ = () => this.handleFocus();\n\n /** @private {function(!Event=)} */\n this.blurHandler_ = () => this.handleBlur();\n\n /** @private {!Function} */\n this.resizeHandler_ = () => this.layout();\n\n /** @private {{left: number, top:number}} */\n this.unboundedCoords_ = {\n left: 0,\n top: 0,\n };\n\n /** @private {number} */\n this.fgScale_ = 0;\n\n /** @private {number} */\n this.activationTimer_ = 0;\n\n /** @private {number} */\n this.fgDeactivationRemovalTimer_ = 0;\n\n /** @private {boolean} */\n this.activationAnimationHasEnded_ = false;\n\n /** @private {!Function} */\n this.activationTimerCallback_ = () => {\n this.activationAnimationHasEnded_ = true;\n this.runDeactivationUXLogicIfReady_();\n };\n\n /** @private {!Event|undefined} */\n this.previousActivationEvent_;\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 * @return {boolean}\n * @private\n */\n supportsPressRipple_() {\n return this.adapter_.browserSupportsCssVars();\n }\n\n /**\n * @return {!ActivationStateType}\n */\n defaultActivationState_() {\n return {\n isActivated: false,\n hasDeactivationUXRun: false,\n wasActivatedByPointer: false,\n wasElementMadeActive: false,\n activationEvent: undefined,\n isProgrammatic: false,\n };\n }\n\n /** @override */\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 /** @override */\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 {boolean} supportsPressRipple Passed from init to save a redundant function call\n * @private\n */\n registerRootHandlers_(supportsPressRipple) {\n if (supportsPressRipple) {\n ACTIVATION_EVENT_TYPES.forEach((type) => {\n this.adapter_.registerInteractionHandler(type, 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 /**\n * @param {!Event} e\n * @private\n */\n registerDeactivationHandlers_(e) {\n if (e.type === 'keydown') {\n this.adapter_.registerInteractionHandler('keyup', this.deactivateHandler_);\n } else {\n POINTER_DEACTIVATION_EVENT_TYPES.forEach((type) => {\n this.adapter_.registerDocumentInteractionHandler(type, this.deactivateHandler_);\n });\n }\n }\n\n /** @private */\n deregisterRootHandlers_() {\n ACTIVATION_EVENT_TYPES.forEach((type) => {\n this.adapter_.deregisterInteractionHandler(type, 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 */\n deregisterDeactivationHandlers_() {\n this.adapter_.deregisterInteractionHandler('keyup', this.deactivateHandler_);\n POINTER_DEACTIVATION_EVENT_TYPES.forEach((type) => {\n this.adapter_.deregisterDocumentInteractionHandler(type, this.deactivateHandler_);\n });\n }\n\n /** @private */\n removeCssVars_() {\n const {strings} = MDCRippleFoundation;\n Object.keys(strings).forEach((k) => {\n if (k.indexOf('VAR_') === 0) {\n this.adapter_.updateCssVariable(strings[k], null);\n }\n });\n }\n\n /**\n * @param {!Event=} e\n * @private\n */\n activate_(e) {\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 && e !== undefined && previousActivationEvent.type !== e.type;\n if (isSameInteraction) {\n return;\n }\n\n activationState.isActivated = true;\n activationState.isProgrammatic = e === undefined;\n activationState.activationEvent = e;\n activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : e !== undefined && (\n e.type === 'mousedown' || e.type === 'touchstart' || e.type === 'pointerdown'\n );\n\n const hasActivatedChild = e !== 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 (e !== undefined) {\n activatedTargets.push(/** @type {!EventTarget} */ (e.target));\n this.registerDeactivationHandlers_(e);\n }\n\n activationState.wasElementMadeActive = this.checkElementMadeActive_(e);\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 && e !== undefined && (e.key === ' ' || e.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_(e);\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 /**\n * @param {!Event=} e\n * @private\n */\n checkElementMadeActive_(e) {\n return (e !== undefined && e.type === 'keydown') ? this.adapter_.isSurfaceActive() : true;\n }\n\n /**\n * @param {!Event=} event Optional event containing position information.\n */\n activate(event) {\n this.activate_(event);\n }\n\n /** @private */\n 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 /**\n * @private\n * @return {{startPoint: PointType, endPoint: PointType}}\n */\n getFgTranslationCoordinates_() {\n const {activationEvent, wasActivatedByPointer} = this.activationState_;\n\n let startPoint;\n if (wasActivatedByPointer) {\n startPoint = getNormalizedEventCoords(\n /** @type {!Event} */ (activationEvent),\n this.adapter_.getWindowPageOffset(), 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 */\n 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 */\n rmBoundedActivationClasses_() {\n const {FG_ACTIVATION} = MDCRippleFoundation.cssClasses;\n this.adapter_.removeClass(FG_ACTIVATION);\n this.activationAnimationHasEnded_ = false;\n this.adapter_.computeBoundingRect();\n }\n\n 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 /**\n * @private\n */\n deactivate_() {\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 = /** @type {!ActivationStateType} */ (Object.assign({}, 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 deactivate() {\n this.deactivate_();\n }\n\n /**\n * @param {!ActivationStateType} options\n * @private\n */\n animateDeactivation_({wasActivatedByPointer, wasElementMadeActive}) {\n if (wasActivatedByPointer || wasElementMadeActive) {\n this.runDeactivationUXLogicIfReady_();\n }\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 /** @private */\n 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 */\n 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 /** @param {boolean} unbounded */\n setUnbounded(unbounded) {\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() {\n requestAnimationFrame(() =>\n this.adapter_.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED));\n }\n\n handleBlur() {\n requestAnimationFrame(() =>\n this.adapter_.removeClass(MDCRippleFoundation.cssClasses.BG_FOCUSED));\n }\n}\n\nexport default MDCRippleFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/foundation.js","/**\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 // 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 ROOT: 'mdc-ripple-upgraded',\n UNBOUNDED: 'mdc-ripple-upgraded--unbounded',\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};\n\nconst strings = {\n VAR_LEFT: '--mdc-ripple-left',\n VAR_TOP: '--mdc-ripple-top',\n VAR_FG_SIZE: '--mdc-ripple-fg-size',\n VAR_FG_SCALE: '--mdc-ripple-fg-scale',\n VAR_FG_TRANSLATE_START: '--mdc-ripple-fg-translate-start',\n VAR_FG_TRANSLATE_END: '--mdc-ripple-fg-translate-end',\n};\n\nconst numbers = {\n PADDING: 10,\n INITIAL_ORIGIN_SCALE: 0.6,\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 TAP_DELAY_MS: 300, // Delay between touch and simulated mouse events on touch devices\n};\n\nexport {cssClasses, strings, numbers};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/constants.js","/**\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';\n/* eslint-disable no-unused-vars */\nimport {MDCSelectionControlState} from '@material/selection-control/index';\nimport MDCCheckboxAdapter from './adapter';\n/* eslint-enable no-unused-vars */\nimport {cssClasses, strings, numbers} from './constants';\n\n/**\n * @extends {MDCFoundation<!MDCCheckboxAdapter>}\n */\nclass MDCCheckboxFoundation extends MDCFoundation {\n /** @return enum {cssClasses} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {strings} */\n static get strings() {\n return strings;\n }\n\n /** @return enum {numbers} */\n static get numbers() {\n return numbers;\n }\n\n /** @return {!MDCCheckboxAdapter} */\n static get defaultAdapter() {\n return /** @type {!MDCCheckboxAdapter} */ ({\n addClass: (/* className: string */) => {},\n removeClass: (/* className: string */) => {},\n setNativeControlAttr: (/* attr: string, value: string */) => {},\n removeNativeControlAttr: (/* attr: string */) => {},\n forceLayout: () => {},\n isAttachedToDOM: () => /* boolean */ {},\n isIndeterminate: () => /* boolean */ {},\n isChecked: () => /* boolean */ {},\n hasNativeControl: () => /* boolean */ {},\n setNativeControlDisabled: (/* disabled: boolean */) => {},\n });\n }\n\n constructor(adapter) {\n super(Object.assign(MDCCheckboxFoundation.defaultAdapter, adapter));\n\n /** @private {string} */\n this.currentCheckState_ = strings.TRANSITION_STATE_INIT;\n\n /** @private {string} */\n this.currentAnimationClass_ = '';\n\n /** @private {number} */\n this.animEndLatchTimer_ = 0;\n\n /** @private {boolean} */\n this.enableAnimationEndHandler_ = false;\n }\n\n /** @override */\n init() {\n this.currentCheckState_ = this.determineCheckState_();\n this.updateAriaChecked_();\n this.adapter_.addClass(cssClasses.UPGRADED);\n }\n\n /** @override */\n destroy() {\n clearTimeout(this.animEndLatchTimer_);\n }\n\n /** @param {boolean} disabled */\n setDisabled(disabled) {\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_) return;\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 */\n transitionCheckState_() {\n if (!this.adapter_.hasNativeControl()) {\n return;\n }\n const oldState = this.currentCheckState_;\n const newState = this.determineCheckState_();\n\n if (oldState === newState) {\n return;\n }\n\n this.updateAriaChecked_();\n\n // Check to ensure that there isn't a previously existing animation class, in case for example\n // the user interacted with the checkbox before the animation was finished.\n if (this.currentAnimationClass_.length > 0) {\n clearTimeout(this.animEndLatchTimer_);\n this.adapter_.forceLayout();\n this.adapter_.removeClass(this.currentAnimationClass_);\n }\n\n this.currentAnimationClass_ = this.getTransitionAnimationClass_(oldState, newState);\n this.currentCheckState_ = newState;\n\n // Check for parentNode so that animations are only run when the element is attached\n // to the DOM.\n if (this.adapter_.isAttachedToDOM() && this.currentAnimationClass_.length > 0) {\n this.adapter_.addClass(this.currentAnimationClass_);\n this.enableAnimationEndHandler_ = true;\n }\n }\n\n /**\n * @return {string}\n * @private\n */\n determineCheckState_() {\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 /**\n * @param {string} oldState\n * @param {string} newState\n * @return {string}\n */\n getTransitionAnimationClass_(oldState, newState) {\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 // fallthrough\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 // TRANSITION_STATE_INDETERMINATE\n default:\n return newState === TRANSITION_STATE_CHECKED ?\n ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;\n }\n }\n\n 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\nexport default MDCCheckboxFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-checkbox/foundation.js","/**\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/* eslint-disable no-unused-vars */\nimport {MDCSelectionControlState} from '@material/selection-control/index';\n\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Checkbox. Provides an interface for managing\n * - classes\n * - dom\n * - event handlers\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nclass MDCCheckboxAdapter {\n /** @param {string} className */\n addClass(className) {}\n\n /** @param {string} className */\n removeClass(className) {}\n\n /**\n * Sets an attribute with a given value on the input element.\n * @param {string} attr\n * @param {string} value\n */\n setNativeControlAttr(attr, value) {}\n\n /**\n * Removes an attribute from the input element.\n * @param {string} attr\n */\n removeNativeControlAttr(attr) {}\n\n forceLayout() {}\n\n /** @return {boolean} */\n isAttachedToDOM() {}\n\n /** @return {boolean} */\n isIndeterminate() {}\n\n /** @return {boolean} */\n isChecked() {}\n\n /** @return {boolean} */\n hasNativeControl() {}\n\n /** @param {boolean} disabled */\n setNativeControlDisabled(disabled) {}\n}\n\nexport default MDCCheckboxAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-checkbox/adapter.js","/**\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/** @const {string} */\nconst ROOT = 'mdc-checkbox';\n\n/** @enum {string} */\nconst cssClasses = {\n UPGRADED: 'mdc-checkbox--upgraded',\n CHECKED: 'mdc-checkbox--checked',\n INDETERMINATE: 'mdc-checkbox--indeterminate',\n DISABLED: 'mdc-checkbox--disabled',\n ANIM_UNCHECKED_CHECKED: 'mdc-checkbox--anim-unchecked-checked',\n ANIM_UNCHECKED_INDETERMINATE: 'mdc-checkbox--anim-unchecked-indeterminate',\n ANIM_CHECKED_UNCHECKED: 'mdc-checkbox--anim-checked-unchecked',\n ANIM_CHECKED_INDETERMINATE: 'mdc-checkbox--anim-checked-indeterminate',\n ANIM_INDETERMINATE_CHECKED: 'mdc-checkbox--anim-indeterminate-checked',\n ANIM_INDETERMINATE_UNCHECKED: 'mdc-checkbox--anim-indeterminate-unchecked',\n};\n\n/** @enum {string} */\nconst strings = {\n NATIVE_CONTROL_SELECTOR: `.${ROOT}__native-control`,\n TRANSITION_STATE_INIT: 'init',\n TRANSITION_STATE_CHECKED: 'checked',\n TRANSITION_STATE_UNCHECKED: 'unchecked',\n TRANSITION_STATE_INDETERMINATE: 'indeterminate',\n ARIA_CHECKED_ATTR: 'aria-checked',\n ARIA_CHECKED_INDETERMINATE_VALUE: 'mixed',\n};\n\n/** @enum {number} */\nconst numbers = {\n ANIM_END_LATCH_MS: 250,\n};\n\nexport {cssClasses, strings, numbers};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-checkbox/constants.js","/**\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 {MDCChipFoundation, MDCChip} from './chip/index';\nimport {MDCChipSetFoundation, MDCChipSet} from './chip-set/index';\n\nexport {MDCChipFoundation, MDCChip, MDCChipSetFoundation, MDCChipSet};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/index.js","/**\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';\n\nimport MDCChipSetAdapter from './adapter';\nimport MDCChipSetFoundation from './foundation';\nimport {MDCChip, MDCChipFoundation} from '../chip/index';\n\nlet idCounter = 0;\n\n/**\n * @extends {MDCComponent<!MDCChipSetFoundation>}\n * @final\n */\nclass MDCChipSet extends MDCComponent {\n /**\n * @param {...?} args\n */\n constructor(...args) {\n super(...args);\n\n /** @type {!Array<!MDCChip>} */\n this.chips;\n /** @private {(function(!Element): !MDCChip)} */\n this.chipFactory_;\n\n /** @private {?function(?Event): undefined} */\n this.handleChipInteraction_;\n /** @private {?function(?Event): undefined} */\n this.handleChipSelection_;\n /** @private {?function(?Event): undefined} */\n this.handleChipRemoval_;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCChipSet}\n */\n static attachTo(root) {\n return new MDCChipSet(root);\n }\n\n /**\n * @param {(function(!Element): !MDCChip)=} chipFactory A function which\n * creates a new MDCChip.\n */\n initialize(chipFactory = (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.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.root_.addEventListener(\n MDCChipFoundation.strings.INTERACTION_EVENT, this.handleChipInteraction_);\n this.root_.addEventListener(\n MDCChipFoundation.strings.SELECTION_EVENT, this.handleChipSelection_);\n this.root_.addEventListener(\n MDCChipFoundation.strings.REMOVAL_EVENT, this.handleChipRemoval_);\n }\n\n destroy() {\n this.chips.forEach((chip) => {\n chip.destroy();\n });\n\n this.root_.removeEventListener(\n MDCChipFoundation.strings.INTERACTION_EVENT, this.handleChipInteraction_);\n this.root_.removeEventListener(\n MDCChipFoundation.strings.SELECTION_EVENT, this.handleChipSelection_);\n this.root_.removeEventListener(\n MDCChipFoundation.strings.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 * @param {!Element} chipEl\n */\n addChip(chipEl) {\n chipEl.id = chipEl.id || `mdc-chip-${++idCounter}`;\n this.chips.push(this.chipFactory_(chipEl));\n }\n\n /**\n * Returns an array of the IDs of all selected chips.\n * @return {!Array<string>}\n */\n get selectedChipIds() {\n return this.foundation_.getSelectedChipIds();\n }\n\n /**\n * @return {!MDCChipSetFoundation}\n */\n getDefaultFoundation() {\n return new MDCChipSetFoundation(/** @type {!MDCChipSetAdapter} */ (Object.assign({\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 }\n\n /**\n * Instantiates chip components on all of the chip set's child chip elements.\n * @param {(function(!Element): !MDCChip)} chipFactory\n * @return {!Array<!MDCChip>}\n */\n instantiateChips_(chipFactory) {\n const chipElements = [].slice.call(this.root_.querySelectorAll(MDCChipSetFoundation.strings.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 * @param {string} chipId\n * @return {number}\n */\n findChipIndex_(chipId) {\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\nexport {MDCChipSet, MDCChipSetFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip-set/index.js","/**\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';\n// eslint-disable-next-line no-unused-vars\nimport {MDCChipInteractionEventType, MDCChipSelectionEventType, MDCChipRemovalEventType} from '../chip/foundation';\nimport {strings, cssClasses} from './constants';\n\n/**\n * @extends {MDCFoundation<!MDCChipSetAdapter>}\n * @final\n */\nclass MDCChipSetFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /**\n * {@see MDCChipSetAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCChipSetAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCChipSetAdapter} */ ({\n hasClass: () => {},\n removeChip: () => {},\n setSelected: () => {},\n });\n }\n\n /**\n * @param {!MDCChipSetAdapter} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCChipSetFoundation.defaultAdapter, adapter));\n\n /**\n * The ids of the selected chips in the set. Only used for choice chip set or filter chip set.\n * @private {!Array<string>}\n */\n this.selectedChipIds_ = [];\n }\n\n /**\n * Returns an array of the IDs of all selected chips.\n * @return {!Array<string>}\n */\n getSelectedChipIds() {\n return this.selectedChipIds_;\n }\n\n /**\n * Toggles selection of the chip with the given id.\n * @private\n * @param {string} chipId\n */\n toggleSelect_(chipId) {\n if (this.selectedChipIds_.indexOf(chipId) >= 0) {\n this.deselect_(chipId);\n } else {\n this.select(chipId);\n }\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 * @param {string} chipId\n */\n select(chipId) {\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 * Deselects the chip with the given id.\n * @private\n * @param {string} chipId\n */\n deselect_(chipId) {\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 * Handles a chip interaction event\n * @param {string} chipId\n */\n handleChipInteraction(chipId) {\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 * @param {string} chipId\n * @param {boolean} selected\n */\n handleChipSelection(chipId, selected) {\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 * @param {string} chipId\n */\n handleChipRemoval(chipId) {\n this.deselect_(chipId);\n this.adapter_.removeChip(chipId);\n }\n}\n\nexport default MDCChipSetFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip-set/foundation.js","/**\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/** @enum {string} */\nconst strings = {\n CHIP_SELECTOR: '.mdc-chip',\n};\n\n/** @enum {string} */\nconst cssClasses = {\n CHOICE: 'mdc-chip-set--choice',\n FILTER: 'mdc-chip-set--filter',\n};\n\nexport {strings, cssClasses};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-chips/chip-set/constants.js","/**\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/index';\n\nimport MDCDialogFoundation from './foundation';\nimport * as util from './util';\nimport {closest, matches} from '@material/dom/ponyfill';\n\nimport createFocusTrap from 'focus-trap';\n\nconst strings = MDCDialogFoundation.strings;\n\nclass MDCDialog extends MDCComponent {\n constructor(...args) {\n super(...args);\n\n /**\n * @type {!Array<!MDCRipple>}\n * @private\n */\n this.buttonRipples_;\n\n /** @private {!Array<!Element>} */\n this.buttons_;\n\n /** @private {?Element} */\n this.defaultButton_;\n\n /** @private {!Element} */\n this.container_;\n\n /** @private {?Element} */\n this.content_;\n\n /** @private {?Element} */\n this.initialFocusEl_;\n\n /** @private {!Function} */\n this.focusTrapFactory_;\n\n /** @private {!FocusTrapInstance} */\n this.focusTrap_;\n\n /** @private {!Function} */\n this.handleInteraction_;\n\n /** @private {!Function} */\n this.handleDocumentKeydown_;\n\n /** @private {!Function} */\n this.handleOpening_;\n\n /** @private {!Function} */\n this.handleClosing_;\n\n /** @private {Function} */\n this.layout_;\n }\n\n static attachTo(root) {\n return new MDCDialog(root);\n }\n\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 initialize(focusTrapFactory = createFocusTrap, initialFocusEl = null) {\n this.container_ = /** @type {!Element} */ (this.root_.querySelector(strings.CONTAINER_SELECTOR));\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.buttonRipples_ = [];\n this.focusTrapFactory_ = focusTrapFactory;\n this.initialFocusEl_ = initialFocusEl;\n\n for (let i = 0, buttonEl; buttonEl = this.buttons_[i]; i++) {\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.layout_ = this.layout.bind(this);\n\n const LAYOUT_EVENTS = ['resize', 'orientationchange'];\n this.handleOpening_ = () => {\n LAYOUT_EVENTS.forEach((type) => window.addEventListener(type, this.layout_));\n document.addEventListener('keydown', this.handleDocumentKeydown_);\n };\n this.handleClosing_ = () => {\n LAYOUT_EVENTS.forEach((type) => window.removeEventListener(type, this.layout_));\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 /**\n * @param {string=} action\n */\n close(action = '') {\n this.foundation_.close(action);\n }\n\n getDefaultFoundation() {\n return new MDCDialogFoundation({\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 addBodyClass: (className) => document.body.classList.add(className),\n removeBodyClass: (className) => document.body.classList.remove(className),\n eventTargetMatches: (target, selector) => matches(target, selector),\n trapFocus: () => this.focusTrap_.activate(),\n releaseFocus: () => this.focusTrap_.deactivate(),\n isContentScrollable: () => !!this.content_ && util.isScrollable(/** @type {!Element} */ (this.content_)),\n areButtonsStacked: () => util.areTopsMisaligned(this.buttons_),\n getActionFromEvent: (event) => {\n const element = closest(event.target, `[${strings.ACTION_ATTRIBUTE}]`);\n return element && element.getAttribute(strings.ACTION_ATTRIBUTE);\n },\n clickDefaultButton: () => {\n if (this.defaultButton_) {\n this.defaultButton_.click();\n }\n },\n reverseButtons: () => {\n this.buttons_.reverse();\n this.buttons_.forEach((button) => button.parentElement.appendChild(button));\n },\n notifyOpening: () => this.emit(strings.OPENING_EVENT, {}),\n notifyOpened: () => this.emit(strings.OPENED_EVENT, {}),\n notifyClosing: (action) => this.emit(strings.CLOSING_EVENT, action ? {action} : {}),\n notifyClosed: (action) => this.emit(strings.CLOSED_EVENT, action ? {action} : {}),\n });\n }\n}\n\nexport {MDCDialog, MDCDialogFoundation, util};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dialog/index.js","/**\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\nclass MDCDialogFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get defaultAdapter() {\n return /** @type {!MDCDialogAdapter} */ ({\n addClass: (/* className: string */) => {},\n removeClass: (/* className: string */) => {},\n hasClass: (/* className: string */) => {},\n addBodyClass: (/* className: string */) => {},\n removeBodyClass: (/* className: string */) => {},\n eventTargetMatches: (/* target: !EventTarget, selector: string */) => {},\n trapFocus: () => {},\n releaseFocus: () => {},\n isContentScrollable: () => {},\n areButtonsStacked: () => {},\n getActionFromEvent: (/* event: !Event */) => {},\n clickDefaultButton: () => {},\n reverseButtons: () => {},\n notifyOpening: () => {},\n notifyOpened: () => {},\n notifyClosing: (/* action: ?string */) => {},\n notifyClosed: (/* action: ?string */) => {},\n });\n }\n\n /**\n * @param {!MDCDialogAdapter=} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCDialogFoundation.defaultAdapter, adapter));\n\n /** @private {boolean} */\n this.isOpen_ = false;\n\n /** @private {number} */\n this.animationFrame_ = 0;\n\n /** @private {number} */\n this.animationTimer_ = 0;\n\n /** @private {number} */\n this.layoutFrame_ = 0;\n\n /** @private {string} */\n this.escapeKeyAction_ = strings.CLOSE_ACTION;\n\n /** @private {string} */\n this.scrimClickAction_ = strings.CLOSE_ACTION;\n\n /** @private {boolean} */\n this.autoStackButtons_ = true;\n\n /** @private {boolean} */\n this.areButtonsStacked_ = false;\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 /**\n * @param {string=} action\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 /** @return {string} */\n getEscapeKeyAction() {\n return this.escapeKeyAction_;\n }\n\n /** @param {string} action */\n setEscapeKeyAction(action) {\n this.escapeKeyAction_ = action;\n }\n\n /** @return {string} */\n getScrimClickAction() {\n return this.scrimClickAction_;\n }\n\n /** @param {string} action */\n setScrimClickAction(action) {\n this.scrimClickAction_ = action;\n }\n\n /** @return {boolean} */\n getAutoStackButtons() {\n return this.autoStackButtons_;\n }\n\n /** @param {boolean} autoStack */\n setAutoStackButtons(autoStack) {\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 layoutInternal_() {\n if (this.autoStackButtons_) {\n this.detectStackedButtons_();\n }\n this.detectScrollableContent_();\n }\n\n /** @private */\n 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 */\n 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 * @param {!Event} evt\n * @private\n */\n handleInteraction(evt) {\n const isClick = evt.type === 'click';\n const isEnter = evt.key === 'Enter' || evt.keyCode === 13;\n\n // Check for scrim click first since it doesn't require querying ancestors\n if (isClick && this.adapter_.eventTargetMatches(evt.target, strings.SCRIM_SELECTOR) &&\n this.scrimClickAction_ !== '') {\n this.close(this.scrimClickAction_);\n } else if (isClick || evt.key === 'Space' || evt.keyCode === 32 || isEnter) {\n const action = this.adapter_.getActionFromEvent(evt);\n if (action) {\n this.close(action);\n } else if (isEnter && !this.adapter_.eventTargetMatches(evt.target, strings.SUPPRESS_DEFAULT_PRESS_SELECTOR)) {\n this.adapter_.clickDefaultButton();\n }\n }\n }\n\n /**\n * @param {!KeyboardEvent} evt\n * @private\n */\n handleDocumentKeydown(evt) {\n if ((evt.key === 'Escape' || evt.keyCode === 27) && this.escapeKeyAction_ !== '') {\n this.close(this.escapeKeyAction_);\n }\n }\n\n /** @private */\n 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 * @param {Function} callback\n * @private\n */\n runNextAnimationFrame_(callback) {\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\nexport default MDCDialogFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dialog/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Dialog. Provides an interface for managing:\n * - CSS classes\n * - DOM\n * - Event handlers\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nclass MDCDialogAdapter {\n /** @param {string} className */\n addClass(className) {}\n\n /** @param {string} className */\n removeClass(className) {}\n\n /**\n * @param {string} className\n * @return {boolean}\n */\n hasClass(className) {}\n\n /** @param {string} className */\n addBodyClass(className) {}\n\n /** @param {string} className */\n removeBodyClass(className) {}\n\n /**\n * @param {!EventTarget} target\n * @param {string} selector\n * @return {boolean}\n */\n eventTargetMatches(target, selector) {}\n\n trapFocus() {}\n releaseFocus() {}\n\n /** @return {boolean} */\n isContentScrollable() {}\n\n /** @return {boolean} */\n areButtonsStacked() {}\n\n /**\n * @param {!Event} event\n * @return {?string}\n */\n getActionFromEvent(event) {}\n\n clickDefaultButton() {}\n reverseButtons() {}\n\n notifyOpening() {}\n notifyOpened() {}\n\n /**\n * @param {string} action\n */\n notifyClosing(action) {}\n\n /**\n * @param {string} action\n */\n notifyClosed(action) {}\n}\n\nexport default MDCDialogAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dialog/adapter.js","/**\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 OPEN: 'mdc-dialog--open',\n OPENING: 'mdc-dialog--opening',\n CLOSING: 'mdc-dialog--closing',\n SCROLLABLE: 'mdc-dialog--scrollable',\n STACKED: 'mdc-dialog--stacked',\n SCROLL_LOCK: 'mdc-dialog-scroll-lock',\n};\n\nconst strings = {\n SCRIM_SELECTOR: '.mdc-dialog__scrim',\n CONTAINER_SELECTOR: '.mdc-dialog__container',\n SURFACE_SELECTOR: '.mdc-dialog__surface',\n CONTENT_SELECTOR: '.mdc-dialog__content',\n BUTTON_SELECTOR: '.mdc-dialog__button',\n DEFAULT_BUTTON_SELECTOR: '.mdc-dialog__button--default',\n SUPPRESS_DEFAULT_PRESS_SELECTOR: [\n 'textarea',\n '.mdc-menu .mdc-list-item',\n ].join(', '),\n\n OPENING_EVENT: 'MDCDialog:opening',\n OPENED_EVENT: 'MDCDialog:opened',\n CLOSING_EVENT: 'MDCDialog:closing',\n CLOSED_EVENT: 'MDCDialog:closed',\n\n ACTION_ATTRIBUTE: 'data-mdc-dialog-action',\n\n CLOSE_ACTION: 'close',\n DESTROY_ACTION: 'destroy',\n};\n\nconst numbers = {\n DIALOG_ANIMATION_OPEN_TIME_MS: 150,\n DIALOG_ANIMATION_CLOSE_TIME_MS: 75,\n};\n\nexport {cssClasses, strings, numbers};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dialog/constants.js","/**\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 createFocusTrap from 'focus-trap';\n\n/**\n * @param {!Element} surfaceEl\n * @param {?Element=} initialFocusEl\n * @param {function(!Element, !FocusTrapCreateOptions): !FocusTrapInstance} focusTrapFactory\n * @return {!FocusTrapInstance}\n */\nfunction createFocusTrapInstance(surfaceEl, focusTrapFactory = createFocusTrap, initialFocusEl = null) {\n return focusTrapFactory(surfaceEl, {\n initialFocus: initialFocusEl,\n escapeDeactivates: false, // Dialog foundation handles escape key\n clickOutsideDeactivates: true, // Allow handling of scrim clicks\n });\n}\n\n/**\n * @param {!Element} el\n * @return {boolean}\n */\nfunction isScrollable(el) {\n return el.scrollHeight > el.offsetHeight;\n}\n\n/**\n * @param {!Array<!Element>|!NodeList} els\n * @return {boolean}\n */\nfunction areTopsMisaligned(els) {\n const tops = new Set();\n [].forEach.call(els, (el) => tops.add(el.offsetTop));\n return tops.size > 1;\n}\n\nexport {createFocusTrapInstance, isScrollable, areTopsMisaligned};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dialog/util.js","var candidateSelectors = [\n 'input',\n 'select',\n 'textarea',\n 'a[href]',\n 'button',\n '[tabindex]',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n];\nvar candidateSelector = candidateSelectors.join(',');\n\nvar matches = typeof Element === 'undefined'\n ? function () {}\n : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nfunction tabbable(el, options) {\n options = options || {};\n\n var elementDocument = el.ownerDocument || el;\n var regularTabbables = [];\n var orderedTabbables = [];\n\n var untouchabilityChecker = new UntouchabilityChecker(elementDocument);\n var candidates = el.querySelectorAll(candidateSelector);\n\n if (options.includeContainer) {\n if (matches.call(el, candidateSelector)) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var i, candidate, candidateTabindex;\n for (i = 0; i < candidates.length; i++) {\n candidate = candidates[i];\n\n if (!isNodeMatchingSelectorTabbable(candidate, untouchabilityChecker)) continue;\n\n candidateTabindex = getTabindex(candidate);\n if (candidateTabindex === 0) {\n regularTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n node: candidate,\n });\n }\n }\n\n var tabbableNodes = orderedTabbables\n .sort(sortOrderedTabbables)\n .map(function(a) { return a.node })\n .concat(regularTabbables);\n\n return tabbableNodes;\n}\n\ntabbable.isTabbable = isTabbable;\ntabbable.isFocusable = isFocusable;\n\nfunction isNodeMatchingSelectorTabbable(node, untouchabilityChecker) {\n if (\n !isNodeMatchingSelectorFocusable(node, untouchabilityChecker)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);\n}\n\nfunction isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {\n untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);\n if (\n node.disabled\n || isHiddenInput(node)\n || untouchabilityChecker.isUntouchable(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);\n}\n\nfunction getTabindex(node) {\n var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n if (!isNaN(tabindexAttr)) return tabindexAttr;\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if (isContentEditable(node)) return 0;\n return node.tabIndex;\n}\n\nfunction sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n}\n\n// Array.prototype.find not available in IE.\nfunction find(list, predicate) {\n for (var i = 0, length = list.length; i < length; i++) {\n if (predicate(list[i])) return list[i];\n }\n}\n\nfunction isContentEditable(node) {\n return node.contentEditable === 'true';\n}\n\nfunction isInput(node) {\n return node.tagName === 'INPUT';\n}\n\nfunction isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n}\n\nfunction isRadio(node) {\n return isInput(node) && node.type === 'radio';\n}\n\nfunction isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n}\n\nfunction getCheckedRadio(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked) {\n return nodes[i];\n }\n }\n}\n\nfunction isTabbableRadio(node) {\n if (!node.name) return true;\n // This won't account for the edge case where you have radio groups with the same\n // in separate forms on the same page.\n var radioSet = node.ownerDocument.querySelectorAll('input[type=\"radio\"][name=\"' + node.name + '\"]');\n var checked = getCheckedRadio(radioSet);\n return !checked || checked === node;\n}\n\n// An element is \"untouchable\" if *it or one of its ancestors* has\n// `visibility: hidden` or `display: none`.\nfunction UntouchabilityChecker(elementDocument) {\n this.doc = elementDocument;\n // Node cache must be refreshed on every check, in case\n // the content of the element has changed. The cache contains tuples\n // mapping nodes to their boolean result.\n this.cache = [];\n}\n\n// getComputedStyle accurately reflects `visibility: hidden` of ancestors\n// but not `display: none`, so we need to recursively check parents.\nUntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {\n if (node.nodeType !== Node.ELEMENT_NODE) return false;\n\n // Search for a cached result.\n var cached = find(this.cache, function(item) {\n return item === node;\n });\n if (cached) return cached[1];\n\n nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);\n\n var result = false;\n\n if (nodeComputedStyle.display === 'none') {\n result = true;\n } else if (node.parentNode) {\n result = this.hasDisplayNone(node.parentNode);\n }\n\n this.cache.push([node, result]);\n\n return result;\n}\n\nUntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {\n if (node === this.doc.documentElement) return false;\n var computedStyle = this.doc.defaultView.getComputedStyle(node);\n if (this.hasDisplayNone(node, computedStyle)) return true;\n return computedStyle.visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./packages/mdc-dialog/node_modules/tabbable/index.js\n// module id = 83\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 = 84\n// module chunks = 0","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport * as ponyfill from './ponyfill';\n\nexport {ponyfill};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dom/index.js","/**\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 MDCComponent from '@material/base/component';\nimport MDCDismissibleDrawerFoundation from './dismissible/foundation';\nimport MDCModalDrawerFoundation from './modal/foundation';\nimport MDCDrawerAdapter from './adapter';\nimport {MDCList} from '@material/list/index';\nimport MDCListFoundation from '@material/list/foundation';\nimport {strings} from './constants';\nimport * as util from './util';\nimport createFocusTrap from 'focus-trap';\n\n/**\n * @extends {MDCComponent<!MDCDismissibleDrawerFoundation>}\n * @final\n */\nclass MDCDrawer extends MDCComponent {\n /**\n * @param {...?} args\n */\n constructor(...args) {\n super(...args);\n\n /** @private {!Element} */\n this.previousFocus_;\n\n /** @private {!Function} */\n this.handleKeydown_;\n\n /** @private {!Function} */\n this.handleTransitionEnd_;\n\n /** @private {!Function} */\n this.focusTrapFactory_;\n\n /** @private {!FocusTrapInstance} */\n this.focusTrap_;\n\n /** @private {?Element} */\n this.scrim_;\n\n /** @private {?Function} */\n this.handleScrimClick_;\n\n /** @private {?MDCList} */\n this.list_;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCDrawer}\n */\n static attachTo(root) {\n return new MDCDrawer(root);\n }\n\n /**\n * Returns true if drawer is in the open position.\n * @return {boolean}\n */\n get open() {\n return this.foundation_.isOpen();\n }\n\n /**\n * Toggles the drawer open and closed.\n * @param {boolean} isOpen\n */\n set open(isOpen) {\n if (isOpen) {\n this.foundation_.open();\n } else {\n this.foundation_.close();\n }\n }\n\n initialize(\n focusTrapFactory = createFocusTrap,\n listFactory = (el) => new MDCList(el)) {\n const listEl = /** @type {!Element} */ (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} = MDCDismissibleDrawerFoundation.cssClasses;\n\n if (this.root_.classList.contains(MODAL)) {\n const {SCRIM_SELECTOR} = MDCDismissibleDrawerFoundation.strings;\n this.scrim_ = /** @type {!Element} */ (this.root_.parentNode.querySelector(SCRIM_SELECTOR));\n this.handleScrimClick_ = () => /** @type {!MDCModalDrawerFoundation} */ (this.foundation_).handleScrimClick();\n this.scrim_.addEventListener('click', this.handleScrimClick_);\n this.focusTrap_ = util.createFocusTrapInstance(this.root_, this.focusTrapFactory_);\n }\n\n this.handleKeydown_ = (evt) => this.foundation_.handleKeydown(evt);\n this.handleTransitionEnd_ = (evt) => this.foundation_.handleTransitionEnd(evt);\n\n this.root_.addEventListener('keydown', this.handleKeydown_);\n this.root_.addEventListener('transitionend', this.handleTransitionEnd_);\n }\n\n destroy() {\n this.root_.removeEventListener('keydown', this.handleKeydown_);\n this.root_.removeEventListener('transitionend', this.handleTransitionEnd_);\n\n if (this.list_) {\n this.list_.destroy();\n }\n\n const {MODAL} = MDCDismissibleDrawerFoundation.cssClasses;\n if (this.root_.classList.contains(MODAL)) {\n this.scrim_.removeEventListener('click', /** @type {!Function} */ (this.handleScrimClick_));\n // Ensure drawer is closed to hide scrim and release focus\n this.open = false;\n }\n }\n\n getDefaultFoundation() {\n /** @type {!MDCDrawerAdapter} */\n const adapter = /** @type {!MDCDrawerAdapter} */ (Object.assign({\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: () => {\n this.previousFocus_ = document.activeElement;\n },\n restoreFocus: () => {\n const previousFocus = this.previousFocus_ && this.previousFocus_.focus;\n if (this.root_.contains(document.activeElement) && previousFocus) {\n this.previousFocus_.focus();\n }\n },\n focusActiveNavigationItem: () => {\n const activeNavItemEl = this.root_.querySelector(`.${MDCListFoundation.cssClasses.LIST_ITEM_ACTIVATED_CLASS}`);\n if (activeNavItemEl) {\n activeNavItemEl.focus();\n }\n },\n notifyClose: () => this.emit(strings.CLOSE_EVENT, {}, true /* shouldBubble */),\n notifyOpen: () => this.emit(strings.OPEN_EVENT, {}, true /* shouldBubble */),\n trapFocus: () => this.focusTrap_.activate(),\n releaseFocus: () => this.focusTrap_.deactivate(),\n }));\n\n const {DISMISSIBLE, MODAL} = MDCDismissibleDrawerFoundation.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\nexport {MDCDrawer, MDCDismissibleDrawerFoundation, MDCModalDrawerFoundation, util};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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/**\n * @extends {MDCDismissibleDrawerFoundation}\n */\nclass MDCModalDrawerFoundation extends MDCDismissibleDrawerFoundation {\n /**\n * Called when drawer finishes open animation.\n * @override\n */\n opened() {\n this.adapter_.trapFocus();\n }\n\n /**\n * Called when drawer finishes close animation.\n * @override\n */\n closed() {\n this.adapter_.releaseFocus();\n }\n\n /**\n * Handles click event on scrim.\n */\n handleScrimClick() {\n this.close();\n }\n}\n\nexport default MDCModalDrawerFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/modal/foundation.js","/**\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 createFocusTrap from 'focus-trap';\n\n/**\n * @param {!Element} surfaceEl\n * @param {!Function} focusTrapFactory\n * @return {!FocusTrapInstance}\n */\nfunction createFocusTrapInstance(surfaceEl, focusTrapFactory = createFocusTrap) {\n return focusTrapFactory(surfaceEl, {\n clickOutsideDeactivates: true,\n initialFocus: false, // Navigation drawer handles focusing on active nav item.\n escapeDeactivates: false, // Navigation drawer handles ESC.\n returnFocusOnDeactivate: false, // Navigation drawer handles restore focus.\n });\n}\n\nexport {createFocusTrapInstance};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-drawer/util.js","var candidateSelectors = [\n 'input',\n 'select',\n 'textarea',\n 'a[href]',\n 'button',\n '[tabindex]',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n];\nvar candidateSelector = candidateSelectors.join(',');\n\nvar matches = typeof Element === 'undefined'\n ? function () {}\n : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nfunction tabbable(el, options) {\n options = options || {};\n\n var elementDocument = el.ownerDocument || el;\n var regularTabbables = [];\n var orderedTabbables = [];\n\n var untouchabilityChecker = new UntouchabilityChecker(elementDocument);\n var candidates = el.querySelectorAll(candidateSelector);\n\n if (options.includeContainer) {\n if (matches.call(el, candidateSelector)) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var i, candidate, candidateTabindex;\n for (i = 0; i < candidates.length; i++) {\n candidate = candidates[i];\n\n if (!isNodeMatchingSelectorTabbable(candidate, untouchabilityChecker)) continue;\n\n candidateTabindex = getTabindex(candidate);\n if (candidateTabindex === 0) {\n regularTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n node: candidate,\n });\n }\n }\n\n var tabbableNodes = orderedTabbables\n .sort(sortOrderedTabbables)\n .map(function(a) { return a.node })\n .concat(regularTabbables);\n\n return tabbableNodes;\n}\n\ntabbable.isTabbable = isTabbable;\ntabbable.isFocusable = isFocusable;\n\nfunction isNodeMatchingSelectorTabbable(node, untouchabilityChecker) {\n if (\n !isNodeMatchingSelectorFocusable(node, untouchabilityChecker)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);\n}\n\nfunction isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {\n untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);\n if (\n node.disabled\n || isHiddenInput(node)\n || untouchabilityChecker.isUntouchable(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);\n}\n\nfunction getTabindex(node) {\n var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n if (!isNaN(tabindexAttr)) return tabindexAttr;\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if (isContentEditable(node)) return 0;\n return node.tabIndex;\n}\n\nfunction sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n}\n\n// Array.prototype.find not available in IE.\nfunction find(list, predicate) {\n for (var i = 0, length = list.length; i < length; i++) {\n if (predicate(list[i])) return list[i];\n }\n}\n\nfunction isContentEditable(node) {\n return node.contentEditable === 'true';\n}\n\nfunction isInput(node) {\n return node.tagName === 'INPUT';\n}\n\nfunction isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n}\n\nfunction isRadio(node) {\n return isInput(node) && node.type === 'radio';\n}\n\nfunction isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n}\n\nfunction getCheckedRadio(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked) {\n return nodes[i];\n }\n }\n}\n\nfunction isTabbableRadio(node) {\n if (!node.name) return true;\n // This won't account for the edge case where you have radio groups with the same\n // in separate forms on the same page.\n var radioSet = node.ownerDocument.querySelectorAll('input[type=\"radio\"][name=\"' + node.name + '\"]');\n var checked = getCheckedRadio(radioSet);\n return !checked || checked === node;\n}\n\n// An element is \"untouchable\" if *it or one of its ancestors* has\n// `visibility: hidden` or `display: none`.\nfunction UntouchabilityChecker(elementDocument) {\n this.doc = elementDocument;\n // Node cache must be refreshed on every check, in case\n // the content of the element has changed. The cache contains tuples\n // mapping nodes to their boolean result.\n this.cache = [];\n}\n\n// getComputedStyle accurately reflects `visibility: hidden` of ancestors\n// but not `display: none`, so we need to recursively check parents.\nUntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {\n if (node.nodeType !== Node.ELEMENT_NODE) return false;\n\n // Search for a cached result.\n var cached = find(this.cache, function(item) {\n return item === node;\n });\n if (cached) return cached[1];\n\n nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);\n\n var result = false;\n\n if (nodeComputedStyle.display === 'none') {\n result = true;\n } else if (node.parentNode) {\n result = this.hasDisplayNone(node.parentNode);\n }\n\n this.cache.push([node, result]);\n\n return result;\n}\n\nUntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {\n if (node === this.doc.documentElement) return false;\n var computedStyle = this.doc.defaultView.getComputedStyle(node);\n if (this.hasDisplayNone(node, computedStyle)) return true;\n return computedStyle.visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./packages/mdc-drawer/node_modules/tabbable/index.js\n// module id = 89\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 = 90\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 MDCFoundation from '@material/base/foundation';\nimport MDCFloatingLabelAdapter from './adapter';\nimport {cssClasses} from './constants';\n\n/**\n * @extends {MDCFoundation<!MDCFloatingLabelAdapter>}\n * @final\n */\nclass MDCFloatingLabelFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /**\n * {@see MDCFloatingLabelAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCFloatingLabelAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCFloatingLabelAdapter} */ ({\n addClass: () => {},\n removeClass: () => {},\n getWidth: () => {},\n registerInteractionHandler: () => {},\n deregisterInteractionHandler: () => {},\n });\n }\n\n /**\n * @param {!MDCFloatingLabelAdapter} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCFloatingLabelFoundation.defaultAdapter, adapter));\n\n /** @private {function(!Event): undefined} */\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 * @return {number}\n */\n getWidth() {\n return this.adapter_.getWidth();\n }\n\n /**\n * Styles the label to produce the label shake for errors.\n * @param {boolean} shouldShake adds shake class if true,\n * otherwise removes shake class.\n */\n shake(shouldShake) {\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 {boolean} shouldFloat adds float class if true, otherwise remove\n * float and shake class to dock label.\n */\n float(shouldFloat) {\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 /**\n * Handles an interaction event on the root element.\n */\n handleShakeAnimationEnd_() {\n const {LABEL_SHAKE} = MDCFloatingLabelFoundation.cssClasses;\n this.adapter_.removeClass(LABEL_SHAKE);\n }\n}\n\nexport default MDCFloatingLabelFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-floating-label/foundation.js","/**\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/** @enum {string} */\nconst cssClasses = {\n LABEL_FLOAT_ABOVE: 'mdc-floating-label--float-above',\n LABEL_SHAKE: 'mdc-floating-label--shake',\n ROOT: 'mdc-floating-label',\n};\n\nexport {cssClasses};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-floating-label/constants.js","/**\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 MDCFormFieldFoundation from './foundation';\n/* eslint-disable no-unused-vars */\nimport {MDCSelectionControl} from '@material/selection-control/index';\n/* eslint-enable no-unused-vars */\n\n/**\n * @extends MDCComponent<!MDCFormFieldFoundation>\n */\nclass MDCFormField extends MDCComponent {\n static attachTo(root) {\n return new MDCFormField(root);\n }\n\n /** @param {?MDCSelectionControl} input */\n set input(input) {\n this.input_ = input;\n }\n\n /** @return {?MDCSelectionControl} */\n get input() {\n return this.input_;\n }\n\n constructor(...args) {\n super(...args);\n\n /** @private {?MDCSelectionControl} */\n this.input_;\n }\n\n /**\n * @return {!Element}\n * @private\n */\n get label_() {\n const {LABEL_SELECTOR} = MDCFormFieldFoundation.strings;\n return /** @type {!Element} */ (this.root_.querySelector(LABEL_SELECTOR));\n }\n\n /** @return {!MDCFormFieldFoundation} */\n getDefaultFoundation() {\n return new MDCFormFieldFoundation({\n registerInteractionHandler: (type, handler) => this.label_.addEventListener(type, handler),\n deregisterInteractionHandler: (type, handler) => this.label_.removeEventListener(type, handler),\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 });\n }\n}\n\nexport {MDCFormField, MDCFormFieldFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-form-field/index.js","/**\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\n/**\n * @extends {MDCFoundation<!MDCFormFieldAdapter>}\n */\nclass MDCFormFieldFoundation extends MDCFoundation {\n /** @return enum {cssClasses} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {strings} */\n static get strings() {\n return strings;\n }\n\n /** @return {!MDCFormFieldAdapter} */\n static get defaultAdapter() {\n return {\n registerInteractionHandler: (/* type: string, handler: EventListener */) => {},\n deregisterInteractionHandler: (/* type: string, handler: EventListener */) => {},\n activateInputRipple: () => {},\n deactivateInputRipple: () => {},\n };\n }\n\n constructor(adapter) {\n super(Object.assign(MDCFormFieldFoundation.defaultAdapter, adapter));\n\n /** @private {!EventListener} */\n this.clickHandler_ = /** @type {!EventListener} */ (\n () => 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 */\n handleClick_() {\n this.adapter_.activateInputRipple();\n requestAnimationFrame(() => this.adapter_.deactivateInputRipple());\n }\n}\n\nexport default MDCFormFieldFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-form-field/foundation.js","/**\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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Form Field. Provides an interface for managing\n * - event handlers\n * - ripple activation\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nclass MDCFormFieldAdapter {\n /**\n * @param {string} type\n * @param {!EventListener} handler\n */\n registerInteractionHandler(type, handler) {}\n\n /**\n * @param {string} type\n * @param {!EventListener} handler\n */\n deregisterInteractionHandler(type, handler) {}\n\n activateInputRipple() {}\n\n deactivateInputRipple() {}\n}\n\nexport default MDCFormFieldAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-form-field/adapter.js","/**\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\n/** @enum {string} */\nconst cssClasses = {\n ROOT: 'mdc-form-field',\n};\n\n/** @enum {string} */\nconst strings = {\n LABEL_SELECTOR: '.mdc-form-field > label',\n};\n\nexport {cssClasses, strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-form-field/constants.js","/**\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';\n\nimport MDCGridListFoundation from './foundation';\n\nexport {MDCGridListFoundation};\n\nexport class MDCGridList extends MDCComponent {\n static attachTo(root) {\n return new MDCGridList(root);\n }\n\n getDefaultFoundation() {\n return new MDCGridListFoundation({\n getOffsetWidth: () => this.root_.offsetWidth,\n getNumberOfTiles: () => {\n return this.root_.querySelectorAll(MDCGridListFoundation.strings.TILE_SELECTOR).length;\n },\n getOffsetWidthForTileAtIndex: (index) => {\n return this.root_.querySelectorAll(MDCGridListFoundation.strings.TILE_SELECTOR)[index].offsetWidth;\n },\n setStyleForTilesElement: (property, value) => {\n this.root_.querySelector(MDCGridListFoundation.strings.TILES_SELECTOR).style[property] = value;\n },\n registerResizeHandler: (handler) => window.addEventListener('resize', handler),\n deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler),\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-grid-list/index.js","/**\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 {strings} from './constants';\n\nexport default class MDCGridListFoundation extends MDCFoundation {\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter() {\n return {\n getOffsetWidth: () => /* number */ 0,\n getNumberOfTiles: () => /* number */ 0,\n getOffsetWidthForTileAtIndex: (/* index: number */) => /* number */ 0,\n setStyleForTilesElement: (/* property: string, value: string */) => {},\n registerResizeHandler: (/* handler: EventListener */) => {},\n deregisterResizeHandler: (/* handler: EventListener */) => {},\n };\n }\n constructor(adapter) {\n super(Object.assign(MDCGridListFoundation.defaultAdapter, adapter));\n this.resizeHandler_ = () => this.alignCenter();\n this.resizeFrame_ = 0;\n }\n init() {\n this.alignCenter();\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n }\n destroy() {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n }\n alignCenter() {\n if (this.resizeFrame_ !== 0) {\n cancelAnimationFrame(this.resizeFrame_);\n }\n this.resizeFrame_ = requestAnimationFrame(() => {\n this.alignCenter_();\n this.resizeFrame_ = 0;\n });\n }\n 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\n\n// WEBPACK FOOTER //\n// ./packages/mdc-grid-list/foundation.js","/**\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 */\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.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 MDCIconButtonToggleFoundation from './foundation';\nimport {MDCRipple} from '@material/ripple/index';\n\n/**\n * @extends {MDCComponent<!MDCIconButtonToggleFoundation>}\n */\nclass MDCIconButtonToggle extends MDCComponent {\n static attachTo(root) {\n return new MDCIconButtonToggle(root);\n }\n\n constructor(...args) {\n super(...args);\n\n /** @private {!MDCRipple} */\n this.ripple_ = this.initRipple_();\n /** @private {!Function} */\n this.handleClick_;\n }\n\n /**\n * @return {!MDCRipple}\n * @private\n */\n initRipple_() {\n const ripple = new MDCRipple(this.root_);\n ripple.unbounded = true;\n return ripple;\n }\n\n destroy() {\n this.root_.removeEventListener('click', this.handleClick_);\n this.ripple_.destroy();\n super.destroy();\n }\n\n /** @return {!MDCIconButtonToggleFoundation} */\n getDefaultFoundation() {\n return new MDCIconButtonToggleFoundation({\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: (attrName, attrValue) => this.root_.setAttribute(attrName, attrValue),\n notifyChange: (evtData) => this.emit(MDCIconButtonToggleFoundation.strings.CHANGE_EVENT, evtData),\n });\n }\n\n initialSyncWithDOM() {\n this.handleClick_ = this.foundation_.handleClick.bind(this.foundation_);\n this.root_.addEventListener('click', this.handleClick_);\n }\n\n /** @return {!MDCRipple} */\n get ripple() {\n return this.ripple_;\n }\n\n /** @return {boolean} */\n get on() {\n return this.foundation_.isOn();\n }\n\n /** @param {boolean} isOn */\n set on(isOn) {\n this.foundation_.toggle(isOn);\n }\n}\n\nexport {MDCIconButtonToggle, MDCIconButtonToggleFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-icon-button/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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';\n/* eslint-disable no-unused-vars */\nimport {MDCIconButtonToggleAdapter, IconButtonToggleEvent} from './adapter';\nimport {cssClasses, strings} from './constants';\n\n/**\n * @extends {MDCFoundation<!MDCIconButtonToggleAdapter>}\n */\nclass MDCIconButtonToggleFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter() {\n return {\n addClass: () => {},\n removeClass: () => {},\n hasClass: () => {},\n setAttr: () => {},\n notifyChange: () => {},\n };\n }\n\n constructor(adapter) {\n super(Object.assign(MDCIconButtonToggleFoundation.defaultAdapter, adapter));\n\n /** @private {boolean} */\n this.disabled_ = false;\n }\n\n init() {\n this.adapter_.setAttr(strings.ARIA_PRESSED, `${this.isOn()}`);\n }\n\n handleClick() {\n this.toggle();\n this.adapter_.notifyChange(/** @type {!IconButtonToggleEvent} */ ({isOn: this.isOn()}));\n }\n\n /** @return {boolean} */\n isOn() {\n return this.adapter_.hasClass(cssClasses.ICON_BUTTON_ON);\n }\n\n /** @param {boolean=} isOn */\n toggle(isOn = !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/** @record */\nclass IconButtonToggleState {}\n\nexport default MDCIconButtonToggleFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-icon-button/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Icon Button Toggle. Provides an interface for managing\n * - classes\n * - dom\n * - inner text\n * - event handlers\n * - event dispatch\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\n\nclass MDCIconButtonToggleAdapter {\n /** @param {string} className */\n addClass(className) {}\n\n /** @param {string} className */\n removeClass(className) {}\n\n /**\n * @param {string} className\n * @return {boolean}\n * */\n hasClass(className) {}\n\n /**\n * @param {string} attrName\n * @param {string} attrValue\n */\n setAttr(attrName, attrValue) {}\n\n /** @param {!IconButtonToggleEvent} evtData */\n notifyChange(evtData) {}\n}\n\n/**\n * @typedef {{\n * isOn: boolean,\n * }}\n */\nlet IconButtonToggleEvent;\n\nexport {MDCIconButtonToggleAdapter, IconButtonToggleEvent};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-icon-button/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\nconst cssClasses = {\n ROOT: 'mdc-icon-button',\n ICON_BUTTON_ON: 'mdc-icon-button--on',\n};\n\n/** @enum {string} */\nconst strings = {\n ARIA_PRESSED: 'aria-pressed',\n CHANGE_EVENT: 'MDCIconButtonToggle:change',\n};\n\nexport {cssClasses, strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-icon-button/constants.js","/**\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 MDCIconToggleFoundation from './foundation';\nimport {MDCRipple, MDCRippleFoundation} from '@material/ripple/index';\n\n/**\n * @extends {MDCComponent<!MDCIconToggleFoundation>}\n */\nclass MDCIconToggle extends MDCComponent {\n static attachTo(root) {\n return new MDCIconToggle(root);\n }\n\n constructor(...args) {\n super(...args);\n\n /** @private {!MDCRipple} */\n this.ripple_ = this.initRipple_();\n }\n\n /** @return {!Element} */\n get iconEl_() {\n const {'iconInnerSelector': sel} = this.root_.dataset;\n return sel ?\n /** @type {!Element} */ (this.root_.querySelector(sel)) : this.root_;\n }\n\n /**\n * @return {!MDCRipple}\n * @private\n */\n initRipple_() {\n const adapter = Object.assign(MDCRipple.createAdapter(this), {\n isUnbounded: () => true,\n isSurfaceActive: () => this.foundation_.isKeyboardActivated(),\n });\n const foundation = new MDCRippleFoundation(adapter);\n return new MDCRipple(this.root_, foundation);\n }\n\n destroy() {\n this.ripple_.destroy();\n super.destroy();\n }\n\n /** @return {!MDCIconToggleFoundation} */\n getDefaultFoundation() {\n return new MDCIconToggleFoundation({\n addClass: (className) => this.iconEl_.classList.add(className),\n removeClass: (className) => this.iconEl_.classList.remove(className),\n registerInteractionHandler: (type, handler) => this.root_.addEventListener(type, handler),\n deregisterInteractionHandler: (type, handler) => this.root_.removeEventListener(type, handler),\n setText: (text) => this.iconEl_.textContent = text,\n getTabIndex: () => /* number */ this.root_.tabIndex,\n setTabIndex: (tabIndex) => this.root_.tabIndex = tabIndex,\n getAttr: (name, value) => this.root_.getAttribute(name, value),\n setAttr: (name, value) => this.root_.setAttribute(name, value),\n rmAttr: (name) => this.root_.removeAttribute(name),\n notifyChange: (evtData) => this.emit(MDCIconToggleFoundation.strings.CHANGE_EVENT, evtData),\n });\n }\n\n initialSyncWithDOM() {\n this.on = this.root_.getAttribute(MDCIconToggleFoundation.strings.ARIA_PRESSED) === 'true';\n this.disabled = this.root_.getAttribute(MDCIconToggleFoundation.strings.ARIA_DISABLED) === 'true';\n }\n\n /** @return {!MDCRipple} */\n get ripple() {\n return this.ripple_;\n }\n\n /** @return {boolean} */\n get on() {\n return this.foundation_.isOn();\n }\n\n /** @param {boolean} isOn */\n set on(isOn) {\n this.foundation_.toggle(isOn);\n }\n\n /** @return {boolean} */\n get disabled() {\n return this.foundation_.isDisabled();\n }\n\n /** @param {boolean} isDisabled */\n set disabled(isDisabled) {\n this.foundation_.setDisabled(isDisabled);\n }\n\n refreshToggleData() {\n this.foundation_.refreshToggleData();\n }\n}\n\nexport {MDCIconToggle, MDCIconToggleFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-icon-toggle/index.js","/**\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';\n/* eslint-disable no-unused-vars */\nimport {MDCIconToggleAdapter, IconToggleEvent} from './adapter';\nimport {cssClasses, strings} from './constants';\n\n/**\n * @extends {MDCFoundation<!MDCIconToggleAdapter>}\n */\nclass MDCIconToggleFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter() {\n return {\n addClass: (/* className: string */) => {},\n removeClass: (/* className: string */) => {},\n registerInteractionHandler: (/* type: string, handler: EventListener */) => {},\n deregisterInteractionHandler: (/* type: string, handler: EventListener */) => {},\n setText: (/* text: string */) => {},\n getTabIndex: () => /* number */ 0,\n setTabIndex: (/* tabIndex: number */) => {},\n getAttr: (/* name: string */) => /* string */ '',\n setAttr: (/* name: string, value: string */) => {},\n rmAttr: (/* name: string */) => {},\n notifyChange: (/* evtData: IconToggleEvent */) => {},\n };\n }\n\n constructor(adapter) {\n super(Object.assign(MDCIconToggleFoundation.defaultAdapter, adapter));\n\n /** @private {boolean} */\n this.on_ = false;\n\n /** @private {boolean} */\n this.disabled_ = false;\n\n /** @private {number} */\n this.savedTabIndex_ = -1;\n\n /** @private {?IconToggleState} */\n this.toggleOnData_ = null;\n\n /** @private {?IconToggleState} */\n this.toggleOffData_ = null;\n\n this.clickHandler_ = /** @private {!EventListener} */ (\n () => this.toggleFromEvt_());\n\n /** @private {boolean} */\n this.isHandlingKeydown_ = false;\n\n this.keydownHandler_ = /** @private {!EventListener} */ ((/** @type {!KeyboardKey} */ evt) => {\n if (isSpace(evt)) {\n this.isHandlingKeydown_ = true;\n return evt.preventDefault();\n }\n });\n\n this.keyupHandler_ = /** @private {!EventListener} */ ((/** @type {!KeyboardKey} */ evt) => {\n if (isSpace(evt)) {\n this.isHandlingKeydown_ = false;\n this.toggleFromEvt_();\n }\n });\n }\n\n init() {\n this.refreshToggleData();\n this.savedTabIndex_ = this.adapter_.getTabIndex();\n this.adapter_.registerInteractionHandler('click', this.clickHandler_);\n this.adapter_.registerInteractionHandler('keydown', this.keydownHandler_);\n this.adapter_.registerInteractionHandler('keyup', this.keyupHandler_);\n }\n\n refreshToggleData() {\n const {DATA_TOGGLE_ON, DATA_TOGGLE_OFF} = MDCIconToggleFoundation.strings;\n this.toggleOnData_ = this.parseJsonDataAttr_(DATA_TOGGLE_ON);\n this.toggleOffData_ = this.parseJsonDataAttr_(DATA_TOGGLE_OFF);\n }\n\n destroy() {\n this.adapter_.deregisterInteractionHandler('click', this.clickHandler_);\n this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_);\n this.adapter_.deregisterInteractionHandler('keyup', this.keyupHandler_);\n }\n\n /** @private */\n toggleFromEvt_() {\n this.toggle();\n const {on_: isOn} = this;\n this.adapter_.notifyChange(/** @type {!IconToggleEvent} */ ({isOn}));\n }\n\n /** @return {boolean} */\n isOn() {\n return this.on_;\n }\n\n /** @param {boolean=} isOn */\n toggle(isOn = !this.on_) {\n this.on_ = isOn;\n\n const {ARIA_LABEL, ARIA_PRESSED} = MDCIconToggleFoundation.strings;\n\n if (this.on_) {\n this.adapter_.setAttr(ARIA_PRESSED, 'true');\n } else {\n this.adapter_.setAttr(ARIA_PRESSED, 'false');\n }\n\n const {cssClass: classToRemove} =\n this.on_ ? this.toggleOffData_ : this.toggleOnData_;\n\n if (classToRemove) {\n this.adapter_.removeClass(classToRemove);\n }\n\n const {content, label, cssClass} = this.on_ ? this.toggleOnData_ : this.toggleOffData_;\n\n if (cssClass) {\n this.adapter_.addClass(cssClass);\n }\n if (content) {\n this.adapter_.setText(content);\n }\n if (label) {\n this.adapter_.setAttr(ARIA_LABEL, label);\n }\n }\n\n /**\n * @param {string} dataAttr\n * @return {!IconToggleState}\n */\n parseJsonDataAttr_(dataAttr) {\n const val = this.adapter_.getAttr(dataAttr);\n if (!val) {\n return {};\n }\n return /** @type {!IconToggleState} */ (JSON.parse(val));\n }\n\n /** @return {boolean} */\n isDisabled() {\n return this.disabled_;\n }\n\n /** @param {boolean} isDisabled */\n setDisabled(isDisabled) {\n this.disabled_ = isDisabled;\n\n const {DISABLED} = MDCIconToggleFoundation.cssClasses;\n const {ARIA_DISABLED} = MDCIconToggleFoundation.strings;\n\n if (this.disabled_) {\n this.savedTabIndex_ = this.adapter_.getTabIndex();\n this.adapter_.setTabIndex(-1);\n this.adapter_.setAttr(ARIA_DISABLED, 'true');\n this.adapter_.addClass(DISABLED);\n } else {\n this.adapter_.setTabIndex(this.savedTabIndex_);\n this.adapter_.rmAttr(ARIA_DISABLED);\n this.adapter_.removeClass(DISABLED);\n }\n }\n\n /** @return {boolean} */\n isKeyboardActivated() {\n return this.isHandlingKeydown_;\n }\n}\n\n/**\n * @typedef {{\n * key: string,\n * keyCode: number\n * }}\n */\nlet KeyboardKey;\n\n/**\n * @param {!KeyboardKey} keyboardKey\n * @return {boolean}\n */\nfunction isSpace(keyboardKey) {\n return keyboardKey.key === 'Space' || keyboardKey.keyCode === 32;\n}\n\n\n/** @record */\nclass IconToggleState {}\n\n/**\n * The aria-label value of the icon toggle, or undefined if there is no aria-label.\n * @export {string|undefined}\n */\nIconToggleState.prototype.label;\n\n/**\n * The text for the icon toggle, or undefined if there is no text.\n * @export {string|undefined}\n */\nIconToggleState.prototype.content;\n\n/**\n * The CSS class to add to the icon toggle, or undefined if there is no CSS class.\n * @export {string|undefined}\n */\nIconToggleState.prototype.cssClass;\n\nexport default MDCIconToggleFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-icon-toggle/foundation.js","/**\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\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Icon Toggle. Provides an interface for managing\n * - classes\n * - dom\n * - inner text\n * - event handlers\n * - event dispatch\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\n\nclass MDCIconToggleAdapter {\n /** @param {string} className */\n addClass(className) {}\n\n /** @param {string} className */\n removeClass(className) {}\n\n /**\n * @param {string} type\n * @param {!EventListener} handler\n */\n registerInteractionHandler(type, handler) {}\n\n /**\n * @param {string} type\n * @param {!EventListener} handler\n */\n deregisterInteractionHandler(type, handler) {}\n\n /** @param {string} text */\n setText(text) {}\n\n /** @return {number} */\n getTabIndex() {}\n\n /** @param {number} tabIndex */\n setTabIndex(tabIndex) {}\n\n /**\n * @param {string} name\n * @return {string}\n */\n getAttr(name) {}\n\n /**\n * @param {string} name\n * @param {string} value\n */\n setAttr(name, value) {}\n\n /** @param {string} name */\n rmAttr(name) {}\n\n /** @param {!IconToggleEvent} evtData */\n notifyChange(evtData) {}\n}\n\n/**\n * @typedef {{\n * isOn: boolean,\n * }}\n */\nlet IconToggleEvent;\n\nexport {MDCIconToggleAdapter, IconToggleEvent};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-icon-toggle/adapter.js","/**\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/** @enum {string} */\nconst cssClasses = {\n ROOT: 'mdc-icon-toggle',\n DISABLED: 'mdc-icon-toggle--disabled',\n};\n\n/** @enum {string} */\nconst strings = {\n DATA_TOGGLE_ON: 'data-toggle-on',\n DATA_TOGGLE_OFF: 'data-toggle-off',\n ARIA_PRESSED: 'aria-pressed',\n ARIA_DISABLED: 'aria-disabled',\n ARIA_LABEL: 'aria-label',\n CHANGE_EVENT: 'MDCIconToggle:change',\n};\n\nexport {cssClasses, strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-icon-toggle/constants.js","/**\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 MDCLinearProgressFoundation from './foundation';\n\nexport {MDCLinearProgressFoundation};\n\nexport class MDCLinearProgress extends MDCComponent {\n static attachTo(root) {\n return new MDCLinearProgress(root);\n }\n\n set determinate(value) {\n this.foundation_.setDeterminate(value);\n }\n\n set progress(value) {\n this.foundation_.setProgress(value);\n }\n\n set buffer(value) {\n this.foundation_.setBuffer(value);\n }\n\n set reverse(value) {\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 return new MDCLinearProgressFoundation({\n addClass: (className) => this.root_.classList.add(className),\n getPrimaryBar: () => this.root_.querySelector(MDCLinearProgressFoundation.strings.PRIMARY_BAR_SELECTOR),\n getBuffer: () => this.root_.querySelector(MDCLinearProgressFoundation.strings.BUFFER_SELECTOR),\n hasClass: (className) => this.root_.classList.contains(className),\n removeClass: (className) => this.root_.classList.remove(className),\n setStyle: (el, styleProperty, value) => el.style[styleProperty] = value,\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-linear-progress/index.js","/**\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 {transformStyleProperties} from '@material/animation/index';\n\nimport {cssClasses, strings} from './constants';\n\nexport default class MDCLinearProgressFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter() {\n return {\n addClass: (/* className: string */) => {},\n getPrimaryBar: () => /* el: Element */ {},\n getBuffer: () => /* el: Element */ {},\n hasClass: (/* className: string */) => false,\n removeClass: (/* className: string */) => {},\n setStyle: (/* el: Element, styleProperty: string, value: string */) => {},\n };\n }\n\n constructor(adapter) {\n super(Object.assign(MDCLinearProgressFoundation.defaultAdapter, adapter));\n }\n\n init() {\n this.determinate_ = !this.adapter_.hasClass(cssClasses.INDETERMINATE_CLASS);\n this.reverse_ = this.adapter_.hasClass(cssClasses.REVERSED_CLASS);\n this.progress_ = 0;\n }\n\n setDeterminate(isDeterminate) {\n this.determinate_ = isDeterminate;\n if (this.determinate_) {\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) {\n this.progress_ = value;\n if (this.determinate_) {\n this.setScale_(this.adapter_.getPrimaryBar(), value);\n }\n }\n\n setBuffer(value) {\n if (this.determinate_) {\n this.setScale_(this.adapter_.getBuffer(), value);\n }\n }\n\n setReverse(isReversed) {\n this.reverse_ = isReversed;\n if (this.reverse_) {\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 setScale_(el, scaleValue) {\n const value = 'scaleX(' + scaleValue + ')';\n transformStyleProperties.forEach((transformStyleProperty) => {\n this.adapter_.setStyle(el, transformStyleProperty, value);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-linear-progress/foundation.js","/**\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 PRIMARY_BAR_SELECTOR: '.mdc-linear-progress__primary-bar',\n BUFFER_SELECTOR: '.mdc-linear-progress__buffer',\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-linear-progress/constants.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 MDCLineRippleAdapter from './adapter';\nimport {cssClasses} from './constants';\n\n\n/**\n * @extends {MDCFoundation<!MDCLineRippleAdapter>}\n * @final\n */\nclass MDCLineRippleFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /**\n * {@see MDCLineRippleAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCLineRippleAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCLineRippleAdapter} */ ({\n addClass: () => {},\n removeClass: () => {},\n hasClass: () => {},\n setStyle: () => {},\n registerEventHandler: () => {},\n deregisterEventHandler: () => {},\n });\n }\n\n /**\n * @param {!MDCLineRippleAdapter=} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCLineRippleFoundation.defaultAdapter, adapter));\n\n /** @private {function(!Event): undefined} */\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 /**\n * Activates the line ripple\n */\n activate() {\n this.adapter_.removeClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n this.adapter_.addClass(cssClasses.LINE_RIPPLE_ACTIVE);\n }\n\n /**\n * Sets the center of the ripple animation to the given X coordinate.\n * @param {number} xCoordinate\n */\n setRippleCenter(xCoordinate) {\n this.adapter_.setStyle('transform-origin', `${xCoordinate}px center`);\n }\n\n /**\n * Deactivates the line ripple\n */\n deactivate() {\n this.adapter_.addClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n }\n\n /**\n * Handles a transition end event\n * @param {!Event} evt\n */\n handleTransitionEnd(evt) {\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\nexport default MDCLineRippleFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-line-ripple/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\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.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 {MDCMenuAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\nimport {MDCMenuSurfaceFoundation} from '@material/menu-surface/foundation';\nimport MDCListFoundation from '@material/list/foundation';\n\n/**\n * @extends {MDCFoundation<!MDCMenuAdapter>}\n */\nclass MDCMenuFoundation extends MDCFoundation {\n /** @return enum{cssClasses} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum{strings} */\n static get strings() {\n return strings;\n }\n\n /**\n * {@see MDCMenuAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCMenuAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCMenuAdapter} */ ({\n addClassToElementAtIndex: () => {},\n removeClassFromElementAtIndex: () => {},\n addAttributeToElementAtIndex: () => {},\n removeAttributeFromElementAtIndex: () => {},\n elementContainsClass: () => {},\n closeSurface: () => {},\n getElementIndex: () => {},\n getParentElement: () => {},\n getSelectedElementIndex: () => {},\n notifySelected: () => {},\n });\n }\n\n /** @param {!MDCMenuAdapter} adapter */\n constructor(adapter) {\n super(Object.assign(MDCMenuFoundation.defaultAdapter, adapter));\n\n /** @type {number} */\n this.closeAnimationEndTimerId_ = 0;\n }\n\n destroy() {\n if (this.closeAnimationEndTimerId_) {\n clearTimeout(this.closeAnimationEndTimerId_);\n }\n\n this.adapter_.closeSurface();\n }\n\n /**\n * Handler function for the keydown events.\n * @param {!Event} evt\n */\n handleKeydown(evt) {\n const {key, keyCode} = evt;\n const isTab = key === 'Tab' || keyCode === 9;\n\n if (isTab) {\n this.adapter_.closeSurface();\n }\n }\n\n /**\n * @param {!HTMLElement} listItem\n */\n handleItemAction(listItem) {\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\n if (selectionGroup !== null) {\n this.handleSelectionGroup_(/** @type {!HTMLElement} */ (selectionGroup), index);\n }\n }, MDCMenuSurfaceFoundation.numbers.TRANSITION_CLOSE_DURATION);\n }\n\n /**\n * Handles toggling the selected classes in a selection group when a\n * selection is made.\n * @param {!HTMLElement} selectionGroup\n * @param {number} index The selected index value\n * @private\n */\n handleSelectionGroup_(selectionGroup, index) {\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 * @param listItem\n * @return {?HTMLElement} parent selection group element or null.\n * @private\n */\n getSelectionGroup_(listItem) {\n let parent = this.adapter_.getParentElement(listItem);\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 && !this.adapter_.elementContainsClass(parent, MDCListFoundation.cssClasses.ROOT)) {\n parent = this.adapter_.getParentElement(parent);\n isGroup = this.adapter_.elementContainsClass(parent, cssClasses.MENU_SELECTION_GROUP);\n }\n\n if (isGroup) {\n return parent;\n } else {\n return null;\n }\n }\n\n /**\n * Find the first ancestor with the mdc-list-item class.\n * @param {?HTMLElement} target\n * @return {?HTMLElement}\n * @private\n */\n getListItem_(target) {\n let isListItem = this.adapter_.elementContainsClass(target, MDCListFoundation.cssClasses.LIST_ITEM_CLASS);\n\n while (!isListItem) {\n target = this.adapter_.getParentElement(target);\n if (target) {\n isListItem = this.adapter_.elementContainsClass(target, MDCListFoundation.cssClasses.LIST_ITEM_CLASS);\n } else { // target has no parent element.\n return null;\n }\n }\n\n return target;\n }\n}\n\nexport {MDCMenuFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Menu. Provides an interface for managing\n * - selected element classes\n * - get focused elements\n * - toggling a checkbox inside a list item\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nclass MDCMenuAdapter {\n /**\n * Adds a class to the element at the index provided.\n * @param {number} index\n * @param {string} className\n */\n addClassToElementAtIndex(index, className) {}\n\n /**\n * Removes a class from the element at the index provided\n * @param {number} index\n * @param {string} className\n */\n removeClassFromElementAtIndex(index, className) {}\n\n /**\n * Adds an attribute, with value, to the element at the index provided.\n * @param {number} index\n * @param {string} attr\n * @param {string} value\n */\n addAttributeToElementAtIndex(index, attr, value) {}\n\n /**\n * Removes an attribute from an element at the index provided.\n * @param {number} index\n * @param {string} attr\n */\n removeAttributeFromElementAtIndex(index, attr) {}\n\n /**\n * Returns true if the element contains the className.\n * @param {?HTMLElement} element\n * @param {string} className\n * @return {boolean} true if the element contains the className\n */\n elementContainsClass(element, className) {}\n\n /**\n * Closes the menu-surface.\n */\n closeSurface() {}\n\n /**\n * Returns the index for the element provided.\n * @param {?HTMLElement} element\n * @return {number} index of the element in the list or -1 if it is not in the list.\n */\n getElementIndex(element) {}\n\n /**\n * Returns the parentElement of the provided element.\n * @param {?HTMLElement} element\n * @return {?HTMLElement} parentElement of the element provided.\n */\n getParentElement(element) {}\n\n /**\n * Returns the element within the selectionGroup containing the selected element class.\n * @param {!HTMLElement} selectionGroup\n * @return {number} element within the selectionGroup that contains the selected element class.\n */\n getSelectedElementIndex(selectionGroup) {}\n\n /**\n * Emits an event using the evtData.\n * @param {{\n * index: number\n * }} evtData\n */\n notifySelected(evtData) {}\n}\n\nexport {MDCMenuAdapter};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @type {string|undefined} */\nlet storedTransformPropertyName_;\n\n/**\n * Returns the name of the correct transform property to use on the current browser.\n * @param {!Window} globalObj\n * @param {boolean=} forceRefresh\n * @return {string}\n */\nfunction getTransformPropertyName(globalObj, forceRefresh = false) {\n if (storedTransformPropertyName_ === undefined || forceRefresh) {\n const el = globalObj.document.createElement('div');\n const transformPropertyName = ('transform' in el.style ? 'transform' : 'webkitTransform');\n storedTransformPropertyName_ = transformPropertyName;\n }\n\n return storedTransformPropertyName_;\n}\n\nexport {getTransformPropertyName};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-menu-surface/util.js","/**\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, strings, numbers} from './constants';\n\n/**\n * @extends {MDCFoundation<!MDCNotchedOutlineAdapter>}\n * @final\n */\nclass MDCNotchedOutlineFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {number} */\n static get numbers() {\n return numbers;\n }\n\n /**\n * {@see MDCNotchedOutlineAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCNotchedOutlineAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCNotchedOutlineAdapter} */ ({\n addClass: () => {},\n removeClass: () => {},\n setNotchWidthProperty: () => {},\n removeNotchWidthProperty: () => {},\n });\n }\n\n /**\n * @param {!MDCNotchedOutlineAdapter} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCNotchedOutlineFoundation.defaultAdapter, adapter));\n }\n\n /**\n * Adds the outline notched selector and updates the notch width\n * calculated based off of notchWidth.\n * @param {number} notchWidth\n */\n notch(notchWidth) {\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\nexport default MDCNotchedOutlineFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-notched-outline/foundation.js","/**\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';\n/* eslint-disable no-unused-vars */\nimport {MDCSelectionControlState, MDCSelectionControl} from '@material/selection-control/index';\n/* eslint-enable no-unused-vars */\nimport MDCRadioFoundation from './foundation';\nimport {MDCRipple, MDCRippleFoundation} from '@material/ripple/index';\n\n/**\n * @extends MDCComponent<!MDCRadioFoundation>\n * @implements {MDCSelectionControl}\n */\nclass MDCRadio extends MDCComponent {\n static attachTo(root) {\n return new MDCRadio(root);\n }\n\n /** @return {boolean} */\n get checked() {\n return this.nativeControl_.checked;\n }\n\n /** @param {boolean} checked */\n set checked(checked) {\n this.nativeControl_.checked = checked;\n }\n\n /** @return {boolean} */\n get disabled() {\n return this.nativeControl_.disabled;\n }\n\n /** @param {boolean} disabled */\n set disabled(disabled) {\n this.foundation_.setDisabled(disabled);\n }\n\n /** @return {?string} */\n get value() {\n return this.nativeControl_.value;\n }\n\n /** @param {?string} value */\n set value(value) {\n this.nativeControl_.value = value;\n }\n\n /** @return {!MDCRipple} */\n get ripple() {\n return this.ripple_;\n }\n\n constructor(...args) {\n super(...args);\n\n /** @private {!MDCRipple} */\n this.ripple_ = this.initRipple_();\n }\n\n /**\n * @return {!MDCRipple}\n * @private\n */\n initRipple_() {\n const adapter = Object.assign(MDCRipple.createAdapter(this), {\n isUnbounded: () => true,\n // Radio buttons technically go \"active\" whenever there is *any* keyboard interaction. This is not the\n // UI we desire.\n isSurfaceActive: () => false,\n registerInteractionHandler: (type, handler) => this.nativeControl_.addEventListener(type, handler),\n deregisterInteractionHandler: (type, handler) => this.nativeControl_.removeEventListener(type, handler),\n });\n const foundation = new MDCRippleFoundation(adapter);\n return new MDCRipple(this.root_, foundation);\n }\n\n /**\n * Returns the state of the native control element, or null if the native control element is not present.\n * @return {?MDCSelectionControlState}\n * @private\n */\n get nativeControl_() {\n const {NATIVE_CONTROL_SELECTOR} = MDCRadioFoundation.strings;\n const el = /** @type {?MDCSelectionControlState} */ (\n this.root_.querySelector(NATIVE_CONTROL_SELECTOR));\n return el;\n }\n\n destroy() {\n this.ripple_.destroy();\n super.destroy();\n }\n\n /** @return {!MDCRadioFoundation} */\n getDefaultFoundation() {\n return new MDCRadioFoundation({\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 }\n}\n\n\nexport {MDCRadio, MDCRadioFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-radio/index.js","/**\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';\n/* eslint-disable no-unused-vars */\nimport {MDCSelectionControlState} from '@material/selection-control/index';\nimport MDCRadioAdapter from './adapter';\n/* eslint-enable no-unused-vars */\nimport {cssClasses, strings} from './constants';\n\n/**\n * @extends {MDCFoundation<!MDCRadioAdapter>}\n */\nclass MDCRadioFoundation extends MDCFoundation {\n /** @return enum {cssClasses} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {strings} */\n static get strings() {\n return strings;\n }\n\n /** @return {!MDCRadioAdapter} */\n static get defaultAdapter() {\n return /** @type {!MDCRadioAdapter} */ ({\n addClass: (/* className: string */) => {},\n removeClass: (/* className: string */) => {},\n setNativeControlDisabled: (/* disabled: boolean */) => {},\n });\n }\n\n /** @param {boolean} disabled */\n setDisabled(disabled) {\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\nexport default MDCRadioFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-radio/foundation.js","/**\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/* eslint-disable no-unused-vars */\nimport {MDCSelectionControlState} from '@material/selection-control/index';\n\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Radio. Provides an interface for managing\n * - classes\n * - dom\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nclass MDCRadioAdapter {\n /** @param {string} className */\n addClass(className) {}\n\n /** @param {string} className */\n removeClass(className) {}\n\n /** @param {boolean} disabled */\n setNativeControlDisabled(disabled) {}\n}\n\nexport default MDCRadioAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-radio/adapter.js","/**\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/** @enum {string} */\nconst strings = {\n NATIVE_CONTROL_SELECTOR: '.mdc-radio__native-control',\n};\n\n/** @enum {string} */\nconst cssClasses = {\n ROOT: 'mdc-radio',\n DISABLED: 'mdc-radio--disabled',\n};\n\nexport {strings, cssClasses};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-radio/constants.js","/**\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 {MDCFloatingLabel} from '@material/floating-label/index';\nimport {MDCLineRipple} from '@material/line-ripple/index';\nimport {MDCMenu} from '@material/menu/index';\nimport {MDCRipple, MDCRippleFoundation} from '@material/ripple/index';\nimport {MDCNotchedOutline} from '@material/notched-outline/index';\nimport MDCSelectFoundation from './foundation';\nimport {cssClasses, strings} from './constants';\n\n/* eslint-disable no-unused-vars */\nimport {MDCSelectAdapter, FoundationMapType} from './adapter';\nimport {MDCSelectIcon, MDCSelectIconFoundation} from './icon/index';\nimport {MDCSelectHelperText, MDCSelectHelperTextFoundation} from './helper-text/index';\n/* eslint-enable no-unused-vars */\n\n// Closure has issues with {this as that} syntax.\nimport * as menuSurfaceConstants from '@material/menu-surface/constants';\nimport * as menuConstants from '@material/menu/constants';\n\nconst VALIDATION_ATTR_WHITELIST = ['required', 'aria-required'];\n\n/**\n * @extends MDCComponent<!MDCSelectFoundation>\n */\nclass MDCSelect extends MDCComponent {\n /**\n * @param {...?} args\n */\n constructor(...args) {\n super(...args);\n /** @private {?Element} */\n this.nativeControl_;\n /** @private {?Element} */\n this.selectedText_;\n /** @private {?Element} */\n this.hiddenInput_;\n /** @private {?MDCSelectIcon} */\n this.leadingIcon_;\n /** @private {?MDCSelectHelperText} */\n this.helperText_;\n /** @private {?Element} */\n this.menuElement_;\n /** @type {?MDCMenu} */\n this.menu_;\n /** @type {?MDCRipple} */\n this.ripple;\n /** @private {?MDCLineRipple} */\n this.lineRipple_;\n /** @private {?MDCFloatingLabel} */\n this.label_;\n /** @private {?MDCNotchedOutline} */\n this.outline_;\n /** @private {!Function} */\n this.handleChange_;\n /** @private {!Function} */\n this.handleFocus_;\n /** @private {!Function} */\n this.handleBlur_;\n /** @private {!Function} */\n this.handleClick_;\n /** @private {!Function} */\n this.handleKeydown_;\n /** @private {!Function} */\n this.handleMenuOpened_;\n /** @private {!Function} */\n this.handleMenuClosed_;\n /** @private {!Function} */\n this.handleMenuSelected_;\n /** @private {boolean} */\n this.menuOpened_ = false;\n /** @private {!MutationObserver} */\n this.validationObserver_;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCSelect}\n */\n static attachTo(root) {\n return new MDCSelect(root);\n }\n\n /**\n * @return {string} The value of the select.\n */\n get value() {\n return this.foundation_.getValue();\n }\n\n /**\n * @param {string} value The value to set on the select.\n */\n set value(value) {\n this.foundation_.setValue(value);\n }\n\n /**\n * @return {number} The selected index of the select.\n */\n get selectedIndex() {\n let selectedIndex;\n if (this.menuElement_) {\n const selectedEl = /** @type {!HTMLElement} */ (this.menuElement_.querySelector(strings.SELECTED_ITEM_SELECTOR));\n selectedIndex = this.menu_.items.indexOf(selectedEl);\n } else {\n selectedIndex = this.nativeControl_.selectedIndex;\n }\n return selectedIndex;\n }\n\n /**\n * @param {number} selectedIndex The index of the option to be set on the select.\n */\n set selectedIndex(selectedIndex) {\n this.foundation_.setSelectedIndex(selectedIndex);\n }\n\n /**\n * @return {boolean} True if the select is disabled.\n */\n get disabled() {\n return this.root_.classList.contains(cssClasses.DISABLED) ||\n (this.nativeControl_ ? this.nativeControl_.disabled : false);\n }\n\n /**\n * @param {boolean} disabled Sets the select disabled or enabled.\n */\n set disabled(disabled) {\n this.foundation_.setDisabled(disabled);\n }\n\n /**\n * Sets the aria label of the leading icon.\n * @param {string} label\n */\n set leadingIconAriaLabel(label) {\n this.foundation_.setLeadingIconAriaLabel(label);\n }\n\n /**\n * Sets the text content of the leading icon.\n * @param {string} content\n */\n set leadingIconContent(content) {\n this.foundation_.setLeadingIconContent(content);\n }\n\n /**\n * Sets the text content of the helper text.\n * @param {string} content\n */\n set helperTextContent(content) {\n this.foundation_.setHelperTextContent(content);\n }\n\n /**\n * Sets the current invalid state of the select.\n * @param {boolean} isValid\n */\n set valid(isValid) {\n this.foundation_.setValid(isValid);\n }\n\n /**\n * Checks if the select is in a valid state.\n * @return {boolean}\n */\n get valid() {\n return this.foundation_.isValid();\n }\n\n /**\n * Sets the control to the required state.\n * @param {boolean} isRequired\n */\n set required(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\n /**\n * Returns whether the select is required.\n * @return {boolean}\n */\n get required() {\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\n /**\n * @param {(function(!Element): !MDCLineRipple)=} lineRippleFactory A function which creates a new MDCLineRipple.\n * @param {(function(!Element): !MDCFloatingLabel)=} labelFactory A function which creates a new MDCFloatingLabel.\n * @param {(function(!Element): !MDCNotchedOutline)=} outlineFactory A function which creates a new MDCNotchedOutline.\n * @param {(function(!Element): !MDCMenu)=} menuFactory A function which creates a new MDCMenu.\n * @param {(function(!Element): !MDCSelectIcon)=} iconFactory A function which creates a new MDCSelectIcon.\n * @param {(function(!Element): !MDCSelectHelperText)=} helperTextFactory A function which creates a new\n * MDCSelectHelperText.\n */\n initialize(\n labelFactory = (el) => new MDCFloatingLabel(el),\n lineRippleFactory = (el) => new MDCLineRipple(el),\n outlineFactory = (el) => new MDCNotchedOutline(el),\n menuFactory = (el) => new MDCMenu(el),\n iconFactory = (el) => new MDCSelectIcon(el),\n helperTextFactory = (el) => new MDCSelectHelperText(el)) {\n this.nativeControl_ = /** @type {HTMLElement} */ (this.root_.querySelector(strings.NATIVE_CONTROL_SELECTOR));\n this.selectedText_ = /** @type {HTMLElement} */ (this.root_.querySelector(strings.SELECTED_TEXT_SELECTOR));\n\n if (this.selectedText_) {\n this.enhancedSelectSetup_(menuFactory);\n }\n\n const labelElement = this.root_.querySelector(strings.LABEL_SELECTOR);\n if (labelElement) {\n this.label_ = labelFactory(labelElement);\n }\n const lineRippleElement = this.root_.querySelector(strings.LINE_RIPPLE_SELECTOR);\n if (lineRippleElement) {\n this.lineRipple_ = lineRippleFactory(lineRippleElement);\n }\n const outlineElement = this.root_.querySelector(strings.OUTLINE_SELECTOR);\n if (outlineElement) {\n this.outline_ = outlineFactory(outlineElement);\n }\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 const element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;\n if (element.hasAttribute(strings.ARIA_CONTROLS)) {\n const helperTextElement = document.getElementById(element.getAttribute(strings.ARIA_CONTROLS));\n if (helperTextElement) {\n this.helperText_ = helperTextFactory(helperTextElement);\n }\n }\n\n if (!this.root_.classList.contains(cssClasses.OUTLINED)) {\n this.ripple = this.initRipple_();\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 * Handles setup for the enhanced menu.\n * @private\n */\n enhancedSelectSetup_(menuFactory) {\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_ = /** @type {HTMLElement} */ (this.root_.querySelector(strings.MENU_SELECTOR));\n this.menu_ = menuFactory(this.menuElement_);\n this.menu_.hoistMenuToBody();\n this.menu_.setAnchorElement(/** @type {!HTMLElement} */ (this.root_));\n this.menu_.setAnchorCorner(menuSurfaceConstants.Corner.BOTTOM_START);\n this.menu_.wrapFocus = false;\n }\n\n /**\n * @private\n * @return {!MDCRipple}\n */\n initRipple_() {\n const element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;\n const adapter = Object.assign(MDCRipple.createAdapter(this), {\n registerInteractionHandler: (type, handler) => element.addEventListener(type, handler),\n deregisterInteractionHandler: (type, handler) => element.removeEventListener(type, handler),\n });\n const foundation = new MDCRippleFoundation(adapter);\n return new MDCRipple(this.root_, foundation);\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_) this.selectedText_.focus();\n this.foundation_.handleClick(this.getNormalizedXCoordinate_(evt));\n };\n this.handleKeydown_ = (evt) => this.foundation_.handleKeydown(evt);\n this.handleMenuSelected_ = (evtData) => this.selectedIndex = evtData.detail.index;\n this.handleMenuOpened_ = () => {\n // Menu should open to the last selected element.\n if (this.selectedIndex >= 0) {\n this.menu_.items[this.selectedIndex].focus();\n }\n };\n this.handleMenuClosed_ = () => {\n // menuOpened_ 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.menuOpened_ = false;\n this.selectedText_.removeAttribute('aria-expanded');\n if (document.activeElement !== this.selectedText_) {\n this.foundation_.handleBlur();\n }\n };\n\n const element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;\n\n element.addEventListener('change', this.handleChange_);\n element.addEventListener('focus', this.handleFocus_);\n element.addEventListener('blur', this.handleBlur_);\n\n ['mousedown', 'touchstart'].forEach((evtType) => {\n element.addEventListener(evtType, this.handleClick_);\n });\n\n if (this.menuElement_) {\n this.selectedText_.addEventListener('keydown', this.handleKeydown_);\n this.menu_.listen(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);\n this.menu_.listen(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);\n this.menu_.listen(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);\n\n if (this.hiddenInput_ && this.hiddenInput_.value) {\n // If the hidden input already has a value, use it to restore the select's value.\n // This can happen e.g. if the user goes back or (in some browsers) refreshes the page.\n const enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();\n enhancedAdapterMethods.setValue(this.hiddenInput_.value);\n } else if (this.menuElement_.querySelector(strings.SELECTED_ITEM_SELECTOR)) {\n // If an element is selected, the select should set the initial selected text.\n const enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();\n enhancedAdapterMethods.setValue(enhancedAdapterMethods.getValue());\n }\n }\n\n // Initially sync floating label\n this.foundation_.handleChange(/* didChange */ false);\n\n if (this.root_.classList.contains(cssClasses.DISABLED)\n || (this.nativeControl_ && this.nativeControl_.disabled)) {\n this.disabled = true;\n }\n }\n\n destroy() {\n const element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;\n\n element.removeEventListener('change', this.handleChange_);\n element.removeEventListener('focus', this.handleFocus_);\n element.removeEventListener('blur', this.handleBlur_);\n element.removeEventListener('keydown', this.handleKeydown_);\n ['mousedown', 'touchstart'].forEach((evtType) => {\n element.removeEventListener(evtType, this.handleClick_);\n });\n\n if (this.menu_) {\n this.menu_.unlisten(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);\n this.menu_.unlisten(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);\n this.menu_.unlisten(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);\n this.menu_.destroy();\n }\n\n if (this.ripple) {\n this.ripple.destroy();\n }\n if (this.outline_) {\n this.outline_.destroy();\n }\n if (this.leadingIcon_) {\n this.leadingIcon_.destroy();\n }\n if (this.helperText_) {\n this.helperText_.destroy();\n }\n if (this.validationObserver_) {\n this.validationObserver_.disconnect();\n }\n\n super.destroy();\n }\n\n /**\n * @return {!MDCSelectFoundation}\n */\n getDefaultFoundation() {\n return new MDCSelectFoundation(\n /** @type {!MDCSelectAdapter} */ (Object.assign(\n this.nativeControl_ ? this.getNativeSelectAdapterMethods_() : this.getEnhancedSelectAdapterMethods_(),\n this.getCommonAdapterMethods_(),\n this.getOutlineAdapterMethods_(),\n this.getLabelAdapterMethods_())\n ),\n this.getFoundationMap_()\n );\n }\n\n /**\n * @return {!{\n * getValue: function(): string,\n * setValue: function(string): string,\n * openMenu: function(): void,\n * closeMenu: function(): void,\n * isMenuOpen: function(): boolean,\n * setSelectedIndex: function(number): void,\n * setDisabled: function(boolean): void\n * }}\n * @private\n */\n getNativeSelectAdapterMethods_() {\n return {\n getValue: () => this.nativeControl_.value,\n setValue: (value) => this.nativeControl_.value = value,\n openMenu: () => {},\n closeMenu: () => {},\n isMenuOpen: () => false,\n setSelectedIndex: (index) => {\n this.nativeControl_.selectedIndex = index;\n },\n setDisabled: (isDisabled) => this.nativeControl_.disabled = isDisabled,\n setValid: (isValid) => {\n isValid ? this.root_.classList.remove(cssClasses.INVALID) : this.root_.classList.add(cssClasses.INVALID);\n },\n checkValidity: () => this.nativeControl_.checkValidity(),\n };\n }\n\n /**\n * @return {!{\n * getValue: function(): string,\n * setValue: function(string): string,\n * openMenu: function(): void,\n * closeMenu: function(): void,\n * isMenuOpen: function(): boolean,\n * setSelectedIndex: function(number): void,\n * setDisabled: function(boolean): void\n * }}\n * @private\n */\n getEnhancedSelectAdapterMethods_() {\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) => {\n const element =\n /** @type {HTMLElement} */ (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.menuOpened_ = 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: () => this.menu_ && this.menuOpened_,\n setSelectedIndex: (index) => {\n this.setEnhancedSelectedIndex_(index);\n },\n 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: () => {\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 || this.value);\n } else {\n return true;\n }\n },\n setValid: (isValid) => {\n this.selectedText_.setAttribute('aria-invalid', (!isValid).toString());\n isValid ? this.root_.classList.remove(cssClasses.INVALID) : this.root_.classList.add(cssClasses.INVALID);\n },\n };\n }\n\n /**\n * @return {!{\n * addClass: function(string): void,\n * removeClass: function(string): void,\n * hasClass: function(string): void,\n * setRippleCenter: function(number): void,\n * activateBottomLine: function(): void,\n * deactivateBottomLine: function(): void,\n * notifyChange: function(string): void\n * }}\n * @private\n */\n getCommonAdapterMethods_() {\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 setRippleCenter: (normalizedX) => this.lineRipple_ && this.lineRipple_.setRippleCenter(normalizedX),\n activateBottomLine: () => this.lineRipple_ && this.lineRipple_.activate(),\n deactivateBottomLine: () => this.lineRipple_ && this.lineRipple_.deactivate(),\n notifyChange: (value) => {\n const index = this.selectedIndex;\n this.emit(strings.CHANGE_EVENT, {value, index}, true /* shouldBubble */);\n },\n };\n }\n\n /**\n * @return {!{\n * hasOutline: function(): boolean,\n * notchOutline: function(number, boolean): undefined,\n * closeOutline: function(): undefined,\n * }}\n */\n getOutlineAdapterMethods_() {\n return {\n hasOutline: () => !!this.outline_,\n notchOutline: (labelWidth) => {\n if (this.outline_) {\n this.outline_.notch(labelWidth);\n }\n },\n closeOutline: () => {\n if (this.outline_) {\n this.outline_.closeNotch();\n }\n },\n };\n }\n\n /**\n * @return {!{\n * floatLabel: function(boolean): undefined,\n * getLabelWidth: function(): number,\n * }}\n */\n getLabelAdapterMethods_() {\n return {\n floatLabel: (shouldFloat) => {\n if (this.label_) {\n this.label_.float(shouldFloat);\n }\n },\n getLabelWidth: () => {\n return this.label_ ? this.label_.getWidth() : 0;\n },\n };\n }\n\n /**\n * Calculates where the line ripple should start based on the x coordinate within the component.\n * @param {!(MouseEvent|TouchEvent)} evt\n * @return {number} normalizedX\n */\n getNormalizedXCoordinate_(evt) {\n const targetClientRect = evt.target.getBoundingClientRect();\n const xCoordinate = evt.clientX;\n return xCoordinate - targetClientRect.left;\n }\n\n /**\n * Returns a map of all subcomponents to subfoundations.\n * @return {!FoundationMapType}\n */\n getFoundationMap_() {\n return {\n leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined,\n helperText: this.helperText_ ? this.helperText_.foundation : undefined,\n };\n }\n\n /**\n * Sets the selected index of the enhanced menu.\n * @param {number} index\n * @private\n */\n setEnhancedSelectedIndex_(index) {\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 initialSyncRequiredState_() {\n const element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;\n const isRequired = element.required || element.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 addMutationObserverForRequired_() {\n const observerHandler = (attributesList) => {\n attributesList.some((attributeName) => {\n if (VALIDATION_ATTR_WHITELIST.indexOf(attributeName) > -1) {\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 return true;\n }\n });\n };\n\n const getAttributesList = (mutationsList) => mutationsList.map((mutation) => mutation.attributeName);\n const observer = new MutationObserver((mutationsList) => observerHandler(getAttributesList(mutationsList)));\n const element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;\n observer.observe(element, {attributes: true});\n this.validationObserver_ = observer;\n };\n}\n\nexport {MDCSelect, MDCSelectFoundation,\n MDCSelectHelperText, MDCSelectHelperTextFoundation,\n MDCSelectIcon, MDCSelectIconFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/index.js","/**\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';\n/* eslint-disable no-unused-vars */\nimport {MDCSelectAdapter, FoundationMapType} from './adapter';\nimport {MDCSelectIconFoundation} from './icon/index';\nimport {MDCSelectHelperTextFoundation} from './helper-text/index';\n/* eslint-enable no-unused-vars */\nimport {cssClasses, strings, numbers} from './constants';\n\n/**\n * @extends {MDCFoundation<!MDCSelectAdapter>}\n * @final\n */\nclass MDCSelectFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {number} */\n static get numbers() {\n return numbers;\n }\n\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /**\n * {@see MDCSelectAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCSelectAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCSelectAdapter} */ ({\n addClass: (/* className: string */) => {},\n removeClass: (/* className: string */) => {},\n hasClass: (/* className: string */) => false,\n activateBottomLine: () => {},\n deactivateBottomLine: () => {},\n setValue: () => {},\n getValue: () => {},\n floatLabel: (/* value: boolean */) => {},\n getLabelWidth: () => {},\n hasOutline: () => false,\n notchOutline: (/* labelWidth: number, */) => {},\n closeOutline: () => {},\n openMenu: () => {},\n closeMenu: () => {},\n isMenuOpen: () => {},\n setSelectedIndex: () => {},\n setDisabled: () => {},\n setRippleCenter: () => {},\n notifyChange: () => {},\n checkValidity: () => {},\n setValid: () => {},\n });\n }\n\n /**\n * @param {!MDCSelectAdapter} adapter\n * @param {!FoundationMapType=} foundationMap Map from subcomponent names to their subfoundations.\n */\n constructor(adapter, foundationMap = /** @type {!FoundationMapType} */ ({})) {\n super(Object.assign(MDCSelectFoundation.defaultAdapter, adapter));\n\n /** @type {!MDCSelectIconFoundation|undefined} */\n this.leadingIcon_ = foundationMap.leadingIcon;\n /** @type {!MDCSelectHelperTextFoundation|undefined} */\n this.helperText_ = foundationMap.helperText;\n }\n\n setSelectedIndex(index) {\n this.adapter_.setSelectedIndex(index);\n this.adapter_.closeMenu();\n const didChange = true;\n this.handleChange(didChange);\n }\n\n setValue(value) {\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) {\n isDisabled ? this.adapter_.addClass(cssClasses.DISABLED) : this.adapter_.removeClass(cssClasses.DISABLED);\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 {string} content Sets the content of the helper text.\n */\n setHelperTextContent(content) {\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()) return;\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) {\n if (this.adapter_.isMenuOpen()) return;\n this.adapter_.setRippleCenter(normalizedX);\n\n this.adapter_.openMenu();\n }\n\n handleKeydown(event) {\n if (this.adapter_.isMenuOpen()) return;\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 * @param {boolean} openNotch\n */\n notchOutline(openNotch) {\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 * @param {string} label\n */\n setLeadingIconAriaLabel(label) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setAriaLabel(label);\n }\n }\n\n /**\n * Sets the text content of the leading icon.\n * @param {string} content\n */\n setLeadingIconContent(content) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setContent(content);\n }\n }\n\n setValid(isValid) {\n this.adapter_.setValid(isValid);\n }\n\n isValid() {\n return this.adapter_.checkValidity();\n }\n}\n\nexport default MDCSelectFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 MDCSelectIconAdapter from './adapter';\nimport {strings} from './constants';\n\n\n/**\n * @extends {MDCFoundation<!MDCSelectIconAdapter>}\n * @final\n */\nclass MDCSelectIconFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /**\n * {@see MDCSelectIconAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCSelectIconAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCSelectIconAdapter} */ ({\n getAttr: () => {},\n setAttr: () => {},\n removeAttr: () => {},\n setContent: () => {},\n registerInteractionHandler: () => {},\n deregisterInteractionHandler: () => {},\n notifyIconAction: () => {},\n });\n }\n\n /**\n * @param {!MDCSelectIconAdapter} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCSelectIconFoundation.defaultAdapter, adapter));\n\n /** @private {string?} */\n this.savedTabIndex_ = null;\n\n /** @private {function(!Event): undefined} */\n this.interactionHandler_ = (evt) => this.handleInteraction(evt);\n }\n\n init() {\n this.savedTabIndex_ = this.adapter_.getAttr('tabindex');\n\n ['click', 'keydown'].forEach((evtType) => {\n this.adapter_.registerInteractionHandler(evtType, this.interactionHandler_);\n });\n }\n\n destroy() {\n ['click', 'keydown'].forEach((evtType) => {\n this.adapter_.deregisterInteractionHandler(evtType, this.interactionHandler_);\n });\n }\n\n /** @param {boolean} disabled */\n setDisabled(disabled) {\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 /** @param {string} label */\n setAriaLabel(label) {\n this.adapter_.setAttr('aria-label', label);\n }\n\n /** @param {string} content */\n setContent(content) {\n this.adapter_.setContent(content);\n }\n\n /**\n * Handles an interaction event\n * @param {!Event} evt\n */\n handleInteraction(evt) {\n if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {\n this.adapter_.notifyIconAction();\n }\n }\n}\n\nexport default MDCSelectIconFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/icon/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\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.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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\n\n/**\n * @extends {MDCFoundation<!MDCSelectHelperTextAdapter>}\n * @final\n */\nclass MDCSelectHelperTextFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /**\n * {@see MDCSelectHelperTextAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCSelectHelperTextAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCSelectHelperTextAdapter} */ ({\n addClass: () => {},\n removeClass: () => {},\n hasClass: () => {},\n setAttr: () => {},\n removeAttr: () => {},\n setContent: () => {},\n });\n }\n\n /**\n * @param {!MDCSelectHelperTextAdapter} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCSelectHelperTextFoundation.defaultAdapter, adapter));\n }\n\n /**\n * Sets the content of the helper text field.\n * @param {string} content\n */\n setContent(content) {\n this.adapter_.setContent(content);\n }\n\n /** @param {boolean} isPersistent Sets the persistency of the helper text. */\n setPersistent(isPersistent) {\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 {boolean} isValidation True to make the helper text act as an\n * error validation message.\n */\n setValidation(isValidation) {\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 /** Makes the helper text visible to the screen reader. */\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 * @param {boolean} selectIsValid\n */\n setValidity(selectIsValid) {\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 * @private\n */\n hide_() {\n this.adapter_.setAttr(strings.ARIA_HIDDEN, 'true');\n }\n}\n\nexport default MDCSelectHelperTextFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-select/helper-text/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\nconst strings = {\n ARIA_HIDDEN: 'aria-hidden',\n ROLE: 'role',\n};\n\n/** @enum {string} */\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.js","/**\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';\n\nimport {strings} from './constants';\nimport MDCSliderAdapter from './adapter';\nimport MDCSliderFoundation from './foundation';\n\n/**\n * @extends MDCComponent<!MDCSliderFoundation>\n */\nclass MDCSlider extends MDCComponent {\n static attachTo(root) {\n return new MDCSlider(root);\n }\n\n constructor(...args) {\n super(...args);\n /** @type {?Element} */\n this.thumbContainer_;\n /** @type {?Element} */\n this.track_;\n /** @type {?Element} */\n this.pinValueMarker_;\n /** @type {?Element} */\n this.trackMarkerContainer_;\n }\n\n /** @return {number} */\n get value() {\n return this.foundation_.getValue();\n }\n\n /** @param {number} value */\n set value(value) {\n this.foundation_.setValue(value);\n }\n\n /** @return {number} */\n get min() {\n return this.foundation_.getMin();\n }\n\n /** @param {number} min */\n set min(min) {\n this.foundation_.setMin(min);\n }\n\n /** @return {number} */\n get max() {\n return this.foundation_.getMax();\n }\n\n /** @param {number} max */\n set max(max) {\n this.foundation_.setMax(max);\n }\n\n /** @return {number} */\n get step() {\n return this.foundation_.getStep();\n }\n\n /** @param {number} step */\n set step(step) {\n this.foundation_.setStep(step);\n }\n\n /** @return {boolean} */\n get disabled() {\n return this.foundation_.isDisabled();\n }\n\n /** @param {boolean} disabled */\n set disabled(disabled) {\n this.foundation_.setDisabled(disabled);\n }\n\n initialize() {\n this.thumbContainer_ = this.root_.querySelector(strings.THUMB_CONTAINER_SELECTOR);\n this.track_ = this.root_.querySelector(strings.TRACK_SELECTOR);\n this.pinValueMarker_ = this.root_.querySelector(strings.PIN_VALUE_MARKER_SELECTOR);\n this.trackMarkerContainer_ = this.root_.querySelector(strings.TRACK_MARKER_CONTAINER_SELECTOR);\n }\n\n /**\n * @return {!MDCSliderFoundation}\n */\n getDefaultFoundation() {\n return new MDCSliderFoundation(\n /** @type {!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: (type, handler) => {\n this.root_.addEventListener(type, handler);\n },\n deregisterInteractionHandler: (type, handler) => {\n this.root_.removeEventListener(type, handler);\n },\n registerThumbContainerInteractionHandler: (type, handler) => {\n this.thumbContainer_.addEventListener(type, handler);\n },\n deregisterThumbContainerInteractionHandler: (type, handler) => {\n this.thumbContainer_.removeEventListener(type, handler);\n },\n registerBodyInteractionHandler: (type, handler) => {\n document.body.addEventListener(type, handler);\n },\n deregisterBodyInteractionHandler: (type, handler) => {\n document.body.removeEventListener(type, handler);\n },\n registerResizeHandler: (handler) => {\n window.addEventListener('resize', handler);\n },\n deregisterResizeHandler: (handler) => {\n window.removeEventListener('resize', handler);\n },\n notifyInput: () => {\n this.emit(strings.INPUT_EVENT, this);\n },\n notifyChange: () => {\n this.emit(strings.CHANGE_EVENT, this);\n },\n setThumbContainerStyleProperty: (propertyName, value) => {\n this.thumbContainer_.style.setProperty(propertyName, value);\n },\n setTrackStyleProperty: (propertyName, value) => {\n this.track_.style.setProperty(propertyName, value);\n },\n setMarkerValue: (value) => {\n this.pinValueMarker_.innerText = value;\n },\n appendTrackMarkers: (numMarkers) => {\n const frag = document.createDocumentFragment();\n for (let i = 0; i < numMarkers; i++) {\n const marker = document.createElement('div');\n marker.classList.add('mdc-slider__track-marker');\n frag.appendChild(marker);\n }\n this.trackMarkerContainer_.appendChild(frag);\n },\n removeTrackMarkers: () => {\n while (this.trackMarkerContainer_.firstChild) {\n this.trackMarkerContainer_.removeChild(this.trackMarkerContainer_.firstChild);\n }\n },\n setLastTrackMarkersStyleProperty: (propertyName, value) => {\n // We remove and append new nodes, thus, the last track marker must be dynamically found.\n const lastTrackMarker = this.root_.querySelector(strings.LAST_TRACK_MARKER_SELECTOR);\n lastTrackMarker.style.setProperty(propertyName, value);\n },\n isRTL: () => getComputedStyle(this.root_).direction === 'rtl',\n })\n );\n }\n\n initialSyncWithDOM() {\n const origValueNow = parseFloat(this.root_.getAttribute(strings.ARIA_VALUENOW));\n const min = parseFloat(this.root_.getAttribute(strings.ARIA_VALUEMIN)) || this.min;\n const max = 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 = parseFloat(this.root_.getAttribute(strings.STEP_DATA_ATTR)) || this.step;\n this.value = origValueNow || this.value;\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 /** @param {number=} amount */\n stepUp(amount = (this.step || 1)) {\n this.value += amount;\n }\n\n /** @param {number=} amount */\n stepDown(amount = (this.step || 1)) {\n this.value -= amount;\n }\n}\n\nexport {MDCSliderFoundation, MDCSlider};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-slider/index.js","/**\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 {cssClasses, strings, numbers} from './constants';\nimport MDCSliderAdapter from './adapter';\n\nimport {getCorrectEventName, getCorrectPropertyName} from '@material/animation/index';\nimport MDCFoundation from '@material/base/foundation';\n\n/** @enum {string} */\nconst KEY_IDS = {\n ARROW_LEFT: 'ArrowLeft',\n ARROW_RIGHT: 'ArrowRight',\n ARROW_UP: 'ArrowUp',\n ARROW_DOWN: 'ArrowDown',\n HOME: 'Home',\n END: 'End',\n PAGE_UP: 'PageUp',\n PAGE_DOWN: 'PageDown',\n};\n\n/** @enum {string} */\nconst MOVE_EVENT_MAP = {\n 'mousedown': 'mousemove',\n 'touchstart': 'touchmove',\n 'pointerdown': 'pointermove',\n};\n\nconst DOWN_EVENTS = ['mousedown', 'pointerdown', 'touchstart'];\nconst UP_EVENTS = ['mouseup', 'pointerup', 'touchend'];\n\n/**\n * @extends {MDCFoundation<!MDCSliderAdapter>}\n */\nclass MDCSliderFoundation extends MDCFoundation {\n /** @return enum {cssClasses} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {strings} */\n static get strings() {\n return strings;\n }\n\n /** @return enum {numbers} */\n static get numbers() {\n return numbers;\n }\n\n /** @return {!MDCSliderAdapter} */\n static get defaultAdapter() {\n return /** @type {!MDCSliderAdapter} */ ({\n hasClass: (/* className: string */) => /* boolean */ false,\n addClass: (/* className: string */) => {},\n removeClass: (/* className: string */) => {},\n getAttribute: (/* name: string */) => /* string|null */ null,\n setAttribute: (/* name: string, value: string */) => {},\n removeAttribute: (/* name: string */) => {},\n computeBoundingRect: () => /* ClientRect */ ({\n top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0,\n }),\n getTabIndex: () => /* number */ 0,\n registerInteractionHandler: (/* type: string, handler: EventListener */) => {},\n deregisterInteractionHandler: (/* type: string, handler: EventListener */) => {},\n registerThumbContainerInteractionHandler: (/* type: string, handler: EventListener */) => {},\n deregisterThumbContainerInteractionHandler: (/* type: string, handler: EventListener */) => {},\n registerBodyInteractionHandler: (/* type: string, handler: EventListener */) => {},\n deregisterBodyInteractionHandler: (/* type: string, handler: EventListener */) => {},\n registerResizeHandler: (/* handler: EventListener */) => {},\n deregisterResizeHandler: (/* handler: EventListener */) => {},\n notifyInput: () => {},\n notifyChange: () => {},\n setThumbContainerStyleProperty: (/* propertyName: string, value: string */) => {},\n setTrackStyleProperty: (/* propertyName: string, value: string */) => {},\n setMarkerValue: (/* value: number */) => {},\n appendTrackMarkers: (/* numMarkers: number */) => {},\n removeTrackMarkers: () => {},\n setLastTrackMarkersStyleProperty: (/* propertyName: string, value: string */) => {},\n isRTL: () => /* boolean */ false,\n });\n }\n\n /**\n * Creates a new instance of MDCSliderFoundation\n * @param {?MDCSliderAdapter} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCSliderFoundation.defaultAdapter, adapter));\n /** @private {?ClientRect} */\n this.rect_ = null;\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 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.updateUIFrame_ = 0;\n this.thumbContainerPointerHandler_ = () => {\n this.handlingThumbTargetEvt_ = true;\n };\n this.interactionStartHandler_ = (evt) => 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 DOWN_EVENTS.forEach((evtName) => this.adapter_.registerInteractionHandler(evtName, this.interactionStartHandler_));\n this.adapter_.registerInteractionHandler('keydown', this.keydownHandler_);\n this.adapter_.registerInteractionHandler('focus', this.focusHandler_);\n this.adapter_.registerInteractionHandler('blur', this.blurHandler_);\n DOWN_EVENTS.forEach((evtName) => {\n this.adapter_.registerThumbContainerInteractionHandler(evtName, this.thumbContainerPointerHandler_);\n });\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\n destroy() {\n DOWN_EVENTS.forEach((evtName) => {\n this.adapter_.deregisterInteractionHandler(evtName, this.interactionStartHandler_);\n });\n this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_);\n this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_);\n this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_);\n DOWN_EVENTS.forEach((evtName) => {\n this.adapter_.deregisterThumbContainerInteractionHandler(evtName, this.thumbContainerPointerHandler_);\n });\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 const flex = getCorrectPropertyName(window, 'flex');\n this.adapter_.setLastTrackMarkersStyleProperty(flex, String(lastStepRatio));\n }\n }\n }\n\n layout() {\n this.rect_ = this.adapter_.computeBoundingRect();\n this.updateUIForCurrentValue_();\n }\n\n /** @return {number} */\n getValue() {\n return this.value_;\n }\n\n /** @param {number} value */\n setValue(value) {\n this.setValue_(value, false);\n }\n\n /** @return {number} */\n getMax() {\n return this.max_;\n }\n\n /** @param {number} max */\n setMax(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(strings.ARIA_VALUEMAX, String(this.max_));\n this.setupTrackMarker();\n }\n\n /** @return {number} */\n getMin() {\n return this.min_;\n }\n\n /** @param {number} min */\n setMin(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(strings.ARIA_VALUEMIN, String(this.min_));\n this.setupTrackMarker();\n }\n\n /** @return {number} */\n getStep() {\n return this.step_;\n }\n\n /** @param {number} step */\n setStep(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\n /** @return {boolean} */\n isDisabled() {\n return this.disabled_;\n }\n\n /** @param {boolean} disabled */\n setDisabled(disabled) {\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 * @param {!Event} evt\n * @private\n */\n handleDown_(evt) {\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 = (evt) => {\n this.handleMove_(evt);\n };\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(MOVE_EVENT_MAP[evt.type], moveHandler);\n UP_EVENTS.forEach((evtName) => this.adapter_.deregisterBodyInteractionHandler(evtName, upHandler));\n };\n\n this.adapter_.registerBodyInteractionHandler(MOVE_EVENT_MAP[evt.type], moveHandler);\n UP_EVENTS.forEach((evtName) => this.adapter_.registerBodyInteractionHandler(evtName, upHandler));\n this.setValueFromEvt_(evt);\n }\n\n /**\n * Called when the user moves the slider\n * @param {!Event} evt\n * @private\n */\n handleMove_(evt) {\n evt.preventDefault();\n this.setValueFromEvt_(evt);\n }\n\n /**\n * Called when the user's interaction with the slider ends\n * @private\n */\n handleUp_() {\n this.setActive_(false);\n this.adapter_.notifyChange();\n }\n\n /**\n * Returns the pageX of the event\n * @param {!Event} evt\n * @return {number}\n * @private\n */\n getPageX_(evt) {\n if (evt.targetTouches && evt.targetTouches.length > 0) {\n return evt.targetTouches[0].pageX;\n }\n return evt.pageX;\n }\n\n /**\n * Sets the slider value from an event\n * @param {!Event} evt\n * @private\n */\n setValueFromEvt_(evt) {\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 * @param {number} pageX\n * @return {number}\n */\n computeValueFromPageX_(pageX) {\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 * @param {!Event} evt\n */\n handleKeydown_(evt) {\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 * @param {!Event} kbdEvt\n * @return {string}\n */\n getKeyId_(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\n return '';\n }\n\n /**\n * Computes the value given a keyboard key ID\n * @param {string} keyId\n * @return {number}\n */\n getValueForKeyId_(keyId) {\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 handleFocus_() {\n if (this.preventFocusState_) {\n return;\n }\n this.adapter_.addClass(cssClasses.FOCUS);\n }\n\n handleBlur_() {\n this.preventFocusState_ = false;\n this.adapter_.removeClass(cssClasses.FOCUS);\n }\n\n /**\n * Sets the value of the slider\n * @param {number} value\n * @param {boolean} shouldFireInput\n * @param {boolean=} force\n */\n setValue_(value, shouldFireInput, 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 * @param {number} value\n * @return {number}\n */\n quantize_(value) {\n const numSteps = Math.round(value / this.step_);\n const quantizedVal = numSteps * this.step_;\n return quantizedVal;\n }\n\n 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');\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 this.updateUIFrame_ = 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 * @param {boolean} active\n */\n setActive_(active) {\n this.active_ = active;\n this.toggleClass_(cssClasses.ACTIVE, this.active_);\n }\n\n /**\n * Toggles the inTransit state of the slider\n * @param {boolean} inTransit\n */\n setInTransit_(inTransit) {\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 * @param {string} className\n * @param {boolean} shouldBePresent\n */\n toggleClass_(className, shouldBePresent) {\n if (shouldBePresent) {\n this.adapter_.addClass(className);\n } else {\n this.adapter_.removeClass(className);\n }\n }\n}\n\nexport default MDCSliderFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-slider/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 MDCSnackbarFoundation from './foundation';\nimport {strings} from './constants';\nimport * as util from './util';\nimport * as ponyfill from '@material/dom/ponyfill';\n\nconst {\n SURFACE_SELECTOR, LABEL_SELECTOR, ACTION_SELECTOR, DISMISS_SELECTOR,\n OPENING_EVENT, OPENED_EVENT, CLOSING_EVENT, CLOSED_EVENT,\n} = strings;\n\nclass MDCSnackbar extends MDCComponent {\n static attachTo(root) {\n return new MDCSnackbar(root);\n }\n\n constructor(...args) {\n super(...args);\n\n /** @type {!HTMLElement} */\n this.surfaceEl_;\n\n /** @type {!HTMLElement} */\n this.labelEl_;\n\n /** @type {!HTMLElement} */\n this.actionEl_;\n\n /** @type {function(!HTMLElement, !HTMLElement=): void} */\n this.announce_;\n\n /** @private {!Function} */\n this.handleKeyDown_;\n\n /** @private {!Function} */\n this.handleSurfaceClick_;\n }\n\n /**\n * @param {function(): function(!HTMLElement, !HTMLElement=):void} announceFactory\n */\n initialize(announceFactory = () => util.announce) {\n this.announce_ = announceFactory();\n }\n\n initialSyncWithDOM() {\n this.surfaceEl_ = /** @type {!HTMLElement} */ (this.root_.querySelector(SURFACE_SELECTOR));\n this.labelEl_ = /** @type {!HTMLElement} */ (this.root_.querySelector(LABEL_SELECTOR));\n this.actionEl_ = /** @type {!HTMLElement} */ (this.root_.querySelector(ACTION_SELECTOR));\n\n this.handleKeyDown_ = (evt) => this.foundation_.handleKeyDown(evt);\n this.handleSurfaceClick_ = (evt) => {\n if (this.isActionButton_(evt.target)) {\n this.foundation_.handleActionButtonClick(evt);\n } else if (this.isActionIcon_(evt.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 {string=} 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 /**\n * @return {!MDCSnackbarFoundation}\n */\n getDefaultFoundation() {\n /* eslint brace-style: \"off\" */\n return new MDCSnackbarFoundation({\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n announce: () => this.announce_(this.labelEl_),\n notifyOpening: () => this.emit(OPENING_EVENT, {}),\n notifyOpened: () => this.emit(OPENED_EVENT, {}),\n notifyClosing: (reason) => this.emit(CLOSING_EVENT, reason ? {reason} : {}),\n notifyClosed: (reason) => this.emit(CLOSED_EVENT, reason ? {reason} : {}),\n });\n }\n\n /**\n * @return {number}\n */\n get timeoutMs() {\n return this.foundation_.getTimeoutMs();\n }\n\n /**\n * @param {number} timeoutMs\n */\n set timeoutMs(timeoutMs) {\n this.foundation_.setTimeoutMs(timeoutMs);\n }\n\n /**\n * @return {boolean}\n */\n get closeOnEscape() {\n return this.foundation_.getCloseOnEscape();\n }\n\n /**\n * @param {boolean} closeOnEscape\n */\n set closeOnEscape(closeOnEscape) {\n this.foundation_.setCloseOnEscape(closeOnEscape);\n }\n\n /**\n * @return {boolean}\n */\n get isOpen() {\n return this.foundation_.isOpen();\n }\n\n /**\n * @return {string}\n */\n get labelText() {\n return this.labelEl_.textContent;\n }\n\n /**\n * @param {string} labelText\n */\n set labelText(labelText) {\n this.labelEl_.textContent = labelText;\n }\n\n /**\n * @return {string}\n */\n get actionButtonText() {\n return this.actionEl_.textContent;\n }\n\n /**\n * @param {string} actionButtonText\n */\n set actionButtonText(actionButtonText) {\n this.actionEl_.textContent = actionButtonText;\n }\n\n /**\n * @param {!Function} handler\n * @private\n */\n registerKeyDownHandler_(handler) {\n this.listen('keydown', handler);\n }\n\n /**\n * @param {!Function} handler\n * @private\n */\n deregisterKeyDownHandler_(handler) {\n this.unlisten('keydown', handler);\n }\n\n /**\n * @param {!Function} handler\n * @private\n */\n registerSurfaceClickHandler_(handler) {\n this.surfaceEl_.addEventListener('click', handler);\n }\n\n /**\n * @param {!Function} handler\n * @private\n */\n deregisterSurfaceClickHandler_(handler) {\n this.surfaceEl_.removeEventListener('click', handler);\n }\n\n /**\n * @param {!Element} target\n * @return {boolean}\n * @private\n */\n isActionButton_(target) {\n return Boolean(ponyfill.closest(target, ACTION_SELECTOR));\n }\n\n /**\n * @param {!Element} target\n * @return {boolean}\n * @private\n */\n isActionIcon_(target) {\n return Boolean(ponyfill.closest(target, DISMISS_SELECTOR));\n }\n}\n\nexport {MDCSnackbar, MDCSnackbarFoundation, util};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-snackbar/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [\"error\", {\"argsIgnorePattern\": \"evt\", \"varsIgnorePattern\": \"Adapter$\"}] */\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\nclass MDCSnackbarFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n /**\n * @return {!MDCSnackbarAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCSnackbarAdapter} */ ({\n addClass: (/* className: string */) => {},\n removeClass: (/* className: string */) => {},\n announce: () => {},\n notifyOpening: () => {},\n notifyOpened: () => {},\n notifyClosing: (/* reason: string */) => {},\n notifyClosed: (/* reason: string */) => {},\n });\n }\n\n /**\n * @param {!MDCSnackbarAdapter=} adapter\n */\n constructor(adapter) {\n super(Object.assign(MDCSnackbarFoundation.defaultAdapter, adapter));\n\n /** @private {boolean} */\n this.isOpen_ = false;\n\n /** @private {number} */\n this.animationFrame_ = 0;\n\n /** @private {number} */\n this.animationTimer_ = 0;\n\n /** @private {number} */\n this.autoDismissTimer_ = 0;\n\n /** @private {number} */\n this.autoDismissTimeoutMs_ = numbers.DEFAULT_AUTO_DISMISS_TIMEOUT_MS;\n\n /** @private {boolean} */\n this.closeOnEscape_ = true;\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 {string=} 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 /**\n * @return {boolean}\n */\n isOpen() {\n return this.isOpen_;\n }\n\n /**\n * @return {number}\n */\n getTimeoutMs() {\n return this.autoDismissTimeoutMs_;\n }\n\n /**\n * @param {number} timeoutMs\n */\n setTimeoutMs(timeoutMs) {\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 /**\n * @return {boolean}\n */\n getCloseOnEscape() {\n return this.closeOnEscape_;\n }\n\n /**\n * @param {boolean} closeOnEscape\n */\n setCloseOnEscape(closeOnEscape) {\n this.closeOnEscape_ = closeOnEscape;\n }\n\n /**\n * @param {!KeyboardEvent} evt\n */\n handleKeyDown(evt) {\n if (this.getCloseOnEscape() && (evt.key === 'Escape' || evt.keyCode === 27)) {\n this.close(REASON_DISMISS);\n }\n }\n\n /**\n * @param {!MouseEvent} evt\n */\n handleActionButtonClick(evt) {\n this.close(REASON_ACTION);\n }\n\n /**\n * @param {!MouseEvent} evt\n */\n handleActionIconClick(evt) {\n this.close(REASON_DISMISS);\n }\n\n /** @private */\n clearAutoDismissTimer_() {\n clearTimeout(this.autoDismissTimer_);\n this.autoDismissTimer_ = 0;\n }\n\n /** @private */\n 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 * @param {Function} callback\n * @private\n */\n runNextAnimationFrame_(callback) {\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\nexport default MDCSnackbarFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-snackbar/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Snackbar. Provides an interface for managing:\n * - CSS classes\n * - Event handlers\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nclass MDCSnackbarAdapter {\n /** @param {string} className */\n addClass(className) {}\n\n /** @param {string} className */\n removeClass(className) {}\n\n announce() {}\n\n notifyOpening() {}\n notifyOpened() {}\n\n /**\n * @param {string} reason\n */\n notifyClosing(reason) {}\n\n /**\n * @param {string} reason\n */\n notifyClosed(reason) {}\n}\n\nexport default MDCSnackbarAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-snackbar/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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\n/**\n * @param {!HTMLElement} ariaEl\n * @param {!HTMLElement=} labelEl\n */\nfunction announce(ariaEl, labelEl = ariaEl) {\n const priority = ariaEl.getAttribute('aria-live');\n const labelText = labelEl.textContent.trim(); // Ignore ` ` (see below)\n if (!labelText) {\n return;\n }\n\n // Temporarily disable `aria-live` to prevent JAWS+Firefox from announcing the message twice.\n ariaEl.setAttribute('aria-live', 'off');\n\n // Temporarily clear `textContent` to force a DOM mutation event that will be detected by screen readers.\n // `aria-live` elements are only announced when the element's `textContent` *changes*, so snackbars\n // sent to the browser in the initial HTML response won't be read unless we clear the element's `textContent` first.\n // Similarly, displaying the same snackbar message twice in a row doesn't trigger a DOM mutation event,\n // so screen readers won't announce the second message unless we first clear `textContent`.\n //\n // We have to clear the label text two different ways to make it work in all browsers and screen readers:\n //\n // 1. `textContent = ''` is required for IE11 + JAWS\n // 2. `innerHTML = ' '` is required for Chrome + JAWS and NVDA\n //\n // All other browser/screen reader combinations support both methods.\n //\n // The wrapper `<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;\"> </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.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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/* eslint-disable no-unused-vars */\nimport {MDCSelectionControlState, MDCSelectionControl} from '@material/selection-control/index';\n/* eslint-enable no-unused-vars */\nimport MDCSwitchFoundation from './foundation';\nimport {MDCRipple, MDCRippleFoundation} from '@material/ripple/index';\nimport {getMatchesProperty} from '@material/ripple/util';\n\n/**\n * @extends MDCComponent<!MDCSwitchFoundation>\n * @implements {MDCSelectionControl}\n */\nclass MDCSwitch extends MDCComponent {\n static attachTo(root) {\n return new MDCSwitch(root);\n }\n\n constructor(...args) {\n super(...args);\n\n /** @private {!MDCRipple} */\n this.ripple_ = this.initRipple_();\n\n /** @private {!Function} */\n this.changeHandler_;\n }\n\n destroy() {\n super.destroy();\n this.ripple_.destroy();\n this.nativeControl_.removeEventListener('change', this.changeHandler_);\n }\n\n initialSyncWithDOM() {\n this.changeHandler_ = this.foundation_.handleChange.bind(this.foundation_);\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 /**\n * Returns the state of the native control element, or null if the native control element is not present.\n * @return {?MDCSelectionControlState}\n * @private\n */\n get nativeControl_() {\n const {NATIVE_CONTROL_SELECTOR} = MDCSwitchFoundation.strings;\n const el = /** @type {?MDCSelectionControlState} */ (\n this.root_.querySelector(NATIVE_CONTROL_SELECTOR));\n return el;\n }\n\n /**\n * @return {!MDCRipple}\n * @private\n */\n initRipple_() {\n const {RIPPLE_SURFACE_SELECTOR} = MDCSwitchFoundation.strings;\n const rippleSurface = /** @type {!Element} */ (this.root_.querySelector(RIPPLE_SURFACE_SELECTOR));\n\n const MATCHES = getMatchesProperty(HTMLElement.prototype);\n const adapter = Object.assign(MDCRipple.createAdapter(this), {\n isUnbounded: () => true,\n isSurfaceActive: () => this.nativeControl_[MATCHES](':active'),\n addClass: (className) => rippleSurface.classList.add(className),\n removeClass: (className) => rippleSurface.classList.remove(className),\n registerInteractionHandler: (type, handler) => this.nativeControl_.addEventListener(type, handler),\n deregisterInteractionHandler: (type, handler) => this.nativeControl_.removeEventListener(type, handler),\n updateCssVariable: (varName, value) => rippleSurface.style.setProperty(varName, value),\n computeBoundingRect: () => rippleSurface.getBoundingClientRect(),\n });\n const foundation = new MDCRippleFoundation(adapter);\n return new MDCRipple(this.root_, foundation);\n }\n\n /** @return {!MDCSwitchFoundation} */\n getDefaultFoundation() {\n return new MDCSwitchFoundation({\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 }\n\n /** @return {!MDCRipple} */\n get ripple() {\n return this.ripple_;\n }\n\n /** @return {boolean} */\n get checked() {\n return this.nativeControl_.checked;\n }\n\n /** @param {boolean} checked */\n set checked(checked) {\n this.foundation_.setChecked(checked);\n }\n\n /** @return {boolean} */\n get disabled() {\n return this.nativeControl_.disabled;\n }\n\n /** @param {boolean} disabled */\n set disabled(disabled) {\n this.foundation_.setDisabled(disabled);\n }\n}\n\nexport {MDCSwitchFoundation, MDCSwitch};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-switch/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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';\n/* eslint-enable no-unused-vars */\nimport {cssClasses, strings} from './constants';\n\n/**\n * @extends {MDCFoundation<!MDCSwitchAdapter>}\n */\nclass MDCSwitchFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return {!MDCSwitchAdapter} */\n static get defaultAdapter() {\n return /** @type {!MDCSwitchAdapter} */ ({\n addClass: (/* className: string */) => {},\n removeClass: (/* className: string */) => {},\n setNativeControlChecked: (/* checked: boolean */) => {},\n setNativeControlDisabled: (/* disabled: boolean */) => {},\n });\n }\n\n constructor(adapter) {\n super(Object.assign(MDCSwitchFoundation.defaultAdapter, adapter));\n }\n\n /** @param {boolean} checked */\n setChecked(checked) {\n this.adapter_.setNativeControlChecked(checked);\n this.updateCheckedStyling_(checked);\n }\n\n /** @param {boolean} disabled */\n setDisabled(disabled) {\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 change event for the switch native control.\n * @param {!Event} evt\n */\n handleChange(evt) {\n this.updateCheckedStyling_(evt.target.checked);\n }\n\n /**\n * Updates the styling of the switch based on its checked state.\n * @param {boolean} checked\n * @private\n */\n updateCheckedStyling_(checked) {\n if (checked) {\n this.adapter_.addClass(cssClasses.CHECKED);\n } else {\n this.adapter_.removeClass(cssClasses.CHECKED);\n }\n }\n}\n\nexport default MDCSwitchFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-switch/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Switch. Provides an interface for managing\n * - classes\n * - dom\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nclass MDCSwitchAdapter {\n /** @param {string} className */\n addClass(className) {}\n\n /** @param {string} className */\n removeClass(className) {}\n\n /** @param {boolean} checked */\n setNativeControlChecked(checked) {}\n\n /** @param {boolean} disabled */\n setNativeControlDisabled(disabled) {}\n}\n\nexport default MDCSwitchAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-switch/adapter.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\nconst cssClasses = {\n CHECKED: 'mdc-switch--checked',\n DISABLED: 'mdc-switch--disabled',\n};\n\n/** @enum {string} */\nconst strings = {\n NATIVE_CONTROL_SELECTOR: '.mdc-switch__native-control',\n RIPPLE_SURFACE_SELECTOR: '.mdc-switch__thumb-underlay',\n};\n\n\nexport {cssClasses, strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-switch/constants.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\nconst cssClasses = {\n ACTIVE: 'mdc-tab-indicator--active',\n FADE: 'mdc-tab-indicator--fade',\n NO_TRANSITION: 'mdc-tab-indicator--no-transition',\n};\n\n/** @enum {string} */\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.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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/**\n * @extends {MDCTabIndicatorFoundation}\n * @final\n */\nclass MDCSlidingTabIndicatorFoundation extends MDCTabIndicatorFoundation {\n /** @param {!ClientRect=} previousIndicatorClientRect */\n activate(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(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\nexport default MDCSlidingTabIndicatorFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/sliding-foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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/**\n * @extends {MDCTabIndicatorFoundation}\n * @final\n */\nclass 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\nexport default MDCFadingTabIndicatorFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-indicator/fading-foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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';\n\n/* eslint-disable no-unused-vars */\nimport {MDCTabAdapter, MDCTabDimensions} from './adapter';\n/* eslint-enable no-unused-vars */\n\nimport {\n cssClasses,\n strings,\n} from './constants';\n\n/**\n * @extends {MDCFoundation<!MDCTabAdapter>}\n * @final\n */\nclass MDCTabFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /**\n * @see MDCTabAdapter for typing information\n * @return {!MDCTabAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCTabAdapter} */ ({\n addClass: () => {},\n removeClass: () => {},\n hasClass: () => {},\n setAttr: () => {},\n activateIndicator: () => {},\n deactivateIndicator: () => {},\n notifyInteracted: () => {},\n getOffsetLeft: () => {},\n getOffsetWidth: () => {},\n getContentOffsetLeft: () => {},\n getContentOffsetWidth: () => {},\n focus: () => {},\n });\n }\n\n /** @param {!MDCTabAdapter} adapter */\n constructor(adapter) {\n super(Object.assign(MDCTabFoundation.defaultAdapter, adapter));\n\n /** @private {boolean} */\n this.focusOnActivate_ = true;\n }\n\n /**\n * Handles the \"click\" event\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 /**\n * Returns the Tab's active state\n * @return {boolean}\n */\n isActive() {\n return this.adapter_.hasClass(cssClasses.ACTIVE);\n }\n\n /**\n * Sets whether the tab should focus itself when activated\n * @param {boolean} focusOnActivate\n */\n setFocusOnActivate(focusOnActivate) {\n this.focusOnActivate_ = focusOnActivate;\n }\n\n /**\n * Activates the Tab\n * @param {!ClientRect=} previousIndicatorClientRect\n */\n activate(previousIndicatorClientRect) {\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 * @return {!MDCTabDimensions}\n */\n computeDimensions() {\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 rootLeft,\n rootRight: rootLeft + rootWidth,\n contentLeft: rootLeft + contentLeft,\n contentRight: rootLeft + contentLeft + contentWidth,\n };\n }\n}\n\nexport default MDCTabFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\nconst cssClasses = {\n ACTIVE: 'mdc-tab--active',\n};\n\n/** @enum {string} */\nconst strings = {\n ARIA_SELECTED: 'aria-selected',\n RIPPLE_SELECTOR: '.mdc-tab__ripple',\n CONTENT_SELECTOR: '.mdc-tab__content',\n TAB_INDICATOR_SELECTOR: '.mdc-tab-indicator',\n TABINDEX: 'tabIndex',\n INTERACTED_EVENT: 'MDCTab:interacted',\n};\n\nexport {\n cssClasses,\n strings,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab/constants.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 {MDCTab, MDCTabFoundation} from '@material/tab/index';\nimport {MDCTabScroller} from '@material/tab-scroller/index';\n\nimport MDCTabBarAdapter from './adapter';\nimport MDCTabBarFoundation from './foundation';\n\nlet tabIdCounter = 0;\n\n/**\n * @extends {MDCComponent<!MDCTabBarFoundation>}\n * @final\n */\nclass MDCTabBar extends MDCComponent {\n /**\n * @param {...?} args\n */\n constructor(...args) {\n super(...args);\n\n /** @private {!Array<!MDCTab>} */\n this.tabList_;\n\n /** @private {?MDCTabScroller} */\n this.tabScroller_;\n\n /** @private {?function(?Event): undefined} */\n this.handleTabInteraction_;\n\n /** @private {?function(?Event): undefined} */\n this.handleKeyDown_;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCTabBar}\n */\n static attachTo(root) {\n return new MDCTabBar(root);\n }\n\n set focusOnActivate(focusOnActivate) {\n this.tabList_.forEach((tab) => tab.focusOnActivate = focusOnActivate);\n }\n\n set useAutomaticActivation(useAutomaticActivation) {\n this.foundation_.setUseAutomaticActivation(useAutomaticActivation);\n }\n\n /**\n * @param {(function(!Element): !MDCTab)=} tabFactory A function which creates a new MDCTab\n * @param {(function(!Element): !MDCTabScroller)=} tabScrollerFactory A function which creates a new MDCTabScroller\n */\n initialize(\n tabFactory = (el) => new MDCTab(el),\n tabScrollerFactory = (el) => new MDCTabScroller(el)) {\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.root_.addEventListener(MDCTabFoundation.strings.INTERACTED_EVENT, this.handleTabInteraction_);\n this.root_.addEventListener('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.root_.removeEventListener(MDCTabFoundation.strings.INTERACTED_EVENT, this.handleTabInteraction_);\n this.root_.removeEventListener('keydown', this.handleKeyDown_);\n this.tabList_.forEach((tab) => tab.destroy());\n this.tabScroller_.destroy();\n }\n\n /**\n * @return {!MDCTabBarFoundation}\n */\n getDefaultFoundation() {\n return new MDCTabBarFoundation(\n /** @type {!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_.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) => this.emit(MDCTabBarFoundation.strings.TAB_ACTIVATED_EVENT, {index}, true),\n })\n );\n }\n\n /**\n * Activates the tab at the given index\n * @param {number} index The index of the tab\n */\n activateTab(index) {\n this.foundation_.activateTab(index);\n }\n\n /**\n * Scrolls the tab at the given index into view\n * @param {number} index THe index of the tab\n */\n scrollIntoView(index) {\n this.foundation_.scrollIntoView(index);\n }\n\n /**\n * Returns all the tab elements in a nice clean array\n * @return {!Array<!Element>}\n * @private\n */\n getTabElements_() {\n return [].slice.call(this.root_.querySelectorAll(MDCTabBarFoundation.strings.TAB_SELECTOR));\n }\n\n /**\n * Instantiates tab components on all child tab elements\n * @param {(function(!Element): !MDCTab)} tabFactory\n * @return {!Array<!MDCTab>}\n * @private\n */\n instantiateTabs_(tabFactory) {\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 * @param {(function(!Element): !MDCTabScroller)} tabScrollerFactory\n * @return {?MDCTabScroller}\n * @private\n */\n instantiateTabScroller_(tabScrollerFactory) {\n const tabScrollerElement = this.root_.querySelector(MDCTabBarFoundation.strings.TAB_SCROLLER_SELECTOR);\n if (tabScrollerElement) {\n return tabScrollerFactory(tabScrollerElement);\n }\n return null;\n }\n}\n\nexport {MDCTabBar, MDCTabBarFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-bar/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 {cssClasses, strings} from './constants';\n/* eslint-disable no-unused-vars */\nimport {MDCTabScrollerAnimation, MDCTabScrollerHorizontalEdges, MDCTabScrollerAdapter} from './adapter';\nimport MDCTabScrollerRTL from './rtl-scroller';\n/* eslint-enable no-unused-vars */\nimport MDCTabScrollerRTLDefault from './rtl-default-scroller';\nimport MDCTabScrollerRTLNegative from './rtl-negative-scroller';\nimport MDCTabScrollerRTLReverse from './rtl-reverse-scroller';\n\n/**\n * @extends {MDCFoundation<!MDCTabScrollerAdapter>}\n * @final\n */\nclass MDCTabScrollerFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /**\n * @see MDCTabScrollerAdapter for typing information\n * @return {!MDCTabScrollerAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCTabScrollerAdapter} */ ({\n eventTargetMatchesSelector: () => {},\n addClass: () => {},\n removeClass: () => {},\n addScrollAreaClass: () => {},\n setScrollAreaStyleProperty: () => {},\n setScrollContentStyleProperty: () => {},\n getScrollContentStyleValue: () => {},\n setScrollAreaScrollLeft: () => {},\n getScrollAreaScrollLeft: () => {},\n getScrollContentOffsetWidth: () => {},\n getScrollAreaOffsetWidth: () => {},\n computeScrollAreaClientRect: () => {},\n computeScrollContentClientRect: () => {},\n computeHorizontalScrollbarHeight: () => {},\n });\n }\n\n /** @param {!MDCTabScrollerAdapter} adapter */\n constructor(adapter) {\n super(Object.assign(MDCTabScrollerFoundation.defaultAdapter, adapter));\n\n /**\n * This boolean controls whether we should handle the transitionend and interaction events during the animation.\n * @private {boolean}\n */\n this.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 * @private {?MDCTabScrollerRTL}\n */\n this.rtlScrollerInstance_;\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 * @return {number}\n */\n getScrollPosition() {\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 * @param {!Event} evt\n */\n handleTransitionEnd(evt) {\n // Early exit if we aren't animating or the event was triggered by a different element.\n if (!this.isAnimating_\n || !this.adapter_.eventTargetMatchesSelector(evt.target, 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 {number} scrollXIncrement The value by which to increment the scroll position\n */\n incrementScroll(scrollXIncrement) {\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 * @param {number} scrollX\n */\n scrollTo(scrollX) {\n if (this.isRTL_()) {\n return this.scrollToRTL_(scrollX);\n }\n\n this.scrollTo_(scrollX);\n }\n\n /**\n * Returns the appropriate version of the MDCTabScrollerRTL\n * @return {!MDCTabScrollerRTL}\n */\n getRTLScroller() {\n if (!this.rtlScrollerInstance_) {\n this.rtlScrollerInstance_ = this.rtlScrollerFactory_();\n }\n\n return this.rtlScrollerInstance_;\n }\n\n /**\n * Returns the translateX value from a CSS matrix transform function string\n * @return {number}\n * @private\n */\n calculateCurrentTranslateX_() {\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 results = /\\((.+)\\)/.exec(transformValue)[1];\n const parts = results.split(',');\n return parseFloat(parts[4]);\n }\n\n /**\n * Calculates a safe scroll value that is > 0 and < the max scroll value\n * @param {number} scrollX The distance to scroll\n * @return {number}\n * @private\n */\n clampScrollValue_(scrollX) {\n const edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.left, scrollX), edges.right);\n }\n\n /**\n * @return {number}\n * @private\n */\n computeCurrentScrollPositionRTL_() {\n const translateX = this.calculateCurrentTranslateX_();\n return this.getRTLScroller().getScrollPositionRTL(translateX);\n }\n\n /**\n * @return {!MDCTabScrollerHorizontalEdges}\n * @private\n */\n calculateScrollEdges_() {\n const contentWidth = this.adapter_.getScrollContentOffsetWidth();\n const rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return /** @type {!MDCTabScrollerHorizontalEdges} */ ({\n left: 0,\n right: contentWidth - rootWidth,\n });\n }\n\n /**\n * Internal scroll method\n * @param {number} scrollX The new scroll position\n * @private\n */\n scrollTo_(scrollX) {\n const currentScrollX = this.getScrollPosition();\n const safeScrollX = this.clampScrollValue_(scrollX);\n const scrollDelta = safeScrollX - currentScrollX;\n this.animate_(/** @type {!MDCTabScrollerAnimation} */ ({\n finalScrollPosition: safeScrollX,\n scrollDelta: scrollDelta,\n }));\n }\n\n /**\n * Internal RTL scroll method\n * @param {number} scrollX The new scroll position\n * @private\n */\n scrollToRTL_(scrollX) {\n const animation = this.getRTLScroller().scrollToRTL(scrollX);\n this.animate_(animation);\n }\n\n /**\n * Internal increment scroll method\n * @param {number} scrollX The new scroll position increment\n * @private\n */\n incrementScroll_(scrollX) {\n const currentScrollX = this.getScrollPosition();\n const targetScrollX = scrollX + currentScrollX;\n const safeScrollX = this.clampScrollValue_(targetScrollX);\n const scrollDelta = safeScrollX - currentScrollX;\n this.animate_(/** @type {!MDCTabScrollerAnimation} */ ({\n finalScrollPosition: safeScrollX,\n scrollDelta: scrollDelta,\n }));\n }\n\n /**\n * Internal incremenet scroll RTL method\n * @param {number} scrollX The new scroll position RTL increment\n * @private\n */\n incrementScrollRTL_(scrollX) {\n const animation = this.getRTLScroller().incrementScrollRTL(scrollX);\n this.animate_(animation);\n }\n\n /**\n * Animates the tab scrolling\n * @param {!MDCTabScrollerAnimation} animation The animation to apply\n * @private\n */\n animate_(animation) {\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 * @private\n */\n 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 * @return {number}\n * @private\n */\n getAnimatingScrollPosition_() {\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 * @return {!MDCTabScrollerRTL}\n * @private\n */\n rtlScrollerFactory_() {\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 /**\n * @return {boolean}\n * @private\n */\n isRTL_() {\n return this.adapter_.getScrollContentStyleValue('direction') === 'rtl';\n }\n}\n\nexport default MDCTabScrollerFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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';\n\n/* eslint-disable no-unused-vars */\nimport {MDCTabScrollerAnimation, MDCTabScrollerHorizontalEdges} from './adapter';\n/* eslint-enable no-unused-vars */\n\n/**\n * @extends {MDCTabScrollerRTL}\n * @final\n */\nclass MDCTabScrollerRTLDefault extends MDCTabScrollerRTL {\n /**\n * @return {number}\n */\n getScrollPositionRTL() {\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 /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n */\n scrollToRTL(scrollX) {\n const edges = this.calculateScrollEdges_();\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n const clampedScrollLeft = this.clampScrollValue_(edges.right - scrollX);\n return /** @type {!MDCTabScrollerAnimation} */ ({\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft,\n });\n }\n\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n */\n incrementScrollRTL(scrollX) {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n const clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);\n return /** @type {!MDCTabScrollerAnimation} */ ({\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft,\n });\n }\n\n /**\n * @param {number} scrollX\n * @return {number}\n */\n getAnimatingScrollPosition(scrollX) {\n return scrollX;\n }\n\n /**\n * @return {!MDCTabScrollerHorizontalEdges}\n * @private\n */\n calculateScrollEdges_() {\n const contentWidth = this.adapter_.getScrollContentOffsetWidth();\n const rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return /** @type {!MDCTabScrollerHorizontalEdges} */ ({\n left: 0,\n right: contentWidth - rootWidth,\n });\n }\n\n /**\n * @param {number} scrollX\n * @return {number}\n * @private\n */\n clampScrollValue_(scrollX) {\n const edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.left, scrollX), edges.right);\n }\n}\n\nexport default MDCTabScrollerRTLDefault;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/rtl-default-scroller.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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';\n\n/* eslint-disable no-unused-vars */\nimport {MDCTabScrollerAnimation, MDCTabScrollerHorizontalEdges} from './adapter';\n/* eslint-enable no-unused-vars */\n\n/**\n * @extends {MDCTabScrollerRTL}\n * @final\n */\nclass MDCTabScrollerRTLNegative extends MDCTabScrollerRTL {\n /**\n * @param {number} translateX The current translateX position\n * @return {number}\n */\n getScrollPositionRTL(translateX) {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n return Math.round(translateX - currentScrollLeft);\n }\n\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n */\n scrollToRTL(scrollX) {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n const clampedScrollLeft = this.clampScrollValue_(-scrollX);\n return /** @type {!MDCTabScrollerAnimation} */ ({\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft,\n });\n }\n\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n */\n incrementScrollRTL(scrollX) {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n const clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);\n return /** @type {!MDCTabScrollerAnimation} */ ({\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft,\n });\n }\n\n /**\n * @param {number} scrollX\n * @param {number} translateX\n * @return {number}\n */\n getAnimatingScrollPosition(scrollX, translateX) {\n return scrollX - translateX;\n }\n\n /**\n * @return {!MDCTabScrollerHorizontalEdges}\n * @private\n */\n calculateScrollEdges_() {\n const contentWidth = this.adapter_.getScrollContentOffsetWidth();\n const rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return /** @type {!MDCTabScrollerHorizontalEdges} */ ({\n left: rootWidth - contentWidth,\n right: 0,\n });\n }\n\n /**\n * @param {number} scrollX\n * @return {number}\n * @private\n */\n clampScrollValue_(scrollX) {\n const edges = this.calculateScrollEdges_();\n return Math.max(Math.min(edges.right, scrollX), edges.left);\n }\n}\n\nexport default MDCTabScrollerRTLNegative;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/rtl-negative-scroller.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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';\n\n/* eslint-disable no-unused-vars */\nimport {MDCTabScrollerAnimation, MDCTabScrollerHorizontalEdges} from './adapter';\n/* eslint-enable no-unused-vars */\n\n/**\n * @extends {MDCTabScrollerRTL}\n * @final\n */\nclass MDCTabScrollerRTLReverse extends MDCTabScrollerRTL {\n /**\n * @param {number} translateX\n * @return {number}\n */\n getScrollPositionRTL(translateX) {\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 /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n */\n scrollToRTL(scrollX) {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n const clampedScrollLeft = this.clampScrollValue_(scrollX);\n return /** @type {!MDCTabScrollerAnimation} */ ({\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: currentScrollLeft - clampedScrollLeft,\n });\n }\n\n /**\n * @param {number} scrollX\n * @return {!MDCTabScrollerAnimation}\n */\n incrementScrollRTL(scrollX) {\n const currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();\n const clampedScrollLeft = this.clampScrollValue_(currentScrollLeft + scrollX);\n return /** @type {!MDCTabScrollerAnimation} */ ({\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: currentScrollLeft - clampedScrollLeft,\n });\n }\n\n /**\n * @param {number} scrollX\n * @return {number}\n */\n getAnimatingScrollPosition(scrollX, translateX) {\n return scrollX + translateX;\n }\n\n /**\n * @return {!MDCTabScrollerHorizontalEdges}\n * @private\n */\n calculateScrollEdges_() {\n const contentWidth = this.adapter_.getScrollContentOffsetWidth();\n const rootWidth = this.adapter_.getScrollAreaOffsetWidth();\n return /** @type {!MDCTabScrollerHorizontalEdges} */ ({\n left: contentWidth - rootWidth,\n right: 0,\n });\n }\n\n /**\n * @param {number} scrollX\n * @return {number}\n * @private\n */\n clampScrollValue_(scrollX) {\n const edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.right, scrollX), edges.left);\n }\n}\n\nexport default MDCTabScrollerRTLReverse;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/rtl-reverse-scroller.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 * @private {number|undefined}\n */\nlet horizontalScrollbarHeight_;\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 * @param {!Document} documentObj\n * @param {boolean=} shouldCacheResult\n * @return {number}\n */\nfunction computeHorizontalScrollbarHeight(documentObj, shouldCacheResult = true) {\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 * @param {!Object} HTMLElementPrototype\n * @return {string}\n */\nfunction getMatchesProperty(HTMLElementPrototype) {\n return [\n 'msMatchesSelector', 'matches',\n ].filter((p) => p in HTMLElementPrototype).pop();\n}\n\nexport {computeHorizontalScrollbarHeight, getMatchesProperty};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-scroller/util.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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';\n\nimport {strings, numbers} from './constants';\nimport MDCTabBarAdapter from './adapter';\n\n/* eslint-disable no-unused-vars */\nimport {MDCTabDimensions} from '@material/tab/adapter';\n/* eslint-enable no-unused-vars */\n\n/**\n * @type {Set<string>}\n */\nconst ACCEPTABLE_KEYS = new Set();\n// IE11 has no support for new Set with iterable so we need to initialize this by hand\nACCEPTABLE_KEYS.add(strings.ARROW_LEFT_KEY);\nACCEPTABLE_KEYS.add(strings.ARROW_RIGHT_KEY);\nACCEPTABLE_KEYS.add(strings.END_KEY);\nACCEPTABLE_KEYS.add(strings.HOME_KEY);\nACCEPTABLE_KEYS.add(strings.ENTER_KEY);\nACCEPTABLE_KEYS.add(strings.SPACE_KEY);\n\n/**\n * @type {Map<number, string>}\n */\nconst KEYCODE_MAP = new Map();\n// IE11 has no support for new Map with iterable so we need to initialize this by hand\nKEYCODE_MAP.set(numbers.ARROW_LEFT_KEYCODE, strings.ARROW_LEFT_KEY);\nKEYCODE_MAP.set(numbers.ARROW_RIGHT_KEYCODE, strings.ARROW_RIGHT_KEY);\nKEYCODE_MAP.set(numbers.END_KEYCODE, strings.END_KEY);\nKEYCODE_MAP.set(numbers.HOME_KEYCODE, strings.HOME_KEY);\nKEYCODE_MAP.set(numbers.ENTER_KEYCODE, strings.ENTER_KEY);\nKEYCODE_MAP.set(numbers.SPACE_KEYCODE, strings.SPACE_KEY);\n\n/**\n * @extends {MDCFoundation<!MDCTabBarAdapter>}\n * @final\n */\nclass MDCTabBarFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /** @return enum {number} */\n static get numbers() {\n return numbers;\n }\n\n /**\n * @see MDCTabBarAdapter for typing information\n * @return {!MDCTabBarAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCTabBarAdapter} */ ({\n scrollTo: () => {},\n incrementScroll: () => {},\n getScrollPosition: () => {},\n getScrollContentWidth: () => {},\n getOffsetWidth: () => {},\n isRTL: () => {},\n setActiveTab: () => {},\n activateTabAtIndex: () => {},\n deactivateTabAtIndex: () => {},\n focusTabAtIndex: () => {},\n getTabIndicatorClientRectAtIndex: () => {},\n getTabDimensionsAtIndex: () => {},\n getPreviousActiveTabIndex: () => {},\n getFocusedTabIndex: () => {},\n getIndexOfTabById: () => {},\n getTabListLength: () => {},\n notifyTabActivated: () => {},\n });\n }\n\n /**\n * @param {!MDCTabBarAdapter} adapter\n * */\n constructor(adapter) {\n super(Object.assign(MDCTabBarFoundation.defaultAdapter, adapter));\n\n /** @private {boolean} */\n this.useAutomaticActivation_ = false;\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 * @param {boolean} useAutomaticActivation\n */\n setUseAutomaticActivation(useAutomaticActivation) {\n this.useAutomaticActivation_ = useAutomaticActivation;\n }\n\n /**\n * Activates the tab at the given index\n * @param {number} index\n */\n activateTab(index) {\n const previousActiveIndex = this.adapter_.getPreviousActiveTabIndex();\n if (!this.indexIsInRange_(index) || index === previousActiveIndex) {\n return;\n }\n\n this.adapter_.deactivateTabAtIndex(previousActiveIndex);\n this.adapter_.activateTabAtIndex(index, this.adapter_.getTabIndicatorClientRectAtIndex(previousActiveIndex));\n this.scrollIntoView(index);\n\n this.adapter_.notifyTabActivated(index);\n }\n\n /**\n * Handles the keydown event\n * @param {!Event} evt\n */\n handleKeyDown(evt) {\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 * @param {!CustomEvent} evt\n */\n handleTabInteraction(evt) {\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 {number} index The tab index to make visible\n */\n scrollIntoView(index) {\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 {number} origin The original index from which to determine the destination\n * @param {string} key The name of the key\n * @return {number}\n * @private\n */\n determineTargetFromKey_(origin, key) {\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 {number} index The index of the tab\n * @param {number} nextIndex The index of the next tab\n * @param {number} scrollPosition The current scroll position\n * @param {number} barWidth The width of the Tab Bar\n * @return {number}\n * @private\n */\n calculateScrollIncrement_(index, nextIndex, scrollPosition, barWidth) {\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 {number} index The index of the tab\n * @param {number} nextIndex The index of the next tab\n * @param {number} scrollPosition The current scroll position\n * @param {number} barWidth The width of the Tab Bar\n * @param {number} scrollContentWidth The width of the scroll content\n * @return {number}\n * @private\n */\n calculateScrollIncrementRTL_(index, nextIndex, scrollPosition, barWidth, scrollContentWidth) {\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 {number} index The index of the tab\n * @param {!MDCTabDimensions} tabDimensions The dimensions of the tab\n * @param {number} scrollPosition The current scroll position\n * @param {number} barWidth The width of the tab bar\n * @return {number}\n * @private\n */\n findAdjacentTabIndexClosestToEdge_(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 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 {number} index The index of the tab\n * @param {!MDCTabDimensions} tabDimensions The dimensions of the tab\n * @param {number} scrollPosition The current scroll position\n * @param {number} barWidth The width of the tab bar\n * @param {number} scrollContentWidth The width of the scroller content\n * @return {number}\n * @private\n */\n findAdjacentTabIndexClosestToEdgeRTL_(index, tabDimensions, scrollPosition, barWidth, scrollContentWidth) {\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 {!Event} evt The keydown event\n * @return {string}\n * @private\n */\n getKeyFromEvent_(evt) {\n if (ACCEPTABLE_KEYS.has(evt.key)) {\n return evt.key;\n }\n\n return KEYCODE_MAP.get(evt.keyCode);\n }\n\n isActivationKey_(key) {\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 {number} index The index to test\n * @private\n */\n indexIsInRange_(index) {\n return index >= 0 && index < this.adapter_.getTabListLength();\n }\n\n /**\n * Returns the view's RTL property\n * @return {boolean}\n * @private\n */\n isRTL_() {\n return this.adapter_.isRTL();\n }\n\n /**\n * Scrolls the tab at the given index into view for left-to-right useragents\n * @param {number} index The index of the tab to scroll into view\n * @private\n */\n scrollIntoView_(index) {\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 {number} index The tab index to make visible\n * @private\n */\n scrollIntoViewRTL_(index) {\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\nexport default MDCTabBarFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-bar/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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/** @enum {string} */\nconst strings = {\n TAB_ACTIVATED_EVENT: 'MDCTabBar:activated',\n TAB_SCROLLER_SELECTOR: '.mdc-tab-scroller',\n TAB_SELECTOR: '.mdc-tab',\n ARROW_LEFT_KEY: 'ArrowLeft',\n ARROW_RIGHT_KEY: 'ArrowRight',\n END_KEY: 'End',\n HOME_KEY: 'Home',\n ENTER_KEY: 'Enter',\n SPACE_KEY: 'Space',\n};\n\n/** @enum {number} */\nconst numbers = {\n EXTRA_SCROLL_AMOUNT: 20,\n ARROW_LEFT_KEYCODE: 37,\n ARROW_RIGHT_KEYCODE: 39,\n END_KEYCODE: 35,\n HOME_KEYCODE: 36,\n ENTER_KEYCODE: 13,\n SPACE_KEYCODE: 32,\n};\n\nexport {\n numbers,\n strings,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tab-bar/constants.js","/**\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';\n/* eslint-disable no-unused-vars */\nimport {MDCRipple, MDCRippleFoundation, RippleCapableSurface} from '@material/ripple/index';\n/* eslint-enable no-unused-vars */\nimport {getMatchesProperty} from '@material/ripple/util';\n\n\nimport {cssClasses, strings} from './constants';\nimport {MDCTextFieldAdapter, FoundationMapType} from './adapter';\nimport MDCTextFieldFoundation from './foundation';\n/* eslint-disable no-unused-vars */\nimport {MDCLineRipple, MDCLineRippleFoundation} from '@material/line-ripple/index';\nimport {MDCTextFieldHelperText, MDCTextFieldHelperTextFoundation} from './helper-text/index';\nimport {MDCTextFieldCharacterCounter, MDCTextFieldCharacterCounterFoundation} from './character-counter/index';\nimport {MDCTextFieldIcon, MDCTextFieldIconFoundation} from './icon/index';\nimport {MDCFloatingLabel, MDCFloatingLabelFoundation} from '@material/floating-label/index';\nimport {MDCNotchedOutline, MDCNotchedOutlineFoundation} from '@material/notched-outline/index';\n/* eslint-enable no-unused-vars */\n\n/**\n * @extends {MDCComponent<!MDCTextFieldFoundation>}\n * @final\n */\nclass MDCTextField extends MDCComponent {\n /**\n * @param {...?} args\n */\n constructor(...args) {\n super(...args);\n /** @private {?Element} */\n this.input_;\n /** @type {?MDCRipple} */\n this.ripple;\n /** @private {?MDCLineRipple} */\n this.lineRipple_;\n /** @private {?MDCTextFieldHelperText} */\n this.helperText_;\n /** @private {?MDCTextFieldCharacterCounter} */\n this.characterCounter_;\n /** @private {?MDCTextFieldIcon} */\n this.leadingIcon_;\n /** @private {?MDCTextFieldIcon} */\n this.trailingIcon_;\n /** @private {?MDCFloatingLabel} */\n this.label_;\n /** @private {?MDCNotchedOutline} */\n this.outline_;\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCTextField}\n */\n static attachTo(root) {\n return new MDCTextField(root);\n }\n\n /**\n * @param {(function(!Element, MDCRippleFoundation): !MDCRipple)=} rippleFactory A function which\n * creates a new MDCRipple.\n * @param {(function(!Element): !MDCLineRipple)=} lineRippleFactory A function which\n * creates a new MDCLineRipple.\n * @param {(function(!Element): !MDCTextFieldHelperText)=} helperTextFactory A function which\n * creates a new MDCTextFieldHelperText.\n * @param {(function(!Element): !MDCTextFieldCharacterCounter)=} characterCounterFactory A function which\n * creates a new MDCTextFieldCharacterCounter.\n * @param {(function(!Element): !MDCTextFieldIcon)=} iconFactory A function which\n * creates a new MDCTextFieldIcon.\n * @param {(function(!Element): !MDCFloatingLabel)=} labelFactory A function which\n * creates a new MDCFloatingLabel.\n * @param {(function(!Element): !MDCNotchedOutline)=} outlineFactory A function which\n * creates a new MDCNotchedOutline.\n */\n initialize(\n rippleFactory = (el, foundation) => new MDCRipple(el, foundation),\n lineRippleFactory = (el) => new MDCLineRipple(el),\n helperTextFactory = (el) => new MDCTextFieldHelperText(el),\n characterCounterFactory = (el) => new MDCTextFieldCharacterCounter(el),\n iconFactory = (el) => new MDCTextFieldIcon(el),\n labelFactory = (el) => new MDCFloatingLabel(el),\n outlineFactory = (el) => new MDCNotchedOutline(el)) {\n this.input_ = this.root_.querySelector(strings.INPUT_SELECTOR);\n const labelElement = this.root_.querySelector(strings.LABEL_SELECTOR);\n if (labelElement) {\n this.label_ = labelFactory(labelElement);\n }\n const lineRippleElement = this.root_.querySelector(strings.LINE_RIPPLE_SELECTOR);\n if (lineRippleElement) {\n this.lineRipple_ = lineRippleFactory(lineRippleElement);\n }\n const outlineElement = this.root_.querySelector(strings.OUTLINE_SELECTOR);\n if (outlineElement) {\n this.outline_ = outlineFactory(outlineElement);\n }\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 = hasHelperLine && nextElementSibling.querySelector(helperTextStrings.ROOT_SELECTOR);\n if (helperTextEl) {\n this.helperText_ = helperTextFactory(helperTextEl);\n }\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) {\n characterCounterEl = nextElementSibling.querySelector(characterCounterStrings.ROOT_SELECTOR);\n }\n\n if (characterCounterEl) {\n this.characterCounter_ = characterCounterFactory(characterCounterEl);\n }\n\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 = null;\n if (!this.root_.classList.contains(cssClasses.TEXTAREA) && !this.root_.classList.contains(cssClasses.OUTLINED)) {\n const MATCHES = getMatchesProperty(HTMLElement.prototype);\n const adapter =\n Object.assign(MDCRipple.createAdapter(/** @type {!RippleCapableSurface} */ (this)), {\n isSurfaceActive: () => this.input_[MATCHES](':active'),\n registerInteractionHandler: (type, handler) => this.input_.addEventListener(type, handler),\n deregisterInteractionHandler: (type, handler) => this.input_.removeEventListener(type, handler),\n });\n const foundation = new MDCRippleFoundation(adapter);\n this.ripple = rippleFactory(this.root_, foundation);\n }\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 * Initiliazes 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 /**\n * @return {string} The value of the input.\n */\n get value() {\n return this.foundation_.getValue();\n }\n\n /**\n * @param {string} value The value to set on the input.\n */\n set value(value) {\n this.foundation_.setValue(value);\n }\n\n /**\n * @return {boolean} True if the Text Field is disabled.\n */\n get disabled() {\n return this.foundation_.isDisabled();\n }\n\n /**\n * @param {boolean} disabled Sets the Text Field disabled or enabled.\n */\n set disabled(disabled) {\n this.foundation_.setDisabled(disabled);\n }\n\n /**\n * @return {boolean} valid True if the Text Field is valid.\n */\n get valid() {\n return this.foundation_.isValid();\n }\n\n /**\n * @param {boolean} valid Sets the Text Field valid or invalid.\n */\n set valid(valid) {\n this.foundation_.setValid(valid);\n }\n\n /**\n * @return {boolean} True if the Text Field is required.\n */\n get required() {\n return this.input_.required;\n }\n\n /**\n * @param {boolean} required Sets the Text Field to required.\n */\n set required(required) {\n this.input_.required = required;\n }\n\n /**\n * @return {string} The input element's validation pattern.\n */\n get pattern() {\n return this.input_.pattern;\n }\n\n /**\n * @param {string} pattern Sets the input element's validation pattern.\n */\n set pattern(pattern) {\n this.input_.pattern = pattern;\n }\n\n /**\n * @return {number} The input element's minLength.\n */\n get minLength() {\n return this.input_.minLength;\n }\n\n /**\n * @param {number} minLength Sets the input element's minLength.\n */\n set minLength(minLength) {\n this.input_.minLength = minLength;\n }\n\n /**\n * @return {number} The input element's maxLength.\n */\n get maxLength() {\n return this.input_.maxLength;\n }\n\n /**\n * @param {number} maxLength Sets the input element's maxLength.\n */\n set maxLength(maxLength) {\n // Chrome throws exception if maxLength is set < 0\n if (maxLength < 0) {\n this.input_.removeAttribute('maxLength');\n } else {\n this.input_.maxLength = maxLength;\n }\n }\n\n /**\n * @return {string} The input element's min.\n */\n get min() {\n return this.input_.min;\n }\n\n /**\n * @param {string} min Sets the input element's min.\n */\n set min(min) {\n this.input_.min = min;\n }\n\n /**\n * @return {string} The input element's max.\n */\n get max() {\n return this.input_.max;\n }\n\n /**\n * @param {string} max Sets the input element's max.\n */\n set max(max) {\n this.input_.max = max;\n }\n\n /**\n * @return {string} The input element's step.\n */\n get step() {\n return this.input_.step;\n }\n\n /**\n * @param {string} step Sets the input element's step.\n */\n set step(step) {\n this.input_.step = step;\n }\n\n /**\n * Sets the helper text element content.\n * @param {string} content\n */\n set helperTextContent(content) {\n this.foundation_.setHelperTextContent(content);\n }\n\n /**\n * Sets the aria label of the leading icon.\n * @param {string} label\n */\n set leadingIconAriaLabel(label) {\n this.foundation_.setLeadingIconAriaLabel(label);\n }\n\n /**\n * Sets the text content of the leading icon.\n * @param {string} content\n */\n set leadingIconContent(content) {\n this.foundation_.setLeadingIconContent(content);\n }\n\n /**\n * Sets the aria label of the trailing icon.\n * @param {string} label\n */\n set trailingIconAriaLabel(label) {\n this.foundation_.setTrailingIconAriaLabel(label);\n }\n\n /**\n * Sets the text content of the trailing icon.\n * @param {string} content\n */\n set trailingIconContent(content) {\n this.foundation_.setTrailingIconContent(content);\n }\n\n /**\n * Enables or disables the use of native validation. Use this for custom validation.\n * @param {boolean} useNativeValidation Set this to false to ignore native input validation.\n */\n set useNativeValidation(useNativeValidation) {\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 /**\n * @return {!MDCTextFieldFoundation}\n */\n getDefaultFoundation() {\n return new MDCTextFieldFoundation(\n /** @type {!MDCTextFieldAdapter} */ (Object.assign({\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.root_.addEventListener(evtType, handler),\n deregisterTextFieldInteractionHandler: (evtType, handler) => this.root_.removeEventListener(evtType, handler),\n registerValidationAttributeChangeHandler: (handler) => {\n const getAttributesList = (mutationsList) => mutationsList.map((mutation) => mutation.attributeName);\n const observer = new MutationObserver((mutationsList) => handler(getAttributesList(mutationsList)));\n const targetNode = this.root_.querySelector(strings.INPUT_SELECTOR);\n const config = {attributes: true};\n observer.observe(targetNode, config);\n return observer;\n },\n deregisterValidationAttributeChangeHandler: (observer) => observer.disconnect(),\n isFocused: () => {\n return document.activeElement === this.root_.querySelector(strings.INPUT_SELECTOR);\n },\n },\n this.getInputAdapterMethods_(),\n this.getLabelAdapterMethods_(),\n this.getLineRippleAdapterMethods_(),\n this.getOutlineAdapterMethods_())),\n this.getFoundationMap_());\n }\n\n /**\n * @return {!{\n * shakeLabel: function(boolean): undefined,\n * floatLabel: function(boolean): undefined,\n * hasLabel: function(): boolean,\n * getLabelWidth: function(): number,\n * }}\n */\n getLabelAdapterMethods_() {\n return {\n shakeLabel: (shouldShake) => this.label_.shake(shouldShake),\n floatLabel: (shouldFloat) => this.label_.float(shouldFloat),\n hasLabel: () => !!this.label_,\n getLabelWidth: () => this.label_ ? this.label_.getWidth() : 0,\n };\n }\n\n /**\n * @return {!{\n * activateLineRipple: function(): undefined,\n * deactivateLineRipple: function(): undefined,\n * setLineRippleTransformOrigin: function(number): undefined,\n * }}\n */\n getLineRippleAdapterMethods_() {\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 /**\n * @return {!{\n * notchOutline: function(number, boolean): undefined,\n * hasOutline: function(): boolean,\n * }}\n */\n getOutlineAdapterMethods_() {\n return {\n notchOutline: (labelWidth) => this.outline_.notch(labelWidth),\n closeOutline: () => this.outline_.closeNotch(),\n hasOutline: () => !!this.outline_,\n };\n }\n\n /**\n * @return {!{\n * registerInputInteractionHandler: function(string, function()): undefined,\n * deregisterInputInteractionHandler: function(string, function()): undefined,\n * getNativeInput: function(): ?Element,\n * }}\n */\n getInputAdapterMethods_() {\n return {\n registerInputInteractionHandler: (evtType, handler) => this.input_.addEventListener(evtType, handler),\n deregisterInputInteractionHandler: (evtType, handler) => this.input_.removeEventListener(evtType, handler),\n getNativeInput: () => this.input_,\n };\n }\n\n /**\n * Returns a map of all subcomponents to subfoundations.\n * @return {!FoundationMapType}\n */\n getFoundationMap_() {\n return {\n helperText: this.helperText_ ? this.helperText_.foundation : undefined,\n characterCounter: this.characterCounter_ ? this.characterCounter_.foundation : undefined,\n leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined,\n trailingIcon: this.trailingIcon_ ? this.trailingIcon_.foundation : undefined,\n };\n }\n}\n\nexport {MDCTextField, MDCTextFieldFoundation,\n MDCTextFieldHelperText, MDCTextFieldHelperTextFoundation,\n MDCTextFieldCharacterCounter, MDCTextFieldCharacterCounterFoundation,\n MDCTextFieldIcon, MDCTextFieldIconFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/index.js","/**\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/** @enum {string} */\nconst cssClasses = {\n ROOT: 'mdc-text-field-helper-text',\n HELPER_TEXT_PERSISTENT: 'mdc-text-field-helper-text--persistent',\n HELPER_TEXT_VALIDATION_MSG: 'mdc-text-field-helper-text--validation-msg',\n};\n\n/** @enum {string} */\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.js","/**\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\n/** @enum {string} */\nconst cssClasses = {\n ROOT: 'mdc-text-field-character-counter',\n};\n\n/** @enum {string} */\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.js","/**\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/** @enum {string} */\nconst strings = {\n ICON_EVENT: 'MDCTextField:icon',\n ICON_ROLE: 'button',\n};\n\nexport {strings};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/icon/constants.js","/**\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';\n/* eslint-disable no-unused-vars */\nimport MDCTextFieldHelperTextFoundation from './helper-text/foundation';\nimport MDCTextFieldCharacterCounterFoundation from './character-counter/foundation';\nimport MDCTextFieldIconFoundation from './icon/foundation';\n/* eslint-enable no-unused-vars */\nimport {MDCTextFieldAdapter, NativeInputType, FoundationMapType} from './adapter';\nimport {cssClasses, strings, numbers, VALIDATION_ATTR_WHITELIST, ALWAYS_FLOAT_TYPES} from './constants';\n\n/**\n * @extends {MDCFoundation<!MDCTextFieldAdapter>}\n * @final\n */\nclass MDCTextFieldFoundation extends MDCFoundation {\n /** @return enum {string} */\n static get cssClasses() {\n return cssClasses;\n }\n\n /** @return enum {string} */\n static get strings() {\n return strings;\n }\n\n /** @return enum {string} */\n static get numbers() {\n return numbers;\n }\n\n /** @return {boolean} */\n get shouldShake() {\n return !this.isValid() && !this.isFocused_ && !!this.getValue();\n }\n\n /**\n * @return {boolean}\n * @private\n */\n get shouldAlwaysFloat_() {\n const type = this.getNativeInput_().type;\n return ALWAYS_FLOAT_TYPES.indexOf(type) >= 0;\n }\n\n /** @return {boolean} */\n get shouldFloat() {\n return this.shouldAlwaysFloat_ || this.isFocused_ || !!this.getValue() || this.isBadInput_();\n }\n\n /**\n * {@see MDCTextFieldAdapter} for typing information on parameters and return\n * types.\n * @return {!MDCTextFieldAdapter}\n */\n static get defaultAdapter() {\n return /** @type {!MDCTextFieldAdapter} */ ({\n addClass: () => {},\n removeClass: () => {},\n hasClass: () => {},\n registerTextFieldInteractionHandler: () => {},\n deregisterTextFieldInteractionHandler: () => {},\n registerInputInteractionHandler: () => {},\n deregisterInputInteractionHandler: () => {},\n registerValidationAttributeChangeHandler: () => {},\n deregisterValidationAttributeChangeHandler: () => {},\n getNativeInput: () => {},\n isFocused: () => {},\n activateLineRipple: () => {},\n deactivateLineRipple: () => {},\n setLineRippleTransformOrigin: () => {},\n shakeLabel: () => {},\n floatLabel: () => {},\n hasLabel: () => {},\n getLabelWidth: () => {},\n hasOutline: () => {},\n notchOutline: () => {},\n closeOutline: () => {},\n });\n }\n\n /**\n * @param {!MDCTextFieldAdapter} adapter\n * @param {!FoundationMapType=} foundationMap Map from subcomponent names to their subfoundations.\n */\n constructor(adapter, foundationMap = /** @type {!FoundationMapType} */ ({})) {\n super(Object.assign(MDCTextFieldFoundation.defaultAdapter, adapter));\n\n /** @type {!MDCTextFieldHelperTextFoundation|undefined} */\n this.helperText_ = foundationMap.helperText;\n /** @type {!MDCTextFieldCharacterCounterFoundation|undefined} */\n this.characterCounter_ = foundationMap.characterCounter;\n /** @type {!MDCTextFieldIconFoundation|undefined} */\n this.leadingIcon_ = foundationMap.leadingIcon;\n /** @type {!MDCTextFieldIconFoundation|undefined} */\n this.trailingIcon_ = foundationMap.trailingIcon;\n\n /** @private {boolean} */\n this.isFocused_ = false;\n /** @private {boolean} */\n this.receivedUserInput_ = false;\n /** @private {boolean} */\n this.useCustomValidityChecking_ = false;\n /** @private {boolean} */\n this.isValid_ = true;\n\n /** @private {boolean} */\n this.useNativeValidation_ = true;\n\n /** @private {function(): undefined} */\n this.inputFocusHandler_ = () => this.activateFocus();\n /** @private {function(): undefined} */\n this.inputBlurHandler_ = () => this.deactivateFocus();\n /** @private {function(): undefined} */\n this.inputInputHandler_ = () => this.handleInput();\n /** @private {function(!Event): undefined} */\n this.setPointerXOffset_ = (evt) => this.setTransformOrigin(evt);\n /** @private {function(!Event): undefined} */\n this.textFieldInteractionHandler_ = () => this.handleTextFieldInteraction();\n /** @private {function(!Array): undefined} */\n this.validationAttributeChangeHandler_ = (attributesList) => this.handleValidationAttributeChange(attributesList);\n\n /** @private {!MutationObserver} */\n this.validationObserver_;\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 ['mousedown', 'touchstart'].forEach((evtType) => {\n this.adapter_.registerInputInteractionHandler(evtType, this.setPointerXOffset_);\n });\n ['click', 'keydown'].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 ['mousedown', 'touchstart'].forEach((evtType) => {\n this.adapter_.deregisterInputInteractionHandler(evtType, this.setPointerXOffset_);\n });\n ['click', 'keydown'].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 if (this.adapter_.getNativeInput().disabled) {\n return;\n }\n this.receivedUserInput_ = true;\n }\n\n /**\n * Handles validation attribute changes\n * @param {!Array<string>} attributesList\n */\n handleValidationAttributeChange(attributesList) {\n attributesList.some((attributeName) => {\n if (VALIDATION_ATTR_WHITELIST.indexOf(attributeName) > -1) {\n this.styleValidity_(true);\n return true;\n }\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 * @param {boolean} openNotch\n */\n notchOutline(openNotch) {\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 * @param {!Event} evt\n */\n setTransformOrigin(evt) {\n let targetEvent;\n if (evt.touches) {\n targetEvent = evt.touches[0];\n } else {\n targetEvent = evt;\n }\n const targetClientRect = targetEvent.target.getBoundingClientRect();\n const normalizedX = targetEvent.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. programatically).\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 /**\n * @return {string} The value of the input Element.\n */\n getValue() {\n return this.getNativeInput_().value;\n }\n\n /**\n * @param {string} value The value to set on the input Element.\n */\n setValue(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 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 {boolean} If a custom validity is set, returns that value.\n * Otherwise, returns the result of native validity checks.\n */\n isValid() {\n return this.useNativeValidation_\n ? this.isNativeInputValid_() : this.isValid_;\n }\n\n /**\n * @param {boolean} isValid Sets the validity state of the Text Field.\n */\n setValid(isValid) {\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 {boolean} useNativeValidation Set this to false to ignore native input validation.\n */\n setUseNativeValidation(useNativeValidation) {\n this.useNativeValidation_ = useNativeValidation;\n }\n\n /**\n * @return {boolean} True if the Text Field is disabled.\n */\n isDisabled() {\n return this.getNativeInput_().disabled;\n }\n\n /**\n * @param {boolean} disabled Sets the text-field disabled or enabled.\n */\n setDisabled(disabled) {\n this.getNativeInput_().disabled = disabled;\n this.styleDisabled_(disabled);\n }\n\n /**\n * @param {string} content Sets the content of the helper text.\n */\n setHelperTextContent(content) {\n if (this.helperText_) {\n this.helperText_.setContent(content);\n }\n }\n\n /**\n * Sets character counter values that shows characters used and the total character limit.\n * @param {number} currentLength\n * @private\n */\n setCharacterCounter_(currentLength) {\n if (!this.characterCounter_) return;\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 * Sets the aria label of the leading icon.\n * @param {string} label\n */\n setLeadingIconAriaLabel(label) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setAriaLabel(label);\n }\n }\n\n /**\n * Sets the text content of the leading icon.\n * @param {string} content\n */\n setLeadingIconContent(content) {\n if (this.leadingIcon_) {\n this.leadingIcon_.setContent(content);\n }\n }\n\n /**\n * Sets the aria label of the trailing icon.\n * @param {string} label\n */\n setTrailingIconAriaLabel(label) {\n if (this.trailingIcon_) {\n this.trailingIcon_.setAriaLabel(label);\n }\n }\n\n /**\n * Sets the text content of the trailing icon.\n * @param {string} content\n */\n setTrailingIconContent(content) {\n if (this.trailingIcon_) {\n this.trailingIcon_.setContent(content);\n }\n }\n\n /**\n * @return {boolean} True if the Text Field input fails in converting the\n * user-supplied value.\n * @private\n */\n isBadInput_() {\n return this.getNativeInput_().validity.badInput;\n }\n\n /**\n * @return {boolean} The result of native validity checking\n * (ValidityState.valid).\n */\n isNativeInputValid_() {\n return this.getNativeInput_().validity.valid;\n }\n\n /**\n * Styles the component based on the validity state.\n * @param {boolean} isValid\n * @private\n */\n styleValidity_(isValid) {\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 * @param {boolean} isFocused\n * @private\n */\n styleFocused_(isFocused) {\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 * @param {boolean} isDisabled\n * @private\n */\n styleDisabled_(isDisabled) {\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 {!Element|!NativeInputType} The native text input from the\n * host environment, or a dummy if none exists.\n * @private\n */\n getNativeInput_() {\n return this.adapter_.getNativeInput() ||\n /** @type {!NativeInputType} */ ({\n value: '',\n disabled: false,\n validity: {\n badInput: false,\n valid: true,\n },\n });\n }\n}\n\nexport default MDCTextFieldFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/foundation.js","/**\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';\n\nimport MDCTextFieldHelperTextAdapter from './adapter';\nimport MDCTextFieldHelperTextFoundation from './foundation';\n\n/**\n * @extends {MDCComponent<!MDCTextFieldHelperTextFoundation>}\n * @final\n */\nclass MDCTextFieldHelperText extends MDCComponent {\n /**\n * @param {!Element} root\n * @return {!MDCTextFieldHelperText}\n */\n static attachTo(root) {\n return new MDCTextFieldHelperText(root);\n }\n\n /**\n * @return {!MDCTextFieldHelperTextFoundation}\n */\n get foundation() {\n return this.foundation_;\n }\n\n /**\n * @return {!MDCTextFieldHelperTextFoundation}\n */\n getDefaultFoundation() {\n return new MDCTextFieldHelperTextFoundation(/** @type {!MDCTextFieldHelperTextAdapter} */ (Object.assign({\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 }\n}\n\nexport {MDCTextFieldHelperText, MDCTextFieldHelperTextFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/helper-text/index.js","/**\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';\n\nimport MDCTextFieldCharacterCounterAdapter from './adapter';\nimport MDCTextFieldCharacterCounterFoundation from './foundation';\n\n/**\n * @extends {MDCComponent<!MDCTextFieldCharacterCounterFoundation>}\n * @final\n */\nclass MDCTextFieldCharacterCounter extends MDCComponent {\n /**\n * @param {!Element} root\n * @return {!MDCTextFieldCharacterCounter}\n */\n static attachTo(root) {\n return new MDCTextFieldCharacterCounter(root);\n }\n\n /**\n * @return {!MDCTextFieldCharacterCounterFoundation}\n */\n get foundation() {\n return this.foundation_;\n }\n\n /**\n * @return {!MDCTextFieldCharacterCounterFoundation}\n */\n getDefaultFoundation() {\n return new MDCTextFieldCharacterCounterFoundation(\n /** @type {!MDCTextFieldCharacterCounterAdapter} */ (Object.assign({\n setContent: (content) => {\n this.root_.textContent = content;\n },\n })));\n }\n}\n\nexport {MDCTextFieldCharacterCounter, MDCTextFieldCharacterCounterFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/character-counter/index.js","/**\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';\n\nimport MDCTextFieldIconAdapter from './adapter';\nimport MDCTextFieldIconFoundation from './foundation';\n\n/**\n * @extends {MDCComponent<!MDCTextFieldIconFoundation>}\n * @final\n */\nclass MDCTextFieldIcon extends MDCComponent {\n /**\n * @param {!Element} root\n * @return {!MDCTextFieldIcon}\n */\n static attachTo(root) {\n return new MDCTextFieldIcon(root);\n }\n\n /**\n * @return {!MDCTextFieldIconFoundation}\n */\n get foundation() {\n return this.foundation_;\n }\n\n /**\n * @return {!MDCTextFieldIconFoundation}\n */\n getDefaultFoundation() {\n return new MDCTextFieldIconFoundation(/** @type {!MDCTextFieldIconAdapter} */ (Object.assign({\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.root_.addEventListener(evtType, handler),\n deregisterInteractionHandler: (evtType, handler) => this.root_.removeEventListener(evtType, handler),\n notifyIconAction: () => this.emit(\n MDCTextFieldIconFoundation.strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */),\n })));\n }\n}\n\nexport {MDCTextFieldIcon, MDCTextFieldIconFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-textfield/icon/index.js","/**\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/index';\n\nimport MDCToolbarFoundation from './foundation';\n\nexport {MDCToolbarFoundation};\n\nexport class MDCToolbar extends MDCComponent {\n static attachTo(root) {\n return new MDCToolbar(root);\n }\n\n get firstRowElement_() {\n return this.root_.querySelector(MDCToolbarFoundation.strings.FIRST_ROW_SELECTOR);\n }\n\n get titleElement_() {\n return this.root_.querySelector(MDCToolbarFoundation.strings.TITLE_SELECTOR);\n }\n\n set fixedAdjustElement(fixedAdjustElement) {\n this.fixedAdjustElement_ = fixedAdjustElement;\n this.foundation_.updateAdjustElementStyles();\n }\n\n get fixedAdjustElement() {\n return this.fixedAdjustElement_;\n }\n\n initialize() {\n this.ripples_ = [].map.call(this.root_.querySelectorAll(MDCToolbarFoundation.strings.ICON_SELECTOR), (icon) => {\n const ripple = MDCRipple.attachTo(icon);\n ripple.unbounded = true;\n return ripple;\n });\n }\n\n destroy() {\n this.ripples_.forEach((ripple) => {\n ripple.destroy();\n });\n super.destroy();\n }\n\n\n getDefaultFoundation() {\n return new MDCToolbarFoundation({\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(MDCToolbarFoundation.strings.CHANGE_EVENT, evtData),\n setStyle: (property, value) => this.root_.style.setProperty(property, value),\n setStyleForTitleElement: (property, value) => this.titleElement_.style.setProperty(property, value),\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 }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-toolbar/index.js","/**\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 */\nimport MDCFoundation from '@material/base/foundation';\nimport {cssClasses, strings, numbers} from './constants';\n\nexport default class MDCToolbarFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get defaultAdapter() {\n return {\n hasClass: (/* className: string */) => /* boolean */ false,\n addClass: (/* className: string */) => {},\n removeClass: (/* className: string */) => {},\n registerScrollHandler: (/* handler: EventListener */) => {},\n deregisterScrollHandler: (/* handler: EventListener */) => {},\n registerResizeHandler: (/* handler: EventListener */) => {},\n deregisterResizeHandler: (/* handler: EventListener */) => {},\n getViewportWidth: () => /* number */ 0,\n getViewportScrollY: () => /* number */ 0,\n getOffsetHeight: () => /* number */ 0,\n getFirstRowElementOffsetHeight: () => /* number */ 0,\n notifyChange: (/* evtData: {flexibleExpansionRatio: number} */) => {},\n setStyle: (/* property: string, value: string */) => {},\n setStyleForTitleElement: (/* property: string, value: string */) => {},\n setStyleForFlexibleRowElement: (/* property: string, value: string */) => {},\n setStyleForFixedAdjustElement: (/* property: string, value: string */) => {},\n };\n }\n\n constructor(adapter) {\n super(Object.assign(MDCToolbarFoundation.defaultAdapter, adapter));\n this.resizeHandler_ = () => this.checkRowHeight_();\n this.scrollHandler_ = () => this.updateToolbarStyles_();\n this.checkRowHeightFrame_ = 0;\n this.scrollFrame_ = 0;\n this.executedLastChange_ = false;\n\n this.calculations_ = {\n toolbarRowHeight: 0,\n // Calculated Height ratio. We use ratio to calculate corresponding heights in resize event.\n toolbarRatio: 0, // The ratio of toolbar height to row height\n flexibleExpansionRatio: 0, // The ratio of flexible space height to row height\n maxTranslateYRatio: 0, // The ratio of max toolbar move up distance to row height\n scrollThresholdRatio: 0, // The ratio of max scrollTop that we should listen to to row height\n // Derived Heights based on the above key ratios.\n toolbarHeight: 0,\n flexibleExpansionHeight: 0, // Flexible row minus toolbar height (derived)\n maxTranslateYDistance: 0, // When toolbar only fix last row (derived)\n scrollThreshold: 0,\n };\n // Toolbar fixed behavior\n // If toolbar is fixed\n this.fixed_ = false;\n // If fixed is targeted only at the last row\n this.fixedLastrow_ = false;\n // Toolbar flexible behavior\n // If the first row is flexible\n this.hasFlexibleRow_ = false;\n // If use the default behavior\n this.useFlexDefaultBehavior_ = false;\n }\n\n init() {\n this.fixed_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.FIXED);\n this.fixedLastrow_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.FIXED_LASTROW) & this.fixed_;\n this.hasFlexibleRow_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.TOOLBAR_ROW_FLEXIBLE);\n if (this.hasFlexibleRow_) {\n this.useFlexDefaultBehavior_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_DEFAULT_BEHAVIOR);\n }\n this.initKeyRatio_();\n this.setKeyHeights_();\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n }\n\n destroy() {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n }\n\n updateAdjustElementStyles() {\n if (this.fixed_) {\n this.adapter_.setStyleForFixedAdjustElement('margin-top', `${this.calculations_.toolbarHeight}px`);\n }\n }\n\n getFlexibleExpansionRatio_(scrollTop) {\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 checkRowHeight_() {\n cancelAnimationFrame(this.checkRowHeightFrame_);\n this.checkRowHeightFrame_ = requestAnimationFrame(() => this.setKeyHeights_());\n }\n\n 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 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.fixedLastrow_) {\n this.updateToolbarFixedState_(scrollTop);\n }\n if (this.hasFlexibleRow_) {\n this.updateFlexibleRowElementStyles_(flexibleExpansionRatio);\n }\n this.executedLastChange_ = hasScrolledOutOfThreshold;\n this.adapter_.notifyChange({flexibleExpansionRatio: flexibleExpansionRatio});\n });\n }\n\n scrolledOutOfThreshold_(scrollTop) {\n return scrollTop > this.calculations_.scrollThreshold;\n }\n\n 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.fixedLastrow_ ? this.calculations_.toolbarRatio - firstRowMaxRatio : 0;\n this.calculations_.scrollThresholdRatio =\n (this.fixedLastrow_ ? this.calculations_.toolbarRatio : firstRowMaxRatio) - 1;\n }\n\n getRowHeight_() {\n const breakpoint = MDCToolbarFoundation.numbers.TOOLBAR_MOBILE_BREAKPOINT;\n return this.adapter_.getViewportWidth() < breakpoint ?\n MDCToolbarFoundation.numbers.TOOLBAR_ROW_MOBILE_HEIGHT : MDCToolbarFoundation.numbers.TOOLBAR_ROW_HEIGHT;\n }\n\n updateToolbarFlexibleState_(flexibleExpansionRatio) {\n this.adapter_.removeClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MAX);\n this.adapter_.removeClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MIN);\n if (flexibleExpansionRatio === 1) {\n this.adapter_.addClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MAX);\n } else if (flexibleExpansionRatio === 0) {\n this.adapter_.addClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MIN);\n }\n }\n\n updateToolbarFixedState_(scrollTop) {\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(MDCToolbarFoundation.cssClasses.FIXED_AT_LAST_ROW);\n } else {\n this.adapter_.removeClass(MDCToolbarFoundation.cssClasses.FIXED_AT_LAST_ROW);\n }\n }\n\n updateFlexibleRowElementStyles_(flexibleExpansionRatio) {\n if (this.fixed_) {\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 updateElementStylesDefaultBehavior_(flexibleExpansionRatio) {\n const maxTitleSize = MDCToolbarFoundation.numbers.MAX_TITLE_SIZE;\n const minTitleSize = MDCToolbarFoundation.numbers.MIN_TITLE_SIZE;\n const currentTitleSize = (maxTitleSize - minTitleSize) * flexibleExpansionRatio + minTitleSize;\n\n this.adapter_.setStyleForTitleElement('font-size', `${currentTitleSize}rem`);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-toolbar/foundation.js","/**\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_LASTROW: 'mdc-toolbar--fixed-lastrow-only',\n FIXED_AT_LAST_ROW: 'mdc-toolbar--fixed-at-last-row',\n TOOLBAR_ROW_FLEXIBLE: 'mdc-toolbar--flexible',\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};\n\nexport const strings = {\n TITLE_SELECTOR: '.mdc-toolbar__title',\n ICON_SELECTOR: '.mdc-toolbar__icon',\n FIRST_ROW_SELECTOR: '.mdc-toolbar__row:first-child',\n CHANGE_EVENT: 'MDCToolbar:change',\n};\n\nexport const numbers = {\n MAX_TITLE_SIZE: 2.125,\n MIN_TITLE_SIZE: 1.25,\n TOOLBAR_ROW_HEIGHT: 64,\n TOOLBAR_ROW_MOBILE_HEIGHT: 56,\n TOOLBAR_MOBILE_BREAKPOINT: 600,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-toolbar/constants.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 MDCComponent from '@material/base/component';\nimport {MDCRipple} from '@material/ripple/index';\nimport {cssClasses, strings} from './constants';\nimport MDCTopAppBarBaseFoundation from './foundation';\nimport MDCFixedTopAppBarFoundation from './fixed/foundation';\nimport MDCShortTopAppBarFoundation from './short/foundation';\nimport MDCTopAppBarFoundation from './standard/foundation';\n\n/**\n * @extends {MDCComponent<!MDCTopAppBarBaseFoundation>}\n * @final\n */\nclass MDCTopAppBar extends MDCComponent {\n /**\n * @param {...?} args\n */\n constructor(...args) {\n super(...args);\n /** @private {?Element} */\n this.navIcon_;\n /** @type {?Array<MDCRipple>} */\n this.iconRipples_;\n /** @type {Object} */\n this.scrollTarget_;\n }\n\n initialize(\n rippleFactory = (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 = [].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) {\n this.foundation_.destroyScrollHandler();\n this.scrollTarget_ = target;\n this.foundation_.initScrollHandler();\n }\n\n /**\n * @param {!Element} root\n * @return {!MDCTopAppBar}\n */\n static attachTo(root) {\n return new MDCTopAppBar(root);\n }\n\n /**\n * @return {!MDCTopAppBarBaseFoundation}\n */\n getDefaultFoundation() {\n /** @type {!MDCTopAppBarAdapter} */\n const adapter = /** @type {!MDCTopAppBarAdapter} */ (Object.assign({\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_.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: () => {\n this.emit(strings.NAVIGATION_EVENT, {});\n },\n registerScrollHandler: (handler) => this.scrollTarget_.addEventListener('scroll', handler),\n deregisterScrollHandler: (handler) => this.scrollTarget_.removeEventListener('scroll', handler),\n registerResizeHandler: (handler) => window.addEventListener('resize', handler),\n deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler),\n getViewportScrollY: () =>\n this.scrollTarget_[this.scrollTarget_ === window ? 'pageYOffset' : 'scrollTop'],\n getTotalActionItems: () =>\n this.root_.querySelectorAll(strings.ACTION_ITEM_SELECTOR).length,\n })\n );\n\n /** @type {!MDCTopAppBarBaseFoundation} */\n let foundation;\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\nexport {MDCTopAppBar, MDCTopAppBarBaseFoundation,\n MDCTopAppBarFoundation, MDCFixedTopAppBarFoundation,\n MDCShortTopAppBarFoundation};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/index.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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';\nimport MDCTopAppBarAdapter from '../adapter';\nimport MDCTopAppBarFoundation from '../foundation';\n\n/**\n * @extends {MDCTopAppBarFoundation<!MDCFixedTopAppBarFoundation>}\n * @final\n */\nclass MDCFixedTopAppBarFoundation extends MDCTopAppBarFoundation {\n /**\n * @param {!MDCTopAppBarAdapter} adapter\n */\n constructor(adapter) {\n super(adapter);\n /** State variable for the previous scroll iteration top app bar state */\n this.wasScrolled_ = false;\n\n this.scrollHandler_ = () => this.fixedScrollHandler_();\n }\n\n init() {\n super.init();\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n }\n\n destroy() {\n super.destroy();\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n }\n\n /**\n * Scroll handler for applying/removing the modifier class\n * on the fixed top app bar.\n */\n 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\nexport default MDCFixedTopAppBarFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/fixed/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 MDCTopAppBarBaseFoundation from '../foundation';\nimport {cssClasses} from '../constants';\n\n/**\n * @extends {MDCTopAppBarBaseFoundation<!MDCShortTopAppBarFoundation>}\n * @final\n */\nclass MDCShortTopAppBarFoundation extends MDCTopAppBarBaseFoundation {\n /**\n * @param {!MDCTopAppBarAdapter} adapter\n */\n constructor(adapter) {\n super(adapter);\n // State variable for the current top app bar state\n this.isCollapsed = false;\n\n this.scrollHandler_ = () => this.shortAppBarScrollHandler_();\n }\n\n init() {\n super.init();\n const isAlwaysCollapsed = this.adapter_.hasClass(cssClasses.SHORT_COLLAPSED_CLASS);\n\n if (this.adapter_.getTotalActionItems() > 0) {\n this.adapter_.addClass(cssClasses.SHORT_HAS_ACTION_ITEM_CLASS);\n }\n\n if (!isAlwaysCollapsed) {\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n this.shortAppBarScrollHandler_();\n }\n }\n\n destroy() {\n super.destroy();\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n }\n\n\n /**\n * Scroll handler for applying/removing the collapsed modifier class\n * on the short top app bar.\n * @private\n */\n 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\nexport default MDCShortTopAppBarFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/short/foundation.js","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 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 MDCTopAppBarBaseFoundation from '../foundation';\nimport {numbers} from '../constants';\n\nconst INITIAL_VALUE = 0;\n/**\n * @extends {MDCTopAppBarBaseFoundation<!MDCTopAppBarFoundation>}\n * @final\n */\nclass MDCTopAppBarFoundation extends MDCTopAppBarBaseFoundation {\n /**\n * @param {!MDCTopAppBarAdapter} adapter\n */\n constructor(adapter) {\n super(adapter);\n /**\n * Used for diffs of current scroll position vs previous scroll position\n * @private {number}\n */\n this.lastScrollPosition_ = this.adapter_.getViewportScrollY();\n\n /**\n * Used to verify when the top app bar is completely showing or completely hidden\n * @private {number}\n */\n this.topAppBarHeight_ = this.adapter_.getTopAppBarHeight();\n\n /**\n * wasDocked_ is used to indicate if the top app bar was docked in the previous\n * scroll handler iteration.\n * @private {boolean}\n */\n this.wasDocked_ = true;\n\n /**\n * isDockedShowing_ is used to indicate if the top app bar is docked in the fully\n * shown position.\n * @private {boolean}\n */\n this.isDockedShowing_ = true;\n\n /**\n * Variable for current scroll position of the top app bar\n * @private {number}\n */\n this.currentAppBarOffsetTop_ = 0;\n\n /**\n * Used to prevent the top app bar from being scrolled out of view during resize events\n * @private {boolean} */\n this.isCurrentlyBeingResized_ = false;\n\n /**\n * The timeout that's used to throttle the resize events\n * @private {number}\n */\n this.resizeThrottleId_ = INITIAL_VALUE;\n\n /**\n * The timeout that's used to debounce toggling the isCurrentlyBeingResized_ variable after a resize\n * @private {number}\n */\n this.resizeDebounceId_ = INITIAL_VALUE;\n\n this.scrollHandler_ = () => this.topAppBarScrollHandler_();\n this.resizeHandler_ = () => this.topAppBarResizeHandler_();\n }\n\n init() {\n super.init();\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n }\n\n destroy() {\n super.destroy();\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n this.adapter_.setStyle('top', '');\n }\n\n /**\n * Function to determine if the DOM needs to update.\n * @return {boolean}\n * @private\n */\n checkForUpdate_() {\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 * @private\n */\n 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 * @private\n */\n 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 * @private\n */\n 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 * @private\n */\n 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\nexport default MDCTopAppBarFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-top-app-bar/standard/foundation.js"],"sourceRoot":""}
|