{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 45b4771b37efd9fee3d4","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":["MDCFoundation","adapter","adapter_","MDCComponent","root","foundation","undefined","root_","args","initialize","foundation_","getDefaultFoundation","init","initialSyncWithDOM","Error","destroy","evtType","handler","addEventListener","removeEventListener","evtData","shouldBubble","evt","CustomEvent","detail","bubbles","document","createEvent","initCustomEvent","dispatchEvent","MDCRipple","disabled","unbounded_","setUnbounded","activate","deactivate","layout","createAdapter","unbounded","dataset","Boolean","setUnbounded_","isUnbounded","ripple","instance","MATCHES","HTMLElement","prototype","browserSupportsCssVars","window","isSurfaceActive","isSurfaceDisabled","addClass","className","classList","add","removeClass","remove","containsEventTarget","target","contains","registerInteractionHandler","deregisterInteractionHandler","registerDocumentInteractionHandler","documentElement","deregisterDocumentInteractionHandler","registerResizeHandler","deregisterResizeHandler","updateCssVariable","varName","value","style","setProperty","computeBoundingRect","getBoundingClientRect","getWindowPageOffset","x","pageXOffset","y","pageYOffset","RippleCapableSurface","MDCSelectionControlState","MDCSelectionControl","MDCTabScrollerAnimation","MDCTabScrollerHorizontalEdges","MDCTabScrollerAdapter","evtTarget","selector","propName","propertyName","scrollLeft","supportsCssVariables_","supportsPassive_","detectEdgePseudoVarBug","windowObj","node","createElement","body","appendChild","computedStyle","getComputedStyle","hasPseudoVarBug","borderTopStyle","supportsCssVariables","forceRefresh","supportsFunctionPresent","CSS","supports","explicitlySupportsCssVars","weAreFeatureDetectingSafari10plus","applyPassive","globalObj","isSupported","passive","e","getMatchesProperty","HTMLElementPrototype","matchesMethods","method","i","length","matchesMethod","getNormalizedEventCoords","ev","pageOffset","clientRect","documentX","left","documentY","top","normalizedX","normalizedY","type","changedTouches","pageX","pageY","MDCTopAppBarAdapter","property","cssClasses","FIXED_CLASS","FIXED_SCROLLED_CLASS","SHORT_CLASS","SHORT_HAS_ACTION_ITEM_CLASS","SHORT_COLLAPSED_CLASS","numbers","DEBOUNCE_THROTTLE_RESIZE_TIME_MS","MAX_TOP_APP_BAR_HEIGHT","strings","ACTION_ITEM_SELECTOR","NAVIGATION_EVENT","NAVIGATION_ICON_SELECTOR","ROOT_SELECTOR","TITLE_SELECTOR","closest","element","el","matches","parentElement","nativeMatches","webkitMatchesSelector","msMatchesSelector","call","MDCFloatingLabel","shouldShake","shake","shouldFloat","float","getWidth","scrollWidth","MDCTabDimensions","MDCTabInteractionEventType","MDCTabAdapter","attr","previousIndicatorClientRect","MDCTabScrollerRTL","translateX","scrollX","MDCTopAppBarBaseFoundation","hasClass","setStyle","getTopAppBarHeight","registerNavigationIconInteractionHandler","deregisterNavigationIconInteractionHandler","notifyNavigationIconClicked","registerScrollHandler","deregisterScrollHandler","getViewportScrollY","getTotalActionItems","defaultAdapter","navClickHandler_","scrollHandler_","VendorPropertyMapType","eventTypeMap","noPrefix","webkitPrefix","styleProperty","cssPropertyMap","hasProperShape","eventFoundInMaps","eventType","getJavaScriptEventName","map","getAnimationName","eventName","transformStyleProperties","getCorrectEventName","getCorrectPropertyName","MDCList","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","getListItemCount","getFocusedElementIndex","activeElement","setAttributeForElementIndex","removeAttributeForElementIndex","removeAttribute","addClassForElementIndex","removeClassForElementIndex","focusItemAtIndex","focus","setTabIndexForListItemChildren","listItemIndex","tabIndexValue","listItemChildren","CHILD_ELEMENTS_TO_TOGGLE_TABINDEX","hasCheckboxAtIndex","CHECKBOX_SELECTOR","hasRadioAtIndex","RADIO_SELECTOR","isCheckboxCheckedAtIndex","toggleEl","checked","setCheckedCheckboxOrRadioAtIndex","isChecked","event","initEvent","notifyAction","emit","ACTION_EVENT","isFocusInsideList","setVerticalOrientation","ENABLED_ITEMS_SELECTOR","setWrapFocus","isSingleSelectionList","setSingleSelection","getSelectedIndex","setSelectedIndex","ELEMENTS_KEY_ALLOWED_IN","MDCListFoundation","wrapFocus_","isVertical_","isSingleSelectionList_","selectedIndex_","focusedItemIndex_","useActivatedClass_","isCheckboxList_","isRadioList_","useActivated","isIndexValid_","setCheckboxAtIndex_","setRadioAtIndex_","setSingleSelectionAtIndex_","setTimeout","setTabindexToFirstSelectedItem_","isRootListItem","arrowLeft","key","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","Array","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","AnchorMargin","AutoLayoutMeasurements","MDCMenuSurfaceFoundation","hasAnchor","notifyClose","notifyOpen","isElementInContainer","isRtl","setTransformOrigin","isFocused","saveFocus","restoreFocus","isFirstElementFocused","isLastElementFocused","getInnerDimensions","getAnchorDimensions","getWindowDimensions","getBodyDimensions","getWindowScroll","setPosition","setMaxHeight","isOpen_","openAnimationEndTimerId_","closeAnimationEndTimerId_","animationRequestId_","dimensions_","anchorCorner_","Corner","TOP_START","anchorMargin_","right","bottom","measures_","quickOpen_","hoistedElement_","isFixedPosition_","position_","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","isBottomAligned","CornerBit","BOTTOM","availableTop","availableBottom","topOverflow","bottomOverflow","isFlipRtl","FLIP_RTL","avoidHorizontalOverlap","RIGHT","isAlignedRight","availableLeft","availableRight","leftOverflow","rightOverflow","isRightAligned","rightOffset","avoidVerticalOverlap","maxHeight","MARGIN_TO_EDGE","getAutoLayoutMeasurements_","getOriginCorner_","maxMenuSurfaceHeight","getMenuSurfaceMaxHeight_","verticalAlignment","horizontalAlignment","horizontalOffset","getHorizontalOriginOffset_","verticalOffset","getVerticalOriginOffset_","position","ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO","adjustPositionForHoistedElement_","prop","hasOwnProperty","parseInt","ANIMATING_OPEN","requestAnimationFrame","autoPosition_","TRANSITION_OPEN_DURATION","ANIMATING_CLOSED","TRANSITION_CLOSE_DURATION","maybeRestoreFocus_","num","isFinite","ANCHOR","FIXED","CLOSED_EVENT","OPENED_EVENT","FOCUSABLE_ELEMENTS","CENTER","TOP_RIGHT","BOTTOM_LEFT","BOTTOM_RIGHT","TOP_END","BOTTOM_START","BOTTOM_END","MDCNotchedOutline","notchElement_","label","MDCFloatingLabelFoundation","NOTCH_ELEMENT_SELECTOR","transitionDuration","OUTLINE_UPGRADED","NO_LABEL","notchWidth","notch","closeNotch","setNotchWidthProperty","removeNotchWidthProperty","removeProperty","MDCSelectIcon","getAttr","setAttr","removeAttr","setContent","content","textContent","notifyIconAction","MDCSelectIconFoundation","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","INTERACTION_EVENTS","MDCChip","id","leadingIcon_","trailingIcon_","checkmark_","ripple_","handleInteraction_","handleTransitionEnd_","handleTrailingIconInteraction_","rippleFactory","LEADING_ICON_SELECTOR","TRAILING_ICON_SELECTOR","CHECKMARK_SELECTOR","getDimensions","handleTransitionEnd","handleTrailingIconInteraction","beginExit","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","MDCChipInteractionEventType","MDCChipSelectionEventType","MDCChipRemovalEventType","ENTRY_ANIMATION_NAME","TRAILING_ICON","MDCChipSetAdapter","MDCDismissibleDrawerFoundation","elementHasClass","focusActiveNavigationItem","trapFocus","releaseFocus","animationFrame_","animationTimer_","isOpen","isOpening","isClosing","ANIMATE","runNextAnimationFrame_","isElement","Element","closed","opened","callback","MDCDrawerAdapter","DISMISSIBLE","MODAL","APP_CONTENT_SELECTOR","SCRIM_SELECTOR","CLOSE_EVENT","OPEN_EVENT","MDCListAdapter","attribute","Index","MDCFloatingLabelAdapter","MDCLineRippleAdapter","MDCMenu","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","previousFocus_","firstFocusableElement_","lastFocusableElement_","handleBodyClick_","registerBodyClickListener_","deregisterBodyClickListener_","handleBodyClick","removeChild","getFocusAdapterMethods_","getDimensionAdapterMethods_","offsetWidth","offsetHeight","innerWidth","innerHeight","clientWidth","clientHeight","focusableElements","setQuickOpen","MDCNotchedOutlineAdapter","NOTCH_ELEMENT_PADDING","OUTLINE_NOTCHED","FoundationMapType","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","name","numMarkers","MDCTab","tabIndicator_","content_","tabIndicatorFactory","rippleSurface","MDCTabFoundation","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","FADE","MDCTabIndicatorAdapter","MDCTabScroller","area_","MDCTabScrollerFoundation","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","INPUT_SELECTOR","ICON_SELECTOR","DENSE","TEXTAREA","HELPER_LINE","DENSE_LABEL_SCALE","VALIDATION_ATTR_WHITELIST","ALWAYS_FLOAT_TYPES","NativeInputType","MDCTextFieldAdapter","observer","MDCTextFieldHelperTextAdapter","MDCTextFieldCharacterCounterAdapter","MDCTextFieldIconAdapter","autoInit","register","registry","Object","create","CONSOLE_WARN","console","warn","_emit","mdcAutoInit","components","nodes","ctorName","Ctor","component","attachTo","defineProperty","writable","enumerable","configurable","componentName","deregister","deregisterAll","keys","CB_PROTO_PROPS","MDCCheckbox","MDCCheckboxFoundation","cbEl","initRipple_","handleChange_","handleAnimationEnd_","handleChange","handleAnimationEnd","nativeCb_","installPropertyChangeHooks_","nativeCb","cbProto","getPrototypeOf","controlState","desc","getOwnPropertyDescriptor","validDescriptor","nativeCbDesc","get","set","state","setNativeControlAttr","removeNativeControlAttr","isIndeterminate","indeterminate","hasNativeControl","setNativeControlDisabled","forceLayout","isAttachedToDOM","parentNode","uninstallPropertyChangeHooks_","setDisabled","inputPropDesc","ActivationStateType","ListenerInfoType","ListenersType","PointType","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_","UNBOUNDED","layoutInternal_","FG_ACTIVATION","FG_DEACTIVATION","removeCssVars_","deregisterRootHandlers_","deregisterDeactivationHandlers_","k","activationState","previousActivationEvent","isSameInteraction","hasActivatedChild","resetActivationState_","registerDeactivationHandlers_","checkElementMadeActive_","animateActivation_","VAR_FG_TRANSLATE_START","VAR_FG_TRANSLATE_END","DEACTIVATION_TIMEOUT_MS","translateStart","translateEnd","getFgTranslationCoordinates_","startPoint","endPoint","rmBoundedActivationClasses_","activationHasEnded","FG_DEACTIVATION_MS","TAP_DELAY_MS","animateDeactivation_","maxDim","max","getBoundedRadius","hypotenuse","sqrt","pow","PADDING","floor","INITIAL_ORIGIN_SCALE","updateLayoutCssVars_","VAR_FG_SIZE","VAR_LEFT","VAR_TOP","VAR_FG_SCALE","round","BG_FOCUSED","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","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","idCounter","MDCChipSet","chips","chipFactory_","handleChipInteraction_","handleChipSelection_","handleChipRemoval_","chipFactory","instantiateChips_","chip","select","handleChipInteraction","handleChipSelection","handleChipRemoval","chipEl","removeChip","findChipIndex_","splice","chipElements","MDCChipSetFoundation","CHIP_SELECTOR","getSelectedChipIds","selectedChipIds_","deselect_","CHOICE","previouslySelectedChip","FILTER","toggleSelect_","chipIsSelected","MDCDialogFoundation","MDCDialog","buttonRipples_","buttons_","defaultButton_","container_","initialFocusEl_","focusTrapFactory_","focusTrap_","handleDocumentKeydown_","handleOpening_","handleClosing_","layout_","focusTrapFactory","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","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","initialFocus","escapeDeactivates","clickOutsideDeactivates","isScrollable","scrollHeight","areTopsMisaligned","els","tops","Set","offsetTop","size","MDCDrawer","scrim_","handleScrimClick_","listEl","handleScrimClick","previousFocus","activeNavItemEl","MDCModalDrawerFoundation","returnFocusOnDeactivate","shakeAnimationEndHandler_","handleShakeAnimationEnd_","LABEL_SHAKE","LABEL_FLOAT_ABOVE","MDCFormField","input","input_","label_","activateInputRipple","deactivateInputRipple","MDCFormFieldFoundation","clickHandler_","MDCFormFieldAdapter","MDCGridList","getNumberOfTiles","MDCGridListFoundation","TILE_SELECTOR","getOffsetWidthForTileAtIndex","setStyleForTilesElement","TILES_SELECTOR","alignCenter","resizeFrame_","alignCenter_","gridWidth","itemWidth","tilesWidth","MDCIconButtonToggle","attrName","attrValue","notifyChange","MDCIconButtonToggleFoundation","isOn","toggle","disabled_","ARIA_PRESSED","ICON_BUTTON_ON","IconButtonToggleState","MDCIconButtonToggleAdapter","IconButtonToggleEvent","MDCIconToggle","isKeyboardActivated","iconEl_","setText","text","getTabIndex","tabIndex","setTabIndex","rmAttr","MDCIconToggleFoundation","on","refreshToggleData","sel","on_","toggleOnData_","toggleOffData_","toggleFromEvt_","isHandlingKeydown_","keydownHandler_","keyupHandler_","DATA_TOGGLE_ON","DATA_TOGGLE_OFF","parseJsonDataAttr_","ARIA_LABEL","classToRemove","cssClass","dataAttr","val","JSON","parse","KeyboardKey","keyboardKey","IconToggleState","MDCIconToggleAdapter","IconToggleEvent","MDCLinearProgress","getPrimaryBar","MDCLinearProgressFoundation","PRIMARY_BAR_SELECTOR","getBuffer","BUFFER_SELECTOR","setDeterminate","setProgress","setBuffer","setReverse","determinate_","INDETERMINATE_CLASS","reverse_","REVERSED_CLASS","progress_","isDeterminate","setScale_","isReversed","CLOSED_CLASS","scaleValue","transformStyleProperty","MDCLineRippleFoundation","transitionEndHandler_","LINE_RIPPLE_DEACTIVATING","LINE_RIPPLE_ACTIVE","isDeactivating","MDCMenuFoundation","getSelectionGroup_","handleSelectionGroup_","parent","isGroup","isListItem","MDCMenuAdapter","storedTransformPropertyName_","getTransformPropertyName","transformPropertyName","MDCNotchedOutlineFoundation","MDCRadio","nativeControl_","MDCRadioFoundation","MDCRadioAdapter","MDCSelect","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","isRequired","required","observerHandler","attributesList","attributeName","getAttributesList","mutationsList","mutation","MutationObserver","observe","attributes","selectedEl","setLeadingIconAriaLabel","setLeadingIconContent","setHelperTextContent","MDCSelectFoundation","foundationMap","didChange","openNotch","optionHasValue","setValidity","showToScreenReader","labelScale","setAriaLabel","MDCSelectHelperTextFoundation","selectIsValid","MDCSlider","thumbContainer_","track_","pinValueMarker_","trackMarkerContainer_","registerThumbContainerInteractionHandler","deregisterThumbContainerInteractionHandler","registerBodyInteractionHandler","deregisterBodyInteractionHandler","notifyInput","setThumbContainerStyleProperty","setTrackStyleProperty","setMarkerValue","innerText","appendTrackMarkers","frag","createDocumentFragment","marker","removeTrackMarkers","firstChild","setLastTrackMarkersStyleProperty","lastTrackMarker","isRTL","origValueNow","parseFloat","step","setupTrackMarker","amount","getMin","setMin","getMax","setMax","getStep","setStep","KEY_IDS","ARROW_LEFT","ARROW_RIGHT","ARROW_UP","ARROW_DOWN","HOME","END","PAGE_UP","PAGE_DOWN","MOVE_EVENT_MAP","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_","isNaN","setInTransit_","setActive_","moveHandler","handleMove_","upHandler","handleUp_","setValueFromEvt_","targetTouches","getPageX_","computeValueFromPageX_","xPos","pctComplete","keyId","getKeyId_","getValueForKeyId_","kbdEvt","delta","valueNeedsToBeFlipped","shouldFireInput","force","valueSetToBoundary","quantize_","numSteps","quantizedVal","translatePx","transformProp","transitionendEvtName","onTransitionEnd","active","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","changeHandler_","RIPPLE_SURFACE_SELECTOR","MDCSwitchFoundation","setNativeControlChecked","setChecked","updateCheckedStyling_","MDCSwitchAdapter","NO_TRANSITION","MDCSlidingTabIndicatorFoundation","currentClientRect","widthDelta","xPosition","MDCFadingTabIndicatorFoundation","focusOnActivate_","TABINDEX","rootWidth","rootLeft","contentWidth","contentLeft","rootRight","contentRight","tabIdCounter","MDCTabBar","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","MDCTabBarFoundation","TAB_ACTIVATED_EVENT","TAB_SELECTOR","tabScrollerElement","TAB_SCROLLER_SELECTOR","useAutomaticActivation","setUseAutomaticActivation","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","animation","scrollToRTL","targetScrollX","incrementScrollRTL","currentScrollPosition","getAnimatingScrollPosition_","getAnimatingScrollPosition","initialScrollLeft","newScrollLeft","rootClientRect","contentClientRect","rightEdgeDelta","MDCTabScrollerRTLDefault","currentScrollLeft","clampedScrollLeft","MDCTabScrollerRTLNegative","MDCTabScrollerRTLReverse","horizontalScrollbarHeight_","documentObj","shouldCacheResult","p","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","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","characterCounter_","characterCounterFactory","helperTextStrings","nextElementSibling","hasHelperLine","helperTextEl","characterCounterStrings","characterCounterEl","iconElements","registerTextFieldInteractionHandler","deregisterTextFieldInteractionHandler","registerValidationAttributeChangeHandler","targetNode","config","deregisterValidationAttributeChangeHandler","getInputAdapterMethods_","getLineRippleAdapterMethods_","shakeLabel","hasLabel","activateLineRipple","deactivateLineRipple","setLineRippleTransformOrigin","registerInputInteractionHandler","deregisterInputInteractionHandler","getNativeInput","characterCounter","trailingIcon","valid","pattern","minLength","setTrailingIconAriaLabel","setTrailingIconContent","useNativeValidation","setUseNativeValidation","MDCTextFieldFoundation","isFocused_","getNativeInput_","shouldAlwaysFloat_","isBadInput_","receivedUserInput_","useCustomValidityChecking_","isValid_","useNativeValidation_","inputFocusHandler_","activateFocus","inputBlurHandler_","deactivateFocus","inputInputHandler_","handleInput","setPointerXOffset_","textFieldInteractionHandler_","handleTextFieldInteraction","validationAttributeChangeHandler_","handleValidationAttributeChange","setCharacterCounter_","styleValidity_","isDense","styleFocused_","targetEvent","touches","autoCompleteFocus","isNativeInputValid_","styleDisabled_","setCounterValue","validity","badInput","MDCTextFieldHelperText","MDCTextFieldCharacterCounter","MDCTextFieldIcon","MDCToolbar","ripples_","MDCToolbarFoundation","icon","getViewportWidth","getOffsetHeight","getFirstRowElementOffsetHeight","firstRowElement_","setStyleForTitleElement","titleElement_","setStyleForFlexibleRowElement","setStyleForFixedAdjustElement","fixedAdjustElement","FIRST_ROW_SELECTOR","fixedAdjustElement_","updateAdjustElementStyles","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","navIcon_","iconRipples_","scrollTarget_","icons","iconRipple","destroyScrollHandler","initScrollHandler","MDCFixedTopAppBarFoundation","wasScrolled_","fixedScrollHandler_","currentScroll","MDCShortTopAppBarFoundation","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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;gCAKYA,M,EAAQE,Q,EAAU,CAAE;;;;;;AAGlC,0EAAegC,iBAAf,E;;;;;;ACzDA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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kBADJ;AAEdE,+BAA6B,YAFf;AAGdoH,iBAAe,eAHD;AAIdC,gBAAc,cAJA;AAKd1F,+BAA6B,qCALf;AAMdN,+BAA6B,mBANf;AAOdQ,kCAAgC,wCAPlB;AAQduB,kBAAgB,oCARF;AASdF,qBAAmB,uCATL;AAUdhC,2BAAyB,2EAVX;AAWd8B,2CAAuCpI,WAAW6F,eAAlD,oCACG7F,WAAW6F,eADd,OAXc;AAadH,kCAA8B1F,WAAW6F,eAAzC,iCAAoF7F,WAAW6F,eAA/F,gBACG7F,WAAW6F,eADd,iDAEG7F,WAAW6F,eAFd,2CAbc;AAgBdwD,0BAAwB,8CAhBV;AAiBdH,gBAAc;AAjBA,CAAhB;;AAoBA;AACA,IAAI4V,cAAJ;;;;;;;;ACrDA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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YAAT,CAAsBx5B,EAAtB,EAA0B;AACxB,SAAOA,GAAGy5B,YAAH,GAAkBz5B,GAAGihB,YAA5B;AACD;;AAED;;;;AAIA,SAASyY,iBAAT,CAA2BC,GAA3B,EAAgC;AAC9B,MAAMC,OAAO,IAAIC,GAAJ,EAAb;AACA,KAAGv1B,OAAH,CAAWhE,IAAX,CAAgBq5B,GAAhB,EAAqB,UAAC35B,EAAD;AAAA,WAAQ45B,KAAKhgC,GAAL,CAASoG,GAAG85B,SAAZ,CAAR;AAAA,GAArB;AACA,SAAOF,KAAKG,IAAL,GAAY,CAAnB;AACD;;;;;;;;ACvDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,uBAAuB;AACpC;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,sBAAsB,gBAAgB;AACtC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;;AAEA;AACA;AACA,KAA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KAFmB,EAEZ;AACrBC,uBAAmB,KAHc,EAGP;AAC1BkB,6BAAyB,KAJQ,EAA5B,CAAP;AAMD;;;;;;;;ACrCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,uBAAuB;AACpC;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,sBAAsB,gBAAgB;AACtC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvMA;;AAEA;;AAEA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;AClBA;;;;;;;;;;;;;;;;;;;;;;;AAuBA;AACA;AACA;;AAEA;;;;;IAIM9lB,0B;;;;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","file":"material-components-web.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"," \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 45b4771b37efd9fee3d4","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 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\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}\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}\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} */\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} */\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} 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} */ (\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\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*/\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} */ (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} 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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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} */\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\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}\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\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}\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}\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}\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): 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} */\nconst CB_PROTO_PROPS = ['checked', 'indeterminate'];\n\n/**\n * @extends MDCComponent\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} */\nlet activatedTargets = [];\n\n/**\n * @extends {MDCFoundation}\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}\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}\n * @final\n */\nclass MDCChipSet extends MDCComponent {\n /**\n * @param {...?} args\n */\n constructor(...args) {\n super(...args);\n\n /** @type {!Array} */\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}\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}\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}\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}\n */\n this.selectedChipIds_ = [];\n }\n\n /**\n * Returns an array of the IDs of all selected chips.\n * @return {!Array}\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}\n * @private\n */\n this.buttonRipples_;\n\n /** @private {!Array} */\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|!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}\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}\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\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}\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}\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}\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}\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}\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}\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}\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}\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\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}\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\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}\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}\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}\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\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}\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 `` visually hides the space character so that it doesn't cause jank when added/removed.\n // N.B.: Setting `position: absolute`, `opacity: 0`, or `height: 0` prevents Chrome from detecting the DOM change.\n //\n // This technique has been tested in:\n //\n // * JAWS 2019:\n // - Chrome 70\n // - Firefox 60 (ESR)\n // - IE 11\n // * NVDA 2018:\n // - Chrome 70\n // - Firefox 60 (ESR)\n // - IE 11\n // * ChromeVox 53\n labelEl.textContent = '';\n labelEl.innerHTML = ' ';\n\n // Prevent visual jank by temporarily displaying the label text in the ::before pseudo-element.\n // CSS generated content is normally announced by screen readers\n // (except in IE 11; see https://tink.uk/accessibility-support-for-css-generated-content/);\n // however, `aria-live` is turned off, so this DOM update will be ignored by screen readers.\n labelEl.setAttribute(ARIA_LIVE_LABEL_TEXT_ATTR, labelText);\n\n setTimeout(() => {\n // Allow screen readers to announce changes to the DOM again.\n ariaEl.setAttribute('aria-live', priority);\n\n // Remove the message from the ::before pseudo-element.\n labelEl.removeAttribute(ARIA_LIVE_LABEL_TEXT_ATTR);\n\n // Restore the original label text, which will be announced by screen readers.\n labelEl.textContent = labelText;\n }, ARIA_LIVE_DELAY_MS);\n}\n\nexport {announce};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-snackbar/util.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\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}\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}\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}\n * @final\n */\nclass MDCTabBar extends MDCComponent {\n /**\n * @param {...?} args\n */\n constructor(...args) {\n super(...args);\n\n /** @private {!Array} */\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}\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}\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}\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}\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}\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}\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}\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}\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} 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}\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}\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}\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}\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} */\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}\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}\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}\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":""}