blob: 9290e8eaff572dc1b9fb2202a65bf9930b5d1ce5 [file] [log] [blame]
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6","webpack:///mdl-ext.min.js?c961","webpack:///webpack/bootstrap 82005ea981e272a97aa0?b88c","webpack:///./~/babel-runtime/~/core-js/library/modules/_core.js?d611","webpack:///./src/utils/constants.js?14df","webpack:///./~/babel-runtime/~/core-js/library/modules/_export.js?8e40","webpack:///./~/babel-runtime/~/core-js/library/modules/_wks.js?2014","webpack:///./~/babel-runtime/~/core-js/library/modules/_global.js?3c52","webpack:///./~/babel-runtime/~/core-js/library/modules/_an-object.js?3af2","webpack:///./~/babel-runtime/~/core-js/library/modules/_iterators.js?f3f3","webpack:///./~/babel-runtime/helpers/toConsumableArray.js?1825","webpack:///./~/babel-runtime/~/core-js/library/modules/_descriptors.js?c0f5","webpack:///./~/babel-runtime/~/core-js/library/modules/_fails.js?c6dd","webpack:///./~/babel-runtime/~/core-js/library/modules/_hide.js?0d2e","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-dp.js?5986","webpack:///./src/utils/full-throttle.js?dc07","webpack:///./src/utils/json-utils.js?45f0","webpack:///./src/utils/string-utils.js?37f8","webpack:///./~/babel-runtime/~/core-js/library/modules/_has.js?ddd0","webpack:///./~/babel-runtime/~/core-js/library/modules/_is-object.js?cfda","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-keys.js?5d2e","webpack:///./~/babel-runtime/~/core-js/library/modules/_to-iobject.js?527c","webpack:///./~/babel-runtime/~/core-js/library/modules/_to-object.js?ca4f","webpack:///./src/utils/dom-utils.js?0816","webpack:///./~/babel-runtime/helpers/classCallCheck.js?21af","webpack:///./~/babel-runtime/helpers/createClass.js?1dfe","webpack:///./~/babel-runtime/~/core-js/library/modules/_defined.js?932b","webpack:///./~/babel-runtime/~/core-js/library/modules/_property-desc.js?256b","webpack:///./~/babel-runtime/~/core-js/library/modules/_shared-key.js?5602","webpack:///./~/babel-runtime/~/core-js/library/modules/_to-integer.js?09ce","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.string.iterator.js?ae27","webpack:///./src/utils/easing.js?f6e9","webpack:///./src/utils/interval-function.js?c7e7","webpack:///./~/babel-runtime/core-js/get-iterator.js?1b08","webpack:///./~/babel-runtime/core-js/number/is-integer.js?14ca","webpack:///./~/babel-runtime/core-js/object/assign.js?e6ca","webpack:///./~/babel-runtime/~/core-js/library/modules/_a-function.js?0699","webpack:///./~/babel-runtime/~/core-js/library/modules/_classof.js?4e04","webpack:///./~/babel-runtime/~/core-js/library/modules/_cof.js?7381","webpack:///./~/babel-runtime/~/core-js/library/modules/_ctx.js?4e59","webpack:///./~/babel-runtime/~/core-js/library/modules/_dom-create.js?612f","webpack:///./~/babel-runtime/~/core-js/library/modules/_enum-bug-keys.js?3254","webpack:///./~/babel-runtime/~/core-js/library/modules/_iobject.js?34ed","webpack:///./~/babel-runtime/~/core-js/library/modules/_iter-define.js?4272","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-pie.js?a26b","webpack:///./~/babel-runtime/~/core-js/library/modules/_set-to-string-tag.js?57a7","webpack:///./~/babel-runtime/~/core-js/library/modules/_shared.js?f1ee","webpack:///./~/babel-runtime/~/core-js/library/modules/_to-length.js?f510","webpack:///./~/babel-runtime/~/core-js/library/modules/_uid.js?c10a","webpack:///./~/babel-runtime/~/core-js/library/modules/core.get-iterator-method.js?8a45","webpack:///./~/babel-runtime/~/core-js/library/modules/web.dom.iterable.js?7e82","webpack:///./src/accordion/accordion.js?021c","webpack:///./src/carousel/carousel.js?7189","webpack:///./src/collapsible/collapsible.js?8da8","webpack:///./src/formatfield/formatfield.js?602e","webpack:///./src/index.js?9552","webpack:///./src/lightboard/lightboard.js?4a51","webpack:///./src/lightbox/lightbox.js?4a9b","webpack:///./src/menu-button/menu-button.js?292f","webpack:///./src/selectfield/selectfield.js?4310","webpack:///./src/sticky-header/sticky-header.js?0ce9","webpack:///./src/utils/index.js?d310","webpack:///./~/babel-runtime/core-js/array/from.js?efc2","webpack:///./~/babel-runtime/core-js/is-iterable.js?350e","webpack:///./~/babel-runtime/core-js/number/is-nan.js?f039","webpack:///./~/babel-runtime/core-js/object/define-property.js?5f70","webpack:///./~/babel-runtime/core-js/object/entries.js?41f9","webpack:///./~/babel-runtime/core-js/object/keys.js?fe06","webpack:///./~/babel-runtime/core-js/reflect/apply.js?a3c1","webpack:///./~/babel-runtime/helpers/slicedToArray.js?39c4","webpack:///./~/babel-runtime/~/core-js/library/fn/array/from.js?56e0","webpack:///./~/babel-runtime/~/core-js/library/fn/get-iterator.js?cf7c","webpack:///./~/babel-runtime/~/core-js/library/fn/is-iterable.js?f64a","webpack:///./~/babel-runtime/~/core-js/library/fn/number/is-integer.js?17db","webpack:///./~/babel-runtime/~/core-js/library/fn/number/is-nan.js?e8e9","webpack:///./~/babel-runtime/~/core-js/library/fn/object/assign.js?2fc7","webpack:///./~/babel-runtime/~/core-js/library/fn/object/define-property.js?4d33","webpack:///./~/babel-runtime/~/core-js/library/fn/object/entries.js?eb23","webpack:///./~/babel-runtime/~/core-js/library/fn/object/keys.js?0e2b","webpack:///./~/babel-runtime/~/core-js/library/fn/reflect/apply.js?1fe6","webpack:///./~/babel-runtime/~/core-js/library/modules/_add-to-unscopables.js?7da3","webpack:///./~/babel-runtime/~/core-js/library/modules/_array-includes.js?3a79","webpack:///./~/babel-runtime/~/core-js/library/modules/_create-property.js?f892","webpack:///./~/babel-runtime/~/core-js/library/modules/_html.js?8916","webpack:///./~/babel-runtime/~/core-js/library/modules/_ie8-dom-define.js?b102","webpack:///./~/babel-runtime/~/core-js/library/modules/_is-array-iter.js?a9d0","webpack:///./~/babel-runtime/~/core-js/library/modules/_is-integer.js?9053","webpack:///./~/babel-runtime/~/core-js/library/modules/_iter-call.js?45cd","webpack:///./~/babel-runtime/~/core-js/library/modules/_iter-create.js?0359","webpack:///./~/babel-runtime/~/core-js/library/modules/_iter-detect.js?e400","webpack:///./~/babel-runtime/~/core-js/library/modules/_iter-step.js?8944","webpack:///./~/babel-runtime/~/core-js/library/modules/_library.js?08a9","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-assign.js?82ff","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-create.js?9175","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-dps.js?73bc","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-gops.js?a865","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-gpo.js?5ec8","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-keys-internal.js?6fa8","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-sap.js?2605","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-to-array.js?205b","webpack:///./~/babel-runtime/~/core-js/library/modules/_redefine.js?350a","webpack:///./~/babel-runtime/~/core-js/library/modules/_string-at.js?8678","webpack:///./~/babel-runtime/~/core-js/library/modules/_to-index.js?7bea","webpack:///./~/babel-runtime/~/core-js/library/modules/_to-primitive.js?1a65","webpack:///./~/babel-runtime/~/core-js/library/modules/core.get-iterator.js?74ea","webpack:///./~/babel-runtime/~/core-js/library/modules/core.is-iterable.js?be30","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.array.from.js?f8ab","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.array.iterator.js?8359","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.number.is-integer.js?a48c","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.number.is-nan.js?7944","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.object.assign.js?07f0","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.object.define-property.js?8bde","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.object.keys.js?dfa4","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.reflect.apply.js?2b77","webpack:///./~/babel-runtime/~/core-js/library/modules/es7.object.entries.js?872a"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","core","version","__e","Object","defineProperty","value","VK_TAB","VK_ENTER","VK_ESC","VK_SPACE","VK_PAGE_UP","VK_PAGE_DOWN","VK_END","VK_HOME","VK_ARROW_LEFT","VK_ARROW_UP","VK_ARROW_RIGHT","VK_ARROW_DOWN","ARIA_EXPANDED","ARIA_HIDDEN","ARIA_MULTISELECTABLE","ARIA_SELECTED","IS_DIRTY","IS_DISABLED","IS_EXPANDED","IS_FOCUSED","IS_INVALID","IS_UPGRADED","DATA_UPGRADED","MDL_RIPPLE","MDL_RIPPLE_COMPONENT","MDL_RIPPLE_EFFECT","MDL_RIPPLE_EFFECT_IGNORE_EVENTS","global","ctx","hide","PROTOTYPE","$export","type","name","source","key","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","target","undefined","C","a","b","arguments","length","apply","Function","virtual","R","U","store","uid","Symbol","USE_SYMBOL","$exports","window","Math","self","__g","isObject","it","TypeError","_interopRequireDefault","obj","__esModule","default","_from","_from2","arr","Array","isArray","i","arr2","get","exec","e","dP","createDesc","object","f","anObject","IE8_DOM_DEFINE","toPrimitive","O","Attributes","_apply","_apply2","fullThrottle","callback","context","throttling","_len","args","_key","requestAnimationFrame","jsonStringToObject","_assign","_assign2","jsonString","s","replace","JSON","parse","Error","message","stringList","randomString","joinStrings","_keys","_keys2","isString","str","flatten","list","reduce","concat","objectToStrings","arg","filter","map","result","_len2","_key2","delimiter","join","n","random","toString","slice","hasOwnProperty","$keys","enumBugKeys","keys","IObject","defined","tether","removeChildElements","moveElements","isRectInsideWindowViewport","isFocusable","getScrollParents","getParentElements","getWindowViewport","_isNan","_isNan2","element","forceReflow","lastChild","removeChild","d","style","display","ownerDocument","createDocumentFragment","firstChild","appendChild","viewportWidth","max","document","documentElement","clientWidth","innerWidth","viewportHeight","clientHeight","innerHeight","_ref","top","left","bottom","right","_getWindowViewport","el","elements","parentNode","cs","getComputedStyle","overflowY","overflowX","unshift","body","from","to","controlledBy","controlRect","getBoundingClientRect","_getWindowViewport2","height","offsetHeight","width","offsetWidth","elementRect","dy","dx","ddy","ddx","r","offsetTop","offsetLeft","hasAttribute","tabindex","getAttribute","parseInt","selector","nodeName","test","toLowerCase","disabled","href","getPropertyValue","instance","Constructor","_defineProperty","_defineProperty2","defineProperties","props","descriptor","enumerable","configurable","writable","protoProps","staticProps","prototype","bitmap","shared","ceil","floor","isNaN","$at","String","iterated","_t","_i","point","index","done","easeInOutQuad","t","inOutQuintic","ts","tc","MIN_INERVAL","intervalFunction","interval","lapse","cb","next","timeElapsed","execute","cancel","cancelAnimationFrame","start","timeStart","Date","now","loop","started","immediate","ReferenceError","stop","cof","TAG","ARG","tryGet","T","callee","aFunction","fn","that","is","createElement","split","propertyIsEnumerable","LIBRARY","redefine","has","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","Base","NAME","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","values","def","tag","stat","SHARED","toInteger","min","px","classof","getIteratorMethod","TO_STRING_TAG","collections","Collection","_toConsumableArray2","_toConsumableArray3","_constants","ACCORDION","ACCORDION_VERTICAL","ACCORDION_HORIZONTAL","PANEL","PANEL_ROLE","TAB","TAB_CAPTION","TAB_ROLE","TABPANEL","TABPANEL_ROLE","RIPPLE_EFFECT","RIPPLE","ANIMATION_EFFECT","ANIMATION","MaterialExtAccordion","element_","init","accordionPanelElements","classList","contains","panel","tab","querySelector","tabpanel","commandHandler_","event","preventDefault","stopPropagation","detail","command","dispatchToggleEvent_","state","ce","CustomEvent","bubbles","cancelable","dispatchEvent","openTab_","add","setAttribute","removeAttribute","closeTab_","remove","toggleTab_","closeTabs_","openTabs_","_this","querySelectorAll","forEach","closedItem","_this2","upgradeTab","tabElement","_this3","_accordionPanelElemen","disableTab","enableTab","calcMaxTabCaptionWidth","tabCaption","w","children","v","maxWidth","selectTab","selectedTab","tabClickHandler","tabFocusHandler","tabpanelClickHandler","tabpanelFocusHandler","tabKeydownHandler","keyCode","nextTab","nextPanel","previousElementSibling","nextElementSibling","focus","removeEventListener","addEventListener","_this4","openTab","_accordionPanelElemen2","closeTab","_accordionPanelElemen3","toggleTab","_accordionPanelElemen4","action","_this5","bind","componentHandler","register","constructor","classAsString","cssClass","widget","_isInteger","_isInteger2","_intervalFunction","_intervalFunction2","_easing","_jsonUtils","MDL_RIPPLE_CONTAINER","SLIDE","ROLE","SLIDE_ROLE","MaterialExtCarousel","config_","interactive","autostart","animationLoop","scrollAnimation_","startSlideShow_","nextSlide","slide","animateScroll_","moveSlideIntoViewport_","emitSelectEvent_","nextScroll","direction","nextDirection","scrollLeft","scrollWidth","x","cancelSlideShow_","newPosition","newDuration","completedCallback","distance","duration","abs","command_","setAriaSelected_","slides","getSlidesInViewport_","keyDownHandler_","cmd","getSlide_","shiftKey","setFocus_","dragHandler_","updating","rAFDragId","startX","clientX","touches","prevX","targetElement","update","currentX","drag","endDrag","clickHandler_","focusHandler_","blurHandler_","evt","carouselRect","slidesInViewport","slideRect","removeListeners_","mdlDowngrade_","closest","addRipple_","rippleContainer","ripple","img","title","upgradeElement","stopAnimation","upgradeSlides","hasRippleEffect","getConfig","_classCallCheck2","_classCallCheck3","_createClass2","_createClass3","_stringUtils","_domUtils","JS_COLLAPSIBLE","COLLAPSIBLE_CONTROL_CLASS","COLLAPSIBLE_GROUP_CLASS","COLLAPSIBLE_REGION_CLASS","Collapsible","controlElement_","keyDownHandler","controlElement","MouseEvent","view","clickHandler","isDisabled","push","find","toggle","isExpanded","dispatchToggleEvent","regions","regionElements","region","collapse","expand","regionId","ids","regionIds","role","addRegionId","initControl","initRegions","addRegionElement","addListeners","removeListeners","MaterialExtCollapsible","collapsible","downgrade","getControlElement","getRegionElements","addRegionElements","removeRegionElements","removeRegionElement","disableToggle","enableToggle","_class","_temp","JS_FORMAT_FIELD","FORMAT_FIELD_COMPONENT","browserLanguage","navigator","languages","language","userLanguage","FormatField","options_","clearTimeout","timer","focusInHandler","input","readOnly","unformatInput","setTimeout","select","focusOutHandler","formatValue","doReplace","RegExp","options","groupSeparator","decimalSeparator","intlGroupSeparator_","intlDecimalSeparator_","Intl","NumberFormat","locales","format","stripSeparatorsFromValue","fixSeparators","_this6","addOptions","opts","addLocale","addGrouping","toLocaleString","useGrouping","minimumFractionDigits","maximumFractionDigits","charAt","input_","MaterialExtFormatfield","formatField_","getOptions","getUnformattedValue","unformat","LIGHTBOARD_ROLE","SLIDE_TABSTOP","MaterialExtLightboard","getSlide","selectSlide_","selectedSlide","dispatchSelectEvent_","addRipple","firstSlide","lastSlide","prevSlide","keydownHandler","focusHandler","_slicedToArray2","_slicedToArray3","_entries","_entries2","_getIterator2","_getIterator3","_fullThrottle","_fullThrottle2","LIGHTBOX","LIGHTBOX_SLIDER","LIGHTBOX_SLIDER_SLIDE","STICKY_FOOTER","BUTTON","MaterialExtLightbox","dispatchAction_","buttonClickHandler_","repositionDialog_","lightboxElement","footerHeight","footer","isSticky","reposition","dialog","fh","position","scrollTop","topValue","naturalWidth","vh","imgLoadHandler_","imgDragHandler_","setStyles","properties","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_step$value","err","return","opacity","slider","textContent","line-height","font-size","text-align","background-image","src","button","figcaption","JS_MENU_BUTTON","MENU_BUTTON_MENU","MENU_BUTTON_MENU_ITEM","MENU_BUTTON_MENU_ITEM_SEPARATOR","menuFactory","ariaControls","removeAllSelected","selectedItem","setSelected","item","force","getSelected","isSeparator","nextItem","current","firstElementChild","previousItem","lastElementChild","firstItem","lastItem","selectItem","close","blurHandler","relatedTarget","explicitOriginalTarget","activeElement","shouldClose","touchStartHandler","open","btn","forceFocus","addWaiAria","menuitem","selected","MenuButton","openMenu","closeMenu","recalcMenuPosition","focusElement","focusElementLastScrollPosition","parseFloat","menu","positionChangeHandler","closeMenuHandler","dispatchMenuSelect","scrollElements","addFocusElement","tagName","moveElementToDocumentBody","findMenuElement","menuElement","menuElementId","addMenu","componentInstance","related","indexOf","MaterialExtMenuButton","menuButton_","getMenuElement","getSelectedMenuItem","setSelectedMenuItem","LABEL","INPUT","MaterialExtSelectfield","onFocus_","onBlur_","onReset_","updateClasses_","checkDisabled","checkValidity","checkDirty","checkFocus","select_","Boolean","disable","enable","change","label_","invalid","MDL_LAYOUT_CONTENT","IS_SCROLL_CLASS","MaterialExtStickyHeader","header_","content_","lastScrollTop_","visibleAtScrollEnd","mutationObserver_","drawing_","recalcWidth_","throttleResize","resizeHandler_","reposition_","currentContentScrollTop","scrollDiff","headerTop","scrollHeight","throttleScroll","scrollHandler_","updatePosition_","addMutationObserver_","MutationObserver","observe","attributes","childList","characterData","subtree","disconnect","paddingTop","_isIterable2","_isIterable3","sliceIterator","_arr","_n","_d","_e","_s","Number","isInteger","assign","$Object","desc","Reflect","toIObject","toLength","toIndex","IS_INCLUDES","$this","fromIndex","$defineProperty","ArrayProto","isFinite","iterator","ret","create","SAFE_CLOSING","riter","skipClosing","safe","iter","getKeys","gOPS","pIE","toObject","$assign","A","K","k","aLen","getSymbols","isEnum","j","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","lt","gt","contentWindow","write","Properties","getOwnPropertySymbols","ObjectProto","arrayIndexOf","names","fails","KEY","exp","isEntries","TO_STRING","pos","l","charCodeAt","val","valueOf","getIterator","iterFn","isIterable","isArrayIter","createProperty","getIterFn","arrayLike","step","mapfn","mapping","addToUnscopables","_k","Arguments","number","rApply","fApply","thisArgument","argumentsList","L"],"mappings":"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","file":"mdl-ext.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"mdl-ext\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mdl-ext\"] = factory();\n\telse\n\t\troot[\"mdl-ext\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"mdl-ext\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mdl-ext\"] = factory();\n\telse\n\t\troot[\"mdl-ext\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(113);\n\tmodule.exports = __webpack_require__(53);\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\tvar core = module.exports = {version: '2.4.0'};\n\tif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar VK_TAB = 9;\n\tvar VK_ENTER = 13;\n\tvar VK_ESC = 27;\n\tvar VK_SPACE = 32;\n\tvar VK_PAGE_UP = 33;\n\tvar VK_PAGE_DOWN = 34;\n\tvar VK_END = 35;\n\tvar VK_HOME = 36;\n\tvar VK_ARROW_LEFT = 37;\n\tvar VK_ARROW_UP = 38;\n\tvar VK_ARROW_RIGHT = 39;\n\tvar VK_ARROW_DOWN = 40;\n\t\n\tvar ARIA_EXPANDED = 'aria-expanded';\n\tvar ARIA_HIDDEN = 'aria-hidden';\n\tvar ARIA_MULTISELECTABLE = 'aria-multiselectable';\n\tvar ARIA_SELECTED = 'aria-selected';\n\t\n\tvar IS_DIRTY = 'is-dirty';\n\tvar IS_DISABLED = 'is-disabled';\n\tvar IS_EXPANDED = 'is-expanded';\n\tvar IS_FOCUSED = 'is-focused';\n\tvar IS_INVALID = 'is-invalid';\n\tvar IS_UPGRADED = 'is-upgraded';\n\tvar DATA_UPGRADED = 'data-upgraded';\n\t\n\tvar MDL_RIPPLE = 'mdl-ripple';\n\tvar MDL_RIPPLE_COMPONENT = 'MaterialRipple';\n\tvar MDL_RIPPLE_EFFECT = 'mdl-js-ripple-effect';\n\tvar MDL_RIPPLE_EFFECT_IGNORE_EVENTS = 'mdl-js-ripple-effect--ignore-events';\n\t\n\texports.VK_TAB = VK_TAB;\n\texports.VK_ENTER = VK_ENTER;\n\texports.VK_ESC = VK_ESC;\n\texports.VK_SPACE = VK_SPACE;\n\texports.VK_PAGE_UP = VK_PAGE_UP;\n\texports.VK_PAGE_DOWN = VK_PAGE_DOWN;\n\texports.VK_END = VK_END;\n\texports.VK_HOME = VK_HOME;\n\texports.VK_ARROW_LEFT = VK_ARROW_LEFT;\n\texports.VK_ARROW_UP = VK_ARROW_UP;\n\texports.VK_ARROW_RIGHT = VK_ARROW_RIGHT;\n\texports.VK_ARROW_DOWN = VK_ARROW_DOWN;\n\texports.ARIA_EXPANDED = ARIA_EXPANDED;\n\texports.ARIA_HIDDEN = ARIA_HIDDEN;\n\texports.ARIA_MULTISELECTABLE = ARIA_MULTISELECTABLE;\n\texports.ARIA_SELECTED = ARIA_SELECTED;\n\texports.IS_DIRTY = IS_DIRTY;\n\texports.IS_DISABLED = IS_DISABLED;\n\texports.IS_EXPANDED = IS_EXPANDED;\n\texports.IS_FOCUSED = IS_FOCUSED;\n\texports.IS_INVALID = IS_INVALID;\n\texports.IS_UPGRADED = IS_UPGRADED;\n\texports.DATA_UPGRADED = DATA_UPGRADED;\n\texports.MDL_RIPPLE = MDL_RIPPLE;\n\texports.MDL_RIPPLE_COMPONENT = MDL_RIPPLE_COMPONENT;\n\texports.MDL_RIPPLE_EFFECT = MDL_RIPPLE_EFFECT;\n\texports.MDL_RIPPLE_EFFECT_IGNORE_EVENTS = MDL_RIPPLE_EFFECT_IGNORE_EVENTS;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar global = __webpack_require__(5)\n\t , core = __webpack_require__(1)\n\t , ctx = __webpack_require__(37)\n\t , hide = __webpack_require__(11)\n\t , PROTOTYPE = 'prototype';\n\t\n\tvar $export = function(type, name, source){\n\t var IS_FORCED = type & $export.F\n\t , IS_GLOBAL = type & $export.G\n\t , IS_STATIC = type & $export.S\n\t , IS_PROTO = type & $export.P\n\t , IS_BIND = type & $export.B\n\t , IS_WRAP = type & $export.W\n\t , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n\t , expProto = exports[PROTOTYPE]\n\t , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n\t , key, own, out;\n\t if(IS_GLOBAL)source = name;\n\t for(key in source){\n\t // contains in native\n\t own = !IS_FORCED && target && target[key] !== undefined;\n\t if(own && key in exports)continue;\n\t // export native or passed\n\t out = own ? target[key] : source[key];\n\t // prevent global pollution for namespaces\n\t exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n\t // bind timers to global for call from export context\n\t : IS_BIND && own ? ctx(out, global)\n\t // wrap global constructors for prevent change them in library\n\t : IS_WRAP && target[key] == out ? (function(C){\n\t var F = function(a, b, c){\n\t if(this instanceof C){\n\t switch(arguments.length){\n\t case 0: return new C;\n\t case 1: return new C(a);\n\t case 2: return new C(a, b);\n\t } return new C(a, b, c);\n\t } return C.apply(this, arguments);\n\t };\n\t F[PROTOTYPE] = C[PROTOTYPE];\n\t return F;\n\t // make static versions for prototype methods\n\t })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n\t // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n\t if(IS_PROTO){\n\t (exports.virtual || (exports.virtual = {}))[key] = out;\n\t // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n\t if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n\t }\n\t }\n\t};\n\t// type bitmap\n\t$export.F = 1; // forced\n\t$export.G = 2; // global\n\t$export.S = 4; // static\n\t$export.P = 8; // proto\n\t$export.B = 16; // bind\n\t$export.W = 32; // wrap\n\t$export.U = 64; // safe\n\t$export.R = 128; // real proto method for `library` \n\tmodule.exports = $export;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar store = __webpack_require__(44)('wks')\n\t , uid = __webpack_require__(46)\n\t , Symbol = __webpack_require__(5).Symbol\n\t , USE_SYMBOL = typeof Symbol == 'function';\n\t\n\tvar $exports = module.exports = function(name){\n\t return store[name] || (store[name] =\n\t USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n\t};\n\t\n\t$exports.store = store;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n\t ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n\tif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isObject = __webpack_require__(17);\n\tmodule.exports = function(it){\n\t if(!isObject(it))throw TypeError(it + ' is not an object!');\n\t return it;\n\t};\n\n/***/ },\n/* 7 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {};\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\t\n\tvar _from = __webpack_require__(60);\n\t\n\tvar _from2 = _interopRequireDefault(_from);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = function (arr) {\n\t if (Array.isArray(arr)) {\n\t for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t arr2[i] = arr[i];\n\t }\n\t\n\t return arr2;\n\t } else {\n\t return (0, _from2.default)(arr);\n\t }\n\t};\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Thank's IE8 for his funny defineProperty\n\tmodule.exports = !__webpack_require__(10)(function(){\n\t return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n\t});\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(exec){\n\t try {\n\t return !!exec();\n\t } catch(e){\n\t return true;\n\t }\n\t};\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dP = __webpack_require__(12)\n\t , createDesc = __webpack_require__(25);\n\tmodule.exports = __webpack_require__(9) ? function(object, key, value){\n\t return dP.f(object, key, createDesc(1, value));\n\t} : function(object, key, value){\n\t object[key] = value;\n\t return object;\n\t};\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar anObject = __webpack_require__(6)\n\t , IE8_DOM_DEFINE = __webpack_require__(82)\n\t , toPrimitive = __webpack_require__(101)\n\t , dP = Object.defineProperty;\n\t\n\texports.f = __webpack_require__(9) ? Object.defineProperty : function defineProperty(O, P, Attributes){\n\t anObject(O);\n\t P = toPrimitive(P, true);\n\t anObject(Attributes);\n\t if(IE8_DOM_DEFINE)try {\n\t return dP(O, P, Attributes);\n\t } catch(e){ /* empty */ }\n\t if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n\t if('value' in Attributes)O[P] = Attributes.value;\n\t return O;\n\t};\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _apply = __webpack_require__(66);\n\t\n\tvar _apply2 = _interopRequireDefault(_apply);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/**\n\t * Since some events can fire at a high rate, the event handler should be limited to execute computationally\n\t * expensive operations, such as DOM modifications, inside a single rendered frame.\n\t * When listening to e.g. scroll and resize events, the browser tends to fire off more events per\n\t * second than are actually useful. For instance, if your event listener sets some element positions, then it\n\t * is possible for those positions to be updated multiple times in a single rendered frame. In this case, all of\n\t * the layout calculations triggered by setting the elements' positions will be wasted except for the one time that\n\t * it runs immediately prior to the browser rendering the updated layout to the screen.\n\t * To avoid wasting cycles, we can use requestAnimationFrame to only run the event listener once just before the page\n\t * is rendered to the screen.\n\t * *\n\t * @param callback the function to throttle\n\t * @param context optional context of this, default to global\n\t * @return {function(...[*])}\n\t */\n\tvar fullThrottle = function fullThrottle(callback, context) {\n\t\n\t if (!context) {\n\t context = undefined || window;\n\t }\n\t\n\t var throttling = false;\n\t\n\t return function () {\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t if (!throttling) {\n\t throttling = true;\n\t window.requestAnimationFrame(function () {\n\t throttling = false;\n\t return (0, _apply2.default)(callback, context, args);\n\t });\n\t }\n\t };\n\t};\n\t\n\texports.default = fullThrottle;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t/**\n\t * Converts a JSON string to object\n\t * @param jsonString\n\t * @param source\n\t */\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.jsonStringToObject = undefined;\n\t\n\tvar _assign = __webpack_require__(33);\n\t\n\tvar _assign2 = _interopRequireDefault(_assign);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar jsonStringToObject = function jsonStringToObject(jsonString) {\n\t var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\n\t var s = jsonString.replace(/'/g, '\"');\n\t try {\n\t return (0, _assign2.default)(source, JSON.parse(s));\n\t } catch (e) {\n\t throw new Error('Failed to parse json string: ' + s + '. Error: ' + e.message);\n\t }\n\t};\n\t\n\texports.jsonStringToObject = jsonStringToObject;\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t/**\n\t * @license\n\t * Copyright 2016 Leif Olsen. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t\n\t/**\n\t * A javascript utility for conditionally creating a list of strings.\n\t * The function takes any number of arguments which can be a string or object.\n\t * Inspired by (but not copied from) JedWatson/classnames, https://github.com/JedWatson/classnames\n\t *\n\t * @param {*} args the strings and/or objects to\n\t * @return {Array} a list of strings\n\t * @example\n\t * // Returns ['foo', 'bar', 'baz', 'quux']\n\t * stringList(', ', 'foo', { bar: true, duck: false }, 'baz', { quux: true });\n\t * @example see the tests for more examples\n\t */\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.stringList = exports.randomString = exports.joinStrings = undefined;\n\t\n\tvar _keys = __webpack_require__(65);\n\t\n\tvar _keys2 = _interopRequireDefault(_keys);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar stringList = function stringList() {\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t var isString = function isString(str) {\n\t return str != null && typeof str === 'string';\n\t };\n\t\n\t var flatten = function flatten(list) {\n\t return list.reduce(function (a, b) {\n\t return a.concat(Array.isArray(b) ? flatten(b) : b);\n\t }, []);\n\t };\n\t\n\t var objectToStrings = function objectToStrings(arg) {\n\t return (0, _keys2.default)(arg).filter(function (key) {\n\t return arg[key];\n\t }).map(function (key) {\n\t return key;\n\t });\n\t };\n\t\n\t return args.filter(function (arg) {\n\t return !!arg;\n\t }).map(function (arg) {\n\t return isString(arg) ? arg : objectToStrings(arg);\n\t }).reduce(function (result, arg) {\n\t return result.concat(Array.isArray(arg) ? flatten(arg) : arg);\n\t }, []);\n\t};\n\t\n\t/**\n\t * A simple javascript utility for conditionally joining strings together.\n\t * The function takes a delimiter string and any number of arguments which can be a string or object.\n\t *\n\t * @param delimiter delimiter to separate joined strings\n\t * @param {*} args the strings and/or objects to join\n\t * @return {String} the joined strings\n\t * @example\n\t * // Returns 'foo, bar, baz, quux'\n\t * joinStrings(', ', 'foo', { bar: true, duck: false }, 'baz', { quux: true });\n\t * @example see the tests for more examples\n\t */\n\tvar joinStrings = function joinStrings() {\n\t for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n\t args[_key2 - 1] = arguments[_key2];\n\t }\n\t\n\t var delimiter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';\n\t return stringList.apply(undefined, args).join(delimiter);\n\t};\n\t\n\t/**\n\t * Generates a random string with a given length\n\t * @param n {Integer} length of generated string\n\t * @see http://stackoverflow.com/questions/1349404/generate-random-string-characters-in-javascript\n\t * @return {String} the random string\n\t * @example\n\t * // Returns e.g. 'pd781w0y'\n\t * randomString(8);\n\t * @example see the tests for more examples\n\t */\n\tvar randomString = function randomString() {\n\t var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 12;\n\t return Array(n + 1).join((Math.random().toString(36) + '00000000000000000').slice(2, 18)).slice(0, n);\n\t};\n\t\n\texports.joinStrings = joinStrings;\n\texports.randomString = randomString;\n\texports.stringList = stringList;\n\n/***/ },\n/* 16 */\n/***/ function(module, exports) {\n\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\tmodule.exports = function(it, key){\n\t return hasOwnProperty.call(it, key);\n\t};\n\n/***/ },\n/* 17 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(it){\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.14 / 15.2.3.14 Object.keys(O)\n\tvar $keys = __webpack_require__(95)\n\t , enumBugKeys = __webpack_require__(39);\n\t\n\tmodule.exports = Object.keys || function keys(O){\n\t return $keys(O, enumBugKeys);\n\t};\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// to indexed object, toObject with fallback for non-array-like ES3 strings\n\tvar IObject = __webpack_require__(40)\n\t , defined = __webpack_require__(24);\n\tmodule.exports = function(it){\n\t return IObject(defined(it));\n\t};\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.1.13 ToObject(argument)\n\tvar defined = __webpack_require__(24);\n\tmodule.exports = function(it){\n\t return Object(defined(it));\n\t};\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.tether = exports.removeChildElements = exports.moveElements = exports.isRectInsideWindowViewport = exports.isFocusable = exports.getScrollParents = exports.getParentElements = exports.getWindowViewport = undefined;\n\t\n\tvar _isNan = __webpack_require__(62);\n\t\n\tvar _isNan2 = _interopRequireDefault(_isNan);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/**\n\t * Remove child element(s)\n\t * element.innerHTNL = '' has a performance penality!\n\t * @see http://jsperf.com/empty-an-element/16\n\t * @see http://jsperf.com/force-reflow\n\t * @param element\n\t * @param forceReflow\n\t */\n\tvar removeChildElements = function removeChildElements(element) {\n\t var forceReflow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\t\n\t\n\t // See: http://jsperf.com/empty-an-element/16\n\t while (element.lastChild) {\n\t element.removeChild(element.lastChild);\n\t }\n\t if (forceReflow) {\n\t // See: http://jsperf.com/force-reflow\n\t var d = element.style.display;\n\t\n\t element.style.display = 'none';\n\t element.style.display = d;\n\t }\n\t};\n\t\n\t/**\n\t * Moves child elements from a DOM node to another dom node.\n\t * @param source {HTMLElement}\n\t * @param target {HTMLElement} If the target parameter is ommited, a document fragment is created\n\t * @return {HTMLElement} The target node\n\t *\n\t * @example\n\t * // Moves child elements from a DOM node to another dom node.\n\t * moveElements(source, destination);\n\t *\n\t * @example\n\t * // If the second parameter is ommited, a document fragment is created:\n\t * let fragment = moveElements(source);\n\t *\n\t * @See: https://github.com/webmodules/dom-move\n\t */\n\tvar moveElements = function moveElements(source, target) {\n\t if (!target) {\n\t target = source.ownerDocument.createDocumentFragment();\n\t }\n\t while (source.firstChild) {\n\t target.appendChild(source.firstChild);\n\t }\n\t return target;\n\t};\n\t\n\t/**\n\t * Get the browser viewport dimensions\n\t * @see http://stackoverflow.com/questions/1248081/get-the-browser-viewport-dimensions-with-javascript\n\t * @return {{windowWidth: number, windowHeight: number}}\n\t */\n\tvar getWindowViewport = function getWindowViewport() {\n\t return {\n\t viewportWidth: Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0),\n\t viewportHeight: Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0)\n\t };\n\t};\n\t\n\t/**\n\t * Check whether an element is in the window viewport\n\t * @see http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport/\n\t * @param top\n\t * @param left\n\t * @param bottom\n\t * @param right\n\t * @return {boolean} true if rectangle is inside window viewport, otherwise false\n\t */\n\tvar isRectInsideWindowViewport = function isRectInsideWindowViewport(_ref) {\n\t var top = _ref.top,\n\t left = _ref.left,\n\t bottom = _ref.bottom,\n\t right = _ref.right;\n\t\n\t var _getWindowViewport = getWindowViewport(),\n\t viewportWidth = _getWindowViewport.viewportWidth,\n\t viewportHeight = _getWindowViewport.viewportHeight;\n\t\n\t return top >= 0 && left >= 0 && bottom <= viewportHeight && right <= viewportWidth;\n\t};\n\t\n\t/**\n\t * Get a list of parent elements that can possibly scroll\n\t * @param el the element to get parents for\n\t * @returns {Array}\n\t */\n\tvar getScrollParents = function getScrollParents(el) {\n\t var elements = [];\n\t\n\t /*\n\t for (el = el.parentNode; el; el = el.parentNode) {\n\t const cs = window.getComputedStyle(el);\n\t if(!(cs.overflowY === 'hidden' && cs.overflowX === 'hidden')) {\n\t elements.unshift(el);\n\t }\n\t if(el === document.body) {\n\t break;\n\t }\n\t }\n\t */\n\t\n\t var element = el.parentNode;\n\t while (element) {\n\t var cs = window.getComputedStyle(element);\n\t if (!(cs.overflowY === 'hidden' && cs.overflowX === 'hidden')) {\n\t elements.unshift(element);\n\t }\n\t if (element === document.body) {\n\t break;\n\t }\n\t element = element.parentNode;\n\t }\n\t\n\t return elements;\n\t};\n\t\n\t/**\n\t * Get a list of parent elements, from a given element to a given element\n\t * @param {HTMLElement} from\n\t * @param {HTMLElement} to\n\t * @return {Array<HTMLElement>} the parent elements, not including from and to\n\t */\n\tvar getParentElements = function getParentElements(from, to) {\n\t var result = [];\n\t var element = from.parentNode;\n\t while (element) {\n\t if (element === to) {\n\t break;\n\t }\n\t result.unshift(element);\n\t element = element.parentNode;\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Position element next to button\n\t *\n\t * Positioning strategy\n\t * 1. element.height > viewport.height\n\t * let element.height = viewport.heigt\n\t * let element.overflow-y = auto\n\t * 2. element.width > viewport.width\n\t * let element.width = viewport.width\n\t * 3. position element below button, align left edge of element with button left\n\t * done if element inside viewport\n\t * 4. position element below button, align right edge of element with button right\n\t * done if element inside viewport\n\t * 5. positions element above button, aligns left edge of element with button left\n\t * done if element inside viewport\n\t * 6. position element above the control element, aligned to its right.\n\t * done if element inside viewport\n\t * 7. position element at button right hand side, aligns element top with button top\n\t * done if element inside viewport\n\t * 8. position element at button left hand side, aligns element top with button top\n\t * done if element inside viewport\n\t * 9. position element inside viewport\n\t * 1. position element at viewport bottom\n\t * 2. position element at button right hand side\n\t * done if element inside viewport\n\t * 3. position element at button left hand side\n\t * done if element inside viewport\n\t * 4. position element at viewport right\n\t * 10. done\n\t *\n\t */\n\tvar tether = function tether(controlledBy, element) {\n\t var controlRect = controlledBy.getBoundingClientRect();\n\t\n\t // 1. will element height fit inside window viewport?\n\t\n\t var _getWindowViewport2 = getWindowViewport(),\n\t viewportWidth = _getWindowViewport2.viewportWidth,\n\t viewportHeight = _getWindowViewport2.viewportHeight;\n\t\n\t element.style.height = 'auto';\n\t //element.style.overflowY = 'hidden';\n\t if (element.offsetHeight > viewportHeight) {\n\t element.style.height = viewportHeight + 'px';\n\t element.style.overflowY = 'auto';\n\t }\n\t\n\t // 2. will element width fit inside window viewport?\n\t element.style.width = 'auto';\n\t if (element.offsetWidth > viewportWidth) {\n\t element.style.width = viewportWidth + 'px';\n\t }\n\t\n\t var elementRect = element.getBoundingClientRect();\n\t\n\t // element to control distance\n\t var dy = controlRect.top - elementRect.top;\n\t var dx = controlRect.left - elementRect.left;\n\t\n\t // element rect, window coordinates relative to top,left of control\n\t var top = elementRect.top + dy;\n\t var left = elementRect.left + dx;\n\t var bottom = top + elementRect.height;\n\t var right = left + elementRect.width;\n\t\n\t // Position relative to control\n\t var ddy = dy;\n\t var ddx = dx;\n\t\n\t if (isRectInsideWindowViewport({\n\t top: top + controlRect.height,\n\t left: left,\n\t bottom: bottom + controlRect.height,\n\t right: right\n\t })) {\n\t // 3 position element below the control element, aligned to its left\n\t ddy = controlRect.height + dy;\n\t //console.log('***** 3');\n\t } else if (isRectInsideWindowViewport({\n\t top: top + controlRect.height,\n\t left: left + controlRect.width - elementRect.width,\n\t bottom: bottom + controlRect.height,\n\t right: left + controlRect.width\n\t })) {\n\t // 4 position element below the control element, aligned to its right\n\t ddy = controlRect.height + dy;\n\t ddx = dx + controlRect.width - elementRect.width;\n\t //console.log('***** 4');\n\t } else if (isRectInsideWindowViewport({\n\t top: top - elementRect.height,\n\t left: left,\n\t bottom: bottom - elementRect.height,\n\t right: right\n\t })) {\n\t // 5. position element above the control element, aligned to its left.\n\t ddy = dy - elementRect.height;\n\t //console.log('***** 5');\n\t } else if (isRectInsideWindowViewport({\n\t top: top - elementRect.height,\n\t left: left + controlRect.width - elementRect.width,\n\t bottom: bottom - elementRect.height,\n\t right: left + controlRect.width\n\t })) {\n\t // 6. position element above the control element, aligned to its right.\n\t ddy = dy - elementRect.height;\n\t ddx = dx + controlRect.width - elementRect.width;\n\t //console.log('***** 6');\n\t } else if (isRectInsideWindowViewport({\n\t top: top,\n\t left: left + controlRect.width,\n\t bottom: bottom,\n\t right: right + controlRect.width\n\t })) {\n\t // 7. position element at button right hand side\n\t ddx = controlRect.width + dx;\n\t //console.log('***** 7');\n\t } else if (isRectInsideWindowViewport({\n\t top: top,\n\t left: left - controlRect.width,\n\t bottom: bottom,\n\t right: right - controlRect.width\n\t })) {\n\t // 8. position element at button left hand side\n\t ddx = dx - elementRect.width;\n\t //console.log('***** 8');\n\t } else {\n\t // 9. position element inside viewport, near controlrect if possible\n\t //console.log('***** 9');\n\t\n\t // 9.1 position element near controlrect bottom\n\t ddy = dy - bottom + viewportHeight;\n\t if (top + controlRect.height >= 0 && bottom + controlRect.height <= viewportHeight) {\n\t ddy = controlRect.height + dy;\n\t } else if (top - elementRect.height >= 0 && bottom - elementRect.height <= viewportHeight) {\n\t ddy = dy - elementRect.height;\n\t }\n\t\n\t if (left + elementRect.width + controlRect.width <= viewportWidth) {\n\t // 9.2 Position element at button right hand side\n\t ddx = controlRect.width + dx;\n\t //console.log('***** 9.2');\n\t } else if (left - elementRect.width >= 0) {\n\t // 9.3 Position element at button left hand side\n\t ddx = dx - elementRect.width;\n\t //console.log('***** 9.3');\n\t } else {\n\t // 9.4 position element at (near) viewport right\n\t var r = left + elementRect.width - viewportWidth;\n\t ddx = dx - r;\n\t //console.log('***** 9.4');\n\t }\n\t }\n\t\n\t // 10. done\n\t element.style.top = element.offsetTop + ddy + 'px';\n\t element.style.left = element.offsetLeft + ddx + 'px';\n\t //console.log('***** 10. done');\n\t};\n\t\n\t/**\n\t * Check if the given element can receive focus\n\t * @param {HTMLElement} element the element to check\n\t * @return {boolean} true if the element is focusable, otherwise false\n\t */\n\tvar isFocusable = function isFocusable(element) {\n\t // https://github.com/stephenmathieson/is-focusable/blob/master/index.js\n\t // http://stackoverflow.com/questions/1599660/which-html-elements-can-receive-focus\n\t\n\t if (element.hasAttribute('tabindex')) {\n\t var tabindex = element.getAttribute('tabindex');\n\t if (!(0, _isNan2.default)(tabindex)) {\n\t return parseInt(tabindex) > -1;\n\t }\n\t }\n\t\n\t if (element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') !== 'false') {\n\t // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-contenteditable\n\t return true;\n\t }\n\t\n\t // natively focusable, but only when enabled\n\t var selector = /input|select|textarea|button|details/i;\n\t var name = element.nodeName;\n\t if (selector.test(name)) {\n\t return element.type.toLowerCase() !== 'hidden' && !element.disabled;\n\t }\n\t\n\t // anchors and area must have an href\n\t if (name === 'A' || name === 'AREA') {\n\t return !!element.href;\n\t }\n\t\n\t if (name === 'IFRAME') {\n\t // Check visible iframe\n\t var cs = window.getComputedStyle(element);\n\t return cs.getPropertyValue('display').toLowerCase() !== 'none';\n\t }\n\t\n\t return false;\n\t};\n\t\n\t/**\n\t * Get a list of offset parents for given element\n\t * @see https://www.benpickles.com/articles/51-finding-a-dom-nodes-common-ancestor-using-javascript\n\t * @param el the element\n\t * @return {Array} a list of offset parents\n\t */\n\t/*\n\tconst offsetParents = (el) => {\n\t const elements = [];\n\t for (; el; el = el.offsetParent) {\n\t elements.unshift(el);\n\t }\n\t if(!elements.find(e => e === document.body)) {\n\t elements.unshift(document.body);\n\t }\n\t return elements;\n\t};\n\t*/\n\t\n\t/**\n\t * Finds the common offset ancestor of two DOM nodes\n\t * @see https://www.benpickles.com/articles/51-finding-a-dom-nodes-common-ancestor-using-javascript\n\t * @see https://gist.github.com/benpickles/4059636\n\t * @param a\n\t * @param b\n\t * @return {Element} The common offset ancestor of a and b\n\t */\n\t/*\n\tconst commonOffsetAncestor = (a, b) => {\n\t const parentsA = offsetParents(a);\n\t const parentsB = offsetParents(b);\n\t\n\t for (let i = 0; i < parentsA.length; i++) {\n\t if (parentsA[i] !== parentsB[i]) return parentsA[i-1];\n\t }\n\t};\n\t*/\n\t\n\t/**\n\t * Calculate position relative to a target element\n\t * @see http://stackoverflow.com/questions/21064101/understanding-offsetwidth-clientwidth-scrollwidth-and-height-respectively\n\t * @param target\n\t * @param el\n\t * @return {{top: number, left: number}}\n\t */\n\t/*\n\tconst calcPositionRelativeToTarget = (target, el) => {\n\t let top = 0;\n\t let left = 0;\n\t\n\t while(el) {\n\t top += (el.offsetTop - el.scrollTop + el.clientTop) || 0;\n\t left += (el.offsetLeft - el.scrollLeft + el.clientLeft) || 0;\n\t el = el.offsetParent;\n\t\n\t if(el === target) {\n\t break;\n\t }\n\t }\n\t return { top: top, left: left };\n\t};\n\t*/\n\t\n\texports.getWindowViewport = getWindowViewport;\n\texports.getParentElements = getParentElements;\n\texports.getScrollParents = getScrollParents;\n\texports.isFocusable = isFocusable;\n\texports.isRectInsideWindowViewport = isRectInsideWindowViewport;\n\texports.moveElements = moveElements;\n\texports.removeChildElements = removeChildElements;\n\texports.tether = tether;\n\n/***/ },\n/* 22 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\t\n\texports.default = function (instance, Constructor) {\n\t if (!(instance instanceof Constructor)) {\n\t throw new TypeError(\"Cannot call a class as a function\");\n\t }\n\t};\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\t\n\tvar _defineProperty = __webpack_require__(63);\n\t\n\tvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = function () {\n\t function defineProperties(target, props) {\n\t for (var i = 0; i < props.length; i++) {\n\t var descriptor = props[i];\n\t descriptor.enumerable = descriptor.enumerable || false;\n\t descriptor.configurable = true;\n\t if (\"value\" in descriptor) descriptor.writable = true;\n\t (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n\t }\n\t }\n\t\n\t return function (Constructor, protoProps, staticProps) {\n\t if (protoProps) defineProperties(Constructor.prototype, protoProps);\n\t if (staticProps) defineProperties(Constructor, staticProps);\n\t return Constructor;\n\t };\n\t}();\n\n/***/ },\n/* 24 */\n/***/ function(module, exports) {\n\n\t// 7.2.1 RequireObjectCoercible(argument)\n\tmodule.exports = function(it){\n\t if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n\t return it;\n\t};\n\n/***/ },\n/* 25 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(bitmap, value){\n\t return {\n\t enumerable : !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable : !(bitmap & 4),\n\t value : value\n\t };\n\t};\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar shared = __webpack_require__(44)('keys')\n\t , uid = __webpack_require__(46);\n\tmodule.exports = function(key){\n\t return shared[key] || (shared[key] = uid(key));\n\t};\n\n/***/ },\n/* 27 */\n/***/ function(module, exports) {\n\n\t// 7.1.4 ToInteger\n\tvar ceil = Math.ceil\n\t , floor = Math.floor;\n\tmodule.exports = function(it){\n\t return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n\t};\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar $at = __webpack_require__(99)(true);\n\t\n\t// 21.1.3.27 String.prototype[@@iterator]()\n\t__webpack_require__(41)(String, 'String', function(iterated){\n\t this._t = String(iterated); // target\n\t this._i = 0; // next index\n\t// 21.1.5.2.1 %StringIteratorPrototype%.next()\n\t}, function(){\n\t var O = this._t\n\t , index = this._i\n\t , point;\n\t if(index >= O.length)return {value: undefined, done: true};\n\t point = $at(O, index);\n\t this._i += point.length;\n\t return {value: point, done: false};\n\t});\n\n/***/ },\n/* 29 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\t// See: http://robertpenner.com/easing/\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n\t t /= d / 2;\n\t if (t < 1) return c / 2 * t * t + b;\n\t t--;\n\t return -c / 2 * (t * (t - 2) - 1) + b;\n\t};\n\t\n\tvar inOutQuintic = function inOutQuintic(t, b, c, d) {\n\t var ts = (t /= d) * t;\n\t var tc = ts * t;\n\t return b + c * (6 * tc * ts + -15 * ts * ts + 10 * tc);\n\t};\n\t\n\texports.easeInOutQuad = easeInOutQuad;\n\texports.inOutQuintic = inOutQuintic;\n\n/***/ },\n/* 30 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar MIN_INERVAL = 1000 / 60;\n\t\n\t/**\n\t * Trigger a callback at a given interval\n\t * @param interval defaults to 1000/60 ms\n\t * @return {function()} reference to start, stop, immediate and started\n\t */\n\t\n\tvar intervalFunction = function intervalFunction() {\n\t var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MIN_INERVAL;\n\t\n\t\n\t var lapse = interval < MIN_INERVAL ? MIN_INERVAL : interval;\n\t var cb = undefined;\n\t var next = null;\n\t var timeElapsed = 0;\n\t\n\t var execute = function execute() {\n\t var f = cb(timeElapsed);\n\t if (!f) {\n\t cancel();\n\t }\n\t };\n\t\n\t var cancel = function cancel() {\n\t if (next) {\n\t window.cancelAnimationFrame(next);\n\t }\n\t next = null;\n\t timeElapsed = 0;\n\t };\n\t\n\t var _start = function _start() {\n\t var timeStart = Date.now();\n\t\n\t var loop = function loop(now) {\n\t if (next) {\n\t next = window.requestAnimationFrame(function () {\n\t return loop(Date.now());\n\t });\n\t\n\t timeElapsed += now - timeStart;\n\t\n\t if (timeElapsed >= lapse) {\n\t execute();\n\t if ((timeElapsed -= lapse) > lapse) {\n\t // time elapsed - interval_ > interval_ , indicates inactivity\n\t // Could be due to browser minimized, tab changed, screen saver started, computer sleep, and so on\n\t timeElapsed = 0;\n\t }\n\t }\n\t timeStart = now;\n\t }\n\t };\n\t\n\t next = 1; // a truthy value for first loop\n\t loop(timeStart);\n\t };\n\t\n\t return {\n\t get started() {\n\t return next != null;\n\t },\n\t get interval() {\n\t return lapse;\n\t },\n\t set interval(value) {\n\t lapse = value < MIN_INERVAL ? MIN_INERVAL : value;\n\t },\n\t start: function start(callback) {\n\t if (typeof callback !== 'function') {\n\t throw new TypeError('callback parameter must be a function');\n\t }\n\t cb = callback;\n\t _start();\n\t },\n\t immediate: function immediate() {\n\t if (!cb) {\n\t throw new ReferenceError('callback parameter is not defined. Call start before immediate.');\n\t }\n\t execute();\n\t },\n\t\n\t stop: function stop() {\n\t return cancel();\n\t }\n\t };\n\t};\n\t\n\texports.default = intervalFunction;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(69), __esModule: true };\n\n/***/ },\n/* 32 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(71), __esModule: true };\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(73), __esModule: true };\n\n/***/ },\n/* 34 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(it){\n\t if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n\t return it;\n\t};\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// getting tag from 19.1.3.6 Object.prototype.toString()\n\tvar cof = __webpack_require__(36)\n\t , TAG = __webpack_require__(4)('toStringTag')\n\t // ES3 wrong here\n\t , ARG = cof(function(){ return arguments; }()) == 'Arguments';\n\t\n\t// fallback for IE11 Script Access Denied error\n\tvar tryGet = function(it, key){\n\t try {\n\t return it[key];\n\t } catch(e){ /* empty */ }\n\t};\n\t\n\tmodule.exports = function(it){\n\t var O, T, B;\n\t return it === undefined ? 'Undefined' : it === null ? 'Null'\n\t // @@toStringTag case\n\t : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n\t // builtinTag case\n\t : ARG ? cof(O)\n\t // ES3 arguments fallback\n\t : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n\t};\n\n/***/ },\n/* 36 */\n/***/ function(module, exports) {\n\n\tvar toString = {}.toString;\n\t\n\tmodule.exports = function(it){\n\t return toString.call(it).slice(8, -1);\n\t};\n\n/***/ },\n/* 37 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// optional / simple context binding\n\tvar aFunction = __webpack_require__(34);\n\tmodule.exports = function(fn, that, length){\n\t aFunction(fn);\n\t if(that === undefined)return fn;\n\t switch(length){\n\t case 1: return function(a){\n\t return fn.call(that, a);\n\t };\n\t case 2: return function(a, b){\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function(a, b, c){\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function(/* ...args */){\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n/***/ },\n/* 38 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isObject = __webpack_require__(17)\n\t , document = __webpack_require__(5).document\n\t // in old IE typeof document.createElement is 'object'\n\t , is = isObject(document) && isObject(document.createElement);\n\tmodule.exports = function(it){\n\t return is ? document.createElement(it) : {};\n\t};\n\n/***/ },\n/* 39 */\n/***/ function(module, exports) {\n\n\t// IE 8- don't enum bug keys\n\tmodule.exports = (\n\t 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n\t).split(',');\n\n/***/ },\n/* 40 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// fallback for non-array-like ES3 and non-enumerable old V8 strings\n\tvar cof = __webpack_require__(36);\n\tmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n\t return cof(it) == 'String' ? it.split('') : Object(it);\n\t};\n\n/***/ },\n/* 41 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar LIBRARY = __webpack_require__(89)\n\t , $export = __webpack_require__(3)\n\t , redefine = __webpack_require__(98)\n\t , hide = __webpack_require__(11)\n\t , has = __webpack_require__(16)\n\t , Iterators = __webpack_require__(7)\n\t , $iterCreate = __webpack_require__(86)\n\t , setToStringTag = __webpack_require__(43)\n\t , getPrototypeOf = __webpack_require__(94)\n\t , ITERATOR = __webpack_require__(4)('iterator')\n\t , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\n\t , FF_ITERATOR = '@@iterator'\n\t , KEYS = 'keys'\n\t , VALUES = 'values';\n\t\n\tvar returnThis = function(){ return this; };\n\t\n\tmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){\n\t $iterCreate(Constructor, NAME, next);\n\t var getMethod = function(kind){\n\t if(!BUGGY && kind in proto)return proto[kind];\n\t switch(kind){\n\t case KEYS: return function keys(){ return new Constructor(this, kind); };\n\t case VALUES: return function values(){ return new Constructor(this, kind); };\n\t } return function entries(){ return new Constructor(this, kind); };\n\t };\n\t var TAG = NAME + ' Iterator'\n\t , DEF_VALUES = DEFAULT == VALUES\n\t , VALUES_BUG = false\n\t , proto = Base.prototype\n\t , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n\t , $default = $native || getMethod(DEFAULT)\n\t , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\n\t , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\n\t , methods, key, IteratorPrototype;\n\t // Fix native\n\t if($anyNative){\n\t IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\n\t if(IteratorPrototype !== Object.prototype){\n\t // Set @@toStringTag to native iterators\n\t setToStringTag(IteratorPrototype, TAG, true);\n\t // fix for some old engines\n\t if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);\n\t }\n\t }\n\t // fix Array#{values, @@iterator}.name in V8 / FF\n\t if(DEF_VALUES && $native && $native.name !== VALUES){\n\t VALUES_BUG = true;\n\t $default = function values(){ return $native.call(this); };\n\t }\n\t // Define iterator\n\t if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){\n\t hide(proto, ITERATOR, $default);\n\t }\n\t // Plug for library\n\t Iterators[NAME] = $default;\n\t Iterators[TAG] = returnThis;\n\t if(DEFAULT){\n\t methods = {\n\t values: DEF_VALUES ? $default : getMethod(VALUES),\n\t keys: IS_SET ? $default : getMethod(KEYS),\n\t entries: $entries\n\t };\n\t if(FORCED)for(key in methods){\n\t if(!(key in proto))redefine(proto, key, methods[key]);\n\t } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n\t }\n\t return methods;\n\t};\n\n/***/ },\n/* 42 */\n/***/ function(module, exports) {\n\n\texports.f = {}.propertyIsEnumerable;\n\n/***/ },\n/* 43 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar def = __webpack_require__(12).f\n\t , has = __webpack_require__(16)\n\t , TAG = __webpack_require__(4)('toStringTag');\n\t\n\tmodule.exports = function(it, tag, stat){\n\t if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});\n\t};\n\n/***/ },\n/* 44 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar global = __webpack_require__(5)\n\t , SHARED = '__core-js_shared__'\n\t , store = global[SHARED] || (global[SHARED] = {});\n\tmodule.exports = function(key){\n\t return store[key] || (store[key] = {});\n\t};\n\n/***/ },\n/* 45 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.1.15 ToLength\n\tvar toInteger = __webpack_require__(27)\n\t , min = Math.min;\n\tmodule.exports = function(it){\n\t return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n\t};\n\n/***/ },\n/* 46 */\n/***/ function(module, exports) {\n\n\tvar id = 0\n\t , px = Math.random();\n\tmodule.exports = function(key){\n\t return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n\t};\n\n/***/ },\n/* 47 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar classof = __webpack_require__(35)\n\t , ITERATOR = __webpack_require__(4)('iterator')\n\t , Iterators = __webpack_require__(7);\n\tmodule.exports = __webpack_require__(1).getIteratorMethod = function(it){\n\t if(it != undefined)return it[ITERATOR]\n\t || it['@@iterator']\n\t || Iterators[classof(it)];\n\t};\n\n/***/ },\n/* 48 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(105);\n\tvar global = __webpack_require__(5)\n\t , hide = __webpack_require__(11)\n\t , Iterators = __webpack_require__(7)\n\t , TO_STRING_TAG = __webpack_require__(4)('toStringTag');\n\t\n\tfor(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){\n\t var NAME = collections[i]\n\t , Collection = global[NAME]\n\t , proto = Collection && Collection.prototype;\n\t if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);\n\t Iterators[NAME] = Iterators.Array;\n\t}\n\n/***/ },\n/* 49 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _toConsumableArray2 = __webpack_require__(8);\n\t\n\tvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t(function () {\n\t 'use strict';\n\t\n\t var ACCORDION = 'mdlext-accordion';\n\t var ACCORDION_VERTICAL = 'mdlext-accordion--vertical';\n\t var ACCORDION_HORIZONTAL = 'mdlext-accordion--horizontal';\n\t var PANEL = 'mdlext-accordion__panel';\n\t var PANEL_ROLE = 'presentation';\n\t var TAB = 'mdlext-accordion__tab';\n\t var TAB_CAPTION = 'mdlext-accordion__tab__caption';\n\t var TAB_ROLE = 'tab';\n\t var TABPANEL = 'mdlext-accordion__tabpanel';\n\t var TABPANEL_ROLE = 'tabpanel';\n\t var RIPPLE_EFFECT = 'mdlext-js-ripple-effect';\n\t var RIPPLE = 'mdlext-accordion__tab--ripple';\n\t var ANIMATION_EFFECT = 'mdlext-js-animation-effect';\n\t var ANIMATION = 'mdlext-accordion__tabpanel--animation';\n\t\n\t /**\n\t * @constructor\n\t * @param {Element} element The element that will be upgraded.\n\t */\n\t var MaterialExtAccordion = function MaterialExtAccordion(element) {\n\t\n\t // Stores the Accordion HTML element.\n\t this.element_ = element;\n\t\n\t // Initialize instance.\n\t this.init();\n\t };\n\t window['MaterialExtAccordion'] = MaterialExtAccordion;\n\t\n\t // Helpers\n\t var accordionPanelElements = function accordionPanelElements(element) {\n\t if (!element) {\n\t return {\n\t panel: null,\n\t tab: null,\n\t tabpanel: null\n\t };\n\t } else if (element.classList.contains(PANEL)) {\n\t return {\n\t panel: element,\n\t tab: element.querySelector('.' + TAB),\n\t tabpanel: element.querySelector('.' + TABPANEL)\n\t };\n\t } else {\n\t return {\n\t panel: element.parentNode,\n\t tab: element.parentNode.querySelector('.' + TAB),\n\t tabpanel: element.parentNode.querySelector('.' + TABPANEL)\n\t };\n\t }\n\t };\n\t\n\t // Private methods.\n\t\n\t /**\n\t * Handles custom command event, 'open', 'close', 'toggle' or upgrade\n\t * @param event. A custom event\n\t * @private\n\t */\n\t MaterialExtAccordion.prototype.commandHandler_ = function (event) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\t\n\t if (event && event.detail) {\n\t this.command(event.detail);\n\t }\n\t };\n\t\n\t /**\n\t * Dispatch toggle event\n\t * @param {string} state\n\t * @param {Element} tab\n\t * @param {Element} tabpanel\n\t * @private\n\t */\n\t MaterialExtAccordion.prototype.dispatchToggleEvent_ = function (state, tab, tabpanel) {\n\t var ce = new CustomEvent('toggle', {\n\t bubbles: true,\n\t cancelable: true,\n\t detail: { state: state, tab: tab, tabpanel: tabpanel }\n\t });\n\t this.element_.dispatchEvent(ce);\n\t };\n\t\n\t /**\n\t * Open tab\n\t * @param {Element} panel\n\t * @param {Element} tab\n\t * @param {Element} tabpanel\n\t * @private\n\t */\n\t MaterialExtAccordion.prototype.openTab_ = function (panel, tab, tabpanel) {\n\t panel.classList.add(_constants.IS_EXPANDED);\n\t tab.setAttribute(_constants.ARIA_EXPANDED, 'true');\n\t tabpanel.removeAttribute('hidden');\n\t tabpanel.setAttribute(_constants.ARIA_HIDDEN, 'false');\n\t this.dispatchToggleEvent_('open', tab, tabpanel);\n\t };\n\t\n\t /**\n\t * Close tab\n\t * @param {Element} panel\n\t * @param {Element} tab\n\t * @param {Element} tabpanel\n\t * @private\n\t */\n\t MaterialExtAccordion.prototype.closeTab_ = function (panel, tab, tabpanel) {\n\t panel.classList.remove(_constants.IS_EXPANDED);\n\t tab.setAttribute(_constants.ARIA_EXPANDED, 'false');\n\t tabpanel.setAttribute('hidden', '');\n\t tabpanel.setAttribute(_constants.ARIA_HIDDEN, 'true');\n\t this.dispatchToggleEvent_('close', tab, tabpanel);\n\t };\n\t\n\t /**\n\t * Toggle tab\n\t * @param {Element} panel\n\t * @param {Element} tab\n\t * @param {Element} tabpanel\n\t * @private\n\t */\n\t MaterialExtAccordion.prototype.toggleTab_ = function (panel, tab, tabpanel) {\n\t if (!(this.element_.hasAttribute('disabled') || tab.hasAttribute('disabled'))) {\n\t if (tab.getAttribute(_constants.ARIA_EXPANDED).toLowerCase() === 'true') {\n\t this.closeTab_(panel, tab, tabpanel);\n\t } else {\n\t if (this.element_.getAttribute(_constants.ARIA_MULTISELECTABLE).toLowerCase() !== 'true') {\n\t this.closeTabs_();\n\t }\n\t this.openTab_(panel, tab, tabpanel);\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * Open tabs\n\t * @private\n\t */\n\t MaterialExtAccordion.prototype.openTabs_ = function () {\n\t var _this = this;\n\t\n\t if (this.element_.getAttribute(_constants.ARIA_MULTISELECTABLE).toLowerCase() === 'true') {\n\t [].concat((0, _toConsumableArray3.default)(this.element_.querySelectorAll('.' + ACCORDION + ' > .' + PANEL))).filter(function (panel) {\n\t return !panel.classList.contains(_constants.IS_EXPANDED);\n\t }).forEach(function (closedItem) {\n\t var tab = closedItem.querySelector('.' + TAB);\n\t if (!tab.hasAttribute('disabled')) {\n\t _this.openTab_(closedItem, tab, closedItem.querySelector('.' + TABPANEL));\n\t }\n\t });\n\t }\n\t };\n\t\n\t /**\n\t * Close tabs\n\t * @private\n\t */\n\t MaterialExtAccordion.prototype.closeTabs_ = function () {\n\t var _this2 = this;\n\t\n\t [].concat((0, _toConsumableArray3.default)(this.element_.querySelectorAll('.' + ACCORDION + ' > .' + PANEL + '.' + _constants.IS_EXPANDED))).forEach(function (panel) {\n\t var tab = panel.querySelector('.' + TAB);\n\t if (!tab.hasAttribute('disabled')) {\n\t _this2.closeTab_(panel, tab, panel.querySelector('.' + TABPANEL));\n\t }\n\t });\n\t };\n\t\n\t // Public methods.\n\t\n\t /**\n\t * Upgrade an individual accordion tab\n\t * @public\n\t * @param {Element} tabElement The HTML element for the accordion panel.\n\t */\n\t MaterialExtAccordion.prototype.upgradeTab = function (tabElement) {\n\t var _this3 = this;\n\t\n\t var _accordionPanelElemen = accordionPanelElements(tabElement),\n\t panel = _accordionPanelElemen.panel,\n\t tab = _accordionPanelElemen.tab,\n\t tabpanel = _accordionPanelElemen.tabpanel;\n\t\n\t var disableTab = function disableTab() {\n\t panel.classList.remove(_constants.IS_EXPANDED);\n\t tab.setAttribute('tabindex', '-1');\n\t tab.setAttribute(_constants.ARIA_EXPANDED, 'false');\n\t tabpanel.setAttribute('hidden', '');\n\t tabpanel.setAttribute(_constants.ARIA_HIDDEN, 'true');\n\t };\n\t\n\t var enableTab = function enableTab() {\n\t if (!tab.hasAttribute(_constants.ARIA_EXPANDED)) {\n\t tab.setAttribute(_constants.ARIA_EXPANDED, 'false');\n\t }\n\t\n\t tab.setAttribute('tabindex', '0');\n\t\n\t if (tab.getAttribute(_constants.ARIA_EXPANDED).toLowerCase() === 'true') {\n\t panel.classList.add(_constants.IS_EXPANDED);\n\t tabpanel.removeAttribute('hidden');\n\t tabpanel.setAttribute(_constants.ARIA_HIDDEN, 'false');\n\t } else {\n\t panel.classList.remove(_constants.IS_EXPANDED);\n\t tabpanel.setAttribute('hidden', '');\n\t tabpanel.setAttribute(_constants.ARIA_HIDDEN, 'true');\n\t }\n\t };\n\t\n\t // In horizontal layout, caption must have a max-width defined to prevent pushing elements to the right of the caption out of view.\n\t // In JsDom, offsetWidth and offsetHeight properties do not work, so this function is not testable.\n\t /* istanbul ignore next */\n\t var calcMaxTabCaptionWidth = function calcMaxTabCaptionWidth() {\n\t\n\t var tabCaption = tab.querySelector('.' + TAB_CAPTION);\n\t if (tabCaption !== null) {\n\t var w = [].concat((0, _toConsumableArray3.default)(tab.children)).filter(function (el) {\n\t return el.classList && !el.classList.contains(TAB_CAPTION);\n\t }).reduce(function (v, el) {\n\t return v + el.offsetWidth;\n\t }, 0);\n\t\n\t var maxWidth = tab.clientHeight - w;\n\t if (maxWidth > 0) {\n\t tabCaption.style['max-width'] = maxWidth + 'px';\n\t }\n\t }\n\t };\n\t\n\t var selectTab = function selectTab() {\n\t if (!tab.hasAttribute(_constants.ARIA_SELECTED)) {\n\t [].concat((0, _toConsumableArray3.default)(_this3.element_.querySelectorAll('.' + TAB + '[aria-selected=\"true\"]'))).forEach(function (selectedTab) {\n\t return selectedTab.removeAttribute(_constants.ARIA_SELECTED);\n\t });\n\t tab.setAttribute(_constants.ARIA_SELECTED, 'true');\n\t }\n\t };\n\t\n\t var tabClickHandler = function tabClickHandler() {\n\t _this3.toggleTab_(panel, tab, tabpanel);\n\t selectTab();\n\t };\n\t\n\t var tabFocusHandler = function tabFocusHandler() {\n\t selectTab();\n\t };\n\t\n\t var tabpanelClickHandler = function tabpanelClickHandler() {\n\t selectTab();\n\t };\n\t\n\t var tabpanelFocusHandler = function tabpanelFocusHandler() {\n\t selectTab();\n\t };\n\t\n\t var tabKeydownHandler = function tabKeydownHandler(e) {\n\t\n\t if (_this3.element_.hasAttribute('disabled')) {\n\t return;\n\t }\n\t\n\t if (e.keyCode === _constants.VK_END || e.keyCode === _constants.VK_HOME || e.keyCode === _constants.VK_ARROW_UP || e.keyCode === _constants.VK_ARROW_LEFT || e.keyCode === _constants.VK_ARROW_DOWN || e.keyCode === _constants.VK_ARROW_RIGHT) {\n\t\n\t var nextTab = null;\n\t var keyCode = e.keyCode;\n\t\n\t if (keyCode === _constants.VK_HOME) {\n\t nextTab = _this3.element_.querySelector('.' + PANEL + ':first-child > .' + TAB);\n\t if (nextTab && nextTab.hasAttribute('disabled')) {\n\t nextTab = null;\n\t keyCode = _constants.VK_ARROW_DOWN;\n\t }\n\t } else if (keyCode === _constants.VK_END) {\n\t nextTab = _this3.element_.querySelector('.' + PANEL + ':last-child > .' + TAB);\n\t if (nextTab && nextTab.hasAttribute('disabled')) {\n\t nextTab = null;\n\t keyCode = _constants.VK_ARROW_UP;\n\t }\n\t }\n\t\n\t if (!nextTab) {\n\t var nextPanel = panel;\n\t\n\t do {\n\t if (keyCode === _constants.VK_ARROW_UP || keyCode === _constants.VK_ARROW_LEFT) {\n\t nextPanel = nextPanel.previousElementSibling;\n\t if (!nextPanel) {\n\t nextPanel = _this3.element_.querySelector('.' + PANEL + ':last-child');\n\t }\n\t if (nextPanel) {\n\t nextTab = nextPanel.querySelector('.' + PANEL + ' > .' + TAB);\n\t }\n\t } else if (keyCode === _constants.VK_ARROW_DOWN || keyCode === _constants.VK_ARROW_RIGHT) {\n\t nextPanel = nextPanel.nextElementSibling;\n\t if (!nextPanel) {\n\t nextPanel = _this3.element_.querySelector('.' + PANEL + ':first-child');\n\t }\n\t if (nextPanel) {\n\t nextTab = nextPanel.querySelector('.' + PANEL + ' > .' + TAB);\n\t }\n\t }\n\t\n\t if (nextTab && nextTab.hasAttribute('disabled')) {\n\t nextTab = null;\n\t } else {\n\t break;\n\t }\n\t } while (nextPanel !== panel);\n\t }\n\t\n\t if (nextTab) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\t nextTab.focus();\n\t\n\t // Workaround for JSDom testing:\n\t // In JsDom 'element.focus()' does not trigger any focus event\n\t if (!nextTab.hasAttribute(_constants.ARIA_SELECTED)) {\n\t\n\t [].concat((0, _toConsumableArray3.default)(_this3.element_.querySelectorAll('.' + TAB + '[aria-selected=\"true\"]'))).forEach(function (selectedTab) {\n\t return selectedTab.removeAttribute(_constants.ARIA_SELECTED);\n\t });\n\t\n\t nextTab.setAttribute(_constants.ARIA_SELECTED, 'true');\n\t }\n\t }\n\t } else if (e.keyCode === _constants.VK_ENTER || e.keyCode === _constants.VK_SPACE) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\t _this3.toggleTab_(panel, tab, tabpanel);\n\t }\n\t };\n\t\n\t if (tab === null) {\n\t throw new Error('There must be a tab element for each accordion panel.');\n\t }\n\t\n\t if (tabpanel === null) {\n\t throw new Error('There must be a tabpanel element for each accordion panel.');\n\t }\n\t\n\t panel.setAttribute('role', PANEL_ROLE);\n\t tab.setAttribute('role', TAB_ROLE);\n\t tabpanel.setAttribute('role', TABPANEL_ROLE);\n\t\n\t if (tab.hasAttribute('disabled')) {\n\t disableTab();\n\t } else {\n\t enableTab();\n\t }\n\t\n\t if (this.element_.classList.contains(ACCORDION_HORIZONTAL)) {\n\t calcMaxTabCaptionWidth();\n\t }\n\t\n\t if (this.element_.classList.contains(RIPPLE_EFFECT)) {\n\t tab.classList.add(RIPPLE);\n\t }\n\t\n\t if (this.element_.classList.contains(ANIMATION_EFFECT)) {\n\t tabpanel.classList.add(ANIMATION);\n\t }\n\t\n\t // Remove listeners, just in case ...\n\t tab.removeEventListener('click', tabClickHandler);\n\t tab.removeEventListener('focus', tabFocusHandler);\n\t tab.removeEventListener('keydown', tabKeydownHandler);\n\t tabpanel.removeEventListener('click', tabpanelClickHandler);\n\t tabpanel.removeEventListener('focus', tabpanelFocusHandler);\n\t\n\t tab.addEventListener('click', tabClickHandler);\n\t tab.addEventListener('focus', tabFocusHandler);\n\t tab.addEventListener('keydown', tabKeydownHandler);\n\t tabpanel.addEventListener('click', tabpanelClickHandler, true);\n\t tabpanel.addEventListener('focus', tabpanelFocusHandler, true);\n\t };\n\t MaterialExtAccordion.prototype['upgradeTab'] = MaterialExtAccordion.prototype.upgradeTab;\n\t\n\t /**\n\t * Execute command\n\t * @param detail\n\t */\n\t MaterialExtAccordion.prototype.command = function (detail) {\n\t var _this4 = this;\n\t\n\t var openTab = function openTab(tabElement) {\n\t\n\t if (tabElement === undefined) {\n\t _this4.openTabs_();\n\t } else if (tabElement !== null) {\n\t var _accordionPanelElemen2 = accordionPanelElements(tabElement),\n\t panel = _accordionPanelElemen2.panel,\n\t tab = _accordionPanelElemen2.tab,\n\t tabpanel = _accordionPanelElemen2.tabpanel;\n\t\n\t if (tab.getAttribute(_constants.ARIA_EXPANDED).toLowerCase() !== 'true') {\n\t _this4.toggleTab_(panel, tab, tabpanel);\n\t }\n\t }\n\t };\n\t\n\t var closeTab = function closeTab(tabElement) {\n\t if (tabElement === undefined) {\n\t _this4.closeTabs_();\n\t } else if (tabElement !== null) {\n\t var _accordionPanelElemen3 = accordionPanelElements(tabElement),\n\t panel = _accordionPanelElemen3.panel,\n\t tab = _accordionPanelElemen3.tab,\n\t tabpanel = _accordionPanelElemen3.tabpanel;\n\t\n\t if (tab.getAttribute(_constants.ARIA_EXPANDED).toLowerCase() === 'true') {\n\t _this4.toggleTab_(panel, tab, tabpanel);\n\t }\n\t }\n\t };\n\t\n\t var toggleTab = function toggleTab(tabElement) {\n\t if (tabElement) {\n\t var _accordionPanelElemen4 = accordionPanelElements(tabElement),\n\t panel = _accordionPanelElemen4.panel,\n\t tab = _accordionPanelElemen4.tab,\n\t tabpanel = _accordionPanelElemen4.tabpanel;\n\t\n\t _this4.toggleTab_(panel, tab, tabpanel);\n\t }\n\t };\n\t\n\t if (detail && detail.action) {\n\t var action = detail.action,\n\t target = detail.target;\n\t\n\t\n\t switch (action.toLowerCase()) {\n\t case 'open':\n\t openTab(target);\n\t break;\n\t case 'close':\n\t closeTab(target);\n\t break;\n\t case 'toggle':\n\t toggleTab(target);\n\t break;\n\t case 'upgrade':\n\t if (target) {\n\t this.upgradeTab(target);\n\t }\n\t break;\n\t default:\n\t throw new Error('Unknown action \"' + action + '\". Action must be one of \"open\", \"close\", \"toggle\" or \"upgrade\"');\n\t }\n\t }\n\t };\n\t MaterialExtAccordion.prototype['command'] = MaterialExtAccordion.prototype.command;\n\t\n\t /**\n\t * Initialize component\n\t */\n\t MaterialExtAccordion.prototype.init = function () {\n\t var _this5 = this;\n\t\n\t if (this.element_) {\n\t // Do the init required for this component to work\n\t if (!(this.element_.classList.contains(ACCORDION_HORIZONTAL) || this.element_.classList.contains(ACCORDION_VERTICAL))) {\n\t throw new Error('Accordion must have one of the classes \"' + ACCORDION_HORIZONTAL + '\" or \"' + ACCORDION_VERTICAL + '\"');\n\t }\n\t\n\t this.element_.setAttribute('role', 'tablist');\n\t\n\t if (!this.element_.hasAttribute(_constants.ARIA_MULTISELECTABLE)) {\n\t this.element_.setAttribute(_constants.ARIA_MULTISELECTABLE, 'false');\n\t }\n\t\n\t this.element_.removeEventListener('command', this.commandHandler_);\n\t this.element_.addEventListener('command', this.commandHandler_.bind(this), false);\n\t\n\t [].concat((0, _toConsumableArray3.default)(this.element_.querySelectorAll('.' + ACCORDION + ' > .' + PANEL))).forEach(function (panel) {\n\t return _this5.upgradeTab(panel);\n\t });\n\t\n\t // Set upgraded flag\n\t this.element_.classList.add(_constants.IS_UPGRADED);\n\t }\n\t };\n\t\n\t /*\n\t * Downgrade component\n\t * E.g remove listeners and clean up resources\n\t *\n\t * Nothing to downgrade\n\t *\n\t MaterialExtAccordion.prototype.mdlDowngrade_ = function() {\n\t 'use strict';\n\t console.log('***** MaterialExtAccordion.mdlDowngrade');\n\t };\n\t */\n\t\n\t // The component registers itself. It can assume componentHandler is available\n\t // in the global scope.\n\t /* eslint no-undef: 0 */\n\t componentHandler.register({\n\t constructor: MaterialExtAccordion,\n\t classAsString: 'MaterialExtAccordion',\n\t cssClass: 'mdlext-js-accordion',\n\t widget: true\n\t });\n\t})(); /**\n\t * @license\n\t * Copyright 2016 Leif Olsen. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t *\n\t * This code is built with Google Material Design Lite,\n\t * which is Licensed under the Apache License, Version 2.0\n\t */\n\t\n\t/**\n\t * A WAI-ARIA friendly accordion component.\n\t * An accordion is a collection of expandable panels associated with a common outer container. Panels consist\n\t * of a header and an associated content region or tabpanel. The primary use of an Accordion is to present multiple sections\n\t * of content on a single page without scrolling, where all of the sections are peers in the application or object hierarchy.\n\t * The general look is similar to a tree where each root tree node is an expandable accordion header. The user navigates\n\t * and makes the contents of each panel visible (or not) by interacting with the Accordion Header\n\t */\n\n/***/ },\n/* 50 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _isInteger = __webpack_require__(32);\n\t\n\tvar _isInteger2 = _interopRequireDefault(_isInteger);\n\t\n\tvar _toConsumableArray2 = __webpack_require__(8);\n\t\n\tvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\t\n\tvar _assign = __webpack_require__(33);\n\t\n\tvar _assign2 = _interopRequireDefault(_assign);\n\t\n\tvar _intervalFunction = __webpack_require__(30);\n\t\n\tvar _intervalFunction2 = _interopRequireDefault(_intervalFunction);\n\t\n\tvar _easing = __webpack_require__(29);\n\t\n\tvar _jsonUtils = __webpack_require__(14);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/**\n\t * @license\n\t * Copyright 2016 Leif Olsen. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t *\n\t * This code is built with Google Material Design Lite,\n\t * which is Licensed under the Apache License, Version 2.0\n\t */\n\t\n\t/**\n\t * Image carousel\n\t */\n\t\n\tvar MDL_RIPPLE_CONTAINER = 'mdlext-carousel__slide__ripple-container';\n\t\n\t(function () {\n\t 'use strict';\n\t\n\t //const CAROUSEL = 'mdlext-carousel';\n\t\n\t var SLIDE = 'mdlext-carousel__slide';\n\t var ROLE = 'list';\n\t var SLIDE_ROLE = 'listitem';\n\t\n\t /**\n\t * @constructor\n\t * @param {Element} element The element that will be upgraded.\n\t */\n\t var MaterialExtCarousel = function MaterialExtCarousel(element) {\n\t // Stores the element.\n\t this.element_ = element;\n\t\n\t // Default config\n\t this.config_ = {\n\t interactive: true,\n\t autostart: false,\n\t type: 'slide',\n\t interval: 1000,\n\t animationLoop: (0, _intervalFunction2.default)(1000)\n\t };\n\t\n\t this.scrollAnimation_ = (0, _intervalFunction2.default)(33);\n\t\n\t // Initialize instance.\n\t this.init();\n\t };\n\t\n\t window['MaterialExtCarousel'] = MaterialExtCarousel;\n\t\n\t /**\n\t * Start slideshow animation\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.startSlideShow_ = function () {\n\t var _this = this;\n\t\n\t var nextSlide = function nextSlide() {\n\t var slide = _this.element_.querySelector('.' + SLIDE + '[aria-selected]');\n\t if (slide) {\n\t slide.removeAttribute('aria-selected');\n\t slide = slide.nextElementSibling;\n\t }\n\t if (!slide) {\n\t slide = _this.element_.querySelector('.' + SLIDE + ':first-child');\n\t _this.animateScroll_(0);\n\t }\n\t if (slide) {\n\t _this.moveSlideIntoViewport_(slide);\n\t slide.setAttribute('aria-selected', '');\n\t _this.emitSelectEvent_('next', null, slide);\n\t return true;\n\t }\n\t return false;\n\t };\n\t\n\t var nextScroll = function nextScroll(direction) {\n\t var nextDirection = direction;\n\t\n\t if ('next' === direction && _this.element_.scrollLeft === _this.element_.scrollWidth - _this.element_.clientWidth) {\n\t nextDirection = 'prev';\n\t } else if (_this.element_.scrollLeft === 0) {\n\t nextDirection = 'next';\n\t }\n\t var x = 'next' === nextDirection ? Math.min(_this.element_.scrollLeft + _this.element_.clientWidth, _this.element_.scrollWidth - _this.element_.clientWidth) : Math.max(_this.element_.scrollLeft - _this.element_.clientWidth, 0);\n\t\n\t _this.animateScroll_(x, 1000);\n\t return nextDirection;\n\t };\n\t\n\t if (!this.config_.animationLoop.started) {\n\t (function () {\n\t _this.config_.animationLoop.interval = _this.config_.interval;\n\t var direction = 'next';\n\t\n\t if ('scroll' === _this.config_.type) {\n\t _this.config_.animationLoop.start(function () {\n\t direction = nextScroll(direction);\n\t return true; // It runs until cancelSlideShow_ is triggered\n\t });\n\t } else {\n\t nextSlide();\n\t _this.config_.animationLoop.start(function () {\n\t return nextSlide(); // It runs until cancelSlideShow_ is triggered\n\t });\n\t }\n\t })();\n\t }\n\t\n\t // TODO: Pause animation when carousel is not in browser viewport or user changes tab\n\t };\n\t\n\t /**\n\t * Cancel slideshow if running. Emmits a 'pause' event\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.cancelSlideShow_ = function () {\n\t if (this.config_.animationLoop.started) {\n\t this.config_.animationLoop.stop();\n\t this.emitSelectEvent_('pause', _constants.VK_ESC, this.element_.querySelector('.' + SLIDE + '[aria-selected]'));\n\t }\n\t };\n\t\n\t /**\n\t * Animate scroll\n\t * @param newPosition\n\t * @param newDuration\n\t * @param completedCallback\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.animateScroll_ = function (newPosition, newDuration, completedCallback) {\n\t var _this2 = this;\n\t\n\t var start = this.element_.scrollLeft;\n\t var distance = newPosition - start;\n\t\n\t if (distance !== 0) {\n\t (function () {\n\t var duration = Math.max(Math.min(Math.abs(distance), newDuration || 400), 100); // duration is between 100 and newDuration||400ms||distance\n\t var t = 0;\n\t _this2.scrollAnimation_.stop();\n\t _this2.scrollAnimation_.start(function (timeElapsed) {\n\t t += timeElapsed;\n\t if (t < duration) {\n\t _this2.element_.scrollLeft = (0, _easing.inOutQuintic)(t, start, distance, duration);\n\t return true;\n\t } else {\n\t _this2.element_.scrollLeft = newPosition;\n\t if (completedCallback) {\n\t completedCallback();\n\t }\n\t return false;\n\t }\n\t });\n\t })();\n\t } else {\n\t if (completedCallback) {\n\t completedCallback();\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * Execute commend\n\t * @param event\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.command_ = function (event) {\n\t var _this3 = this;\n\t\n\t var x = 0;\n\t var slide = null;\n\t var a = event.detail.action.toLowerCase();\n\t\n\t // Cancel slideshow if running\n\t this.cancelSlideShow_();\n\t\n\t switch (a) {\n\t case 'first':\n\t slide = this.element_.querySelector('.' + SLIDE + ':first-child');\n\t break;\n\t\n\t case 'last':\n\t x = this.element_.scrollWidth - this.element_.clientWidth;\n\t slide = this.element_.querySelector('.' + SLIDE + ':last-child');\n\t break;\n\t\n\t case 'scroll-prev':\n\t x = Math.max(this.element_.scrollLeft - this.element_.clientWidth, 0);\n\t break;\n\t\n\t case 'scroll-next':\n\t x = Math.min(this.element_.scrollLeft + this.element_.clientWidth, this.element_.scrollWidth - this.element_.clientWidth);\n\t break;\n\t\n\t case 'next':\n\t case 'prev':\n\t slide = this.element_.querySelector('.' + SLIDE + '[aria-selected]');\n\t if (slide) {\n\t slide = a === 'next' ? slide.nextElementSibling : slide.previousElementSibling;\n\t this.setAriaSelected_(slide);\n\t this.emitSelectEvent_(a, null, slide);\n\t }\n\t return;\n\t\n\t case 'play':\n\t (0, _assign2.default)(this.config_, event.detail);\n\t this.startSlideShow_();\n\t return;\n\t\n\t case 'pause':\n\t return;\n\t\n\t default:\n\t return;\n\t }\n\t\n\t this.animateScroll_(x, undefined, function () {\n\t if ('scroll-next' === a || 'scroll-prev' === a) {\n\t var slides = _this3.getSlidesInViewport_();\n\t if (slides.length > 0) {\n\t slide = 'scroll-next' === a ? slides[0] : slides[slides.length - 1];\n\t }\n\t }\n\t _this3.setAriaSelected_(slide);\n\t _this3.emitSelectEvent_(a, null, slide);\n\t });\n\t };\n\t\n\t /**\n\t * Handles custom command event, 'scroll-prev', 'scroll-next', 'first', 'last', next, prev, play, pause\n\t * @param event. A custom event\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.commandHandler_ = function (event) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\t if (event.detail && event.detail.action) {\n\t this.command_(event);\n\t }\n\t };\n\t\n\t /**\n\t * Handle keypress\n\t * @param event\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.keyDownHandler_ = function (event) {\n\t\n\t if (event && event.target && event.target !== this.element_) {\n\t\n\t var action = 'first';\n\t\n\t if (event.keyCode === _constants.VK_HOME || event.keyCode === _constants.VK_END || event.keyCode === _constants.VK_PAGE_UP || event.keyCode === _constants.VK_PAGE_DOWN) {\n\t\n\t event.preventDefault();\n\t if (event.keyCode === _constants.VK_END) {\n\t action = 'last';\n\t } else if (event.keyCode === _constants.VK_PAGE_UP) {\n\t action = 'scroll-prev';\n\t } else if (event.keyCode === _constants.VK_PAGE_DOWN) {\n\t action = 'scroll-next';\n\t }\n\t\n\t var cmd = new CustomEvent('select', {\n\t detail: {\n\t action: action\n\t }\n\t });\n\t this.command_(cmd);\n\t } else if (event.keyCode === _constants.VK_TAB || event.keyCode === _constants.VK_ENTER || event.keyCode === _constants.VK_SPACE || event.keyCode === _constants.VK_ARROW_UP || event.keyCode === _constants.VK_ARROW_LEFT || event.keyCode === _constants.VK_ARROW_DOWN || event.keyCode === _constants.VK_ARROW_RIGHT) {\n\t\n\t var slide = getSlide_(event.target);\n\t\n\t if (!slide) {\n\t return;\n\t }\n\t\n\t // Cancel slideshow if running\n\t this.cancelSlideShow_();\n\t\n\t switch (event.keyCode) {\n\t case _constants.VK_ARROW_UP:\n\t case _constants.VK_ARROW_LEFT:\n\t action = 'prev';\n\t slide = slide.previousElementSibling;\n\t break;\n\t\n\t case _constants.VK_ARROW_DOWN:\n\t case _constants.VK_ARROW_RIGHT:\n\t action = 'next';\n\t slide = slide.nextElementSibling;\n\t break;\n\t\n\t case _constants.VK_TAB:\n\t if (event.shiftKey) {\n\t action = 'prev';\n\t slide = slide.previousElementSibling;\n\t } else {\n\t action = 'next';\n\t slide = slide.nextElementSibling;\n\t }\n\t break;\n\t\n\t case _constants.VK_SPACE:\n\t case _constants.VK_ENTER:\n\t action = 'select';\n\t break;\n\t }\n\t\n\t if (slide) {\n\t event.preventDefault();\n\t setFocus_(slide);\n\t this.emitSelectEvent_(action, event.keyCode, slide);\n\t }\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * Handle dragging\n\t * @param event\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.dragHandler_ = function (event) {\n\t var _this4 = this;\n\t\n\t event.preventDefault();\n\t\n\t // Cancel slideshow if running\n\t this.cancelSlideShow_();\n\t\n\t var updating = false;\n\t var rAFDragId = 0;\n\t\n\t var startX = event.clientX || (event.touches !== undefined ? event.touches[0].clientX : 0);\n\t var prevX = startX;\n\t var targetElement = event.target;\n\t\n\t var update = function update(e) {\n\t var currentX = e.clientX || (e.touches !== undefined ? e.touches[0].clientX : 0);\n\t var dx = prevX - currentX;\n\t\n\t if (dx < 0) {\n\t _this4.element_.scrollLeft = Math.max(_this4.element_.scrollLeft + dx, 0);\n\t } else if (dx > 0) {\n\t _this4.element_.scrollLeft = Math.min(_this4.element_.scrollLeft + dx, _this4.element_.scrollWidth - _this4.element_.clientWidth);\n\t }\n\t\n\t prevX = currentX;\n\t updating = false;\n\t };\n\t\n\t // drag handler\n\t var drag = function drag(e) {\n\t e.preventDefault();\n\t\n\t if (!updating) {\n\t rAFDragId = window.requestAnimationFrame(function () {\n\t return update(e);\n\t });\n\t updating = true;\n\t }\n\t };\n\t\n\t // end drag handler\n\t var endDrag = function endDrag(e) {\n\t e.preventDefault();\n\t\n\t _this4.element_.removeEventListener('mousemove', drag);\n\t _this4.element_.removeEventListener('touchmove', drag);\n\t window.removeEventListener('mouseup', endDrag);\n\t window.removeEventListener('touchend', endDrag);\n\t\n\t // cancel any existing drag rAF, see: http://www.html5rocks.com/en/tutorials/speed/animations/\n\t window.cancelAnimationFrame(rAFDragId);\n\t\n\t var slide = getSlide_(targetElement);\n\t setFocus_(slide);\n\t _this4.emitSelectEvent_('click', null, slide);\n\t };\n\t\n\t this.element_.addEventListener('mousemove', drag);\n\t this.element_.addEventListener('touchmove', drag);\n\t window.addEventListener('mouseup', endDrag);\n\t window.addEventListener('touchend', endDrag);\n\t };\n\t\n\t /**\n\t * Handle click\n\t * @param event\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.clickHandler_ = function (event) {\n\t // Click is handled by drag\n\t event.preventDefault();\n\t };\n\t\n\t /**\n\t * Handle focus\n\t * @param event\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.focusHandler_ = function (event) {\n\t var slide = getSlide_(event.target);\n\t if (slide) {\n\t // The last focused/selected slide has 'aria-selected', even if focus is lost\n\t this.setAriaSelected_(slide);\n\t slide.classList.add(_constants.IS_FOCUSED);\n\t }\n\t };\n\t\n\t /**\n\t * Handle blur\n\t * @param event\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.blurHandler_ = function (event) {\n\t var slide = getSlide_(event.target);\n\t if (slide) {\n\t slide.classList.remove(_constants.IS_FOCUSED);\n\t }\n\t };\n\t\n\t /**\n\t * Emits a custeom 'select' event\n\t * @param command\n\t * @param keyCode\n\t * @param slide\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.emitSelectEvent_ = function (command, keyCode, slide) {\n\t\n\t if (slide) {\n\t this.moveSlideIntoViewport_(slide);\n\t\n\t var evt = new CustomEvent('select', {\n\t bubbles: true,\n\t cancelable: true,\n\t detail: {\n\t command: command,\n\t keyCode: keyCode,\n\t source: slide\n\t }\n\t });\n\t this.element_.dispatchEvent(evt);\n\t }\n\t };\n\t\n\t /**\n\t * Get the first visible slide in component viewport\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.getSlidesInViewport_ = function () {\n\t var carouselRect = this.element_.getBoundingClientRect();\n\t\n\t var slidesInViewport = [].concat((0, _toConsumableArray3.default)(this.element_.querySelectorAll('.' + SLIDE))).filter(function (slide) {\n\t var slideRect = slide.getBoundingClientRect();\n\t return slideRect.left >= carouselRect.left && slideRect.right <= carouselRect.right;\n\t });\n\t return slidesInViewport;\n\t };\n\t\n\t /**\n\t * Move slide into component viewport - if needed\n\t * @param slide\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.moveSlideIntoViewport_ = function (slide) {\n\t var carouselRect = this.element_.getBoundingClientRect();\n\t var slideRect = slide.getBoundingClientRect();\n\t\n\t if (slideRect.left < carouselRect.left) {\n\t var x = this.element_.scrollLeft - (carouselRect.left - slideRect.left);\n\t this.animateScroll_(x);\n\t } else if (slideRect.right > carouselRect.right) {\n\t var _x = this.element_.scrollLeft - (carouselRect.right - slideRect.right);\n\t this.animateScroll_(_x);\n\t }\n\t };\n\t\n\t /**\n\t * Removes 'aria-selected' from all slides in carousel\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.setAriaSelected_ = function (slide) {\n\t if (slide) {\n\t [].concat((0, _toConsumableArray3.default)(this.element_.querySelectorAll('.' + SLIDE + '[aria-selected]'))).forEach(function (slide) {\n\t return slide.removeAttribute('aria-selected');\n\t });\n\t slide.setAttribute('aria-selected', '');\n\t }\n\t };\n\t\n\t /**\n\t * Removes event listeners\n\t * @private\n\t */\n\t MaterialExtCarousel.prototype.removeListeners_ = function () {\n\t this.element_.removeEventListener('focus', this.focusHandler_);\n\t this.element_.removeEventListener('blur', this.blurHandler_);\n\t this.element_.removeEventListener('keydown', this.keyDownHandler_);\n\t this.element_.removeEventListener('mousedown', this.dragHandler_);\n\t this.element_.removeEventListener('touchstart', this.dragHandler_);\n\t this.element_.removeEventListener('click', this.clickHandler_, false);\n\t this.element_.removeEventListener('command', this.commandHandler_);\n\t this.element_.removeEventListener('mdl-componentdowngraded', this.mdlDowngrade_);\n\t };\n\t\n\t // Helpers\n\t var getSlide_ = function getSlide_(element) {\n\t return element.closest('.' + SLIDE);\n\t };\n\t\n\t var setFocus_ = function setFocus_(slide) {\n\t if (slide) {\n\t slide.focus();\n\t }\n\t };\n\t\n\t var addRipple_ = function addRipple_(slide) {\n\t if (!slide.querySelector('.' + MDL_RIPPLE_CONTAINER)) {\n\t var rippleContainer = document.createElement('span');\n\t rippleContainer.classList.add(MDL_RIPPLE_CONTAINER);\n\t rippleContainer.classList.add(_constants.MDL_RIPPLE_EFFECT);\n\t var ripple = document.createElement('span');\n\t ripple.classList.add(_constants.MDL_RIPPLE);\n\t rippleContainer.appendChild(ripple);\n\t\n\t var img = slide.querySelector('img');\n\t if (img) {\n\t // rippleContainer blocks image title\n\t rippleContainer.title = img.title;\n\t }\n\t slide.appendChild(rippleContainer);\n\t componentHandler.upgradeElement(rippleContainer, _constants.MDL_RIPPLE_COMPONENT);\n\t }\n\t };\n\t // End helpers\n\t\n\t\n\t // Public methods.\n\t\n\t /**\n\t * Cancel animation - if running.\n\t *\n\t * @public\n\t */\n\t MaterialExtCarousel.prototype.stopAnimation = function () {\n\t this.config_.animationLoop.stop();\n\t };\n\t MaterialExtCarousel.prototype['stopAnimation'] = MaterialExtCarousel.prototype.stopAnimation;\n\t\n\t /**\n\t * Upgrade slides\n\t * Use if more list elements are added later (dynamically)\n\t *\n\t * @public\n\t */\n\t MaterialExtCarousel.prototype.upgradeSlides = function () {\n\t var _this5 = this;\n\t\n\t var hasRippleEffect = this.element_.classList.contains(_constants.MDL_RIPPLE_EFFECT);\n\t\n\t [].concat((0, _toConsumableArray3.default)(this.element_.querySelectorAll('.' + SLIDE))).forEach(function (slide) {\n\t\n\t slide.setAttribute('role', SLIDE_ROLE);\n\t\n\t if (_this5.config_.interactive) {\n\t if (!slide.getAttribute('tabindex')) {\n\t slide.setAttribute('tabindex', '0');\n\t }\n\t if (hasRippleEffect) {\n\t addRipple_(slide);\n\t }\n\t } else {\n\t slide.setAttribute('tabindex', '-1');\n\t }\n\t });\n\t };\n\t MaterialExtCarousel.prototype['upgradeSlides'] = MaterialExtCarousel.prototype.upgradeSlides;\n\t\n\t /**\n\t * Get config object\n\t *\n\t * @public\n\t */\n\t MaterialExtCarousel.prototype.getConfig = function () {\n\t return this.config_;\n\t };\n\t MaterialExtCarousel.prototype['getConfig'] = MaterialExtCarousel.prototype.getConfig;\n\t\n\t /**\n\t * Initialize component\n\t */\n\t MaterialExtCarousel.prototype.init = function () {\n\t\n\t if (this.element_) {\n\t // Config\n\t if (this.element_.hasAttribute('data-config')) {\n\t this.config_ = (0, _jsonUtils.jsonStringToObject)(this.element_.getAttribute('data-config'), this.config_);\n\t }\n\t\n\t // Wai-Aria\n\t this.element_.setAttribute('role', ROLE);\n\t\n\t // Prefer tabindex -1\n\t if (!(0, _isInteger2.default)(this.element_.getAttribute('tabindex'))) {\n\t this.element_.setAttribute('tabindex', -1);\n\t }\n\t\n\t // Remove listeners, just in case ...\n\t this.removeListeners_();\n\t\n\t if (this.config_.interactive) {\n\t\n\t // Ripple\n\t var hasRippleEffect = this.element_.classList.contains(_constants.MDL_RIPPLE_EFFECT);\n\t if (hasRippleEffect) {\n\t this.element_.classList.add(_constants.MDL_RIPPLE_EFFECT_IGNORE_EVENTS);\n\t }\n\t\n\t // Listen to focus/blur events\n\t this.element_.addEventListener('focus', this.focusHandler_.bind(this), true);\n\t this.element_.addEventListener('blur', this.blurHandler_.bind(this), true);\n\t\n\t // Listen to keyboard events\n\t this.element_.addEventListener('keydown', this.keyDownHandler_.bind(this), false);\n\t\n\t // Listen to drag events\n\t this.element_.addEventListener('mousedown', this.dragHandler_.bind(this), false);\n\t this.element_.addEventListener('touchstart', this.dragHandler_.bind(this), false);\n\t\n\t // Listen to click events\n\t this.element_.addEventListener('click', this.clickHandler_.bind(this), false);\n\t }\n\t\n\t // Listen to custom 'command' event\n\t this.element_.addEventListener('command', this.commandHandler_.bind(this), false);\n\t\n\t // Listen to 'mdl-componentdowngraded' event\n\t this.element_.addEventListener('mdl-componentdowngraded', this.mdlDowngrade_.bind(this));\n\t\n\t // Slides collection\n\t this.upgradeSlides();\n\t\n\t // Set upgraded flag\n\t this.element_.classList.add(_constants.IS_UPGRADED);\n\t\n\t if (this.config_.autostart) {\n\t // Start slideshow\n\t this.startSlideShow_();\n\t }\n\t }\n\t };\n\t\n\t /*\n\t * Downgrade component\n\t * E.g remove listeners and clean up resources\n\t */\n\t MaterialExtCarousel.prototype.mdlDowngrade_ = function () {\n\t 'use strict';\n\t //console.log('***** MaterialExtCarousel.mdlDowngrade_');\n\t\n\t // Stop animation - if any\n\t\n\t this.stopAnimation();\n\t\n\t // Remove listeners\n\t this.removeListeners_();\n\t };\n\t\n\t // The component registers itself. It can assume componentHandler is available\n\t // in the global scope.\n\t /* eslint no-undef: 0 */\n\t componentHandler.register({\n\t constructor: MaterialExtCarousel,\n\t classAsString: 'MaterialExtCarousel',\n\t cssClass: 'mdlext-js-carousel',\n\t widget: true\n\t });\n\t})();\n\n/***/ },\n/* 51 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _classCallCheck2 = __webpack_require__(22);\n\t\n\tvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\t\n\tvar _createClass2 = __webpack_require__(23);\n\t\n\tvar _createClass3 = _interopRequireDefault(_createClass2);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tvar _stringUtils = __webpack_require__(15);\n\t\n\tvar _domUtils = __webpack_require__(21);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar JS_COLLAPSIBLE = 'mdlext-js-collapsible'; /**\n\t * @license\n\t * Copyright 2016-2017 Leif Olsen. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t *\n\t * This code is built with Google Material Design Lite,\n\t * which is Licensed under the Apache License, Version 2.0\n\t */\n\t\n\t/**\n\t * A collapsible is a component to mark expandable and collapsible regions.\n\t * The component use the aria-expanded state to indicate whether regions of\n\t * the content are collapsible, and to expose whether a region is currently\n\t * expanded or collapsed.\n\t * @see https://www.w3.org/WAI/GL/wiki/Using_the_WAI-ARIA_aria-expanded_state_to_mark_expandable_and_collapsible_regions\n\t */\n\t\n\tvar COLLAPSIBLE_CONTROL_CLASS = 'mdlext-collapsible';\n\tvar COLLAPSIBLE_GROUP_CLASS = 'mdlext-collapsible-group';\n\tvar COLLAPSIBLE_REGION_CLASS = 'mdlext-collapsible-region';\n\t\n\t/**\n\t * The collapsible component\n\t */\n\t\n\tvar Collapsible = function () {\n\t\n\t /**\n\t * @constructor\n\t * @param {HTMLElement} element The element that this component is connected to.\n\t */\n\t function Collapsible(element) {\n\t var _this = this;\n\t\n\t (0, _classCallCheck3.default)(this, Collapsible);\n\t this.element_ = null;\n\t this.controlElement_ = null;\n\t\n\t this.keyDownHandler = function (event) {\n\t if (event.keyCode === _constants.VK_ENTER || event.keyCode === _constants.VK_SPACE) {\n\t event.preventDefault();\n\t\n\t // Trigger click\n\t (event.target || _this.controlElement).dispatchEvent(new MouseEvent('click', {\n\t bubbles: true,\n\t cancelable: true,\n\t view: window\n\t }));\n\t }\n\t };\n\t\n\t this.clickHandler = function (event) {\n\t if (!_this.isDisabled) {\n\t if (event.target !== _this.controlElement) {\n\t // Do not toggle if a focusable element inside the control element triggered the event\n\t var p = (0, _domUtils.getParentElements)(event.target, _this.controlElement);\n\t p.push(event.target);\n\t if (p.find(function (el) {\n\t return (0, _domUtils.isFocusable)(el);\n\t })) {\n\t return;\n\t }\n\t }\n\t _this.toggle();\n\t }\n\t };\n\t\n\t this.element_ = element;\n\t this.init();\n\t }\n\t\n\t (0, _createClass3.default)(Collapsible, [{\n\t key: 'collapse',\n\t value: function collapse() {\n\t if (!this.isDisabled && this.isExpanded) {\n\t if (this.dispatchToggleEvent('collapse')) {\n\t this.controlElement.setAttribute('aria-expanded', 'false');\n\t var regions = this.regionElements.slice(0);\n\t for (var i = regions.length - 1; i >= 0; --i) {\n\t regions[i].setAttribute('hidden', '');\n\t }\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'expand',\n\t value: function expand() {\n\t if (!this.isDisabled && !this.isExpanded) {\n\t if (this.dispatchToggleEvent('expand')) {\n\t this.controlElement.setAttribute('aria-expanded', 'true');\n\t this.regionElements.forEach(function (region) {\n\t return region.removeAttribute('hidden');\n\t });\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'toggle',\n\t value: function toggle() {\n\t if (this.isExpanded) {\n\t this.collapse();\n\t } else {\n\t this.expand();\n\t }\n\t }\n\t }, {\n\t key: 'dispatchToggleEvent',\n\t value: function dispatchToggleEvent(action) {\n\t return this.element.dispatchEvent(new CustomEvent('toggle', {\n\t bubbles: true,\n\t cancelable: true,\n\t detail: {\n\t action: action\n\t }\n\t }));\n\t }\n\t }, {\n\t key: 'disableToggle',\n\t value: function disableToggle() {\n\t this.controlElement.setAttribute('aria-disabled', true);\n\t }\n\t }, {\n\t key: 'enableToggle',\n\t value: function enableToggle() {\n\t this.controlElement.removeAttribute('aria-disabled');\n\t }\n\t }, {\n\t key: 'addRegionId',\n\t value: function addRegionId(regionId) {\n\t var ids = this.regionIds;\n\t if (!ids.find(function (id) {\n\t return regionId === id;\n\t })) {\n\t ids.push(regionId);\n\t this.controlElement.setAttribute('aria-controls', ids.join(' '));\n\t }\n\t }\n\t }, {\n\t key: 'addRegionElement',\n\t value: function addRegionElement(region) {\n\t if (!(region.classList.contains(COLLAPSIBLE_GROUP_CLASS) || region.classList.contains(COLLAPSIBLE_REGION_CLASS))) {\n\t region.classList.add(COLLAPSIBLE_GROUP_CLASS);\n\t }\n\t\n\t if (!region.hasAttribute('role')) {\n\t var role = region.classList.contains(COLLAPSIBLE_GROUP_CLASS) ? 'group' : 'region';\n\t region.setAttribute('role', role);\n\t }\n\t\n\t if (!region.hasAttribute('id')) {\n\t region.id = region.getAttribute('role') + '-' + (0, _stringUtils.randomString)();\n\t }\n\t\n\t if (this.isExpanded) {\n\t region.removeAttribute('hidden');\n\t } else {\n\t region.setAttribute('hidden', '');\n\t }\n\t this.addRegionId(region.id);\n\t }\n\t }, {\n\t key: 'removeRegionElement',\n\t value: function removeRegionElement(region) {\n\t if (region && region.id) {\n\t var ids = this.regionIds.filter(function (id) {\n\t return id === region.id;\n\t });\n\t this.controlElement.setAttribute('aria-controls', ids.join(' '));\n\t }\n\t }\n\t }, {\n\t key: 'removeListeners',\n\t value: function removeListeners() {\n\t this.controlElement.removeEventListener('keydown', this.keyDownHandler);\n\t this.controlElement.removeEventListener('click', this.clickHandler);\n\t }\n\t }, {\n\t key: 'init',\n\t value: function init() {\n\t var _this2 = this;\n\t\n\t var initControl = function initControl() {\n\t // Find the button element\n\t _this2.controlElement_ = _this2.element.querySelector('.' + COLLAPSIBLE_CONTROL_CLASS) || _this2.element;\n\t\n\t // Add \"aria-expanded\" attribute if not present\n\t if (!_this2.controlElement.hasAttribute('aria-expanded')) {\n\t _this2.controlElement.setAttribute('aria-expanded', 'false');\n\t }\n\t\n\t // Add role=button if control != <button>\n\t if (_this2.controlElement.nodeName.toLowerCase() !== 'button') {\n\t _this2.controlElement.setAttribute('role', 'button');\n\t }\n\t\n\t // Add tabindex\n\t if (!(0, _domUtils.isFocusable)(_this2.controlElement) && !_this2.controlElement.hasAttribute('tabindex')) {\n\t _this2.controlElement.setAttribute('tabindex', '0');\n\t }\n\t };\n\t\n\t var initRegions = function initRegions() {\n\t var regions = [];\n\t if (!_this2.controlElement.hasAttribute('aria-controls')) {\n\t // Add siblings as collapsible region(s)\n\t var r = _this2.element.nextElementSibling;\n\t while (r) {\n\t if (r.classList.contains(COLLAPSIBLE_GROUP_CLASS) || r.classList.contains(COLLAPSIBLE_REGION_CLASS)) {\n\t regions.push(r);\n\t } else if (r.classList.contains(JS_COLLAPSIBLE)) {\n\t // A new collapsible component\n\t break;\n\t }\n\t r = r.nextElementSibling;\n\t }\n\t } else {\n\t regions = _this2.regionElements;\n\t }\n\t regions.forEach(function (region) {\n\t return _this2.addRegionElement(region);\n\t });\n\t };\n\t\n\t var addListeners = function addListeners() {\n\t _this2.controlElement.addEventListener('keydown', _this2.keyDownHandler);\n\t _this2.controlElement.addEventListener('click', _this2.clickHandler);\n\t };\n\t\n\t initControl();\n\t initRegions();\n\t this.removeListeners();\n\t addListeners();\n\t }\n\t }, {\n\t key: 'downgrade',\n\t value: function downgrade() {\n\t this.removeListeners();\n\t }\n\t }, {\n\t key: 'element',\n\t get: function get() {\n\t return this.element_;\n\t }\n\t }, {\n\t key: 'controlElement',\n\t get: function get() {\n\t return this.controlElement_;\n\t }\n\t }, {\n\t key: 'isDisabled',\n\t get: function get() {\n\t return this.controlElement.hasAttribute('disabled') && this.controlElement.getAttribute('disabled').toLowerCase() !== 'false' || this.controlElement.hasAttribute('aria-disabled') && this.controlElement.getAttribute('aria-disabled').toLowerCase() !== 'false';\n\t }\n\t }, {\n\t key: 'isExpanded',\n\t get: function get() {\n\t return this.controlElement.hasAttribute('aria-expanded') && this.controlElement.getAttribute('aria-expanded').toLowerCase() === 'true';\n\t }\n\t }, {\n\t key: 'regionIds',\n\t get: function get() {\n\t return this.controlElement.hasAttribute('aria-controls') ? this.controlElement.getAttribute('aria-controls').split(' ') : [];\n\t }\n\t }, {\n\t key: 'regionElements',\n\t get: function get() {\n\t return this.regionIds.map(function (id) {\n\t return document.querySelector('#' + id);\n\t }).filter(function (el) {\n\t return el != null;\n\t });\n\t }\n\t }]);\n\t return Collapsible;\n\t}();\n\t\n\t(function () {\n\t 'use strict';\n\t\n\t /**\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\t\n\t var MaterialExtCollapsible = function MaterialExtCollapsible(element) {\n\t this.element_ = element;\n\t this.collapsible = null;\n\t\n\t // Initialize instance.\n\t this.init();\n\t };\n\t window['MaterialExtCollapsible'] = MaterialExtCollapsible;\n\t\n\t /**\n\t * Initialize component\n\t */\n\t MaterialExtCollapsible.prototype.init = function () {\n\t if (this.element_) {\n\t this.collapsible = new Collapsible(this.element_);\n\t this.element_.classList.add(_constants.IS_UPGRADED);\n\t\n\t // Listen to 'mdl-componentdowngraded' event\n\t this.element_.addEventListener('mdl-componentdowngraded', this.mdlDowngrade_.bind(this));\n\t }\n\t };\n\t\n\t /*\n\t * Downgrade component\n\t * E.g remove listeners and clean up resources\n\t */\n\t MaterialExtCollapsible.prototype.mdlDowngrade_ = function () {\n\t this.collapsible.downgrade();\n\t };\n\t\n\t // Public methods.\n\t\n\t /**\n\t * Get control element.\n\t * @return {HTMLElement} element The element that controls the collapsible region.\n\t * @public\n\t */\n\t MaterialExtCollapsible.prototype.getControlElement = function () {\n\t return this.collapsible.controlElement;\n\t };\n\t MaterialExtCollapsible.prototype['getControlElement'] = MaterialExtCollapsible.prototype.getControlElement;\n\t\n\t /**\n\t * Get region elements controlled by this collapsible\n\t * @returns {Array<HTMLElement>} the collapsible region elements\n\t * @public\n\t */\n\t MaterialExtCollapsible.prototype.getRegionElements = function () {\n\t return this.collapsible.regionElements;\n\t };\n\t MaterialExtCollapsible.prototype['getRegionElements'] = MaterialExtCollapsible.prototype.getRegionElements;\n\t\n\t /**\n\t * Add region elements.\n\t * @param {Array<HTMLElement>} elements The element that will be upgraded.\n\t * @return {void}\n\t * @public\n\t */\n\t MaterialExtCollapsible.prototype.addRegionElements = function () {\n\t var _this3 = this;\n\t\n\t for (var _len = arguments.length, elements = Array(_len), _key = 0; _key < _len; _key++) {\n\t elements[_key] = arguments[_key];\n\t }\n\t\n\t elements.forEach(function (element) {\n\t return _this3.collapsible.addRegionElement(element);\n\t });\n\t };\n\t MaterialExtCollapsible.prototype['addRegionElements'] = MaterialExtCollapsible.prototype.addRegionElements;\n\t\n\t /**\n\t * Remove collapsible region(s) from component.\n\t * Note: This operation does not delete the element from the DOM tree.\n\t * @param {Array<HTMLElement>} elements The element that will be upgraded.\n\t * @public\n\t */\n\t MaterialExtCollapsible.prototype.removeRegionElements = function () {\n\t var _this4 = this;\n\t\n\t for (var _len2 = arguments.length, elements = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n\t elements[_key2] = arguments[_key2];\n\t }\n\t\n\t elements.forEach(function (element) {\n\t return _this4.collapsible.removeRegionElement(element);\n\t });\n\t };\n\t MaterialExtCollapsible.prototype['removeRegionElements'] = MaterialExtCollapsible.prototype.removeRegionElements;\n\t\n\t /**\n\t * Expand collapsible region(s)\n\t * @return {void}\n\t * @public\n\t */\n\t MaterialExtCollapsible.prototype.expand = function () {\n\t this.collapsible.expand();\n\t };\n\t MaterialExtCollapsible.prototype['expand'] = MaterialExtCollapsible.prototype.expand;\n\t\n\t /**\n\t * Collapse collapsible region(s)\n\t * @return {void}\n\t * @public\n\t */\n\t MaterialExtCollapsible.prototype.collapse = function () {\n\t this.collapsible.collapse();\n\t };\n\t MaterialExtCollapsible.prototype['collapse'] = MaterialExtCollapsible.prototype.collapse;\n\t\n\t /**\n\t * Toggle collapsible region(s)\n\t * @return {void}\n\t * @public\n\t */\n\t MaterialExtCollapsible.prototype.toggle = function () {\n\t this.collapsible.toggle();\n\t };\n\t MaterialExtCollapsible.prototype['toggle'] = MaterialExtCollapsible.prototype.toggle;\n\t\n\t /**\n\t * Check whether component has aria-expanded state true\n\t * @return {Boolean} true if aria-expanded=\"true\", otherwise false\n\t */\n\t MaterialExtCollapsible.prototype.isExpanded = function () {\n\t return this.collapsible.isExpanded;\n\t };\n\t MaterialExtCollapsible.prototype['isExpanded'] = MaterialExtCollapsible.prototype.isExpanded;\n\t\n\t /**\n\t * Check whether component has aria-disabled state set to true\n\t * @return {Boolean} true if aria-disabled=\"true\", otherwise false\n\t */\n\t MaterialExtCollapsible.prototype.isDisabled = function () {\n\t return this.collapsible.isDisabled;\n\t };\n\t MaterialExtCollapsible.prototype['isDisabled'] = MaterialExtCollapsible.prototype.isDisabled;\n\t\n\t /**\n\t * Disables toggling of collapsible region(s)\n\t * @return {void}\n\t * @public\n\t */\n\t MaterialExtCollapsible.prototype.disableToggle = function () {\n\t this.collapsible.disableToggle();\n\t };\n\t MaterialExtCollapsible.prototype['disableToggle'] = MaterialExtCollapsible.prototype.disableToggle;\n\t\n\t /**\n\t * Enables toggling of collapsible region(s)\n\t * @return {void}\n\t * @public\n\t */\n\t MaterialExtCollapsible.prototype.enableToggle = function () {\n\t this.collapsible.enableToggle();\n\t };\n\t MaterialExtCollapsible.prototype['enableToggle'] = MaterialExtCollapsible.prototype.enableToggle;\n\t\n\t // The component registers itself. It can assume componentHandler is available\n\t // in the global scope.\n\t /* eslint no-undef: 0 */\n\t componentHandler.register({\n\t constructor: MaterialExtCollapsible,\n\t classAsString: 'MaterialExtCollapsible',\n\t cssClass: JS_COLLAPSIBLE,\n\t widget: true\n\t });\n\t})();\n\n/***/ },\n/* 52 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _classCallCheck2 = __webpack_require__(22);\n\t\n\tvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\t\n\tvar _createClass2 = __webpack_require__(23);\n\t\n\tvar _createClass3 = _interopRequireDefault(_createClass2);\n\t\n\tvar _class, _temp; /**\n\t * @license\n\t * Copyright 2016-2017 Leif Olsen. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t *\n\t * This code is built with Google Material Design Lite,\n\t * which is Licensed under the Apache License, Version 2.0\n\t */\n\t\n\tvar _jsonUtils = __webpack_require__(14);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar JS_FORMAT_FIELD = 'mdlext-js-formatfield';\n\tvar FORMAT_FIELD_COMPONENT = 'MaterialExtFormatfield';\n\t\n\t/**\n\t * Detect browser locale\n\t * @returns {string} the locale\n\t * @see http://stackoverflow.com/questions/1043339/javascript-for-detecting-browser-language-preference\n\t */\n\tvar browserLanguage = function browserLanguage() {\n\t return navigator.languages ? navigator.languages[0] : navigator.language || navigator.userLanguage;\n\t};\n\t\n\t/**\n\t * The formatfield formats an input field using language sensitive number formatting.\n\t */\n\t\n\tvar FormatField = (_temp = _class = function () {\n\t function FormatField(element) {\n\t var _this = this;\n\t\n\t (0, _classCallCheck3.default)(this, FormatField);\n\t this.options_ = {};\n\t\n\t this.clickHandler = function () {\n\t clearTimeout(FormatField.timer);\n\t };\n\t\n\t this.focusInHandler = function () {\n\t if (!(_this.input.readOnly || _this.input.disabled)) {\n\t _this.input.value = _this.unformatInput();\n\t //setTimeout(() => this.input.setSelectionRange(0, this.input.value.length), 20);\n\t FormatField.timer = setTimeout(function () {\n\t return _this.input.select();\n\t }, 200);\n\t }\n\t };\n\t\n\t this.focusOutHandler = function () {\n\t clearTimeout(FormatField.timer);\n\t\n\t if (!(_this.input.readOnly || _this.input.disabled)) {\n\t _this.formatValue();\n\t }\n\t };\n\t\n\t this.element_ = element;\n\t this.init();\n\t }\n\t\n\t (0, _createClass3.default)(FormatField, [{\n\t key: 'stripSeparatorsFromValue',\n\t value: function stripSeparatorsFromValue() {\n\t var _this2 = this;\n\t\n\t var doReplace = function doReplace() {\n\t return _this2.input.value.replace(/\\s/g, '').replace(new RegExp(_this2.options.groupSeparator, 'g'), '').replace(_this2.options.decimalSeparator, '.');\n\t };\n\t //.replace(this.intlGroupSeparator_, ''),\n\t //.replace(this.intlDecimalSeparator_, '.');\n\t\n\t return this.input.value ? doReplace() : this.input.value;\n\t }\n\t }, {\n\t key: 'fixSeparators',\n\t value: function fixSeparators(value) {\n\t var _this3 = this;\n\t\n\t var doReplace = function doReplace() {\n\t return value.replace(new RegExp(_this3.intlGroupSeparator_, 'g'), _this3.options.groupSeparator).replace(_this3.intlDecimalSeparator_, _this3.options.decimalSeparator);\n\t };\n\t\n\t return value ? doReplace() : value;\n\t }\n\t }, {\n\t key: 'formatValue',\n\t value: function formatValue() {\n\t if (this.input.value) {\n\t var v = new Intl.NumberFormat(this.options.locales, this.options).format(this.stripSeparatorsFromValue());\n\t\n\t if ('NaN' !== v) {\n\t this.input.value = this.fixSeparators(v);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'unformat',\n\t value: function unformat() {\n\t var _this4 = this;\n\t\n\t var doReplace = function doReplace() {\n\t return _this4.input.value.replace(/\\s/g, '').replace(new RegExp(_this4.options.groupSeparator, 'g'), '').replace(_this4.options.decimalSeparator, '.');\n\t };\n\t\n\t return this.input.value ? doReplace() : this.input.value;\n\t }\n\t }, {\n\t key: 'unformatInput',\n\t value: function unformatInput() {\n\t var _this5 = this;\n\t\n\t var doReplace = function doReplace() {\n\t return _this5.input.value.replace(/\\s/g, '').replace(new RegExp(_this5.options.groupSeparator, 'g'), '');\n\t };\n\t\n\t return this.input.value ? doReplace() : this.input.value;\n\t }\n\t }, {\n\t key: 'removeListeners',\n\t value: function removeListeners() {\n\t this.input.removeEventListener('click', this.clickHandler);\n\t this.input.removeEventListener('focusin', this.focusInHandler);\n\t this.input.removeEventListener('focusout', this.focusOutHandler);\n\t }\n\t }, {\n\t key: 'init',\n\t value: function init() {\n\t var _this6 = this;\n\t\n\t var addListeners = function addListeners() {\n\t _this6.input.addEventListener('click', _this6.clickHandler);\n\t _this6.input.addEventListener('focusin', _this6.focusInHandler);\n\t _this6.input.addEventListener('focusout', _this6.focusOutHandler);\n\t };\n\t\n\t var addOptions = function addOptions() {\n\t var opts = _this6.element.getAttribute('data-formatfield-options') || _this6.input.getAttribute('data-formatfield-options');\n\t if (opts) {\n\t _this6.options_ = (0, _jsonUtils.jsonStringToObject)(opts, _this6.options);\n\t }\n\t };\n\t\n\t var addLocale = function addLocale() {\n\t if (!_this6.options.locales) {\n\t _this6.options.locales = browserLanguage() || 'en-US'; //'nb-NO', //'en-US',\n\t }\n\t };\n\t\n\t var addGrouping = function addGrouping() {\n\t var s = 1234.5.toLocaleString(_this6.options.locales, {\n\t style: 'decimal',\n\t useGrouping: true,\n\t minimumFractionDigits: 1,\n\t maximumFractionDigits: 1\n\t });\n\t\n\t _this6.intlGroupSeparator_ = s.charAt(1);\n\t _this6.intlDecimalSeparator_ = s.charAt(s.length - 2);\n\t _this6.options.groupSeparator = _this6.options.groupSeparator || _this6.intlGroupSeparator_;\n\t _this6.options.decimalSeparator = _this6.options.decimalSeparator || _this6.intlDecimalSeparator_;\n\t\n\t if (_this6.options.groupSeparator === _this6.options.decimalSeparator) {\n\t var e = 'Error! options.groupSeparator, \"' + _this6.options.groupSeparator + '\" ' + 'and options.decimalSeparator, ' + ('\"' + _this6.options.decimalSeparator + '\" should not be equal');\n\t throw new Error(e);\n\t }\n\t };\n\t\n\t this.input_ = this.element.querySelector('input') || this.element;\n\t\n\t addOptions();\n\t addLocale();\n\t addGrouping();\n\t this.formatValue();\n\t addListeners();\n\t }\n\t }, {\n\t key: 'downgrade',\n\t value: function downgrade() {\n\t this.removeListeners();\n\t }\n\t }, {\n\t key: 'element',\n\t get: function get() {\n\t return this.element_;\n\t }\n\t }, {\n\t key: 'input',\n\t get: function get() {\n\t return this.input_;\n\t }\n\t }, {\n\t key: 'options',\n\t get: function get() {\n\t return this.options_;\n\t }\n\t }]);\n\t return FormatField;\n\t}(), _class.timer = null, _temp);\n\t\n\t\n\t(function () {\n\t 'use strict';\n\t\n\t /**\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\t\n\t var MaterialExtFormatfield = function MaterialExtFormatfield(element) {\n\t this.element_ = element;\n\t this.formatField_ = null;\n\t\n\t // Initialize instance.\n\t this.init();\n\t };\n\t window['MaterialExtFormatfield'] = MaterialExtFormatfield;\n\t\n\t /**\n\t * Initialize component\n\t */\n\t MaterialExtFormatfield.prototype.init = function () {\n\t if (this.element_) {\n\t this.element_.classList.add(_constants.IS_UPGRADED);\n\t this.formatField_ = new FormatField(this.element_);\n\t\n\t // Listen to 'mdl-componentdowngraded' event\n\t this.element_.addEventListener('mdl-componentdowngraded', this.mdlDowngrade_.bind(this));\n\t }\n\t };\n\t\n\t /**\n\t * Get options object\n\t *\n\t * @public\n\t *\n\t * @returns {Object} the options object\n\t */\n\t MaterialExtFormatfield.prototype.getOptions = function () {\n\t return this.formatField_.options;\n\t };\n\t MaterialExtFormatfield.prototype['getOptions'] = MaterialExtFormatfield.prototype.getOptions;\n\t\n\t /**\n\t * A unformatted value is a string value where the locale specific decimal separator\n\t * is replaced with a '.' separator and group separators are stripped.\n\t * The returned value is suitable for parsing to a JavaScript numerical value.\n\t *\n\t * @example\n\t * input.value = '1 234,5';\n\t * inputElement.MaterialExtFormatfield.getUnformattedValue();\n\t * // Returns '1234.5'\n\t *\n\t * @public\n\t *\n\t * @returns {String} the unformatted value\n\t */\n\t MaterialExtFormatfield.prototype.getUnformattedValue = function () {\n\t return this.formatField_.unformat();\n\t };\n\t MaterialExtFormatfield.prototype['getUnformattedValue'] = MaterialExtFormatfield.prototype.getUnformattedValue;\n\t\n\t /*\n\t * Downgrade component\n\t * E.g remove listeners and clean up resources\n\t */\n\t MaterialExtFormatfield.prototype.mdlDowngrade_ = function () {\n\t this.formatField_.downgrade();\n\t };\n\t\n\t // The component registers itself. It can assume componentHandler is available\n\t // in the global scope.\n\t /* eslint no-undef: 0 */\n\t componentHandler.register({\n\t constructor: MaterialExtFormatfield,\n\t classAsString: FORMAT_FIELD_COMPONENT,\n\t cssClass: JS_FORMAT_FIELD,\n\t widget: true\n\t });\n\t})();\n\n/***/ },\n/* 53 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t__webpack_require__(59);\n\t\n\t__webpack_require__(49);\n\t\n\t__webpack_require__(51);\n\t\n\t__webpack_require__(50);\n\t\n\t__webpack_require__(54);\n\t\n\t__webpack_require__(55);\n\t\n\t__webpack_require__(56);\n\t\n\t__webpack_require__(57);\n\t\n\t__webpack_require__(52);\n\t\n\t__webpack_require__(58);\n\n/***/ },\n/* 54 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _toConsumableArray2 = __webpack_require__(8);\n\t\n\tvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar MDL_RIPPLE_CONTAINER = 'mdlext-lightboard__slide__ripple-container'; /**\n\t * @license\n\t * Copyright 2016 Leif Olsen. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t *\n\t * This code is built with Google Material Design Lite,\n\t * which is Licensed under the Apache License, Version 2.0\n\t */\n\t\n\t/**\n\t * A lightboard is a translucent surface illuminated from behind, used for situations\n\t * where a shape laid upon the surface needs to be seen with high contrast. In the \"old days\" of photography\n\t * photograpers used a lightboard to get a quick view of their slides. The goal is to create a responsive lightbox\n\t * design, based on flex layout, similar to what is used in Adobe LightRoom to browse images.\n\t */\n\t\n\t(function () {\n\t 'use strict';\n\t\n\t //const LIGHTBOARD = 'mdlext-lightboard';\n\t\n\t var LIGHTBOARD_ROLE = 'grid';\n\t var SLIDE = 'mdlext-lightboard__slide';\n\t var SLIDE_ROLE = 'gridcell';\n\t var SLIDE_TABSTOP = 'mdlext-lightboard__slide__frame';\n\t /**\n\t * @constructor\n\t * @param {Element} element The element that will be upgraded.\n\t */\n\t var MaterialExtLightboard = function MaterialExtLightboard(element) {\n\t // Stores the element.\n\t this.element_ = element;\n\t\n\t // Initialize instance.\n\t this.init();\n\t };\n\t window['MaterialExtLightboard'] = MaterialExtLightboard;\n\t\n\t // Helpers\n\t var getSlide = function getSlide(element) {\n\t return element ? element.closest('.' + SLIDE) : null;\n\t };\n\t\n\t // Private methods.\n\t\n\t /**\n\t * Select a slide, i.e. set aria-selected=\"true\"\n\t * @param element\n\t * @private\n\t */\n\t MaterialExtLightboard.prototype.selectSlide_ = function (element) {\n\t var slide = getSlide(element);\n\t if (slide && !slide.hasAttribute('aria-selected')) {\n\t [].concat((0, _toConsumableArray3.default)(this.element_.querySelectorAll('.' + SLIDE + '[aria-selected=\"true\"]'))).forEach(function (selectedSlide) {\n\t return selectedSlide.removeAttribute('aria-selected');\n\t });\n\t\n\t slide.setAttribute('aria-selected', 'true');\n\t }\n\t };\n\t\n\t /**\n\t * Dispatch select event\n\t * @param {Element} slide The slide that caused the event\n\t * @private\n\t */\n\t MaterialExtLightboard.prototype.dispatchSelectEvent_ = function (slide) {\n\t this.element_.dispatchEvent(new CustomEvent('select', {\n\t bubbles: true,\n\t cancelable: true,\n\t detail: { source: slide }\n\t }));\n\t };\n\t\n\t /**\n\t * Handles custom command event, 'first', 'next', 'prev', 'last', 'select' or upgrade\n\t * @param event. A custom event\n\t * @private\n\t */\n\t MaterialExtLightboard.prototype.commandHandler_ = function (event) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\t\n\t if (event && event.detail) {\n\t this.command(event.detail);\n\t }\n\t };\n\t\n\t // Public methods\n\t\n\t /**\n\t * Initialize lightboard slides\n\t * @public\n\t */\n\t MaterialExtLightboard.prototype.upgradeSlides = function () {\n\t\n\t var addRipple = function addRipple(slide) {\n\t // Use slide frame as ripple container\n\t if (!slide.querySelector('.' + MDL_RIPPLE_CONTAINER)) {\n\t var a = slide.querySelector('.' + SLIDE_TABSTOP);\n\t if (a) {\n\t var rippleContainer = a;\n\t rippleContainer.classList.add(MDL_RIPPLE_CONTAINER);\n\t rippleContainer.classList.add(_constants.MDL_RIPPLE_EFFECT);\n\t var ripple = document.createElement('span');\n\t ripple.classList.add(_constants.MDL_RIPPLE);\n\t rippleContainer.appendChild(ripple);\n\t componentHandler.upgradeElement(rippleContainer, _constants.MDL_RIPPLE_COMPONENT);\n\t }\n\t }\n\t };\n\t\n\t var hasRippleEffect = this.element_.classList.contains(_constants.MDL_RIPPLE_EFFECT);\n\t\n\t [].concat((0, _toConsumableArray3.default)(this.element_.querySelectorAll('.' + SLIDE))).forEach(function (slide) {\n\t\n\t slide.setAttribute('role', SLIDE_ROLE);\n\t\n\t if (!slide.querySelector('a')) {\n\t slide.setAttribute('tabindex', '0');\n\t }\n\t if (hasRippleEffect) {\n\t addRipple(slide);\n\t }\n\t });\n\t };\n\t MaterialExtLightboard.prototype['upgradeSlides'] = MaterialExtLightboard.prototype.upgradeSlides;\n\t\n\t /**\n\t * Execute command\n\t * @param detail\n\t * @public\n\t */\n\t MaterialExtLightboard.prototype.command = function (detail) {\n\t var _this = this;\n\t\n\t var firstSlide = function firstSlide() {\n\t return _this.element_.querySelector('.' + SLIDE + ':first-child');\n\t };\n\t\n\t var lastSlide = function lastSlide() {\n\t return _this.element_.querySelector('.' + SLIDE + ':last-child');\n\t };\n\t\n\t var nextSlide = function nextSlide() {\n\t var slide = _this.element_.querySelector('.' + SLIDE + '[aria-selected=\"true\"]').nextElementSibling;\n\t return slide ? slide : firstSlide();\n\t };\n\t\n\t var prevSlide = function prevSlide() {\n\t var slide = _this.element_.querySelector('.' + SLIDE + '[aria-selected=\"true\"]').previousElementSibling;\n\t return slide ? slide : lastSlide();\n\t };\n\t\n\t if (detail && detail.action) {\n\t var action = detail.action,\n\t target = detail.target;\n\t\n\t\n\t var slide = void 0;\n\t switch (action.toLowerCase()) {\n\t case 'select':\n\t slide = getSlide(target);\n\t this.dispatchSelectEvent_(slide);\n\t break;\n\t case 'first':\n\t slide = firstSlide();\n\t break;\n\t case 'next':\n\t slide = nextSlide();\n\t break;\n\t case 'prev':\n\t slide = prevSlide();\n\t break;\n\t case 'last':\n\t slide = lastSlide();\n\t break;\n\t case 'upgrade':\n\t this.upgradeSlides();\n\t break;\n\t default:\n\t throw new Error('Unknown action \"' + action + '\". Action must be one of \"first\", \"next\", \"prev\", \"last\", \"select\" or \"upgrade\"');\n\t }\n\t\n\t if (slide) {\n\t var a = slide.querySelector('a');\n\t if (a) {\n\t a.focus();\n\t } else {\n\t slide.focus();\n\t }\n\t\n\t // Workaround for JSDom testing:\n\t // In JsDom 'element.focus()' does not trigger any focus event\n\t if (!slide.hasAttribute('aria-selected')) {\n\t this.selectSlide_(slide);\n\t }\n\t }\n\t }\n\t };\n\t MaterialExtLightboard.prototype['command'] = MaterialExtLightboard.prototype.command;\n\t\n\t /**\n\t * Initialize component\n\t */\n\t MaterialExtLightboard.prototype.init = function () {\n\t var _this2 = this;\n\t\n\t var keydownHandler = function keydownHandler(event) {\n\t\n\t if (event.target !== _this2.element_) {\n\t var action = void 0;\n\t var target = void 0;\n\t switch (event.keyCode) {\n\t case _constants.VK_HOME:\n\t action = 'first';\n\t break;\n\t case _constants.VK_END:\n\t action = 'last';\n\t break;\n\t case _constants.VK_ARROW_UP:\n\t case _constants.VK_ARROW_LEFT:\n\t action = 'prev';\n\t break;\n\t case _constants.VK_ARROW_DOWN:\n\t case _constants.VK_ARROW_RIGHT:\n\t action = 'next';\n\t break;\n\t case _constants.VK_ENTER:\n\t case _constants.VK_SPACE:\n\t action = 'select';\n\t target = event.target;\n\t break;\n\t }\n\t if (action) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\t _this2.command({ action: action, target: target });\n\t }\n\t }\n\t };\n\t\n\t var clickHandler = function clickHandler(event) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\t\n\t if (event.target !== _this2.element_) {\n\t _this2.command({ action: 'select', target: event.target });\n\t }\n\t };\n\t\n\t var focusHandler = function focusHandler(event) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\t\n\t if (event.target !== _this2.element_) {\n\t _this2.selectSlide_(event.target);\n\t }\n\t };\n\t\n\t if (this.element_) {\n\t this.element_.setAttribute('role', LIGHTBOARD_ROLE);\n\t\n\t if (this.element_.classList.contains(_constants.MDL_RIPPLE_EFFECT)) {\n\t this.element_.classList.add(_constants.MDL_RIPPLE_EFFECT_IGNORE_EVENTS);\n\t }\n\t\n\t // Remove listeners, just in case ...\n\t this.element_.removeEventListener('command', this.commandHandler_);\n\t this.element_.removeEventListener('keydown', keydownHandler);\n\t this.element_.removeEventListener('click', clickHandler);\n\t this.element_.removeEventListener('focus', focusHandler);\n\t\n\t this.element_.addEventListener('command', this.commandHandler_.bind(this), false);\n\t this.element_.addEventListener('keydown', keydownHandler, true);\n\t this.element_.addEventListener('click', clickHandler, true);\n\t this.element_.addEventListener('focus', focusHandler, true);\n\t\n\t this.upgradeSlides();\n\t\n\t this.element_.classList.add(_constants.IS_UPGRADED);\n\t }\n\t };\n\t\n\t // The component registers itself. It can assume componentHandler is available\n\t // in the global scope.\n\t /* eslint no-undef: 0 */\n\t /* jshint undef:false */\n\t componentHandler.register({\n\t constructor: MaterialExtLightboard,\n\t classAsString: 'MaterialExtLightboard',\n\t cssClass: 'mdlext-js-lightboard',\n\t widget: true\n\t });\n\t})();\n\n/***/ },\n/* 55 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _toConsumableArray2 = __webpack_require__(8);\n\t\n\tvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\t\n\tvar _isInteger = __webpack_require__(32);\n\t\n\tvar _isInteger2 = _interopRequireDefault(_isInteger);\n\t\n\tvar _slicedToArray2 = __webpack_require__(67);\n\t\n\tvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\t\n\tvar _entries = __webpack_require__(64);\n\t\n\tvar _entries2 = _interopRequireDefault(_entries);\n\t\n\tvar _getIterator2 = __webpack_require__(31);\n\t\n\tvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\t\n\tvar _fullThrottle = __webpack_require__(13);\n\t\n\tvar _fullThrottle2 = _interopRequireDefault(_fullThrottle);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/**\n\t * @license\n\t * Copyright 2016 Leif Olsen. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t *\n\t * This code is built with Google Material Design Lite,\n\t * which is Licensed under the Apache License, Version 2.0\n\t */\n\t\n\t/**\n\t * Responsive Lightbox\n\t */\n\t\n\t(function () {\n\t 'use strict';\n\t\n\t var LIGHTBOX = 'mdlext-lightbox';\n\t var LIGHTBOX_SLIDER = 'mdlext-lightbox__slider';\n\t var LIGHTBOX_SLIDER_SLIDE = 'mdlext-lightbox__slider__slide';\n\t var STICKY_FOOTER = 'mdlext-lightbox--sticky-footer';\n\t var BUTTON = 'mdl-button';\n\t\n\t /**\n\t * https://github.com/google/material-design-lite/issues/4205\n\t * @constructor\n\t * @param {Element} element The element that will be upgraded.\n\t */\n\t var MaterialExtLightbox = function MaterialExtLightbox(element) {\n\t // Stores the element.\n\t this.element_ = element;\n\t\n\t // Initialize instance.\n\t this.init();\n\t };\n\t window['MaterialExtLightbox'] = MaterialExtLightbox;\n\t\n\t /**\n\t * Handle keypress\n\t * @param event\n\t * @private\n\t */\n\t MaterialExtLightbox.prototype.keyDownHandler_ = function (event) {\n\t\n\t if (event) {\n\t if (event.keyCode === _constants.VK_ESC || event.keyCode === _constants.VK_SPACE || event.keyCode === _constants.VK_END || event.keyCode === _constants.VK_HOME || event.keyCode === _constants.VK_ARROW_UP || event.keyCode === _constants.VK_ARROW_LEFT || event.keyCode === _constants.VK_ARROW_DOWN || event.keyCode === _constants.VK_ARROW_RIGHT) {\n\t\n\t if (event.keyCode !== _constants.VK_ESC) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\t }\n\t\n\t var action = 'first';\n\t if (event.keyCode === _constants.VK_END) {\n\t action = 'last';\n\t } else if (event.keyCode === _constants.VK_ARROW_UP || event.keyCode === _constants.VK_ARROW_LEFT) {\n\t action = 'prev';\n\t } else if (event.keyCode === _constants.VK_ARROW_DOWN || event.keyCode === _constants.VK_ARROW_RIGHT) {\n\t action = 'next';\n\t } else if (event.keyCode === _constants.VK_SPACE) {\n\t action = 'select';\n\t } else if (event.keyCode === _constants.VK_ESC) {\n\t action = 'cancel';\n\t }\n\t\n\t dispatchAction_(action, this);\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * Handle button clicks\n\t * @param event\n\t * @private\n\t */\n\t MaterialExtLightbox.prototype.buttonClickHandler_ = function (event) {\n\t\n\t if (event) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\t\n\t dispatchAction_(this.getAttribute('data-action') || '', this);\n\t\n\t var n = this.closest('.' + LIGHTBOX);\n\t if (n) {\n\t n.focus();\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * Dispatches an action custom event\n\t * @param action\n\t * @param source\n\t * @param target\n\t * @private\n\t */\n\t var dispatchAction_ = function dispatchAction_(action, source) {\n\t var target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : source;\n\t\n\t\n\t target.dispatchEvent(new CustomEvent('action', {\n\t bubbles: true,\n\t cancelable: true,\n\t detail: {\n\t action: action || '',\n\t source: source\n\t }\n\t }));\n\t };\n\t\n\t /**\n\t * Reposition dialog if component parent element is \"DIALOG\"\n\t * @param lightboxElement\n\t * @private\n\t */\n\t var repositionDialog_ = function repositionDialog_(lightboxElement) {\n\t var footerHeight = function footerHeight(footer, isSticky) {\n\t return isSticky && footer ? footer.offsetHeight : 0;\n\t };\n\t\n\t var reposition = function reposition(dialog, fh) {\n\t if (window.getComputedStyle(dialog).position === 'absolute') {\n\t var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n\t var topValue = scrollTop + (window.innerHeight - dialog.offsetHeight - fh) / 2;\n\t dialog.style.top = Math.max(scrollTop, topValue) + 'px';\n\t }\n\t };\n\t\n\t var p = lightboxElement.parentNode;\n\t var dialog = p && p.nodeName === 'DIALOG' ? p : null;\n\t\n\t if (dialog && dialog.hasAttribute('open')) {\n\t lightboxElement.style.width = 'auto';\n\t lightboxElement.style.maxWidth = '100%';\n\t var img = lightboxElement.querySelector('img');\n\t if (img) {\n\t lightboxElement.style.maxWidth = img.naturalWidth !== undefined ? img.naturalWidth + 'px' : img.width + 'px' || '100%';\n\t }\n\t\n\t var fh = footerHeight(lightboxElement.querySelector('footer'), lightboxElement.classList.contains(STICKY_FOOTER));\n\t var vh = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - fh;\n\t if (dialog.offsetHeight > vh) {\n\t var n = 0;\n\t while (dialog.offsetHeight > vh && ++n < 4) {\n\t lightboxElement.style.width = lightboxElement.offsetWidth * vh / lightboxElement.offsetHeight + 'px';\n\t }\n\t }\n\t reposition(dialog, fh);\n\t }\n\t };\n\t\n\t /**\n\t * Handle image load\n\t * @param event\n\t * @private\n\t */\n\t\n\t MaterialExtLightbox.prototype.imgLoadHandler_ = function () /*event*/{\n\t repositionDialog_(this);\n\t };\n\t\n\t /**\n\t * Handle image drag\n\t * @param event\n\t * @private\n\t */\n\t MaterialExtLightbox.prototype.imgDragHandler_ = function (event) {\n\t\n\t var setStyles = function setStyles(element, properties) {\n\t //noinspection JSAnnotator\n\t var _iteratorNormalCompletion = true;\n\t var _didIteratorError = false;\n\t var _iteratorError = undefined;\n\t\n\t try {\n\t for (var _iterator = (0, _getIterator3.default)((0, _entries2.default)(properties)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t var _step$value = (0, _slicedToArray3.default)(_step.value, 2),\n\t key = _step$value[0],\n\t value = _step$value[1];\n\t\n\t element.style[key] = value;\n\t }\n\t // ... or:\n\t //for (const key in properties) {\n\t // element.style[key] = properties[key];\n\t //}\n\t } catch (err) {\n\t _didIteratorError = true;\n\t _iteratorError = err;\n\t } finally {\n\t try {\n\t if (!_iteratorNormalCompletion && _iterator.return) {\n\t _iterator.return();\n\t }\n\t } finally {\n\t if (_didIteratorError) {\n\t throw _iteratorError;\n\t }\n\t }\n\t }\n\t };\n\t\n\t event.preventDefault();\n\t //event.stopPropagation();\n\t\n\t var x = event.clientX || (event.touches !== undefined ? event.touches[0].clientX : 0);\n\t\n\t var img = this;\n\t img.style.opacity = '0.2';\n\t\n\t var slider = document.createElement('div');\n\t slider.classList.add(LIGHTBOX_SLIDER);\n\t setStyles(slider, { 'width': img.offsetWidth + 'px', 'height': img.offsetHeight + 'px' });\n\t\n\t var slide = document.createElement('div');\n\t slide.classList.add(LIGHTBOX_SLIDER_SLIDE);\n\t slide.textContent = '>';\n\t setStyles(slide, {\n\t 'width': img.offsetWidth + 'px',\n\t 'height': img.offsetHeight + 'px',\n\t 'line-height': img.offsetHeight + 'px',\n\t 'font-size': img.offsetHeight / 4 + 'px',\n\t 'text-align': 'right',\n\t 'background-image': 'url(\"' + (img.getAttribute('data-img-url-prev') || '') + '\")'\n\t });\n\t slider.appendChild(slide);\n\t\n\t slide = document.createElement('div');\n\t slide.classList.add(LIGHTBOX_SLIDER_SLIDE);\n\t setStyles(slide, {\n\t 'width': img.offsetWidth + 'px',\n\t 'height': img.offsetHeight + 'px',\n\t 'background-image': 'url(\"' + img.src + '\")'\n\t });\n\t slider.appendChild(slide);\n\t\n\t slide = document.createElement('div');\n\t slide.classList.add(LIGHTBOX_SLIDER_SLIDE);\n\t slide.textContent = '<';\n\t setStyles(slide, {\n\t 'width': img.offsetWidth + 'px',\n\t 'height': img.offsetHeight + 'px',\n\t 'line-height': img.offsetHeight + 'px',\n\t 'font-size': img.offsetHeight / 4 + 'px',\n\t 'text-align': 'left',\n\t 'background-image': 'url(\"' + (img.getAttribute('data-img-url-next') || '') + '\")'\n\t });\n\t slider.appendChild(slide);\n\t\n\t img.parentNode.appendChild(slider);\n\t\n\t // drag handler\n\t var drag = function drag(e) {\n\t e.preventDefault();\n\t var dx = (e.clientX || (e.touches !== undefined ? e.touches[0].clientX : 0)) - x; // TODO: maybe rewrite to improve performance\n\t\n\t if (slider.offsetWidth - Math.abs(dx) > 19) {\n\t slider.style.left = dx + 'px';\n\t }\n\t };\n\t\n\t // end drag handler\n\t var endDrag = function endDrag(e) {\n\t e.preventDefault();\n\t //e.stopPropagation();\n\t\n\t window.removeEventListener('mousemove', drag);\n\t window.removeEventListener('touchmove', drag);\n\t window.removeEventListener('mouseup', endDrag);\n\t window.removeEventListener('touchend', endDrag);\n\t\n\t var dx = slider.offsetLeft;\n\t img.parentNode.removeChild(slider);\n\t img.style.opacity = '1.0';\n\t\n\t if (Math.abs(dx) > 19) {\n\t dispatchAction_(dx > 0 ? 'prev' : 'next', img);\n\t }\n\t };\n\t\n\t window.addEventListener('mousemove', drag);\n\t window.addEventListener('touchmove', drag);\n\t window.addEventListener('mouseup', endDrag);\n\t window.addEventListener('touchend', endDrag);\n\t };\n\t\n\t /**\n\t * Initialize component\n\t */\n\t MaterialExtLightbox.prototype.init = function () {\n\t var _this = this;\n\t\n\t if (this.element_) {\n\t // Do the init required for this component to work\n\t this.element_.addEventListener('keydown', this.keyDownHandler_.bind(this.element_), true);\n\t\n\t if (!(0, _isInteger2.default)(this.element_.getAttribute('tabindex'))) {\n\t this.element_.setAttribute('tabindex', 1);\n\t }\n\t\n\t [].concat((0, _toConsumableArray3.default)(this.element_.querySelectorAll('.' + BUTTON))).forEach(function (button) {\n\t return button.addEventListener('click', _this.buttonClickHandler_.bind(button), false);\n\t });\n\t\n\t var figcaption = this.element_.querySelector('figcaption');\n\t if (figcaption) {\n\t figcaption.addEventListener('click', this.buttonClickHandler_.bind(figcaption), false);\n\t }\n\t\n\t var footer = this.element_.querySelector('footer');\n\t if (footer) {\n\t footer.addEventListener('click', this.buttonClickHandler_.bind(footer), false);\n\t }\n\t\n\t var img = this.element_.querySelector('img');\n\t if (img) {\n\t img.addEventListener('load', this.imgLoadHandler_.bind(this.element_), false);\n\t img.addEventListener('click', function (e) {\n\t return e.preventDefault();\n\t }, true);\n\t img.addEventListener('mousedown', this.imgDragHandler_.bind(img), true);\n\t img.addEventListener('touchstart', this.imgDragHandler_.bind(img), true);\n\t }\n\t window.addEventListener('resize', (0, _fullThrottle2.default)(function () {\n\t return repositionDialog_(_this.element_);\n\t }));\n\t window.addEventListener('orientationchange', function () {\n\t return repositionDialog_(_this.element_);\n\t });\n\t\n\t // Set upgraded flag\n\t this.element_.classList.add(_constants.IS_UPGRADED);\n\t }\n\t };\n\t\n\t /*\n\t * Downgrade component\n\t * E.g remove listeners and clean up resources\n\t *\n\t * Nothing to downgrade\n\t *\n\t MaterialExtLightbox.prototype.mdlDowngrade_ = function() {\n\t };\n\t */\n\t\n\t /**\n\t * The component registers itself. It can assume componentHandler is available in the global scope.\n\t */\n\t /* jshint undef:false */\n\t componentHandler.register({\n\t constructor: MaterialExtLightbox,\n\t classAsString: 'MaterialExtLightbox',\n\t cssClass: 'mdlext-js-lightbox'\n\t });\n\t})();\n\n/***/ },\n/* 56 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _classCallCheck2 = __webpack_require__(22);\n\t\n\tvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\t\n\tvar _createClass2 = __webpack_require__(23);\n\t\n\tvar _createClass3 = _interopRequireDefault(_createClass2);\n\t\n\tvar _toConsumableArray2 = __webpack_require__(8);\n\t\n\tvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\t\n\tvar _stringUtils = __webpack_require__(15);\n\t\n\tvar _fullThrottle = __webpack_require__(13);\n\t\n\tvar _fullThrottle2 = _interopRequireDefault(_fullThrottle);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tvar _domUtils = __webpack_require__(21);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/**\n\t * @license\n\t * Copyright 2016 Leif Olsen. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t *\n\t * This code is built with Google Material Design Lite,\n\t * which is Licensed under the Apache License, Version 2.0\n\t */\n\t\n\t/**\n\t * A menu button is a button that opens a menu. It is often styled as a\n\t * typical push button with a downward pointing arrow or triangle to hint\n\t * that activating the button will display a menu.\n\t */\n\tvar JS_MENU_BUTTON = 'mdlext-js-menu-button';\n\tvar MENU_BUTTON_MENU = 'mdlext-menu';\n\tvar MENU_BUTTON_MENU_ITEM = 'mdlext-menu__item';\n\tvar MENU_BUTTON_MENU_ITEM_SEPARATOR = 'mdlext-menu__item-separator';\n\t//const MDL_LAYOUT_CONTENT = 'mdl-layout__content';\n\t\n\t/**\n\t * Creates the menu controlled by the menu button\n\t * @param element\n\t * @return {{element: Element, selected: Element, open: (function(*=)), removeListeners: (function()), downgrade: (function())}}\n\t */\n\t\n\tvar menuFactory = function menuFactory(element) {\n\t\n\t var ariaControls = null;\n\t var parentNode = null;\n\t\n\t var removeAllSelected = function removeAllSelected() {\n\t [].concat((0, _toConsumableArray3.default)(element.querySelectorAll('.' + MENU_BUTTON_MENU_ITEM + '[aria-selected=\"true\"]'))).forEach(function (selectedItem) {\n\t return selectedItem.removeAttribute('aria-selected');\n\t });\n\t };\n\t\n\t var setSelected = function setSelected(item) {\n\t var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\n\t if (force || item && !item.hasAttribute('aria-selected')) {\n\t removeAllSelected();\n\t if (item) {\n\t item.setAttribute('aria-selected', 'true');\n\t }\n\t }\n\t };\n\t\n\t var getSelected = function getSelected() {\n\t return element.querySelector('.' + MENU_BUTTON_MENU_ITEM + '[aria-selected=\"true\"]');\n\t };\n\t\n\t var isDisabled = function isDisabled(item) {\n\t return item && item.hasAttribute('disabled');\n\t };\n\t\n\t var isSeparator = function isSeparator(item) {\n\t return item && item.classList.contains(MENU_BUTTON_MENU_ITEM_SEPARATOR);\n\t };\n\t\n\t var focus = function focus(item) {\n\t if (item) {\n\t item = item.closest('.' + MENU_BUTTON_MENU_ITEM);\n\t }\n\t if (item) {\n\t item.focus();\n\t }\n\t };\n\t\n\t var nextItem = function nextItem(current) {\n\t var n = current.nextElementSibling;\n\t if (!n) {\n\t n = element.firstElementChild;\n\t }\n\t if (!isDisabled(n) && !isSeparator(n)) {\n\t focus(n);\n\t } else {\n\t var i = element.children.length;\n\t while (n && i-- > 0) {\n\t if (isDisabled(n) || isSeparator(n)) {\n\t n = n.nextElementSibling;\n\t if (!n) {\n\t n = element.firstElementChild;\n\t }\n\t } else {\n\t focus(n);\n\t break;\n\t }\n\t }\n\t }\n\t };\n\t\n\t var previousItem = function previousItem(current) {\n\t var p = current.previousElementSibling;\n\t if (!p) {\n\t p = element.lastElementChild;\n\t }\n\t if (!isDisabled(p) && !isSeparator(p)) {\n\t focus(p);\n\t } else {\n\t var i = element.children.length;\n\t while (p && i-- > 0) {\n\t if (isDisabled(p) || isSeparator(p)) {\n\t p = p.previousElementSibling;\n\t if (!p) {\n\t p = element.lastElementChild;\n\t }\n\t } else {\n\t focus(p);\n\t break;\n\t }\n\t }\n\t }\n\t };\n\t\n\t var firstItem = function firstItem() {\n\t var item = element.firstElementChild;\n\t if (isDisabled(item) || isSeparator(item)) {\n\t nextItem(item);\n\t } else {\n\t focus(item);\n\t }\n\t };\n\t\n\t var lastItem = function lastItem() {\n\t var item = element.lastElementChild;\n\t if (isDisabled(item) || isSeparator(item)) {\n\t previousItem(item);\n\t } else {\n\t focus(item);\n\t }\n\t };\n\t\n\t var selectItem = function selectItem(item) {\n\t if (item && !isDisabled(item) && !isSeparator(item)) {\n\t setSelected(item);\n\t close(true, item);\n\t }\n\t };\n\t\n\t var keyDownHandler = function keyDownHandler(event) {\n\t\n\t var item = event.target.closest('.' + MENU_BUTTON_MENU_ITEM);\n\t\n\t switch (event.keyCode) {\n\t case _constants.VK_ARROW_UP:\n\t case _constants.VK_ARROW_LEFT:\n\t if (item) {\n\t previousItem(item);\n\t } else {\n\t firstItem();\n\t }\n\t break;\n\t\n\t case _constants.VK_ARROW_DOWN:\n\t case _constants.VK_ARROW_RIGHT:\n\t if (item) {\n\t nextItem(item);\n\t } else {\n\t lastItem();\n\t }\n\t break;\n\t\n\t case _constants.VK_HOME:\n\t firstItem();\n\t break;\n\t\n\t case _constants.VK_END:\n\t lastItem();\n\t break;\n\t\n\t case _constants.VK_SPACE:\n\t case _constants.VK_ENTER:\n\t selectItem(item);\n\t break;\n\t\n\t case _constants.VK_ESC:\n\t close(true);\n\t break;\n\t\n\t case _constants.VK_TAB:\n\t // We do not have a \"natural\" tab order from menu, so the best we can do is to set focus back to the button\n\t close(true);\n\t break;\n\t\n\t default:\n\t return;\n\t }\n\t event.preventDefault();\n\t };\n\t\n\t var blurHandler = function blurHandler(event) {\n\t\n\t // See: https://github.com/facebook/react/issues/2011\n\t var t = event.relatedTarget || event.explicitOriginalTarget || // FF\n\t document.activeElement; // IE11\n\t\n\t //console.log('***** blur, target, relatedTarget', event.target, t);\n\t\n\t try {\n\t if (t) {\n\t if (t.closest('.' + MENU_BUTTON_MENU) !== element && shouldClose(t)) {\n\t close();\n\t }\n\t } else {\n\t close();\n\t }\n\t } catch (err) {\n\t // FF throws error: \"TypeError: n.closest is not a function\" if related target is a text node\n\t close();\n\t }\n\t };\n\t\n\t var clickHandler = function clickHandler(event) {\n\t //console.log('***** click, target', event.target);\n\t\n\t event.preventDefault();\n\t var t = event.target;\n\t if (t && t.closest('.' + MENU_BUTTON_MENU) === element) {\n\t var item = t.closest('.' + MENU_BUTTON_MENU_ITEM);\n\t if (item) {\n\t selectItem(item);\n\t }\n\t } else {\n\t if (shouldClose(t)) {\n\t close();\n\t }\n\t }\n\t };\n\t\n\t var touchStartHandler = function touchStartHandler(event) {\n\t //console.log('***** touchStart, target', event.target);\n\t\n\t var t = event.target;\n\t if (!(t && t.closest('.' + MENU_BUTTON_MENU) === element)) {\n\t if (event.type === 'touchstart') {\n\t event.preventDefault();\n\t }\n\t close();\n\t }\n\t };\n\t\n\t var addListeners = function addListeners() {\n\t element.addEventListener('keydown', keyDownHandler, false);\n\t element.addEventListener('blur', blurHandler, true);\n\t element.addEventListener('click', clickHandler, true);\n\t document.documentElement.addEventListener('touchstart', touchStartHandler, true);\n\t };\n\t\n\t var _removeListeners = function _removeListeners() {\n\t element.removeEventListener('keydown', keyDownHandler, false);\n\t element.removeEventListener('blur', blurHandler, true);\n\t element.removeEventListener('click', clickHandler, true);\n\t document.documentElement.removeEventListener('touchstart', touchStartHandler, true);\n\t };\n\t\n\t var _open = function _open(controlElement) {\n\t var position = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'first';\n\t\n\t\n\t ariaControls = controlElement.closest('.' + JS_MENU_BUTTON);\n\t\n\t element.style['min-width'] = Math.max(124, controlElement.getBoundingClientRect().width) + 'px';\n\t element.removeAttribute('hidden');\n\t (0, _domUtils.tether)(controlElement, element);\n\t\n\t var item = void 0;\n\t switch (position.toLowerCase()) {\n\t case 'first':\n\t firstItem();\n\t break;\n\t\n\t case 'last':\n\t lastItem();\n\t break;\n\t\n\t case 'selected':\n\t item = getSelected();\n\t if (item && !item.hasAttribute('disabled')) {\n\t focus(item);\n\t } else {\n\t firstItem();\n\t }\n\t break;\n\t }\n\t\n\t addListeners();\n\t };\n\t\n\t var shouldClose = function shouldClose(target) {\n\t //console.log('***** shouldClose');\n\t\n\t var result = false;\n\t var btn = target && target.closest('.' + JS_MENU_BUTTON) || null;\n\t if (!btn) {\n\t result = true;\n\t } else if (btn.getAttribute('aria-controls') === element.id) {\n\t if (btn !== ariaControls) {\n\t result = true;\n\t }\n\t } else {\n\t result = true;\n\t }\n\t return result;\n\t };\n\t\n\t var close = function close() {\n\t var forceFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t var item = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\t\n\t _removeListeners();\n\t\n\t element.dispatchEvent(new CustomEvent('_closemenu', {\n\t bubbles: true,\n\t cancelable: true,\n\t detail: { forceFocus: forceFocus, item: item }\n\t }));\n\t };\n\t\n\t var addWaiAria = function addWaiAria() {\n\t if (!element.hasAttribute('id')) {\n\t // Generate a random id\n\t element.id = 'menu-button-' + (0, _stringUtils.randomString)();\n\t }\n\t element.setAttribute('tabindex', '-1');\n\t element.setAttribute('role', 'menu');\n\t element.setAttribute('hidden', '');\n\t\n\t [].concat((0, _toConsumableArray3.default)(element.querySelectorAll('.' + MENU_BUTTON_MENU_ITEM))).forEach(function (menuitem) {\n\t menuitem.setAttribute('tabindex', '-1');\n\t menuitem.setAttribute('role', 'menuitem');\n\t });\n\t\n\t [].concat((0, _toConsumableArray3.default)(element.querySelectorAll('.' + MENU_BUTTON_MENU_ITEM_SEPARATOR))).forEach(function (menuitem) {\n\t menuitem.setAttribute('role', 'separator');\n\t });\n\t };\n\t\n\t var init = function init() {\n\t addWaiAria();\n\t parentNode = element.parentNode;\n\t element.classList.add('is-upgraded');\n\t };\n\t\n\t var _downgrade = function _downgrade() {\n\t _removeListeners();\n\t if (element.parentNode !== parentNode) {\n\t parentNode.appendChild(element);\n\t }\n\t element.classList.remove('is-upgraded');\n\t };\n\t\n\t init();\n\t\n\t return {\n\t /**\n\t * Get the menu element\n\t * @returns {Element} the menu element\n\t */\n\t get element() {\n\t return element;\n\t },\n\t\n\t /**\n\t * Set selected menu item\n\t * @param item\n\t */\n\t set selected(item) {\n\t setSelected(item, true);\n\t },\n\t\n\t /**\n\t * Open menu\n\t * @param {Element} controlElement the element where the menu should be aligned to\n\t * @param {String} position menuElement item to receive focus after menu element is opened\n\t */\n\t open: function open(controlElement) {\n\t var position = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'first';\n\t return _open(controlElement, position);\n\t },\n\t\n\t /**\n\t * Remove event listeners.\n\t */\n\t removeListeners: function removeListeners() {\n\t return _removeListeners();\n\t },\n\t\n\t /**\n\t * Downgrade menu\n\t */\n\t downgrade: function downgrade() {\n\t return _downgrade();\n\t }\n\t };\n\t};\n\t\n\t/**\n\t * The menubutton component\n\t */\n\t\n\tvar MenuButton = function () {\n\t function MenuButton(element) {\n\t var _this = this;\n\t\n\t (0, _classCallCheck3.default)(this, MenuButton);\n\t\n\t this.keyDownHandler = function (event) {\n\t if (!_this.isDisabled()) {\n\t switch (event.keyCode) {\n\t case _constants.VK_ARROW_UP:\n\t _this.openMenu('last');\n\t break;\n\t\n\t case _constants.VK_ARROW_DOWN:\n\t _this.openMenu();\n\t break;\n\t\n\t case _constants.VK_SPACE:\n\t case _constants.VK_ENTER:\n\t _this.openMenu('selected');\n\t break;\n\t\n\t case _constants.VK_ESC:\n\t _this.closeMenu();\n\t break;\n\t\n\t case _constants.VK_TAB:\n\t _this.closeMenu();\n\t return;\n\t\n\t default:\n\t return;\n\t }\n\t }\n\t //event.stopPropagation();\n\t event.preventDefault();\n\t };\n\t\n\t this.clickHandler = function () {\n\t if (!_this.isDisabled()) {\n\t if (_this.element.getAttribute('aria-expanded').toLowerCase() === 'true') {\n\t _this.closeMenu(true);\n\t } else {\n\t _this.openMenu('selected');\n\t }\n\t }\n\t };\n\t\n\t this.recalcMenuPosition = (0, _fullThrottle2.default)(function () {\n\t var c = _this.focusElement.getBoundingClientRect();\n\t var dx = _this.focusElementLastScrollPosition.left - c.left;\n\t var dy = _this.focusElementLastScrollPosition.top - c.top;\n\t var left = (parseFloat(_this.menu.element.style.left) || 0) - dx;\n\t var top = (parseFloat(_this.menu.element.style.top) || 0) - dy;\n\t\n\t _this.menu.element.style.left = left + 'px';\n\t _this.menu.element.style.top = top + 'px';\n\t _this.focusElementLastScrollPosition = c;\n\t });\n\t\n\t this.positionChangeHandler = function () {\n\t _this.recalcMenuPosition(_this);\n\t };\n\t\n\t this.closeMenuHandler = function (event) {\n\t if (event && event.detail) {\n\t if (event.detail.item && event.detail.item !== _this.selectedItem) {\n\t _this.selectedItem = event.detail.item;\n\t _this.dispatchMenuSelect();\n\t }\n\t _this.closeMenu(event.detail.forceFocus);\n\t }\n\t };\n\t\n\t this.element = element;\n\t this.focusElement = undefined;\n\t this.focusElementLastScrollPosition = undefined;\n\t this.scrollElements = [];\n\t this.menu = undefined;\n\t this.selectedItem = null;\n\t this.init();\n\t }\n\t\n\t /**\n\t * Re-position menu if content is scrolled, window is resized or orientation change\n\t * @see https://javascriptweblog.wordpress.com/2015/11/02/of-classes-and-arrow-functions-a-cautionary-tale/\n\t */\n\t\n\t\n\t (0, _createClass3.default)(MenuButton, [{\n\t key: 'dispatchMenuSelect',\n\t value: function dispatchMenuSelect() {\n\t this.element.dispatchEvent(new CustomEvent('menuselect', {\n\t bubbles: true,\n\t cancelable: true,\n\t detail: { source: this.selectedItem }\n\t }));\n\t }\n\t }, {\n\t key: 'isDisabled',\n\t value: function isDisabled() {\n\t return this.element.hasAttribute('disabled');\n\t }\n\t }, {\n\t key: 'removeListeners',\n\t value: function removeListeners() {\n\t this.element.removeEventListener('keydown', this.keyDownHandler);\n\t this.element.removeEventListener('click', this.clickHandler);\n\t }\n\t }, {\n\t key: 'openMenu',\n\t value: function openMenu() {\n\t var _this2 = this;\n\t\n\t var position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n\t\n\t\n\t if (!this.isDisabled() && this.menu) {\n\t\n\t // Close the menu if button position change\n\t this.scrollElements = (0, _domUtils.getScrollParents)(this.element);\n\t this.scrollElements.forEach(function (el) {\n\t return el.addEventListener('scroll', _this2.positionChangeHandler);\n\t });\n\t\n\t window.addEventListener('resize', this.positionChangeHandler);\n\t window.addEventListener('orientationchange', this.positionChangeHandler);\n\t this.menu.element.addEventListener('_closemenu', this.closeMenuHandler);\n\t\n\t this.menu.selected = this.selectedItem;\n\t this.menu.open(this.focusElement, position);\n\t this.element.setAttribute('aria-expanded', 'true');\n\t\n\t this.focusElementLastScrollPosition = this.focusElement.getBoundingClientRect();\n\t }\n\t }\n\t }, {\n\t key: 'closeMenu',\n\t value: function closeMenu() {\n\t var _this3 = this;\n\t\n\t var forceFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t\n\t if (this.menu) {\n\t this.menu.removeListeners();\n\t this.scrollElements.forEach(function (el) {\n\t return el.removeEventListener('scroll', _this3.positionChangeHandler);\n\t });\n\t window.removeEventListener('resize', this.positionChangeHandler);\n\t window.removeEventListener('orientationchange', this.positionChangeHandler);\n\t this.menu.element.removeEventListener('_closemenu', this.closeMenuHandler);\n\t\n\t if (forceFocus) {\n\t this.focus();\n\t }\n\t this.element.setAttribute('aria-expanded', 'false');\n\t this.menu.element.setAttribute('hidden', '');\n\t }\n\t }\n\t }, {\n\t key: 'focus',\n\t value: function focus() {\n\t if (!this.isDisabled()) {\n\t this.focusElement.focus();\n\t }\n\t }\n\t }, {\n\t key: 'init',\n\t value: function init() {\n\t var _this4 = this;\n\t\n\t var addListeners = function addListeners() {\n\t _this4.element.addEventListener('keydown', _this4.keyDownHandler);\n\t _this4.element.addEventListener('click', _this4.clickHandler);\n\t };\n\t\n\t var addWaiAria = function addWaiAria() {\n\t _this4.element.setAttribute('role', 'button');\n\t _this4.element.setAttribute('aria-expanded', 'false');\n\t _this4.element.setAttribute('aria-haspopup', 'true');\n\t };\n\t\n\t var addFocusElement = function addFocusElement() {\n\t _this4.focusElement = _this4.element.querySelector('input[type=\"text\"]');\n\t if (!_this4.focusElement) {\n\t _this4.focusElement = _this4.element;\n\t\n\t if (!(_this4.focusElement.tagName.toLowerCase() === 'button' || _this4.focusElement.tagName.toLowerCase() === 'input')) {\n\t if (!_this4.focusElement.hasAttribute('tabindex')) {\n\t _this4.focusElement.setAttribute('tabindex', '0');\n\t }\n\t }\n\t }\n\t };\n\t\n\t var moveElementToDocumentBody = function moveElementToDocumentBody(element) {\n\t // To position an element on top of all other z-indexed elements, the element should be moved to document.body\n\t // See: https://philipwalton.com/articles/what-no-one-told-you-about-z-index/\n\t\n\t if (element.parentNode !== document.body) {\n\t return document.body.appendChild(element);\n\t }\n\t return element;\n\t };\n\t\n\t var findMenuElement = function findMenuElement() {\n\t var menuElement = void 0;\n\t var menuElementId = _this4.element.getAttribute('aria-controls');\n\t if (menuElementId !== null) {\n\t menuElement = document.querySelector('#' + menuElementId);\n\t } else {\n\t menuElement = _this4.element.parentNode.querySelector('.' + MENU_BUTTON_MENU);\n\t }\n\t return menuElement;\n\t };\n\t\n\t var addMenu = function addMenu() {\n\t var menuElement = findMenuElement();\n\t if (menuElement) {\n\t if (menuElement.componentInstance) {\n\t _this4.menu = menuElement.componentInstance;\n\t } else {\n\t _this4.menu = menuFactory(menuElement);\n\t menuElement.componentInstance = _this4.menu;\n\t moveElementToDocumentBody(menuElement);\n\t }\n\t _this4.element.setAttribute('aria-controls', _this4.menu.element.id);\n\t }\n\t };\n\t\n\t addFocusElement();\n\t addWaiAria();\n\t addMenu();\n\t this.removeListeners();\n\t addListeners();\n\t }\n\t }, {\n\t key: 'downgrade',\n\t value: function downgrade() {\n\t var _this5 = this;\n\t\n\t if (this.menu) {\n\t // Do not downgrade menu if there are other buttons sharing this menu\n\t var related = [].concat((0, _toConsumableArray3.default)(document.querySelectorAll('.' + JS_MENU_BUTTON + '[aria-controls=\"' + this.element.getAttribute('aria-controls') + '\"]')));\n\t if (related.filter(function (c) {\n\t return c !== _this5.element && c.getAttribute('data-upgraded').indexOf('MaterialExtMenuButton') >= 0;\n\t }).length === 0) {\n\t this.menu.downgrade();\n\t }\n\t }\n\t this.removeListeners();\n\t }\n\t }]);\n\t return MenuButton;\n\t}();\n\t\n\t(function () {\n\t 'use strict';\n\t\n\t /**\n\t * https://github.com/google/material-design-lite/issues/4205\n\t * @constructor\n\t * @param {Element} element The element that will be upgraded.\n\t */\n\t\n\t var MaterialExtMenuButton = function MaterialExtMenuButton(element) {\n\t this.element_ = element;\n\t this.menuButton_ = null;\n\t\n\t // Initialize instance.\n\t this.init();\n\t };\n\t window['MaterialExtMenuButton'] = MaterialExtMenuButton;\n\t\n\t // Public methods.\n\t\n\t /**\n\t * Get the menu element controlled by this button, null if no menu is controlled by this button\n\t * @public\n\t */\n\t MaterialExtMenuButton.prototype.getMenuElement = function () {\n\t return this.menuButton_.menu ? this.menuButton_.menu.element : null;\n\t };\n\t MaterialExtMenuButton.prototype['getMenuElement'] = MaterialExtMenuButton.prototype.getMenuElement;\n\t\n\t /**\n\t * Open menu\n\t * @public\n\t * @param {String} position one of \"first\", \"last\" or \"selected\"\n\t */\n\t MaterialExtMenuButton.prototype.openMenu = function (position) {\n\t this.menuButton_.openMenu(position);\n\t };\n\t MaterialExtMenuButton.prototype['openMenu'] = MaterialExtMenuButton.prototype.openMenu;\n\t\n\t /**\n\t * Close menu\n\t * @public\n\t */\n\t MaterialExtMenuButton.prototype.closeMenu = function () {\n\t this.menuButton_.closeMenu(true);\n\t };\n\t MaterialExtMenuButton.prototype['closeMenu'] = MaterialExtMenuButton.prototype.closeMenu;\n\t\n\t /**\n\t * Get selected menu item\n\t * @public\n\t * @returns {Element} The selected menu item or null if no item selected\n\t */\n\t MaterialExtMenuButton.prototype.getSelectedMenuItem = function () {\n\t return this.menuButton_.selectedItem;\n\t };\n\t MaterialExtMenuButton.prototype['getSelectedMenuItem'] = MaterialExtMenuButton.prototype.getSelectedMenuItem;\n\t\n\t /**\n\t * Set (default) selected menu item\n\t * @param {Element} item\n\t */\n\t MaterialExtMenuButton.prototype.setSelectedMenuItem = function (item) {\n\t this.menuButton_.selectedItem = item;\n\t };\n\t MaterialExtMenuButton.prototype['setSelectedMenuItem'] = MaterialExtMenuButton.prototype.setSelectedMenuItem;\n\t\n\t /**\n\t * Initialize component\n\t */\n\t MaterialExtMenuButton.prototype.init = function () {\n\t if (this.element_) {\n\t this.menuButton_ = new MenuButton(this.element_);\n\t this.element_.addEventListener('mdl-componentdowngraded', this.mdlDowngrade_.bind(this));\n\t this.element_.classList.add(_constants.IS_UPGRADED);\n\t }\n\t };\n\t\n\t /**\n\t * Downgrade component\n\t * E.g remove listeners and clean up resources\n\t */\n\t MaterialExtMenuButton.prototype.mdlDowngrade_ = function () {\n\t this.menuButton_.downgrade();\n\t };\n\t\n\t // The component registers itself. It can assume componentHandler is available\n\t // in the global scope.\n\t /* eslint no-undef: 0 */\n\t componentHandler.register({\n\t constructor: MaterialExtMenuButton,\n\t classAsString: 'MaterialExtMenuButton',\n\t cssClass: JS_MENU_BUTTON,\n\t widget: true\n\t });\n\t})();\n\n/***/ },\n/* 57 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _stringUtils = __webpack_require__(15);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\t/**\n\t * @license\n\t * Copyright 2016 Leif Olsen. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t *\n\t * This code is built with Google Material Design Lite,\n\t * which is Licensed under the Apache License, Version 2.0\n\t */\n\t\n\t/*\n\t * Copied/Modified from https://github.com/google/material-design-lite/tree/master/src/textfield\n\t */\n\t\n\t(function () {\n\t 'use strict';\n\t\n\t var LABEL = 'mdlext-selectfield__label';\n\t var INPUT = 'mdlext-selectfield__select';\n\t\n\t /**\n\t * Class constructor for Selectfield MDLEXT component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\t var MaterialExtSelectfield = function MaterialExtSelectfield(element) {\n\t this.element_ = element;\n\t this.init(); // Initialize instance.\n\t };\n\t\n\t window['MaterialExtSelectfield'] = MaterialExtSelectfield;\n\t\n\t /**\n\t * Handle focus.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\t /*eslint no-unused-vars: 0*/\n\t MaterialExtSelectfield.prototype.onFocus_ = function () /*event*/{\n\t this.element_.classList.add(_constants.IS_FOCUSED);\n\t };\n\t\n\t /**\n\t * Handle lost focus.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\t /*eslint no-unused-vars: 0*/\n\t MaterialExtSelectfield.prototype.onBlur_ = function () /*event*/{\n\t this.element_.classList.remove(_constants.IS_FOCUSED);\n\t };\n\t\n\t /**\n\t * Handle reset event from out side.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\t MaterialExtSelectfield.prototype.onReset_ = function () /*event*/{\n\t this.updateClasses_();\n\t };\n\t\n\t /**\n\t * Handle class updates.\n\t *\n\t * @private\n\t */\n\t MaterialExtSelectfield.prototype.updateClasses_ = function () {\n\t this.checkDisabled();\n\t this.checkValidity();\n\t this.checkDirty();\n\t this.checkFocus();\n\t };\n\t\n\t // Public methods.\n\t\n\t /**\n\t * Check the disabled state and update field accordingly.\n\t *\n\t * @public\n\t */\n\t MaterialExtSelectfield.prototype.checkDisabled = function () {\n\t if (this.select_.disabled) {\n\t this.element_.classList.add(_constants.IS_DISABLED);\n\t } else {\n\t this.element_.classList.remove(_constants.IS_DISABLED);\n\t }\n\t };\n\t MaterialExtSelectfield.prototype['checkDisabled'] = MaterialExtSelectfield.prototype.checkDisabled;\n\t\n\t /**\n\t * Check the focus state and update field accordingly.\n\t *\n\t * @public\n\t */\n\t MaterialExtSelectfield.prototype.checkFocus = function () {\n\t // Note: element.querySelector(':focus') always return null in JsDom, even if select element has focus\n\t /*eslint no-extra-boolean-cast: 0*/\n\t if (Boolean(this.element_.querySelector(':focus'))) {\n\t this.element_.classList.add(_constants.IS_FOCUSED);\n\t } else {\n\t this.element_.classList.remove(_constants.IS_FOCUSED);\n\t }\n\t };\n\t\n\t MaterialExtSelectfield.prototype['checkFocus'] = MaterialExtSelectfield.prototype.checkFocus;\n\t\n\t /**\n\t * Check the validity state and update field accordingly.\n\t *\n\t * @public\n\t */\n\t MaterialExtSelectfield.prototype.checkValidity = function () {\n\t\n\t /* Don't think it makes any sense to check validity.\n\t Tests I've done, so far, indicates that setting an illegal value via JS returns selectedIndex=0\n\t if (this.select_.validity) {\n\t if (this.select_.validity.valid) {\n\t this.element_.classList.remove(this.CssClasses_.IS_INVALID);\n\t } else {\n\t this.element_.classList.add(this.CssClasses_.IS_INVALID);\n\t }\n\t }\n\t */\n\t };\n\t\n\t MaterialExtSelectfield.prototype['checkValidity'] = MaterialExtSelectfield.prototype.checkValidity;\n\t\n\t /**\n\t * Check the dirty state and update field accordingly.\n\t *\n\t * @public\n\t */\n\t MaterialExtSelectfield.prototype.checkDirty = function () {\n\t if (this.select_.value && this.select_.value.length > 0) {\n\t this.element_.classList.add(_constants.IS_DIRTY);\n\t } else {\n\t this.element_.classList.remove(_constants.IS_DIRTY);\n\t }\n\t };\n\t\n\t MaterialExtSelectfield.prototype['checkDirty'] = MaterialExtSelectfield.prototype.checkDirty;\n\t\n\t /**\n\t * Disable select field.\n\t *\n\t * @public\n\t */\n\t MaterialExtSelectfield.prototype.disable = function () {\n\t this.select_.disabled = true;\n\t this.updateClasses_();\n\t };\n\t\n\t MaterialExtSelectfield.prototype['disable'] = MaterialExtSelectfield.prototype.disable;\n\t\n\t /**\n\t * Enable select field.\n\t *\n\t * @public\n\t */\n\t MaterialExtSelectfield.prototype.enable = function () {\n\t this.select_.disabled = false;\n\t this.updateClasses_();\n\t };\n\t\n\t MaterialExtSelectfield.prototype['enable'] = MaterialExtSelectfield.prototype.enable;\n\t\n\t /**\n\t * Update select field value.\n\t *\n\t * @param {string} value The value to which to set the control (optional).\n\t * @public\n\t */\n\t MaterialExtSelectfield.prototype.change = function (value) {\n\t this.select_.value = value || '';\n\t this.updateClasses_();\n\t };\n\t MaterialExtSelectfield.prototype['change'] = MaterialExtSelectfield.prototype.change;\n\t\n\t /**\n\t * Initialize element.\n\t */\n\t MaterialExtSelectfield.prototype.init = function () {\n\t if (this.element_) {\n\t this.label_ = this.element_.querySelector('.' + LABEL);\n\t this.select_ = this.element_.querySelector('.' + INPUT);\n\t\n\t if (this.select_) {\n\t // Remove listeners, just in case ...\n\t this.select_.removeEventListener('change', this.updateClasses_);\n\t this.select_.removeEventListener('focus', this.onFocus_);\n\t this.select_.removeEventListener('blur', this.onBlur_);\n\t this.select_.removeEventListener('reset', this.onReset_);\n\t\n\t this.select_.addEventListener('change', this.updateClasses_.bind(this));\n\t this.select_.addEventListener('focus', this.onFocus_.bind(this));\n\t this.select_.addEventListener('blur', this.onBlur_.bind(this));\n\t this.select_.addEventListener('reset', this.onReset_.bind(this));\n\t\n\t if (this.label_) {\n\t var id = void 0;\n\t if (!this.select_.hasAttribute('id')) {\n\t id = 'select-' + (0, _stringUtils.randomString)();\n\t this.select_.id = id;\n\t } else {\n\t id = this.select_.id;\n\t }\n\t\n\t if (!this.label_.hasAttribute('for')) {\n\t this.label_.setAttribute('for', id);\n\t }\n\t }\n\t\n\t var invalid = this.element_.classList.contains(_constants.IS_INVALID);\n\t this.updateClasses_();\n\t this.element_.classList.add(_constants.IS_UPGRADED);\n\t\n\t if (invalid) {\n\t this.element_.classList.add(_constants.IS_INVALID);\n\t }\n\t if (this.select_.hasAttribute('autofocus')) {\n\t this.element_.focus();\n\t this.checkFocus();\n\t }\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * Downgrade component\n\t * E.g remove listeners and clean up resources\n\t *\n\t * Nothing to downgrade\n\t *\n\t MaterialExtSelectfield.prototype.mdlDowngrade_ = function() {\n\t 'use strict';\n\t console.log('***** MaterialExtSelectfield.mdlDowngrade ');\n\t };\n\t */\n\t\n\t // The component registers itself. It can assume componentHandler is available\n\t // in the global scope.\n\t /*eslint no-undef: 0*/\n\t componentHandler.register({\n\t constructor: MaterialExtSelectfield,\n\t classAsString: 'MaterialExtSelectfield',\n\t cssClass: 'mdlext-js-selectfield',\n\t widget: true\n\t });\n\t})();\n\n/***/ },\n/* 58 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _fullThrottle = __webpack_require__(13);\n\t\n\tvar _fullThrottle2 = _interopRequireDefault(_fullThrottle);\n\t\n\tvar _jsonUtils = __webpack_require__(14);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t(function () {\n\t 'use strict';\n\t\n\t var MDL_LAYOUT_CONTENT = 'mdl-layout__content';\n\t var IS_SCROLL_CLASS = 'mdlext-is-scroll';\n\t\n\t /**\n\t * @constructor\n\t * @param {Element} element The element that will be upgraded.\n\t */\n\t var MaterialExtStickyHeader = function MaterialExtStickyHeader(element) {\n\t // Stores the element.\n\t this.header_ = element;\n\t\n\t // Heder listens to scroll events from content\n\t this.content_ = null;\n\t this.lastScrollTop_ = 0;\n\t\n\t // Default config\n\t this.config_ = {\n\t visibleAtScrollEnd: false\n\t };\n\t\n\t this.mutationObserver_ = null;\n\t\n\t this.drawing_ = false;\n\t\n\t // Initialize instance.\n\t this.init();\n\t };\n\t\n\t window['MaterialExtStickyHeader'] = MaterialExtStickyHeader;\n\t\n\t /**\n\t * Update header width\n\t * @private\n\t */\n\t MaterialExtStickyHeader.prototype.recalcWidth_ = function () {\n\t this.header_.style.width = this.content_.clientWidth + 'px';\n\t };\n\t\n\t var throttleResize = (0, _fullThrottle2.default)(function (self) {\n\t return self.recalcWidth_();\n\t });\n\t\n\t /**\n\t * Adjust header width when window resizes or oreientation changes\n\t * @param event\n\t * @private\n\t */\n\t MaterialExtStickyHeader.prototype.resizeHandler_ = function () /* event */{\n\t throttleResize(this);\n\t };\n\t\n\t /**\n\t * Update header position\n\t * @private\n\t */\n\t MaterialExtStickyHeader.prototype.reposition_ = function () {\n\t\n\t var currentContentScrollTop = this.content_.scrollTop;\n\t var scrollDiff = this.lastScrollTop_ - currentContentScrollTop;\n\t\n\t if (currentContentScrollTop <= 0) {\n\t // Scrolled to the top. Header sticks to the top\n\t this.header_.style.top = '0';\n\t this.header_.classList.remove(IS_SCROLL_CLASS);\n\t } else if (scrollDiff > 0) {\n\t\n\t if (scrollDiff >= this.header_.offsetHeight) {\n\t\n\t // Scrolled up. Header slides in\n\t var headerTop = parseInt(window.getComputedStyle(this.header_).getPropertyValue('top')) || 0;\n\t if (headerTop != 0) {\n\t this.header_.style.top = '0';\n\t this.header_.classList.add(IS_SCROLL_CLASS);\n\t }\n\t this.lastScrollTop_ = currentContentScrollTop;\n\t }\n\t return;\n\t } else if (scrollDiff < 0) {\n\t // Scrolled down\n\t this.header_.classList.add(IS_SCROLL_CLASS);\n\t var _headerTop = parseInt(window.getComputedStyle(this.header_).getPropertyValue('top')) || 0;\n\t\n\t if (this.content_.scrollHeight - this.content_.scrollTop <= this.content_.offsetHeight) {\n\t // Bottom of content\n\t if (_headerTop != 0) {\n\t this.header_.style.top = this.config_.visibleAtScrollEnd ? '0' : '-' + this.header_.offsetHeight + 'px';\n\t }\n\t } else {\n\t _headerTop += scrollDiff;\n\t var offsetHeight = this.header_.offsetHeight;\n\t this.header_.style.top = (Math.abs(_headerTop) > offsetHeight ? -offsetHeight : _headerTop) + 'px';\n\t }\n\t }\n\t\n\t this.lastScrollTop_ = currentContentScrollTop;\n\t };\n\t\n\t var throttleScroll = (0, _fullThrottle2.default)(function (self) {\n\t return self.reposition_();\n\t });\n\t\n\t /**\n\t * Scroll header when content scrolls\n\t * @param event\n\t * @private\n\t */\n\t MaterialExtStickyHeader.prototype.scrollHandler_ = function () /* event */{\n\t throttleScroll(this);\n\t };\n\t\n\t /**\n\t * Init header position\n\t * @private\n\t */\n\t MaterialExtStickyHeader.prototype.updatePosition_ = function () /* event */{\n\t this.recalcWidth_();\n\t this.reposition_();\n\t };\n\t\n\t /**\n\t * Add mutation observer\n\t * @private\n\t */\n\t MaterialExtStickyHeader.prototype.addMutationObserver_ = function () {\n\t var _this = this;\n\t\n\t // jsdom does not support MutationObserver - so this is not testable\n\t /* istanbul ignore next */\n\t this.mutationObserver_ = new MutationObserver(function () /*mutations*/{\n\t // Adjust header width if content changes (e.g. in a SPA)\n\t _this.updatePosition_();\n\t });\n\t\n\t this.mutationObserver_.observe(this.content_, {\n\t attributes: false,\n\t childList: true,\n\t characterData: false,\n\t subtree: true\n\t });\n\t };\n\t\n\t /**\n\t * Removes event listeners\n\t * @private\n\t */\n\t MaterialExtStickyHeader.prototype.removeListeners_ = function () {\n\t\n\t window.removeEventListener('resize', this.resizeHandler_);\n\t window.removeEventListener('orientationchange', this.resizeHandler_);\n\t\n\t if (this.content_) {\n\t this.content_.removeEventListener('scroll', this.scrollHandler_);\n\t }\n\t\n\t if (this.mutationObserver_) {\n\t this.mutationObserver_.disconnect();\n\t this.mutationObserver_ = null;\n\t }\n\t };\n\t\n\t /**\n\t * Initialize component\n\t */\n\t MaterialExtStickyHeader.prototype.init = function () {\n\t\n\t if (this.header_) {\n\t\n\t this.removeListeners_();\n\t\n\t if (this.header_.hasAttribute('data-config')) {\n\t this.config_ = (0, _jsonUtils.jsonStringToObject)(this.header_.getAttribute('data-config'));\n\t }\n\t\n\t this.content_ = this.header_.parentNode.querySelector('.' + MDL_LAYOUT_CONTENT) || null;\n\t\n\t if (this.content_) {\n\t this.content_.style.paddingTop = this.header_.offsetHeight + 'px'; // Make room for sticky header\n\t this.lastScrollTop_ = this.content_.scrollTop;\n\t\n\t this.content_.addEventListener('scroll', this.scrollHandler_.bind(this));\n\t window.addEventListener('resize', this.resizeHandler_.bind(this));\n\t window.addEventListener('orientationchange', this.resizeHandler_.bind(this));\n\t\n\t this.addMutationObserver_();\n\t this.updatePosition_();\n\t\n\t // Set upgraded flag\n\t this.header_.classList.add(_constants.IS_UPGRADED);\n\t }\n\t }\n\t };\n\t\n\t /*\n\t * Downgrade component\n\t * E.g remove listeners and clean up resources\n\t *\n\t * Nothing to clean\n\t *\n\t MaterialExtStickyHeader.prototype.mdlDowngrade_ = function() {\n\t 'use strict';\n\t console.log('***** MaterialExtStickyHeader.prototype.mdlDowngrade_');\n\t };\n\t */\n\t\n\t // The component registers itself. It can assume componentHandler is available\n\t // in the global scope.\n\t /* eslint no-undef: 0 */\n\t componentHandler.register({\n\t constructor: MaterialExtStickyHeader,\n\t classAsString: 'MaterialExtStickyHeader',\n\t cssClass: 'mdlext-js-sticky-header'\n\t });\n\t})(); /**\n\t * @license\n\t * Copyright 2016 Leif Olsen. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t *\n\t * This code is built with Google Material Design Lite,\n\t * which is Licensed under the Apache License, Version 2.0\n\t */\n\t\n\t/**\n\t * A sticky header makes site navigation easily accessible anywhere on the page and saves content space at the same.\n\t * The header should auto-hide, i.e. hiding the header automatically when a user starts scrolling down the page and\n\t * bringing the header back when a user might need it: they reach the bottom of the page or start scrolling up.\n\t */\n\n/***/ },\n/* 59 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t__webpack_require__(2);\n\t\n\t__webpack_require__(21);\n\t\n\t__webpack_require__(15);\n\t\n\t__webpack_require__(14);\n\t\n\t__webpack_require__(13);\n\t\n\t__webpack_require__(29);\n\t\n\t__webpack_require__(30);\n\n/***/ },\n/* 60 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(68), __esModule: true };\n\n/***/ },\n/* 61 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(70), __esModule: true };\n\n/***/ },\n/* 62 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(72), __esModule: true };\n\n/***/ },\n/* 63 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(74), __esModule: true };\n\n/***/ },\n/* 64 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(75), __esModule: true };\n\n/***/ },\n/* 65 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(76), __esModule: true };\n\n/***/ },\n/* 66 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(77), __esModule: true };\n\n/***/ },\n/* 67 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\t\n\tvar _isIterable2 = __webpack_require__(61);\n\t\n\tvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\t\n\tvar _getIterator2 = __webpack_require__(31);\n\t\n\tvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = function () {\n\t function sliceIterator(arr, i) {\n\t var _arr = [];\n\t var _n = true;\n\t var _d = false;\n\t var _e = undefined;\n\t\n\t try {\n\t for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t _arr.push(_s.value);\n\t\n\t if (i && _arr.length === i) break;\n\t }\n\t } catch (err) {\n\t _d = true;\n\t _e = err;\n\t } finally {\n\t try {\n\t if (!_n && _i[\"return\"]) _i[\"return\"]();\n\t } finally {\n\t if (_d) throw _e;\n\t }\n\t }\n\t\n\t return _arr;\n\t }\n\t\n\t return function (arr, i) {\n\t if (Array.isArray(arr)) {\n\t return arr;\n\t } else if ((0, _isIterable3.default)(Object(arr))) {\n\t return sliceIterator(arr, i);\n\t } else {\n\t throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t }\n\t };\n\t}();\n\n/***/ },\n/* 68 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(28);\n\t__webpack_require__(104);\n\tmodule.exports = __webpack_require__(1).Array.from;\n\n/***/ },\n/* 69 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(48);\n\t__webpack_require__(28);\n\tmodule.exports = __webpack_require__(102);\n\n/***/ },\n/* 70 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(48);\n\t__webpack_require__(28);\n\tmodule.exports = __webpack_require__(103);\n\n/***/ },\n/* 71 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(106);\n\tmodule.exports = __webpack_require__(1).Number.isInteger;\n\n/***/ },\n/* 72 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(107);\n\tmodule.exports = __webpack_require__(1).Number.isNaN;\n\n/***/ },\n/* 73 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(108);\n\tmodule.exports = __webpack_require__(1).Object.assign;\n\n/***/ },\n/* 74 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(109);\n\tvar $Object = __webpack_require__(1).Object;\n\tmodule.exports = function defineProperty(it, key, desc){\n\t return $Object.defineProperty(it, key, desc);\n\t};\n\n/***/ },\n/* 75 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(112);\n\tmodule.exports = __webpack_require__(1).Object.entries;\n\n/***/ },\n/* 76 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(110);\n\tmodule.exports = __webpack_require__(1).Object.keys;\n\n/***/ },\n/* 77 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(111);\n\tmodule.exports = __webpack_require__(1).Reflect.apply;\n\n/***/ },\n/* 78 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(){ /* empty */ };\n\n/***/ },\n/* 79 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// false -> Array#indexOf\n\t// true -> Array#includes\n\tvar toIObject = __webpack_require__(19)\n\t , toLength = __webpack_require__(45)\n\t , toIndex = __webpack_require__(100);\n\tmodule.exports = function(IS_INCLUDES){\n\t return function($this, el, fromIndex){\n\t var O = toIObject($this)\n\t , length = toLength(O.length)\n\t , index = toIndex(fromIndex, length)\n\t , value;\n\t // Array#includes uses SameValueZero equality algorithm\n\t if(IS_INCLUDES && el != el)while(length > index){\n\t value = O[index++];\n\t if(value != value)return true;\n\t // Array#toIndex ignores holes, Array#includes - not\n\t } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n\t if(O[index] === el)return IS_INCLUDES || index || 0;\n\t } return !IS_INCLUDES && -1;\n\t };\n\t};\n\n/***/ },\n/* 80 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar $defineProperty = __webpack_require__(12)\n\t , createDesc = __webpack_require__(25);\n\t\n\tmodule.exports = function(object, index, value){\n\t if(index in object)$defineProperty.f(object, index, createDesc(0, value));\n\t else object[index] = value;\n\t};\n\n/***/ },\n/* 81 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(5).document && document.documentElement;\n\n/***/ },\n/* 82 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = !__webpack_require__(9) && !__webpack_require__(10)(function(){\n\t return Object.defineProperty(__webpack_require__(38)('div'), 'a', {get: function(){ return 7; }}).a != 7;\n\t});\n\n/***/ },\n/* 83 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// check on default Array iterator\n\tvar Iterators = __webpack_require__(7)\n\t , ITERATOR = __webpack_require__(4)('iterator')\n\t , ArrayProto = Array.prototype;\n\t\n\tmodule.exports = function(it){\n\t return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n\t};\n\n/***/ },\n/* 84 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.1.2.3 Number.isInteger(number)\n\tvar isObject = __webpack_require__(17)\n\t , floor = Math.floor;\n\tmodule.exports = function isInteger(it){\n\t return !isObject(it) && isFinite(it) && floor(it) === it;\n\t};\n\n/***/ },\n/* 85 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// call something on iterator step with safe closing on error\n\tvar anObject = __webpack_require__(6);\n\tmodule.exports = function(iterator, fn, value, entries){\n\t try {\n\t return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n\t // 7.4.6 IteratorClose(iterator, completion)\n\t } catch(e){\n\t var ret = iterator['return'];\n\t if(ret !== undefined)anObject(ret.call(iterator));\n\t throw e;\n\t }\n\t};\n\n/***/ },\n/* 86 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar create = __webpack_require__(91)\n\t , descriptor = __webpack_require__(25)\n\t , setToStringTag = __webpack_require__(43)\n\t , IteratorPrototype = {};\n\t\n\t// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n\t__webpack_require__(11)(IteratorPrototype, __webpack_require__(4)('iterator'), function(){ return this; });\n\t\n\tmodule.exports = function(Constructor, NAME, next){\n\t Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});\n\t setToStringTag(Constructor, NAME + ' Iterator');\n\t};\n\n/***/ },\n/* 87 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ITERATOR = __webpack_require__(4)('iterator')\n\t , SAFE_CLOSING = false;\n\t\n\ttry {\n\t var riter = [7][ITERATOR]();\n\t riter['return'] = function(){ SAFE_CLOSING = true; };\n\t Array.from(riter, function(){ throw 2; });\n\t} catch(e){ /* empty */ }\n\t\n\tmodule.exports = function(exec, skipClosing){\n\t if(!skipClosing && !SAFE_CLOSING)return false;\n\t var safe = false;\n\t try {\n\t var arr = [7]\n\t , iter = arr[ITERATOR]();\n\t iter.next = function(){ return {done: safe = true}; };\n\t arr[ITERATOR] = function(){ return iter; };\n\t exec(arr);\n\t } catch(e){ /* empty */ }\n\t return safe;\n\t};\n\n/***/ },\n/* 88 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(done, value){\n\t return {value: value, done: !!done};\n\t};\n\n/***/ },\n/* 89 */\n/***/ function(module, exports) {\n\n\tmodule.exports = true;\n\n/***/ },\n/* 90 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// 19.1.2.1 Object.assign(target, source, ...)\n\tvar getKeys = __webpack_require__(18)\n\t , gOPS = __webpack_require__(93)\n\t , pIE = __webpack_require__(42)\n\t , toObject = __webpack_require__(20)\n\t , IObject = __webpack_require__(40)\n\t , $assign = Object.assign;\n\t\n\t// should work with symbols and should have deterministic property order (V8 bug)\n\tmodule.exports = !$assign || __webpack_require__(10)(function(){\n\t var A = {}\n\t , B = {}\n\t , S = Symbol()\n\t , K = 'abcdefghijklmnopqrst';\n\t A[S] = 7;\n\t K.split('').forEach(function(k){ B[k] = k; });\n\t return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n\t}) ? function assign(target, source){ // eslint-disable-line no-unused-vars\n\t var T = toObject(target)\n\t , aLen = arguments.length\n\t , index = 1\n\t , getSymbols = gOPS.f\n\t , isEnum = pIE.f;\n\t while(aLen > index){\n\t var S = IObject(arguments[index++])\n\t , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n\t , length = keys.length\n\t , j = 0\n\t , key;\n\t while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n\t } return T;\n\t} : $assign;\n\n/***/ },\n/* 91 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n\tvar anObject = __webpack_require__(6)\n\t , dPs = __webpack_require__(92)\n\t , enumBugKeys = __webpack_require__(39)\n\t , IE_PROTO = __webpack_require__(26)('IE_PROTO')\n\t , Empty = function(){ /* empty */ }\n\t , PROTOTYPE = 'prototype';\n\t\n\t// Create object with fake `null` prototype: use iframe Object with cleared prototype\n\tvar createDict = function(){\n\t // Thrash, waste and sodomy: IE GC bug\n\t var iframe = __webpack_require__(38)('iframe')\n\t , i = enumBugKeys.length\n\t , lt = '<'\n\t , gt = '>'\n\t , iframeDocument;\n\t iframe.style.display = 'none';\n\t __webpack_require__(81).appendChild(iframe);\n\t iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n\t // createDict = iframe.contentWindow.Object;\n\t // html.removeChild(iframe);\n\t iframeDocument = iframe.contentWindow.document;\n\t iframeDocument.open();\n\t iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n\t iframeDocument.close();\n\t createDict = iframeDocument.F;\n\t while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\n\t return createDict();\n\t};\n\t\n\tmodule.exports = Object.create || function create(O, Properties){\n\t var result;\n\t if(O !== null){\n\t Empty[PROTOTYPE] = anObject(O);\n\t result = new Empty;\n\t Empty[PROTOTYPE] = null;\n\t // add \"__proto__\" for Object.getPrototypeOf polyfill\n\t result[IE_PROTO] = O;\n\t } else result = createDict();\n\t return Properties === undefined ? result : dPs(result, Properties);\n\t};\n\n\n/***/ },\n/* 92 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dP = __webpack_require__(12)\n\t , anObject = __webpack_require__(6)\n\t , getKeys = __webpack_require__(18);\n\t\n\tmodule.exports = __webpack_require__(9) ? Object.defineProperties : function defineProperties(O, Properties){\n\t anObject(O);\n\t var keys = getKeys(Properties)\n\t , length = keys.length\n\t , i = 0\n\t , P;\n\t while(length > i)dP.f(O, P = keys[i++], Properties[P]);\n\t return O;\n\t};\n\n/***/ },\n/* 93 */\n/***/ function(module, exports) {\n\n\texports.f = Object.getOwnPropertySymbols;\n\n/***/ },\n/* 94 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\n\tvar has = __webpack_require__(16)\n\t , toObject = __webpack_require__(20)\n\t , IE_PROTO = __webpack_require__(26)('IE_PROTO')\n\t , ObjectProto = Object.prototype;\n\t\n\tmodule.exports = Object.getPrototypeOf || function(O){\n\t O = toObject(O);\n\t if(has(O, IE_PROTO))return O[IE_PROTO];\n\t if(typeof O.constructor == 'function' && O instanceof O.constructor){\n\t return O.constructor.prototype;\n\t } return O instanceof Object ? ObjectProto : null;\n\t};\n\n/***/ },\n/* 95 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar has = __webpack_require__(16)\n\t , toIObject = __webpack_require__(19)\n\t , arrayIndexOf = __webpack_require__(79)(false)\n\t , IE_PROTO = __webpack_require__(26)('IE_PROTO');\n\t\n\tmodule.exports = function(object, names){\n\t var O = toIObject(object)\n\t , i = 0\n\t , result = []\n\t , key;\n\t for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n\t // Don't enum bug & hidden keys\n\t while(names.length > i)if(has(O, key = names[i++])){\n\t ~arrayIndexOf(result, key) || result.push(key);\n\t }\n\t return result;\n\t};\n\n/***/ },\n/* 96 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// most Object methods by ES6 should accept primitives\n\tvar $export = __webpack_require__(3)\n\t , core = __webpack_require__(1)\n\t , fails = __webpack_require__(10);\n\tmodule.exports = function(KEY, exec){\n\t var fn = (core.Object || {})[KEY] || Object[KEY]\n\t , exp = {};\n\t exp[KEY] = exec(fn);\n\t $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);\n\t};\n\n/***/ },\n/* 97 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getKeys = __webpack_require__(18)\n\t , toIObject = __webpack_require__(19)\n\t , isEnum = __webpack_require__(42).f;\n\tmodule.exports = function(isEntries){\n\t return function(it){\n\t var O = toIObject(it)\n\t , keys = getKeys(O)\n\t , length = keys.length\n\t , i = 0\n\t , result = []\n\t , key;\n\t while(length > i)if(isEnum.call(O, key = keys[i++])){\n\t result.push(isEntries ? [key, O[key]] : O[key]);\n\t } return result;\n\t };\n\t};\n\n/***/ },\n/* 98 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(11);\n\n/***/ },\n/* 99 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar toInteger = __webpack_require__(27)\n\t , defined = __webpack_require__(24);\n\t// true -> String#at\n\t// false -> String#codePointAt\n\tmodule.exports = function(TO_STRING){\n\t return function(that, pos){\n\t var s = String(defined(that))\n\t , i = toInteger(pos)\n\t , l = s.length\n\t , a, b;\n\t if(i < 0 || i >= l)return TO_STRING ? '' : undefined;\n\t a = s.charCodeAt(i);\n\t return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n\t ? TO_STRING ? s.charAt(i) : a\n\t : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n\t };\n\t};\n\n/***/ },\n/* 100 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar toInteger = __webpack_require__(27)\n\t , max = Math.max\n\t , min = Math.min;\n\tmodule.exports = function(index, length){\n\t index = toInteger(index);\n\t return index < 0 ? max(index + length, 0) : min(index, length);\n\t};\n\n/***/ },\n/* 101 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.1.1 ToPrimitive(input [, PreferredType])\n\tvar isObject = __webpack_require__(17);\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tmodule.exports = function(it, S){\n\t if(!isObject(it))return it;\n\t var fn, val;\n\t if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n\t if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n\t if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n/***/ },\n/* 102 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar anObject = __webpack_require__(6)\n\t , get = __webpack_require__(47);\n\tmodule.exports = __webpack_require__(1).getIterator = function(it){\n\t var iterFn = get(it);\n\t if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');\n\t return anObject(iterFn.call(it));\n\t};\n\n/***/ },\n/* 103 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar classof = __webpack_require__(35)\n\t , ITERATOR = __webpack_require__(4)('iterator')\n\t , Iterators = __webpack_require__(7);\n\tmodule.exports = __webpack_require__(1).isIterable = function(it){\n\t var O = Object(it);\n\t return O[ITERATOR] !== undefined\n\t || '@@iterator' in O\n\t || Iterators.hasOwnProperty(classof(O));\n\t};\n\n/***/ },\n/* 104 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar ctx = __webpack_require__(37)\n\t , $export = __webpack_require__(3)\n\t , toObject = __webpack_require__(20)\n\t , call = __webpack_require__(85)\n\t , isArrayIter = __webpack_require__(83)\n\t , toLength = __webpack_require__(45)\n\t , createProperty = __webpack_require__(80)\n\t , getIterFn = __webpack_require__(47);\n\t\n\t$export($export.S + $export.F * !__webpack_require__(87)(function(iter){ Array.from(iter); }), 'Array', {\n\t // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n\t from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){\n\t var O = toObject(arrayLike)\n\t , C = typeof this == 'function' ? this : Array\n\t , aLen = arguments.length\n\t , mapfn = aLen > 1 ? arguments[1] : undefined\n\t , mapping = mapfn !== undefined\n\t , index = 0\n\t , iterFn = getIterFn(O)\n\t , length, result, step, iterator;\n\t if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n\t // if object isn't iterable or it's array with default iterator - use simple case\n\t if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){\n\t for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){\n\t createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n\t }\n\t } else {\n\t length = toLength(O.length);\n\t for(result = new C(length); length > index; index++){\n\t createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n\t }\n\t }\n\t result.length = index;\n\t return result;\n\t }\n\t});\n\n\n/***/ },\n/* 105 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar addToUnscopables = __webpack_require__(78)\n\t , step = __webpack_require__(88)\n\t , Iterators = __webpack_require__(7)\n\t , toIObject = __webpack_require__(19);\n\t\n\t// 22.1.3.4 Array.prototype.entries()\n\t// 22.1.3.13 Array.prototype.keys()\n\t// 22.1.3.29 Array.prototype.values()\n\t// 22.1.3.30 Array.prototype[@@iterator]()\n\tmodule.exports = __webpack_require__(41)(Array, 'Array', function(iterated, kind){\n\t this._t = toIObject(iterated); // target\n\t this._i = 0; // next index\n\t this._k = kind; // kind\n\t// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n\t}, function(){\n\t var O = this._t\n\t , kind = this._k\n\t , index = this._i++;\n\t if(!O || index >= O.length){\n\t this._t = undefined;\n\t return step(1);\n\t }\n\t if(kind == 'keys' )return step(0, index);\n\t if(kind == 'values')return step(0, O[index]);\n\t return step(0, [index, O[index]]);\n\t}, 'values');\n\t\n\t// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\n\tIterators.Arguments = Iterators.Array;\n\t\n\taddToUnscopables('keys');\n\taddToUnscopables('values');\n\taddToUnscopables('entries');\n\n/***/ },\n/* 106 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.1.2.3 Number.isInteger(number)\n\tvar $export = __webpack_require__(3);\n\t\n\t$export($export.S, 'Number', {isInteger: __webpack_require__(84)});\n\n/***/ },\n/* 107 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.1.2.4 Number.isNaN(number)\n\tvar $export = __webpack_require__(3);\n\t\n\t$export($export.S, 'Number', {\n\t isNaN: function isNaN(number){\n\t return number != number;\n\t }\n\t});\n\n/***/ },\n/* 108 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.3.1 Object.assign(target, source)\n\tvar $export = __webpack_require__(3);\n\t\n\t$export($export.S + $export.F, 'Object', {assign: __webpack_require__(90)});\n\n/***/ },\n/* 109 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export = __webpack_require__(3);\n\t// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n\t$export($export.S + $export.F * !__webpack_require__(9), 'Object', {defineProperty: __webpack_require__(12).f});\n\n/***/ },\n/* 110 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.14 Object.keys(O)\n\tvar toObject = __webpack_require__(20)\n\t , $keys = __webpack_require__(18);\n\t\n\t__webpack_require__(96)('keys', function(){\n\t return function keys(it){\n\t return $keys(toObject(it));\n\t };\n\t});\n\n/***/ },\n/* 111 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\n\tvar $export = __webpack_require__(3)\n\t , aFunction = __webpack_require__(34)\n\t , anObject = __webpack_require__(6)\n\t , rApply = (__webpack_require__(5).Reflect || {}).apply\n\t , fApply = Function.apply;\n\t// MS Edge argumentsList argument is optional\n\t$export($export.S + $export.F * !__webpack_require__(10)(function(){\n\t rApply(function(){});\n\t}), 'Reflect', {\n\t apply: function apply(target, thisArgument, argumentsList){\n\t var T = aFunction(target)\n\t , L = anObject(argumentsList);\n\t return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n\t }\n\t});\n\n/***/ },\n/* 112 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://github.com/tc39/proposal-object-values-entries\n\tvar $export = __webpack_require__(3)\n\t , $entries = __webpack_require__(97)(true);\n\t\n\t$export($export.S, 'Object', {\n\t entries: function entries(it){\n\t return $entries(it);\n\t }\n\t});\n\n/***/ },\n/* 113 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// mdl-ext.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 82005ea981e272a97aa0","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_core.js\n// module id = 1\n// module chunks = 0 1","'use strict';\n\nconst VK_TAB = 9;\nconst VK_ENTER = 13;\nconst VK_ESC = 27;\nconst VK_SPACE = 32;\nconst VK_PAGE_UP = 33;\nconst VK_PAGE_DOWN = 34;\nconst VK_END = 35;\nconst VK_HOME = 36;\nconst VK_ARROW_LEFT = 37;\nconst VK_ARROW_UP = 38;\nconst VK_ARROW_RIGHT = 39;\nconst VK_ARROW_DOWN = 40;\n\nconst ARIA_EXPANDED = 'aria-expanded';\nconst ARIA_HIDDEN = 'aria-hidden';\nconst ARIA_MULTISELECTABLE = 'aria-multiselectable';\nconst ARIA_SELECTED = 'aria-selected';\n\nconst IS_DIRTY = 'is-dirty';\nconst IS_DISABLED = 'is-disabled';\nconst IS_EXPANDED = 'is-expanded';\nconst IS_FOCUSED = 'is-focused';\nconst IS_INVALID = 'is-invalid';\nconst IS_UPGRADED = 'is-upgraded';\nconst DATA_UPGRADED = 'data-upgraded';\n\nconst MDL_RIPPLE = 'mdl-ripple';\nconst MDL_RIPPLE_COMPONENT = 'MaterialRipple';\nconst MDL_RIPPLE_EFFECT = 'mdl-js-ripple-effect';\nconst MDL_RIPPLE_EFFECT_IGNORE_EVENTS = 'mdl-js-ripple-effect--ignore-events';\n\nexport {\n VK_TAB,\n VK_ENTER,\n VK_ESC,\n VK_SPACE,\n VK_PAGE_UP,\n VK_PAGE_DOWN ,\n VK_END,\n VK_HOME,\n VK_ARROW_LEFT,\n VK_ARROW_UP,\n VK_ARROW_RIGHT,\n VK_ARROW_DOWN ,\n ARIA_EXPANDED,\n ARIA_HIDDEN,\n ARIA_MULTISELECTABLE,\n ARIA_SELECTED,\n IS_DIRTY,\n IS_DISABLED,\n IS_EXPANDED,\n IS_FOCUSED,\n IS_INVALID,\n IS_UPGRADED,\n DATA_UPGRADED ,\n MDL_RIPPLE,\n MDL_RIPPLE_COMPONENT,\n MDL_RIPPLE_EFFECT,\n MDL_RIPPLE_EFFECT_IGNORE_EVENTS\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/constants.js","var global = require('./_global')\n , core = require('./_core')\n , ctx = require('./_ctx')\n , hide = require('./_hide')\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , IS_WRAP = type & $export.W\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE]\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n , key, own, out;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if(own && key in exports)continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C){\n var F = function(a, b, c){\n if(this instanceof C){\n switch(arguments.length){\n case 0: return new C;\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if(IS_PROTO){\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_export.js\n// module id = 3\n// module chunks = 0 1","var store = require('./_shared')('wks')\n , uid = require('./_uid')\n , Symbol = require('./_global').Symbol\n , USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function(name){\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_wks.js\n// module id = 4\n// module chunks = 0 1","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_global.js\n// module id = 5\n// module chunks = 0 1","var isObject = require('./_is-object');\nmodule.exports = function(it){\n if(!isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_an-object.js\n// module id = 6\n// module chunks = 0 1","module.exports = {};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iterators.js\n// module id = 7\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/toConsumableArray.js\n// module id = 8\n// module chunks = 0 1","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function(){\n return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_descriptors.js\n// module id = 9\n// module chunks = 0 1","module.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_fails.js\n// module id = 10\n// module chunks = 0 1","var dP = require('./_object-dp')\n , createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function(object, key, value){\n return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n object[key] = value;\n return object;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_hide.js\n// module id = 11\n// module chunks = 0 1","var anObject = require('./_an-object')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , toPrimitive = require('./_to-primitive')\n , dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if(IE8_DOM_DEFINE)try {\n return dP(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)O[P] = Attributes.value;\n return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-dp.js\n// module id = 12\n// module chunks = 0 1","/**\n * Since some events can fire at a high rate, the event handler should be limited to execute computationally\n * expensive operations, such as DOM modifications, inside a single rendered frame.\n * When listening to e.g. scroll and resize events, the browser tends to fire off more events per\n * second than are actually useful. For instance, if your event listener sets some element positions, then it\n * is possible for those positions to be updated multiple times in a single rendered frame. In this case, all of\n * the layout calculations triggered by setting the elements' positions will be wasted except for the one time that\n * it runs immediately prior to the browser rendering the updated layout to the screen.\n * To avoid wasting cycles, we can use requestAnimationFrame to only run the event listener once just before the page\n * is rendered to the screen.\n * *\n * @param callback the function to throttle\n * @param context optional context of this, default to global\n * @return {function(...[*])}\n */\nconst fullThrottle = (callback, context) => {\n\n if (!context) {\n context = this || window;\n }\n\n let throttling = false;\n\n return (...args) => {\n if(!throttling) {\n throttling = true;\n window.requestAnimationFrame( () => {\n throttling = false;\n return Reflect.apply(callback, context, args);\n });\n }\n };\n};\n\nexport default fullThrottle;\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/full-throttle.js","'use strict';\n\n/**\n * Converts a JSON string to object\n * @param jsonString\n * @param source\n */\nconst jsonStringToObject = (jsonString, source = {} ) => {\n const s = jsonString.replace(/'/g, '\"');\n try {\n return Object.assign(source, JSON.parse(s));\n }\n catch (e) {\n throw new Error(`Failed to parse json string: ${s}. Error: ${e.message}`);\n }\n};\n\nexport { jsonStringToObject };\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/json-utils.js","'use strict';\n\n/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A javascript utility for conditionally creating a list of strings.\n * The function takes any number of arguments which can be a string or object.\n * Inspired by (but not copied from) JedWatson/classnames, https://github.com/JedWatson/classnames\n *\n * @param {*} args the strings and/or objects to\n * @return {Array} a list of strings\n * @example\n * // Returns ['foo', 'bar', 'baz', 'quux']\n * stringList(', ', 'foo', { bar: true, duck: false }, 'baz', { quux: true });\n * @example see the tests for more examples\n */\nconst stringList = (...args) => {\n\n const isString = str => str != null && typeof str === 'string';\n\n const flatten = list => list.reduce((a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []);\n\n const objectToStrings = arg =>\n Object.keys(arg)\n .filter(key => arg[key])\n .map(key => key);\n\n return args\n .filter(arg => !!arg)\n .map(arg => isString(arg) ? arg : objectToStrings(arg))\n .reduce((result, arg) => result.concat(Array.isArray(arg) ? flatten(arg) : arg), []);\n};\n\n/**\n * A simple javascript utility for conditionally joining strings together.\n * The function takes a delimiter string and any number of arguments which can be a string or object.\n *\n * @param delimiter delimiter to separate joined strings\n * @param {*} args the strings and/or objects to join\n * @return {String} the joined strings\n * @example\n * // Returns 'foo, bar, baz, quux'\n * joinStrings(', ', 'foo', { bar: true, duck: false }, 'baz', { quux: true });\n * @example see the tests for more examples\n */\nconst joinStrings = (delimiter = ' ', ...args) => stringList(...args).join(delimiter);\n\n/**\n * Generates a random string with a given length\n * @param n {Integer} length of generated string\n * @see http://stackoverflow.com/questions/1349404/generate-random-string-characters-in-javascript\n * @return {String} the random string\n * @example\n * // Returns e.g. 'pd781w0y'\n * randomString(8);\n * @example see the tests for more examples\n */\nconst randomString = ( n=12 ) => Array( n+1 ).join((`${Math.random().toString(36)}00000000000000000`).slice(2, 18)).slice(0, n);\n\nexport { joinStrings, randomString, stringList };\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/string-utils.js","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_has.js\n// module id = 16\n// module chunks = 0 1","module.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_is-object.js\n// module id = 17\n// module chunks = 0 1","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal')\n , enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O){\n return $keys(O, enumBugKeys);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-keys.js\n// module id = 18\n// module chunks = 0 1","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject')\n , defined = require('./_defined');\nmodule.exports = function(it){\n return IObject(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-iobject.js\n// module id = 19\n// module chunks = 0 1","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function(it){\n return Object(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-object.js\n// module id = 20\n// module chunks = 0 1","/**\n * Remove child element(s)\n * element.innerHTNL = '' has a performance penality!\n * @see http://jsperf.com/empty-an-element/16\n * @see http://jsperf.com/force-reflow\n * @param element\n * @param forceReflow\n */\nconst removeChildElements = (element, forceReflow = true) => {\n\n // See: http://jsperf.com/empty-an-element/16\n while (element.lastChild) {\n element.removeChild(element.lastChild);\n }\n if(forceReflow) {\n // See: http://jsperf.com/force-reflow\n const d = element.style.display;\n\n element.style.display = 'none';\n element.style.display = d;\n }\n};\n\n/**\n * Moves child elements from a DOM node to another dom node.\n * @param source {HTMLElement}\n * @param target {HTMLElement} If the target parameter is ommited, a document fragment is created\n * @return {HTMLElement} The target node\n *\n * @example\n * // Moves child elements from a DOM node to another dom node.\n * moveElements(source, destination);\n *\n * @example\n * // If the second parameter is ommited, a document fragment is created:\n * let fragment = moveElements(source);\n *\n * @See: https://github.com/webmodules/dom-move\n */\nconst moveElements = (source, target) => {\n if (!target) {\n target = source.ownerDocument.createDocumentFragment();\n }\n while (source.firstChild) {\n target.appendChild(source.firstChild);\n }\n return target;\n};\n\n\n/**\n * Get the browser viewport dimensions\n * @see http://stackoverflow.com/questions/1248081/get-the-browser-viewport-dimensions-with-javascript\n * @return {{windowWidth: number, windowHeight: number}}\n */\nconst getWindowViewport = () => {\n return {\n viewportWidth: Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0),\n viewportHeight: Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0)\n };\n};\n\n\n/**\n * Check whether an element is in the window viewport\n * @see http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport/\n * @param top\n * @param left\n * @param bottom\n * @param right\n * @return {boolean} true if rectangle is inside window viewport, otherwise false\n */\nconst isRectInsideWindowViewport = ({ top, left, bottom, right }) => {\n const { viewportWidth, viewportHeight } = getWindowViewport();\n return top >= 0 &&\n left >= 0 &&\n bottom <= viewportHeight &&\n right <= viewportWidth;\n};\n\n\n/**\n * Get a list of parent elements that can possibly scroll\n * @param el the element to get parents for\n * @returns {Array}\n */\nconst getScrollParents = el => {\n const elements = [];\n\n /*\n for (el = el.parentNode; el; el = el.parentNode) {\n const cs = window.getComputedStyle(el);\n if(!(cs.overflowY === 'hidden' && cs.overflowX === 'hidden')) {\n elements.unshift(el);\n }\n if(el === document.body) {\n break;\n }\n }\n */\n\n let element = el.parentNode;\n while (element) {\n const cs = window.getComputedStyle(element);\n if(!(cs.overflowY === 'hidden' && cs.overflowX === 'hidden')) {\n elements.unshift(element);\n }\n if(element === document.body) {\n break;\n }\n element = element.parentNode;\n }\n\n return elements;\n};\n\n/**\n * Get a list of parent elements, from a given element to a given element\n * @param {HTMLElement} from\n * @param {HTMLElement} to\n * @return {Array<HTMLElement>} the parent elements, not including from and to\n */\nconst getParentElements = (from, to) => {\n const result = [];\n let element = from.parentNode;\n while (element) {\n if(element === to) {\n break;\n }\n result.unshift(element);\n element = element.parentNode;\n }\n return result;\n};\n\n/**\n * Position element next to button\n *\n * Positioning strategy\n * 1. element.height > viewport.height\n * let element.height = viewport.heigt\n * let element.overflow-y = auto\n * 2. element.width > viewport.width\n * let element.width = viewport.width\n * 3. position element below button, align left edge of element with button left\n * done if element inside viewport\n * 4. position element below button, align right edge of element with button right\n * done if element inside viewport\n * 5. positions element above button, aligns left edge of element with button left\n * done if element inside viewport\n * 6. position element above the control element, aligned to its right.\n * done if element inside viewport\n * 7. position element at button right hand side, aligns element top with button top\n * done if element inside viewport\n * 8. position element at button left hand side, aligns element top with button top\n * done if element inside viewport\n * 9. position element inside viewport\n * 1. position element at viewport bottom\n * 2. position element at button right hand side\n * done if element inside viewport\n * 3. position element at button left hand side\n * done if element inside viewport\n * 4. position element at viewport right\n * 10. done\n *\n */\nconst tether = (controlledBy, element) => {\n const controlRect = controlledBy.getBoundingClientRect();\n\n // 1. will element height fit inside window viewport?\n const { viewportWidth, viewportHeight } = getWindowViewport();\n\n element.style.height = 'auto';\n //element.style.overflowY = 'hidden';\n if(element.offsetHeight > viewportHeight) {\n element.style.height = `${viewportHeight}px`;\n element.style.overflowY = 'auto';\n }\n\n // 2. will element width fit inside window viewport?\n element.style.width = 'auto';\n if(element.offsetWidth > viewportWidth) {\n element.style.width = `${viewportWidth}px`;\n }\n\n const elementRect = element.getBoundingClientRect();\n\n // element to control distance\n const dy = controlRect.top - elementRect.top;\n const dx = controlRect.left - elementRect.left;\n\n // element rect, window coordinates relative to top,left of control\n const top = elementRect.top + dy;\n const left = elementRect.left + dx;\n const bottom = top + elementRect.height;\n const right = left + elementRect.width;\n\n // Position relative to control\n let ddy = dy;\n let ddx = dx;\n\n if(isRectInsideWindowViewport({\n top: top + controlRect.height,\n left: left,\n bottom: bottom + controlRect.height,\n right: right\n })) {\n // 3 position element below the control element, aligned to its left\n ddy = controlRect.height + dy;\n //console.log('***** 3');\n }\n else if(isRectInsideWindowViewport({\n top: top + controlRect.height,\n left: left + controlRect.width - elementRect.width,\n bottom: bottom + controlRect.height,\n right: left + controlRect.width\n })) {\n // 4 position element below the control element, aligned to its right\n ddy = controlRect.height + dy;\n ddx = dx + controlRect.width - elementRect.width;\n //console.log('***** 4');\n }\n else if(isRectInsideWindowViewport({\n top: top - elementRect.height,\n left: left,\n bottom: bottom - elementRect.height,\n right: right\n })) {\n // 5. position element above the control element, aligned to its left.\n ddy = dy - elementRect.height;\n //console.log('***** 5');\n }\n else if(isRectInsideWindowViewport({\n top: top - elementRect.height,\n left: left + controlRect.width - elementRect.width,\n bottom: bottom - elementRect.height,\n right: left + controlRect.width\n })) {\n // 6. position element above the control element, aligned to its right.\n ddy = dy - elementRect.height;\n ddx = dx + controlRect.width - elementRect.width;\n //console.log('***** 6');\n }\n else if(isRectInsideWindowViewport({\n top: top,\n left: left + controlRect.width,\n bottom: bottom,\n right: right + controlRect.width\n })) {\n // 7. position element at button right hand side\n ddx = controlRect.width + dx;\n //console.log('***** 7');\n }\n else if(isRectInsideWindowViewport({\n top: top,\n left: left - controlRect.width,\n bottom: bottom,\n right: right - controlRect.width\n })) {\n // 8. position element at button left hand side\n ddx = dx - elementRect.width;\n //console.log('***** 8');\n }\n else {\n // 9. position element inside viewport, near controlrect if possible\n //console.log('***** 9');\n\n // 9.1 position element near controlrect bottom\n ddy = dy - bottom + viewportHeight;\n if(top + controlRect.height >= 0 && bottom + controlRect.height <= viewportHeight) {\n ddy = controlRect.height + dy;\n }\n else if(top - elementRect.height >= 0 && bottom - elementRect.height <= viewportHeight) {\n ddy = dy - elementRect.height;\n }\n\n if(left + elementRect.width + controlRect.width <= viewportWidth) {\n // 9.2 Position element at button right hand side\n ddx = controlRect.width + dx;\n //console.log('***** 9.2');\n }\n else if(left - elementRect.width >= 0) {\n // 9.3 Position element at button left hand side\n ddx = dx - elementRect.width;\n //console.log('***** 9.3');\n }\n else {\n // 9.4 position element at (near) viewport right\n const r = left + elementRect.width - viewportWidth;\n ddx = dx - r;\n //console.log('***** 9.4');\n }\n }\n\n // 10. done\n element.style.top = `${element.offsetTop + ddy}px`;\n element.style.left = `${element.offsetLeft + ddx}px`;\n //console.log('***** 10. done');\n};\n\n/**\n * Check if the given element can receive focus\n * @param {HTMLElement} element the element to check\n * @return {boolean} true if the element is focusable, otherwise false\n */\nconst isFocusable = (element) => {\n // https://github.com/stephenmathieson/is-focusable/blob/master/index.js\n // http://stackoverflow.com/questions/1599660/which-html-elements-can-receive-focus\n\n if (element.hasAttribute('tabindex')) {\n const tabindex = element.getAttribute('tabindex');\n if (!Number.isNaN(tabindex)) {\n return parseInt(tabindex) > -1;\n }\n }\n\n if (element.hasAttribute('contenteditable') &&\n element.getAttribute('contenteditable') !== 'false') {\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-contenteditable\n return true;\n }\n\n // natively focusable, but only when enabled\n const selector = /input|select|textarea|button|details/i;\n const name = element.nodeName;\n if (selector.test(name)) {\n return element.type.toLowerCase() !== 'hidden' && !element.disabled;\n }\n\n // anchors and area must have an href\n if (name === 'A' || name === 'AREA') {\n return !!element.href;\n }\n\n if (name === 'IFRAME') {\n // Check visible iframe\n const cs = window.getComputedStyle(element);\n return cs.getPropertyValue('display').toLowerCase() !== 'none';\n }\n\n return false;\n};\n\n\n/**\n * Get a list of offset parents for given element\n * @see https://www.benpickles.com/articles/51-finding-a-dom-nodes-common-ancestor-using-javascript\n * @param el the element\n * @return {Array} a list of offset parents\n */\n/*\nconst offsetParents = (el) => {\n const elements = [];\n for (; el; el = el.offsetParent) {\n elements.unshift(el);\n }\n if(!elements.find(e => e === document.body)) {\n elements.unshift(document.body);\n }\n return elements;\n};\n*/\n\n/**\n * Finds the common offset ancestor of two DOM nodes\n * @see https://www.benpickles.com/articles/51-finding-a-dom-nodes-common-ancestor-using-javascript\n * @see https://gist.github.com/benpickles/4059636\n * @param a\n * @param b\n * @return {Element} The common offset ancestor of a and b\n */\n/*\nconst commonOffsetAncestor = (a, b) => {\n const parentsA = offsetParents(a);\n const parentsB = offsetParents(b);\n\n for (let i = 0; i < parentsA.length; i++) {\n if (parentsA[i] !== parentsB[i]) return parentsA[i-1];\n }\n};\n*/\n\n/**\n * Calculate position relative to a target element\n * @see http://stackoverflow.com/questions/21064101/understanding-offsetwidth-clientwidth-scrollwidth-and-height-respectively\n * @param target\n * @param el\n * @return {{top: number, left: number}}\n */\n/*\nconst calcPositionRelativeToTarget = (target, el) => {\n let top = 0;\n let left = 0;\n\n while(el) {\n top += (el.offsetTop - el.scrollTop + el.clientTop) || 0;\n left += (el.offsetLeft - el.scrollLeft + el.clientLeft) || 0;\n el = el.offsetParent;\n\n if(el === target) {\n break;\n }\n }\n return { top: top, left: left };\n};\n*/\n\nexport {\n getWindowViewport,\n getParentElements,\n getScrollParents,\n isFocusable,\n isRectInsideWindowViewport,\n moveElements,\n removeChildElements,\n tether,\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/dom-utils.js","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/classCallCheck.js\n// module id = 22\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/createClass.js\n// module id = 23\n// module chunks = 0 1","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_defined.js\n// module id = 24\n// module chunks = 0 1","module.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_property-desc.js\n// module id = 25\n// module chunks = 0 1","var shared = require('./_shared')('keys')\n , uid = require('./_uid');\nmodule.exports = function(key){\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_shared-key.js\n// module id = 26\n// module chunks = 0 1","// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-integer.js\n// module id = 27\n// module chunks = 0 1","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function(iterated){\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , index = this._i\n , point;\n if(index >= O.length)return {value: undefined, done: true};\n point = $at(O, index);\n this._i += point.length;\n return {value: point, done: false};\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.string.iterator.js\n// module id = 28\n// module chunks = 0 1","'use strict';\n\n// See: http://robertpenner.com/easing/\n\nconst easeInOutQuad = (t, b, c, d) => {\n t /= d / 2;\n if(t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n};\n\nconst inOutQuintic = (t, b, c, d) => {\n const ts = (t/=d)*t;\n const tc = ts*t;\n return b+c*(6*tc*ts + -15*ts*ts + 10*tc);\n};\n\nexport { easeInOutQuad, inOutQuintic };\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/easing.js","const MIN_INERVAL = 1000/60;\n\n/**\n * Trigger a callback at a given interval\n * @param interval defaults to 1000/60 ms\n * @return {function()} reference to start, stop, immediate and started\n */\n\nconst intervalFunction = ( interval = MIN_INERVAL ) => {\n\n let lapse = interval < MIN_INERVAL ? MIN_INERVAL : interval;\n let cb = undefined;\n let next = null;\n let timeElapsed = 0;\n\n const execute = () => {\n const f = cb(timeElapsed);\n if (!f) {\n cancel();\n }\n };\n\n const cancel = () => {\n if(next) {\n window.cancelAnimationFrame(next);\n }\n next = null;\n timeElapsed = 0;\n };\n\n const start = () => {\n let timeStart = Date.now();\n\n const loop = now => {\n if (next) {\n next = window.requestAnimationFrame( () => loop( Date.now() ));\n\n timeElapsed += now - timeStart;\n\n if(timeElapsed >= lapse) {\n execute();\n if( (timeElapsed -= lapse) > lapse) {\n // time elapsed - interval_ > interval_ , indicates inactivity\n // Could be due to browser minimized, tab changed, screen saver started, computer sleep, and so on\n timeElapsed = 0;\n }\n }\n timeStart = now;\n }\n };\n\n next = 1; // a truthy value for first loop\n loop( timeStart );\n };\n\n return {\n get started() {\n return next != null;\n },\n get interval() {\n return lapse;\n },\n set interval(value) {\n lapse = value < MIN_INERVAL ? MIN_INERVAL : value;\n },\n start(callback) {\n if(typeof callback !== 'function') {\n throw new TypeError('callback parameter must be a function');\n }\n cb = callback;\n start();\n },\n immediate() {\n if(!cb) {\n throw new ReferenceError('callback parameter is not defined. Call start before immediate.');\n }\n execute();\n },\n stop: () => cancel(),\n };\n};\n\nexport default intervalFunction;\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/interval-function.js","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/get-iterator.js\n// module id = 31\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/number/is-integer.js\n// module id = 32\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/assign.js\n// module id = 33\n// module chunks = 0 1","module.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_a-function.js\n// module id = 34\n// module chunks = 0 1","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof')\n , TAG = require('./_wks')('toStringTag')\n // ES3 wrong here\n , ARG = cof(function(){ return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function(it, key){\n try {\n return it[key];\n } catch(e){ /* empty */ }\n};\n\nmodule.exports = function(it){\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_classof.js\n// module id = 35\n// module chunks = 0 1","var toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_cof.js\n// module id = 36\n// module chunks = 0 1","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function(fn, that, length){\n aFunction(fn);\n if(that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n }\n return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_ctx.js\n// module id = 37\n// module chunks = 0 1","var isObject = require('./_is-object')\n , document = require('./_global').document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_dom-create.js\n// module id = 38\n// module chunks = 0 1","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_enum-bug-keys.js\n// module id = 39\n// module chunks = 0 1","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iobject.js\n// module id = 40\n// module chunks = 0 1","'use strict';\nvar LIBRARY = require('./_library')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , hide = require('./_hide')\n , has = require('./_has')\n , Iterators = require('./_iterators')\n , $iterCreate = require('./_iter-create')\n , setToStringTag = require('./_set-to-string-tag')\n , getPrototypeOf = require('./_object-gpo')\n , ITERATOR = require('./_wks')('iterator')\n , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\n , FF_ITERATOR = '@@iterator'\n , KEYS = 'keys'\n , VALUES = 'values';\n\nvar returnThis = function(){ return this; };\n\nmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){\n $iterCreate(Constructor, NAME, next);\n var getMethod = function(kind){\n if(!BUGGY && kind in proto)return proto[kind];\n switch(kind){\n case KEYS: return function keys(){ return new Constructor(this, kind); };\n case VALUES: return function values(){ return new Constructor(this, kind); };\n } return function entries(){ return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator'\n , DEF_VALUES = DEFAULT == VALUES\n , VALUES_BUG = false\n , proto = Base.prototype\n , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n , $default = $native || getMethod(DEFAULT)\n , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\n , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\n , methods, key, IteratorPrototype;\n // Fix native\n if($anyNative){\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\n if(IteratorPrototype !== Object.prototype){\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if(DEF_VALUES && $native && $native.name !== VALUES){\n VALUES_BUG = true;\n $default = function values(){ return $native.call(this); };\n }\n // Define iterator\n if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if(DEFAULT){\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if(FORCED)for(key in methods){\n if(!(key in proto))redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-define.js\n// module id = 41\n// module chunks = 0 1","exports.f = {}.propertyIsEnumerable;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-pie.js\n// module id = 42\n// module chunks = 0 1","var def = require('./_object-dp').f\n , has = require('./_has')\n , TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function(it, tag, stat){\n if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_set-to-string-tag.js\n// module id = 43\n// module chunks = 0 1","var global = require('./_global')\n , SHARED = '__core-js_shared__'\n , store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key){\n return store[key] || (store[key] = {});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_shared.js\n// module id = 44\n// module chunks = 0 1","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer')\n , min = Math.min;\nmodule.exports = function(it){\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-length.js\n// module id = 45\n// module chunks = 0 1","var id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_uid.js\n// module id = 46\n// module chunks = 0 1","var classof = require('./_classof')\n , ITERATOR = require('./_wks')('iterator')\n , Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function(it){\n if(it != undefined)return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/core.get-iterator-method.js\n// module id = 47\n// module chunks = 0 1","require('./es6.array.iterator');\nvar global = require('./_global')\n , hide = require('./_hide')\n , Iterators = require('./_iterators')\n , TO_STRING_TAG = require('./_wks')('toStringTag');\n\nfor(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){\n var NAME = collections[i]\n , Collection = global[NAME]\n , proto = Collection && Collection.prototype;\n if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/web.dom.iterable.js\n// module id = 48\n// module chunks = 0 1","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n/**\n * A WAI-ARIA friendly accordion component.\n * An accordion is a collection of expandable panels associated with a common outer container. Panels consist\n * of a header and an associated content region or tabpanel. The primary use of an Accordion is to present multiple sections\n * of content on a single page without scrolling, where all of the sections are peers in the application or object hierarchy.\n * The general look is similar to a tree where each root tree node is an expandable accordion header. The user navigates\n * and makes the contents of each panel visible (or not) by interacting with the Accordion Header\n */\n\nimport {\n VK_ENTER,\n VK_SPACE,\n VK_END,\n VK_HOME,\n VK_ARROW_LEFT,\n VK_ARROW_UP,\n VK_ARROW_RIGHT,\n VK_ARROW_DOWN,\n IS_EXPANDED,\n IS_UPGRADED,\n ARIA_MULTISELECTABLE,\n ARIA_EXPANDED,\n ARIA_HIDDEN,\n ARIA_SELECTED\n} from '../utils/constants';\n\n\n(function() {\n 'use strict';\n const ACCORDION = 'mdlext-accordion';\n const ACCORDION_VERTICAL = 'mdlext-accordion--vertical';\n const ACCORDION_HORIZONTAL = 'mdlext-accordion--horizontal';\n const PANEL = 'mdlext-accordion__panel';\n const PANEL_ROLE = 'presentation';\n const TAB = 'mdlext-accordion__tab';\n const TAB_CAPTION = 'mdlext-accordion__tab__caption';\n const TAB_ROLE = 'tab';\n const TABPANEL = 'mdlext-accordion__tabpanel';\n const TABPANEL_ROLE = 'tabpanel';\n const RIPPLE_EFFECT = 'mdlext-js-ripple-effect';\n const RIPPLE = 'mdlext-accordion__tab--ripple';\n const ANIMATION_EFFECT = 'mdlext-js-animation-effect';\n const ANIMATION = 'mdlext-accordion__tabpanel--animation';\n\n /**\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\n const MaterialExtAccordion = function MaterialExtAccordion( element ) {\n\n // Stores the Accordion HTML element.\n this.element_ = element;\n\n // Initialize instance.\n this.init();\n };\n window['MaterialExtAccordion'] = MaterialExtAccordion;\n\n\n // Helpers\n const accordionPanelElements = ( element ) => {\n if(!element) {\n return {\n panel: null,\n tab: null,\n tabpanel: null\n };\n }\n else if (element.classList.contains(PANEL)) {\n return {\n panel: element,\n tab: element.querySelector(`.${TAB}`),\n tabpanel: element.querySelector(`.${TABPANEL}`)\n };\n }\n else {\n return {\n panel: element.parentNode,\n tab: element.parentNode.querySelector(`.${TAB}`),\n tabpanel: element.parentNode.querySelector(`.${TABPANEL}`)\n };\n }\n };\n\n\n // Private methods.\n\n /**\n * Handles custom command event, 'open', 'close', 'toggle' or upgrade\n * @param event. A custom event\n * @private\n */\n MaterialExtAccordion.prototype.commandHandler_ = function( event ) {\n event.preventDefault();\n event.stopPropagation();\n\n if(event && event.detail) {\n this.command(event.detail);\n }\n };\n\n /**\n * Dispatch toggle event\n * @param {string} state\n * @param {Element} tab\n * @param {Element} tabpanel\n * @private\n */\n MaterialExtAccordion.prototype.dispatchToggleEvent_ = function ( state, tab, tabpanel ) {\n const ce = new CustomEvent('toggle', {\n bubbles: true,\n cancelable: true,\n detail: { state: state, tab: tab, tabpanel: tabpanel }\n });\n this.element_.dispatchEvent(ce);\n };\n\n /**\n * Open tab\n * @param {Element} panel\n * @param {Element} tab\n * @param {Element} tabpanel\n * @private\n */\n MaterialExtAccordion.prototype.openTab_ = function( panel, tab, tabpanel ) {\n panel.classList.add(IS_EXPANDED);\n tab.setAttribute(ARIA_EXPANDED, 'true');\n tabpanel.removeAttribute('hidden');\n tabpanel.setAttribute(ARIA_HIDDEN, 'false');\n this.dispatchToggleEvent_('open', tab, tabpanel);\n };\n\n /**\n * Close tab\n * @param {Element} panel\n * @param {Element} tab\n * @param {Element} tabpanel\n * @private\n */\n MaterialExtAccordion.prototype.closeTab_ = function( panel, tab, tabpanel ) {\n panel.classList.remove(IS_EXPANDED);\n tab.setAttribute(ARIA_EXPANDED, 'false');\n tabpanel.setAttribute('hidden', '');\n tabpanel.setAttribute(ARIA_HIDDEN, 'true');\n this.dispatchToggleEvent_('close', tab, tabpanel);\n };\n\n /**\n * Toggle tab\n * @param {Element} panel\n * @param {Element} tab\n * @param {Element} tabpanel\n * @private\n */\n MaterialExtAccordion.prototype.toggleTab_ = function( panel, tab, tabpanel ) {\n if( !(this.element_.hasAttribute('disabled') || tab.hasAttribute('disabled')) ) {\n if (tab.getAttribute(ARIA_EXPANDED).toLowerCase() === 'true') {\n this.closeTab_(panel, tab, tabpanel);\n }\n else {\n if (this.element_.getAttribute(ARIA_MULTISELECTABLE).toLowerCase() !== 'true') {\n this.closeTabs_();\n }\n this.openTab_(panel, tab, tabpanel);\n }\n }\n };\n\n /**\n * Open tabs\n * @private\n */\n MaterialExtAccordion.prototype.openTabs_ = function() {\n if (this.element_.getAttribute(ARIA_MULTISELECTABLE).toLowerCase() === 'true') {\n [...this.element_.querySelectorAll(`.${ACCORDION} > .${PANEL}`)]\n .filter(panel => !panel.classList.contains(IS_EXPANDED))\n .forEach(closedItem => {\n const tab = closedItem.querySelector(`.${TAB}`);\n if (!tab.hasAttribute('disabled')) {\n this.openTab_(closedItem, tab, closedItem.querySelector(`.${TABPANEL}`));\n }\n });\n }\n };\n\n /**\n * Close tabs\n * @private\n */\n MaterialExtAccordion.prototype.closeTabs_ = function() {\n [...this.element_.querySelectorAll(`.${ACCORDION} > .${PANEL}.${IS_EXPANDED}`)]\n .forEach( panel => {\n const tab = panel.querySelector(`.${TAB}`);\n if(!tab.hasAttribute('disabled')) {\n this.closeTab_(panel, tab, panel.querySelector(`.${TABPANEL}`));\n }\n });\n };\n\n\n // Public methods.\n\n /**\n * Upgrade an individual accordion tab\n * @public\n * @param {Element} tabElement The HTML element for the accordion panel.\n */\n MaterialExtAccordion.prototype.upgradeTab = function( tabElement ) {\n\n const { panel, tab, tabpanel } = accordionPanelElements( tabElement );\n\n const disableTab = () => {\n panel.classList.remove(IS_EXPANDED);\n tab.setAttribute('tabindex', '-1');\n tab.setAttribute(ARIA_EXPANDED, 'false');\n tabpanel.setAttribute('hidden', '');\n tabpanel.setAttribute(ARIA_HIDDEN, 'true');\n };\n\n const enableTab = () => {\n if(!tab.hasAttribute(ARIA_EXPANDED)) {\n tab.setAttribute(ARIA_EXPANDED, 'false');\n }\n\n tab.setAttribute('tabindex', '0');\n\n if(tab.getAttribute(ARIA_EXPANDED).toLowerCase() === 'true') {\n panel.classList.add(IS_EXPANDED);\n tabpanel.removeAttribute('hidden');\n tabpanel.setAttribute(ARIA_HIDDEN, 'false');\n }\n else {\n panel.classList.remove(IS_EXPANDED);\n tabpanel.setAttribute('hidden', '');\n tabpanel.setAttribute(ARIA_HIDDEN, 'true');\n }\n };\n\n // In horizontal layout, caption must have a max-width defined to prevent pushing elements to the right of the caption out of view.\n // In JsDom, offsetWidth and offsetHeight properties do not work, so this function is not testable.\n /* istanbul ignore next */\n const calcMaxTabCaptionWidth = () => {\n\n const tabCaption = tab.querySelector(`.${TAB_CAPTION}`);\n if(tabCaption !== null) {\n const w = [...tab.children]\n .filter( el => el.classList && !el.classList.contains(TAB_CAPTION) )\n .reduce( (v, el) => v + el.offsetWidth, 0 );\n\n const maxWidth = tab.clientHeight - w;\n if(maxWidth > 0) {\n tabCaption.style['max-width'] = `${maxWidth}px`;\n }\n }\n };\n\n const selectTab = () => {\n if( !tab.hasAttribute(ARIA_SELECTED) ) {\n [...this.element_.querySelectorAll(`.${TAB}[aria-selected=\"true\"]`)].forEach(\n selectedTab => selectedTab.removeAttribute(ARIA_SELECTED)\n );\n tab.setAttribute(ARIA_SELECTED, 'true');\n }\n };\n\n const tabClickHandler = () => {\n this.toggleTab_(panel, tab, tabpanel);\n selectTab();\n };\n\n const tabFocusHandler = () => {\n selectTab();\n };\n\n const tabpanelClickHandler = () => {\n selectTab();\n };\n\n const tabpanelFocusHandler = () => {\n selectTab();\n };\n\n const tabKeydownHandler = e => {\n\n if(this.element_.hasAttribute('disabled')) {\n return;\n }\n\n if ( e.keyCode === VK_END || e.keyCode === VK_HOME\n || e.keyCode === VK_ARROW_UP || e.keyCode === VK_ARROW_LEFT\n || e.keyCode === VK_ARROW_DOWN || e.keyCode === VK_ARROW_RIGHT ) {\n\n let nextTab = null;\n let keyCode = e.keyCode;\n\n if (keyCode === VK_HOME) {\n nextTab = this.element_.querySelector(`.${PANEL}:first-child > .${TAB}`);\n if(nextTab && nextTab.hasAttribute('disabled')) {\n nextTab = null;\n keyCode = VK_ARROW_DOWN;\n }\n }\n else if (keyCode === VK_END) {\n nextTab = this.element_.querySelector(`.${PANEL}:last-child > .${TAB}`);\n if(nextTab && nextTab.hasAttribute('disabled')) {\n nextTab = null;\n keyCode = VK_ARROW_UP;\n }\n }\n\n if(!nextTab) {\n let nextPanel = panel;\n\n do {\n if (keyCode === VK_ARROW_UP || keyCode === VK_ARROW_LEFT) {\n nextPanel = nextPanel.previousElementSibling;\n if(!nextPanel) {\n nextPanel = this.element_.querySelector(`.${PANEL}:last-child`);\n }\n if (nextPanel) {\n nextTab = nextPanel.querySelector(`.${PANEL} > .${TAB}`);\n }\n }\n else if (keyCode === VK_ARROW_DOWN || keyCode === VK_ARROW_RIGHT) {\n nextPanel = nextPanel.nextElementSibling;\n if(!nextPanel) {\n nextPanel = this.element_.querySelector(`.${PANEL}:first-child`);\n }\n if (nextPanel) {\n nextTab = nextPanel.querySelector(`.${PANEL} > .${TAB}`);\n }\n }\n\n if(nextTab && nextTab.hasAttribute('disabled')) {\n nextTab = null;\n }\n else {\n break;\n }\n }\n while(nextPanel !== panel);\n }\n\n if (nextTab) {\n e.preventDefault();\n e.stopPropagation();\n nextTab.focus();\n\n // Workaround for JSDom testing:\n // In JsDom 'element.focus()' does not trigger any focus event\n if(!nextTab.hasAttribute(ARIA_SELECTED)) {\n\n [...this.element_.querySelectorAll(`.${TAB}[aria-selected=\"true\"]`)]\n .forEach( selectedTab => selectedTab.removeAttribute(ARIA_SELECTED) );\n\n nextTab.setAttribute(ARIA_SELECTED, 'true');\n }\n }\n }\n else if (e.keyCode === VK_ENTER || e.keyCode === VK_SPACE) {\n e.preventDefault();\n e.stopPropagation();\n this.toggleTab_(panel, tab, tabpanel);\n }\n };\n\n if(tab === null) {\n throw new Error('There must be a tab element for each accordion panel.');\n }\n\n if(tabpanel === null) {\n throw new Error('There must be a tabpanel element for each accordion panel.');\n }\n\n panel.setAttribute('role', PANEL_ROLE);\n tab.setAttribute('role', TAB_ROLE);\n tabpanel.setAttribute('role', TABPANEL_ROLE);\n\n if(tab.hasAttribute('disabled')) {\n disableTab();\n }\n else {\n enableTab();\n }\n\n if( this.element_.classList.contains(ACCORDION_HORIZONTAL)) {\n calcMaxTabCaptionWidth();\n }\n\n if (this.element_.classList.contains(RIPPLE_EFFECT)) {\n tab.classList.add(RIPPLE);\n }\n\n if (this.element_.classList.contains(ANIMATION_EFFECT)) {\n tabpanel.classList.add(ANIMATION);\n }\n\n // Remove listeners, just in case ...\n tab.removeEventListener('click', tabClickHandler);\n tab.removeEventListener('focus', tabFocusHandler);\n tab.removeEventListener('keydown', tabKeydownHandler);\n tabpanel.removeEventListener('click', tabpanelClickHandler);\n tabpanel.removeEventListener('focus', tabpanelFocusHandler);\n\n tab.addEventListener('click', tabClickHandler);\n tab.addEventListener('focus', tabFocusHandler);\n tab.addEventListener('keydown', tabKeydownHandler);\n tabpanel.addEventListener('click', tabpanelClickHandler, true);\n tabpanel.addEventListener('focus', tabpanelFocusHandler, true);\n };\n MaterialExtAccordion.prototype['upgradeTab'] = MaterialExtAccordion.prototype.upgradeTab;\n\n\n /**\n * Execute command\n * @param detail\n */\n MaterialExtAccordion.prototype.command = function( detail ) {\n\n const openTab = tabElement => {\n\n if(tabElement === undefined) {\n this.openTabs_();\n }\n else if(tabElement !== null) {\n const { panel, tab, tabpanel } = accordionPanelElements( tabElement );\n if(tab.getAttribute(ARIA_EXPANDED).toLowerCase() !== 'true') {\n this.toggleTab_(panel, tab, tabpanel);\n }\n }\n };\n\n const closeTab = tabElement => {\n if(tabElement === undefined) {\n this.closeTabs_();\n }\n else if(tabElement !== null) {\n const { panel, tab, tabpanel } = accordionPanelElements( tabElement );\n\n if(tab.getAttribute(ARIA_EXPANDED).toLowerCase() === 'true') {\n this.toggleTab_(panel, tab, tabpanel);\n }\n }\n };\n\n const toggleTab = tabElement => {\n if(tabElement) {\n const { panel, tab, tabpanel } = accordionPanelElements( tabElement );\n this.toggleTab_(panel, tab, tabpanel);\n }\n };\n\n\n if(detail && detail.action) {\n const { action, target } = detail;\n\n switch (action.toLowerCase()) {\n case 'open':\n openTab(target);\n break;\n case 'close':\n closeTab(target);\n break;\n case 'toggle':\n toggleTab(target);\n break;\n case 'upgrade':\n if(target) {\n this.upgradeTab(target);\n }\n break;\n default:\n throw new Error(`Unknown action \"${action}\". Action must be one of \"open\", \"close\", \"toggle\" or \"upgrade\"`);\n }\n }\n };\n MaterialExtAccordion.prototype['command'] = MaterialExtAccordion.prototype.command;\n\n\n /**\n * Initialize component\n */\n MaterialExtAccordion.prototype.init = function() {\n if (this.element_) {\n // Do the init required for this component to work\n if( !(this.element_.classList.contains(ACCORDION_HORIZONTAL) || this.element_.classList.contains(ACCORDION_VERTICAL))) {\n throw new Error(`Accordion must have one of the classes \"${ACCORDION_HORIZONTAL}\" or \"${ACCORDION_VERTICAL}\"`);\n }\n\n this.element_.setAttribute('role', 'tablist');\n\n if(!this.element_.hasAttribute(ARIA_MULTISELECTABLE)) {\n this.element_.setAttribute(ARIA_MULTISELECTABLE, 'false');\n }\n\n this.element_.removeEventListener('command', this.commandHandler_);\n this.element_.addEventListener('command', this.commandHandler_.bind(this), false);\n\n [...this.element_.querySelectorAll(`.${ACCORDION} > .${PANEL}`)].forEach( panel => this.upgradeTab(panel) );\n\n // Set upgraded flag\n this.element_.classList.add(IS_UPGRADED);\n }\n };\n\n\n /*\n * Downgrade component\n * E.g remove listeners and clean up resources\n *\n * Nothing to downgrade\n *\n MaterialExtAccordion.prototype.mdlDowngrade_ = function() {\n 'use strict';\n console.log('***** MaterialExtAccordion.mdlDowngrade');\n };\n */\n\n\n // The component registers itself. It can assume componentHandler is available\n // in the global scope.\n /* eslint no-undef: 0 */\n componentHandler.register({\n constructor: MaterialExtAccordion,\n classAsString: 'MaterialExtAccordion',\n cssClass: 'mdlext-js-accordion',\n widget: true\n });\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/accordion/accordion.js","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n/**\n * Image carousel\n */\n\nimport intervalFunction from '../utils/interval-function';\nimport { inOutQuintic } from '../utils/easing';\nimport { jsonStringToObject} from '../utils/json-utils';\nimport {\n VK_TAB,\n VK_ENTER,\n VK_ESC,\n VK_SPACE,\n VK_PAGE_UP,\n VK_PAGE_DOWN,\n VK_END,\n VK_HOME,\n VK_ARROW_LEFT,\n VK_ARROW_UP,\n VK_ARROW_RIGHT,\n VK_ARROW_DOWN,\n IS_UPGRADED,\n IS_FOCUSED,\n MDL_RIPPLE,\n MDL_RIPPLE_COMPONENT,\n MDL_RIPPLE_EFFECT,\n MDL_RIPPLE_EFFECT_IGNORE_EVENTS\n} from '../utils/constants';\n\nconst MDL_RIPPLE_CONTAINER = 'mdlext-carousel__slide__ripple-container';\n\n\n(function() {\n 'use strict';\n\n //const CAROUSEL = 'mdlext-carousel';\n const SLIDE = 'mdlext-carousel__slide';\n const ROLE = 'list';\n const SLIDE_ROLE = 'listitem';\n\n\n /**\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\n const MaterialExtCarousel = function MaterialExtCarousel(element) {\n // Stores the element.\n this.element_ = element;\n\n // Default config\n this.config_ = {\n interactive : true,\n autostart : false,\n type : 'slide',\n interval : 1000,\n animationLoop: intervalFunction(1000)\n };\n\n this.scrollAnimation_ = intervalFunction(33);\n\n // Initialize instance.\n this.init();\n };\n\n window['MaterialExtCarousel'] = MaterialExtCarousel;\n\n\n /**\n * Start slideshow animation\n * @private\n */\n MaterialExtCarousel.prototype.startSlideShow_ = function() {\n\n const nextSlide = () => {\n let slide = this.element_.querySelector(`.${SLIDE}[aria-selected]`);\n if(slide) {\n slide.removeAttribute('aria-selected');\n slide = slide.nextElementSibling;\n }\n if(!slide) {\n slide = this.element_.querySelector(`.${SLIDE}:first-child`);\n this.animateScroll_(0);\n }\n if(slide) {\n this.moveSlideIntoViewport_(slide);\n slide.setAttribute('aria-selected', '');\n this.emitSelectEvent_('next', null, slide);\n return true;\n }\n return false;\n };\n\n const nextScroll = direction => {\n let nextDirection = direction;\n\n if('next' === direction && this.element_.scrollLeft === this.element_.scrollWidth - this.element_.clientWidth) {\n nextDirection = 'prev';\n }\n else if(this.element_.scrollLeft === 0) {\n nextDirection = 'next';\n }\n const x = 'next' === nextDirection\n ? Math.min(this.element_.scrollLeft + this.element_.clientWidth, this.element_.scrollWidth - this.element_.clientWidth)\n : Math.max(this.element_.scrollLeft - this.element_.clientWidth, 0);\n\n this.animateScroll_(x, 1000);\n return nextDirection;\n };\n\n\n if(!this.config_.animationLoop.started) {\n this.config_.animationLoop.interval = this.config_.interval;\n let direction = 'next';\n\n if('scroll' === this.config_.type) {\n this.config_.animationLoop.start( () => {\n direction = nextScroll(direction);\n return true; // It runs until cancelSlideShow_ is triggered\n });\n }\n else {\n nextSlide();\n this.config_.animationLoop.start( () => {\n return nextSlide(); // It runs until cancelSlideShow_ is triggered\n });\n }\n }\n\n // TODO: Pause animation when carousel is not in browser viewport or user changes tab\n };\n\n /**\n * Cancel slideshow if running. Emmits a 'pause' event\n * @private\n */\n MaterialExtCarousel.prototype.cancelSlideShow_ = function() {\n if(this.config_.animationLoop.started) {\n this.config_.animationLoop.stop();\n this.emitSelectEvent_('pause', VK_ESC, this.element_.querySelector(`.${SLIDE}[aria-selected]`));\n }\n };\n\n /**\n * Animate scroll\n * @param newPosition\n * @param newDuration\n * @param completedCallback\n * @private\n */\n MaterialExtCarousel.prototype.animateScroll_ = function( newPosition, newDuration, completedCallback ) {\n\n const start = this.element_.scrollLeft;\n const distance = newPosition - start;\n\n if(distance !== 0) {\n const duration = Math.max(Math.min(Math.abs(distance), newDuration||400), 100); // duration is between 100 and newDuration||400ms||distance\n let t = 0;\n this.scrollAnimation_.stop();\n this.scrollAnimation_.start( timeElapsed => {\n t += timeElapsed;\n if(t < duration) {\n this.element_.scrollLeft = inOutQuintic(t, start, distance, duration);\n return true;\n }\n else {\n this.element_.scrollLeft = newPosition;\n if(completedCallback) {\n completedCallback();\n }\n return false;\n }\n });\n }\n else {\n if(completedCallback) {\n completedCallback();\n }\n }\n };\n\n /**\n * Execute commend\n * @param event\n * @private\n */\n MaterialExtCarousel.prototype.command_ = function( event ) {\n let x = 0;\n let slide = null;\n const a = event.detail.action.toLowerCase();\n\n // Cancel slideshow if running\n this.cancelSlideShow_();\n\n switch (a) {\n case 'first':\n slide = this.element_.querySelector(`.${SLIDE}:first-child`);\n break;\n\n case 'last':\n x = this.element_.scrollWidth - this.element_.clientWidth;\n slide = this.element_.querySelector(`.${SLIDE}:last-child`);\n break;\n\n case 'scroll-prev':\n x = Math.max(this.element_.scrollLeft - this.element_.clientWidth, 0);\n break;\n\n case 'scroll-next':\n x = Math.min(this.element_.scrollLeft + this.element_.clientWidth, this.element_.scrollWidth - this.element_.clientWidth);\n break;\n\n case 'next':\n case 'prev':\n slide = this.element_.querySelector(`.${SLIDE}[aria-selected]`);\n if(slide) {\n slide = a === 'next' ? slide.nextElementSibling : slide.previousElementSibling;\n this.setAriaSelected_(slide);\n this.emitSelectEvent_(a, null, slide);\n }\n return;\n\n case 'play':\n Object.assign(this.config_, event.detail);\n this.startSlideShow_();\n return;\n\n case 'pause':\n return;\n\n default:\n return;\n }\n\n this.animateScroll_(x, undefined, () => {\n if ('scroll-next' === a || 'scroll-prev' === a) {\n const slides = this.getSlidesInViewport_();\n if (slides.length > 0) {\n slide = 'scroll-next' === a ? slides[0] : slides[slides.length - 1];\n }\n }\n this.setAriaSelected_(slide);\n this.emitSelectEvent_(a, null, slide);\n });\n };\n\n /**\n * Handles custom command event, 'scroll-prev', 'scroll-next', 'first', 'last', next, prev, play, pause\n * @param event. A custom event\n * @private\n */\n MaterialExtCarousel.prototype.commandHandler_ = function( event ) {\n event.preventDefault();\n event.stopPropagation();\n if(event.detail && event.detail.action) {\n this.command_(event);\n }\n };\n\n /**\n * Handle keypress\n * @param event\n * @private\n */\n MaterialExtCarousel.prototype.keyDownHandler_ = function(event) {\n\n if (event && event.target && event.target !== this.element_) {\n\n let action = 'first';\n\n if ( event.keyCode === VK_HOME || event.keyCode === VK_END\n || event.keyCode === VK_PAGE_UP || event.keyCode === VK_PAGE_DOWN) {\n\n event.preventDefault();\n if (event.keyCode === VK_END) {\n action = 'last';\n }\n else if (event.keyCode === VK_PAGE_UP) {\n action = 'scroll-prev';\n }\n else if (event.keyCode === VK_PAGE_DOWN) {\n action = 'scroll-next';\n }\n\n const cmd = new CustomEvent('select', {\n detail: {\n action: action,\n }\n });\n this.command_(cmd);\n }\n else if ( event.keyCode === VK_TAB\n || event.keyCode === VK_ENTER || event.keyCode === VK_SPACE\n || event.keyCode === VK_ARROW_UP || event.keyCode === VK_ARROW_LEFT\n || event.keyCode === VK_ARROW_DOWN || event.keyCode === VK_ARROW_RIGHT) {\n\n let slide = getSlide_(event.target);\n\n if(!slide) {\n return;\n }\n\n // Cancel slideshow if running\n this.cancelSlideShow_();\n\n switch (event.keyCode) {\n case VK_ARROW_UP:\n case VK_ARROW_LEFT:\n action = 'prev';\n slide = slide.previousElementSibling;\n break;\n\n case VK_ARROW_DOWN:\n case VK_ARROW_RIGHT:\n action = 'next';\n slide = slide.nextElementSibling;\n break;\n\n case VK_TAB:\n if (event.shiftKey) {\n action = 'prev';\n slide = slide.previousElementSibling;\n }\n else {\n action = 'next';\n slide = slide.nextElementSibling;\n }\n break;\n\n case VK_SPACE:\n case VK_ENTER:\n action = 'select';\n break;\n }\n\n if(slide) {\n event.preventDefault();\n setFocus_(slide);\n this.emitSelectEvent_(action, event.keyCode, slide);\n }\n }\n }\n };\n\n /**\n * Handle dragging\n * @param event\n * @private\n */\n MaterialExtCarousel.prototype.dragHandler_ = function(event) {\n event.preventDefault();\n\n // Cancel slideshow if running\n this.cancelSlideShow_();\n\n let updating = false;\n let rAFDragId = 0;\n\n const startX = event.clientX || (event.touches !== undefined ? event.touches[0].clientX : 0);\n let prevX = startX;\n const targetElement = event.target;\n\n const update = e => {\n const currentX = (e.clientX || (e.touches !== undefined ? e.touches[0].clientX : 0));\n const dx = prevX - currentX;\n\n if(dx < 0) {\n this.element_.scrollLeft = Math.max(this.element_.scrollLeft + dx, 0);\n }\n else if(dx > 0) {\n this.element_.scrollLeft = Math.min(this.element_.scrollLeft + dx, this.element_.scrollWidth - this.element_.clientWidth);\n }\n\n prevX = currentX;\n updating = false;\n };\n\n // drag handler\n const drag = e => {\n e.preventDefault();\n\n if(!updating) {\n rAFDragId = window.requestAnimationFrame( () => update(e));\n updating = true;\n }\n };\n\n // end drag handler\n const endDrag = e => {\n e.preventDefault();\n\n this.element_.removeEventListener('mousemove', drag);\n this.element_.removeEventListener('touchmove', drag);\n window.removeEventListener('mouseup', endDrag);\n window.removeEventListener('touchend', endDrag);\n\n // cancel any existing drag rAF, see: http://www.html5rocks.com/en/tutorials/speed/animations/\n window.cancelAnimationFrame(rAFDragId);\n\n const slide = getSlide_(targetElement);\n setFocus_(slide);\n this.emitSelectEvent_('click', null, slide);\n };\n\n this.element_.addEventListener('mousemove', drag);\n this.element_.addEventListener('touchmove', drag);\n window.addEventListener('mouseup', endDrag);\n window.addEventListener('touchend',endDrag);\n };\n\n /**\n * Handle click\n * @param event\n * @private\n */\n MaterialExtCarousel.prototype.clickHandler_ = function(event) {\n // Click is handled by drag\n event.preventDefault();\n };\n\n /**\n * Handle focus\n * @param event\n * @private\n */\n MaterialExtCarousel.prototype.focusHandler_ = function(event) {\n const slide = getSlide_(event.target);\n if(slide) {\n // The last focused/selected slide has 'aria-selected', even if focus is lost\n this.setAriaSelected_(slide);\n slide.classList.add(IS_FOCUSED);\n }\n };\n\n /**\n * Handle blur\n * @param event\n * @private\n */\n MaterialExtCarousel.prototype.blurHandler_ = function(event) {\n const slide = getSlide_(event.target);\n if(slide) {\n slide.classList.remove(IS_FOCUSED);\n }\n };\n\n /**\n * Emits a custeom 'select' event\n * @param command\n * @param keyCode\n * @param slide\n * @private\n */\n MaterialExtCarousel.prototype.emitSelectEvent_ = function(command, keyCode, slide) {\n\n if(slide) {\n this.moveSlideIntoViewport_(slide);\n\n const evt = new CustomEvent('select', {\n bubbles: true,\n cancelable: true,\n detail: {\n command: command,\n keyCode: keyCode,\n source: slide\n }\n });\n this.element_.dispatchEvent(evt);\n }\n };\n\n /**\n * Get the first visible slide in component viewport\n * @private\n */\n MaterialExtCarousel.prototype.getSlidesInViewport_ = function() {\n const carouselRect = this.element_.getBoundingClientRect();\n\n const slidesInViewport = [...this.element_.querySelectorAll(`.${SLIDE}`)].filter( slide => {\n const slideRect = slide.getBoundingClientRect();\n return slideRect.left >= carouselRect.left && slideRect.right <= carouselRect.right;\n });\n return slidesInViewport;\n };\n\n /**\n * Move slide into component viewport - if needed\n * @param slide\n * @private\n */\n MaterialExtCarousel.prototype.moveSlideIntoViewport_ = function(slide) {\n const carouselRect = this.element_.getBoundingClientRect();\n const slideRect = slide.getBoundingClientRect();\n\n if(slideRect.left < carouselRect.left) {\n const x = this.element_.scrollLeft - (carouselRect.left - slideRect.left);\n this.animateScroll_(x);\n }\n else if(slideRect.right > carouselRect.right) {\n const x = this.element_.scrollLeft - (carouselRect.right - slideRect.right);\n this.animateScroll_(x);\n }\n };\n\n\n /**\n * Removes 'aria-selected' from all slides in carousel\n * @private\n */\n MaterialExtCarousel.prototype.setAriaSelected_ = function(slide) {\n if(slide) {\n [...this.element_.querySelectorAll(`.${SLIDE}[aria-selected]`)].forEach(\n slide => slide.removeAttribute('aria-selected')\n );\n slide.setAttribute('aria-selected', '');\n }\n };\n\n /**\n * Removes event listeners\n * @private\n */\n MaterialExtCarousel.prototype.removeListeners_ = function() {\n this.element_.removeEventListener('focus', this.focusHandler_);\n this.element_.removeEventListener('blur', this.blurHandler_);\n this.element_.removeEventListener('keydown', this.keyDownHandler_);\n this.element_.removeEventListener('mousedown', this.dragHandler_);\n this.element_.removeEventListener('touchstart', this.dragHandler_);\n this.element_.removeEventListener('click', this.clickHandler_, false);\n this.element_.removeEventListener('command', this.commandHandler_);\n this.element_.removeEventListener('mdl-componentdowngraded', this.mdlDowngrade_);\n };\n\n\n // Helpers\n const getSlide_ = element => {\n return element.closest(`.${SLIDE}`);\n };\n\n const setFocus_ = slide => {\n if(slide) {\n slide.focus();\n }\n };\n\n const addRipple_ = slide => {\n if(!slide.querySelector(`.${MDL_RIPPLE_CONTAINER}`)) {\n const rippleContainer = document.createElement('span');\n rippleContainer.classList.add(MDL_RIPPLE_CONTAINER);\n rippleContainer.classList.add(MDL_RIPPLE_EFFECT);\n const ripple = document.createElement('span');\n ripple.classList.add(MDL_RIPPLE);\n rippleContainer.appendChild(ripple);\n\n const img = slide.querySelector('img');\n if (img) {\n // rippleContainer blocks image title\n rippleContainer.title = img.title;\n }\n slide.appendChild(rippleContainer);\n componentHandler.upgradeElement(rippleContainer, MDL_RIPPLE_COMPONENT);\n }\n };\n // End helpers\n\n\n // Public methods.\n\n /**\n * Cancel animation - if running.\n *\n * @public\n */\n MaterialExtCarousel.prototype.stopAnimation = function() {\n this.config_.animationLoop.stop();\n };\n MaterialExtCarousel.prototype['stopAnimation'] = MaterialExtCarousel.prototype.stopAnimation;\n\n\n /**\n * Upgrade slides\n * Use if more list elements are added later (dynamically)\n *\n * @public\n */\n MaterialExtCarousel.prototype.upgradeSlides = function() {\n\n const hasRippleEffect = this.element_.classList.contains(MDL_RIPPLE_EFFECT);\n\n [...this.element_.querySelectorAll(`.${SLIDE}`)].forEach( slide => {\n\n slide.setAttribute('role', SLIDE_ROLE);\n\n if(this.config_.interactive) {\n if(!slide.getAttribute('tabindex')) {\n slide.setAttribute('tabindex', '0');\n }\n if (hasRippleEffect) {\n addRipple_(slide);\n }\n }\n else {\n slide.setAttribute('tabindex', '-1');\n }\n });\n };\n MaterialExtCarousel.prototype['upgradeSlides'] = MaterialExtCarousel.prototype.upgradeSlides;\n\n\n /**\n * Get config object\n *\n * @public\n */\n MaterialExtCarousel.prototype.getConfig = function() {\n return this.config_;\n };\n MaterialExtCarousel.prototype['getConfig'] = MaterialExtCarousel.prototype.getConfig;\n\n /**\n * Initialize component\n */\n MaterialExtCarousel.prototype.init = function() {\n\n if (this.element_) {\n // Config\n if(this.element_.hasAttribute('data-config')) {\n this.config_ = jsonStringToObject(this.element_.getAttribute('data-config'), this.config_);\n }\n\n // Wai-Aria\n this.element_.setAttribute('role', ROLE);\n\n // Prefer tabindex -1\n if(!Number.isInteger(this.element_.getAttribute('tabindex'))) {\n this.element_.setAttribute('tabindex', -1);\n }\n\n // Remove listeners, just in case ...\n this.removeListeners_();\n\n if(this.config_.interactive) {\n\n // Ripple\n const hasRippleEffect = this.element_.classList.contains(MDL_RIPPLE_EFFECT);\n if (hasRippleEffect) {\n this.element_.classList.add(MDL_RIPPLE_EFFECT_IGNORE_EVENTS);\n }\n\n // Listen to focus/blur events\n this.element_.addEventListener('focus', this.focusHandler_.bind(this), true);\n this.element_.addEventListener('blur', this.blurHandler_.bind(this), true);\n\n // Listen to keyboard events\n this.element_.addEventListener('keydown', this.keyDownHandler_.bind(this), false);\n\n // Listen to drag events\n this.element_.addEventListener('mousedown', this.dragHandler_.bind(this), false);\n this.element_.addEventListener('touchstart', this.dragHandler_.bind(this), false);\n\n // Listen to click events\n this.element_.addEventListener('click', this.clickHandler_.bind(this), false);\n }\n\n // Listen to custom 'command' event\n this.element_.addEventListener('command', this.commandHandler_.bind(this), false);\n\n // Listen to 'mdl-componentdowngraded' event\n this.element_.addEventListener('mdl-componentdowngraded', this.mdlDowngrade_.bind(this));\n\n // Slides collection\n this.upgradeSlides();\n\n // Set upgraded flag\n this.element_.classList.add(IS_UPGRADED);\n\n if(this.config_.autostart) {\n // Start slideshow\n this.startSlideShow_();\n }\n }\n };\n\n /*\n * Downgrade component\n * E.g remove listeners and clean up resources\n */\n MaterialExtCarousel.prototype.mdlDowngrade_ = function() {\n 'use strict';\n //console.log('***** MaterialExtCarousel.mdlDowngrade_');\n\n // Stop animation - if any\n this.stopAnimation();\n\n // Remove listeners\n this.removeListeners_();\n };\n\n // The component registers itself. It can assume componentHandler is available\n // in the global scope.\n /* eslint no-undef: 0 */\n componentHandler.register({\n constructor: MaterialExtCarousel,\n classAsString: 'MaterialExtCarousel',\n cssClass: 'mdlext-js-carousel',\n widget: true\n });\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/carousel/carousel.js","/**\n * @license\n * Copyright 2016-2017 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n\n/**\n * A collapsible is a component to mark expandable and collapsible regions.\n * The component use the aria-expanded state to indicate whether regions of\n * the content are collapsible, and to expose whether a region is currently\n * expanded or collapsed.\n * @see https://www.w3.org/WAI/GL/wiki/Using_the_WAI-ARIA_aria-expanded_state_to_mark_expandable_and_collapsible_regions\n */\n\nimport {\n IS_UPGRADED,\n VK_SPACE,\n VK_ENTER,\n} from '../utils/constants';\n\nimport { randomString } from '../utils/string-utils';\nimport { getParentElements, isFocusable } from '../utils/dom-utils';\n\nconst JS_COLLAPSIBLE = 'mdlext-js-collapsible';\nconst COLLAPSIBLE_CONTROL_CLASS = 'mdlext-collapsible';\nconst COLLAPSIBLE_GROUP_CLASS = 'mdlext-collapsible-group';\nconst COLLAPSIBLE_REGION_CLASS = 'mdlext-collapsible-region';\n\n/**\n * The collapsible component\n */\n\nclass Collapsible {\n element_ = null;\n controlElement_ = null;\n\n /**\n * @constructor\n * @param {HTMLElement} element The element that this component is connected to.\n */\n constructor(element) {\n this.element_ = element;\n this.init();\n }\n\n keyDownHandler = event => {\n if (event.keyCode === VK_ENTER || event.keyCode === VK_SPACE) {\n event.preventDefault();\n\n // Trigger click\n (event.target || this.controlElement).dispatchEvent(\n new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n }\n };\n\n clickHandler = event => {\n if(!this.isDisabled) {\n if(event.target !== this.controlElement) {\n // Do not toggle if a focusable element inside the control element triggered the event\n const p = getParentElements(event.target, this.controlElement);\n p.push(event.target);\n if(p.find( el => isFocusable(el))) {\n return;\n }\n }\n this.toggle();\n }\n };\n\n get element() {\n return this.element_;\n }\n\n get controlElement() {\n return this.controlElement_;\n }\n\n get isDisabled() {\n return (this.controlElement.hasAttribute('disabled') &&\n this.controlElement.getAttribute('disabled').toLowerCase() !== 'false') ||\n (this.controlElement.hasAttribute('aria-disabled') &&\n this.controlElement.getAttribute('aria-disabled').toLowerCase() !== 'false');\n }\n\n get isExpanded() {\n return this.controlElement.hasAttribute('aria-expanded') &&\n this.controlElement.getAttribute('aria-expanded').toLowerCase() === 'true';\n }\n\n get regionIds() {\n return this.controlElement.hasAttribute('aria-controls')\n ? this.controlElement.getAttribute('aria-controls').split(' ')\n : [];\n }\n\n get regionElements() {\n return this.regionIds\n .map(id => document.querySelector(`#${id}`))\n .filter( el => el != null);\n }\n\n collapse() {\n if(!this.isDisabled && this.isExpanded) {\n if(this.dispatchToggleEvent('collapse')) {\n this.controlElement.setAttribute('aria-expanded', 'false');\n const regions = this.regionElements.slice(0);\n for (let i = regions.length - 1; i >= 0; --i) {\n regions[i].setAttribute('hidden', '');\n }\n }\n }\n }\n\n expand() {\n if(!this.isDisabled && !this.isExpanded) {\n if(this.dispatchToggleEvent('expand')) {\n this.controlElement.setAttribute('aria-expanded', 'true');\n this.regionElements.forEach(region => region.removeAttribute('hidden'));\n }\n }\n }\n\n toggle() {\n if (this.isExpanded) {\n this.collapse();\n }\n else {\n this.expand();\n }\n }\n\n dispatchToggleEvent(action) {\n return this.element.dispatchEvent(\n new CustomEvent('toggle', {\n bubbles: true,\n cancelable: true,\n detail: {\n action: action\n }\n })\n );\n }\n\n disableToggle() {\n this.controlElement.setAttribute('aria-disabled', true);\n }\n\n enableToggle() {\n this.controlElement.removeAttribute('aria-disabled');\n }\n\n addRegionId(regionId) {\n const ids = this.regionIds;\n if(!ids.find(id => regionId === id)) {\n ids.push(regionId);\n this.controlElement.setAttribute('aria-controls', ids.join(' '));\n }\n }\n\n addRegionElement(region) {\n if(!(region.classList.contains(COLLAPSIBLE_GROUP_CLASS) ||\n region.classList.contains(COLLAPSIBLE_REGION_CLASS))) {\n region.classList.add(COLLAPSIBLE_GROUP_CLASS);\n }\n\n if(!region.hasAttribute('role')) {\n const role = region.classList.contains(COLLAPSIBLE_GROUP_CLASS) ? 'group' : 'region';\n region.setAttribute('role', role);\n }\n\n if(!region.hasAttribute('id')) {\n region.id = `${region.getAttribute('role')}-${randomString()}`;\n }\n\n if(this.isExpanded) {\n region.removeAttribute('hidden');\n }\n else {\n region.setAttribute('hidden', '');\n }\n this.addRegionId(region.id);\n }\n\n removeRegionElement(region) {\n if(region && region.id) {\n const ids = this.regionIds.filter(id => id === region.id);\n this.controlElement.setAttribute('aria-controls', ids.join(' '));\n }\n }\n\n removeListeners() {\n this.controlElement.removeEventListener('keydown', this.keyDownHandler);\n this.controlElement.removeEventListener('click', this.clickHandler);\n }\n\n init() {\n const initControl = () => {\n // Find the button element\n this.controlElement_ = this.element.querySelector(`.${COLLAPSIBLE_CONTROL_CLASS}`) || this.element;\n\n // Add \"aria-expanded\" attribute if not present\n if(!this.controlElement.hasAttribute('aria-expanded')) {\n this.controlElement.setAttribute('aria-expanded', 'false');\n }\n\n // Add role=button if control != <button>\n if(this.controlElement.nodeName.toLowerCase() !== 'button') {\n this.controlElement.setAttribute('role', 'button');\n }\n\n // Add tabindex\n if(!isFocusable(this.controlElement) && !this.controlElement.hasAttribute('tabindex')) {\n this.controlElement.setAttribute('tabindex', '0');\n }\n };\n\n const initRegions = () => {\n let regions = [];\n if(!this.controlElement.hasAttribute('aria-controls')) {\n // Add siblings as collapsible region(s)\n let r = this.element.nextElementSibling;\n while(r) {\n if(r.classList.contains(COLLAPSIBLE_GROUP_CLASS) ||\n r.classList.contains(COLLAPSIBLE_REGION_CLASS)) {\n regions.push(r);\n }\n else if(r.classList.contains(JS_COLLAPSIBLE)) {\n // A new collapsible component\n break;\n }\n r = r.nextElementSibling;\n }\n }\n else {\n regions = this.regionElements;\n }\n regions.forEach(region => this.addRegionElement(region));\n };\n\n const addListeners = () => {\n this.controlElement.addEventListener('keydown', this.keyDownHandler);\n this.controlElement.addEventListener('click', this.clickHandler);\n };\n\n initControl();\n initRegions();\n this.removeListeners();\n addListeners();\n }\n\n downgrade() {\n this.removeListeners();\n }\n\n}\n\n(function() {\n 'use strict';\n\n /**\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n const MaterialExtCollapsible = function MaterialExtCollapsible(element) {\n this.element_ = element;\n this.collapsible = null;\n\n // Initialize instance.\n this.init();\n };\n window['MaterialExtCollapsible'] = MaterialExtCollapsible;\n\n /**\n * Initialize component\n */\n MaterialExtCollapsible.prototype.init = function() {\n if (this.element_) {\n this.collapsible = new Collapsible(this.element_);\n this.element_.classList.add(IS_UPGRADED);\n\n // Listen to 'mdl-componentdowngraded' event\n this.element_.addEventListener('mdl-componentdowngraded', this.mdlDowngrade_.bind(this));\n }\n };\n\n /*\n * Downgrade component\n * E.g remove listeners and clean up resources\n */\n MaterialExtCollapsible.prototype.mdlDowngrade_ = function() {\n this.collapsible.downgrade();\n };\n\n\n // Public methods.\n\n /**\n * Get control element.\n * @return {HTMLElement} element The element that controls the collapsible region.\n * @public\n */\n MaterialExtCollapsible.prototype.getControlElement = function() {\n return this.collapsible.controlElement;\n };\n MaterialExtCollapsible.prototype['getControlElement'] = MaterialExtCollapsible.prototype.getControlElement;\n\n /**\n * Get region elements controlled by this collapsible\n * @returns {Array<HTMLElement>} the collapsible region elements\n * @public\n */\n MaterialExtCollapsible.prototype.getRegionElements = function() {\n return this.collapsible.regionElements;\n };\n MaterialExtCollapsible.prototype['getRegionElements'] = MaterialExtCollapsible.prototype.getRegionElements;\n\n /**\n * Add region elements.\n * @param {Array<HTMLElement>} elements The element that will be upgraded.\n * @return {void}\n * @public\n */\n MaterialExtCollapsible.prototype.addRegionElements = function(...elements) {\n elements.forEach(element => this.collapsible.addRegionElement(element));\n };\n MaterialExtCollapsible.prototype['addRegionElements'] = MaterialExtCollapsible.prototype.addRegionElements;\n\n /**\n * Remove collapsible region(s) from component.\n * Note: This operation does not delete the element from the DOM tree.\n * @param {Array<HTMLElement>} elements The element that will be upgraded.\n * @public\n */\n MaterialExtCollapsible.prototype.removeRegionElements = function(...elements) {\n elements.forEach(element => this.collapsible.removeRegionElement(element));\n };\n MaterialExtCollapsible.prototype['removeRegionElements'] = MaterialExtCollapsible.prototype.removeRegionElements;\n\n /**\n * Expand collapsible region(s)\n * @return {void}\n * @public\n */\n MaterialExtCollapsible.prototype.expand = function() {\n this.collapsible.expand();\n };\n MaterialExtCollapsible.prototype['expand'] = MaterialExtCollapsible.prototype.expand;\n\n /**\n * Collapse collapsible region(s)\n * @return {void}\n * @public\n */\n MaterialExtCollapsible.prototype.collapse = function() {\n this.collapsible.collapse();\n };\n MaterialExtCollapsible.prototype['collapse'] = MaterialExtCollapsible.prototype.collapse;\n\n /**\n * Toggle collapsible region(s)\n * @return {void}\n * @public\n */\n MaterialExtCollapsible.prototype.toggle = function() {\n this.collapsible.toggle();\n };\n MaterialExtCollapsible.prototype['toggle'] = MaterialExtCollapsible.prototype.toggle;\n\n /**\n * Check whether component has aria-expanded state true\n * @return {Boolean} true if aria-expanded=\"true\", otherwise false\n */\n MaterialExtCollapsible.prototype.isExpanded = function() {\n return this.collapsible.isExpanded;\n };\n MaterialExtCollapsible.prototype['isExpanded'] = MaterialExtCollapsible.prototype.isExpanded;\n\n /**\n * Check whether component has aria-disabled state set to true\n * @return {Boolean} true if aria-disabled=\"true\", otherwise false\n */\n MaterialExtCollapsible.prototype.isDisabled = function() {\n return this.collapsible.isDisabled;\n };\n MaterialExtCollapsible.prototype['isDisabled'] = MaterialExtCollapsible.prototype.isDisabled;\n\n /**\n * Disables toggling of collapsible region(s)\n * @return {void}\n * @public\n */\n MaterialExtCollapsible.prototype.disableToggle = function() {\n this.collapsible.disableToggle();\n };\n MaterialExtCollapsible.prototype['disableToggle'] = MaterialExtCollapsible.prototype.disableToggle;\n\n /**\n * Enables toggling of collapsible region(s)\n * @return {void}\n * @public\n */\n MaterialExtCollapsible.prototype.enableToggle = function() {\n this.collapsible.enableToggle();\n };\n MaterialExtCollapsible.prototype['enableToggle'] = MaterialExtCollapsible.prototype.enableToggle;\n\n // The component registers itself. It can assume componentHandler is available\n // in the global scope.\n /* eslint no-undef: 0 */\n componentHandler.register({\n constructor: MaterialExtCollapsible,\n classAsString: 'MaterialExtCollapsible',\n cssClass: JS_COLLAPSIBLE,\n widget: true\n });\n\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/collapsible/collapsible.js","/**\n * @license\n * Copyright 2016-2017 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n\nimport {jsonStringToObject} from '../utils/json-utils';\nimport {\n IS_UPGRADED,\n} from '../utils/constants';\n\nconst JS_FORMAT_FIELD = 'mdlext-js-formatfield';\nconst FORMAT_FIELD_COMPONENT = 'MaterialExtFormatfield';\n\n/**\n * Detect browser locale\n * @returns {string} the locale\n * @see http://stackoverflow.com/questions/1043339/javascript-for-detecting-browser-language-preference\n */\nconst browserLanguage = () => {\n return navigator.languages\n ? navigator.languages[0]\n : navigator.language || navigator.userLanguage;\n};\n\n/**\n * The formatfield formats an input field using language sensitive number formatting.\n */\n\nclass FormatField {\n static timer = null;\n\n element_;\n input_;\n options_ = {};\n intlGroupSeparator_;\n intlDecimalSeparator_;\n\n constructor(element) {\n this.element_ = element;\n this.init();\n }\n\n clickHandler = () => {\n clearTimeout(FormatField.timer);\n };\n\n focusInHandler = () => {\n if(!(this.input.readOnly || this.input.disabled)) {\n this.input.value = this.unformatInput();\n //setTimeout(() => this.input.setSelectionRange(0, this.input.value.length), 20);\n FormatField.timer = setTimeout(() => this.input.select(), 200);\n }\n };\n\n focusOutHandler = () => {\n clearTimeout(FormatField.timer);\n\n if(!(this.input.readOnly || this.input.disabled)) {\n this.formatValue();\n }\n };\n\n get element() {\n return this.element_;\n }\n\n get input() {\n return this.input_;\n }\n\n get options() {\n return this.options_;\n }\n\n stripSeparatorsFromValue() {\n const doReplace = () => this.input.value\n .replace(/\\s/g, '')\n .replace(new RegExp(this.options.groupSeparator, 'g'), '')\n .replace(this.options.decimalSeparator, '.');\n //.replace(this.intlGroupSeparator_, ''),\n //.replace(this.intlDecimalSeparator_, '.');\n\n return this.input.value ? doReplace() : this.input.value;\n }\n\n fixSeparators(value) {\n const doReplace = () => value\n .replace(new RegExp(this.intlGroupSeparator_, 'g'), this.options.groupSeparator)\n .replace(this.intlDecimalSeparator_, this.options.decimalSeparator);\n\n return value ? doReplace() : value;\n }\n\n formatValue() {\n if(this.input.value) {\n const v = new Intl.NumberFormat(this.options.locales, this.options)\n .format(this.stripSeparatorsFromValue());\n\n if('NaN' !== v) {\n this.input.value = this.fixSeparators(v);\n }\n }\n }\n\n unformat() {\n const doReplace = () => this.input.value\n .replace(/\\s/g, '')\n .replace(new RegExp(this.options.groupSeparator, 'g'), '')\n .replace(this.options.decimalSeparator, '.');\n\n return this.input.value ? doReplace() : this.input.value;\n }\n\n unformatInput() {\n const doReplace = () => this.input.value\n .replace(/\\s/g, '')\n .replace(new RegExp(this.options.groupSeparator, 'g'), '');\n\n return this.input.value ? doReplace() : this.input.value;\n }\n\n removeListeners() {\n this.input.removeEventListener('click', this.clickHandler);\n this.input.removeEventListener('focusin', this.focusInHandler);\n this.input.removeEventListener('focusout', this.focusOutHandler);\n }\n\n init() {\n const addListeners = () => {\n this.input.addEventListener('click', this.clickHandler);\n this.input.addEventListener('focusin', this.focusInHandler);\n this.input.addEventListener('focusout', this.focusOutHandler);\n };\n\n const addOptions = () => {\n const opts = this.element.getAttribute('data-formatfield-options') ||\n this.input.getAttribute('data-formatfield-options');\n if(opts) {\n this.options_ = jsonStringToObject(opts, this.options);\n }\n };\n\n const addLocale = () => {\n if(!this.options.locales) {\n this.options.locales = browserLanguage() || 'en-US'; //'nb-NO', //'en-US',\n }\n };\n\n const addGrouping = () => {\n const s = (1234.5).toLocaleString(this.options.locales, {\n style: 'decimal',\n useGrouping: true,\n minimumFractionDigits: 1,\n maximumFractionDigits: 1\n });\n\n this.intlGroupSeparator_ = s.charAt(1);\n this.intlDecimalSeparator_ = s.charAt(s.length-2);\n this.options.groupSeparator = this.options.groupSeparator || this.intlGroupSeparator_;\n this.options.decimalSeparator = this.options.decimalSeparator || this.intlDecimalSeparator_;\n\n if(this.options.groupSeparator === this.options.decimalSeparator) {\n const e = `Error! options.groupSeparator, \"${this.options.groupSeparator}\" ` +\n 'and options.decimalSeparator, ' +\n `\"${this.options.decimalSeparator}\" should not be equal`;\n throw new Error(e);\n }\n };\n\n this.input_ = this.element.querySelector('input') || this.element;\n\n addOptions();\n addLocale();\n addGrouping();\n this.formatValue();\n addListeners();\n }\n\n downgrade() {\n this.removeListeners();\n }\n\n}\n\n(function() {\n 'use strict';\n\n /**\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n const MaterialExtFormatfield = function MaterialExtFormatfield(element) {\n this.element_ = element;\n this.formatField_ = null;\n\n // Initialize instance.\n this.init();\n };\n window['MaterialExtFormatfield'] = MaterialExtFormatfield;\n\n /**\n * Initialize component\n */\n MaterialExtFormatfield.prototype.init = function() {\n if (this.element_) {\n this.element_.classList.add(IS_UPGRADED);\n this.formatField_ = new FormatField(this.element_);\n\n // Listen to 'mdl-componentdowngraded' event\n this.element_.addEventListener('mdl-componentdowngraded', this.mdlDowngrade_.bind(this));\n }\n };\n\n /**\n * Get options object\n *\n * @public\n *\n * @returns {Object} the options object\n */\n MaterialExtFormatfield.prototype.getOptions = function() {\n return this.formatField_.options;\n };\n MaterialExtFormatfield.prototype['getOptions'] = MaterialExtFormatfield.prototype.getOptions;\n\n\n /**\n * A unformatted value is a string value where the locale specific decimal separator\n * is replaced with a '.' separator and group separators are stripped.\n * The returned value is suitable for parsing to a JavaScript numerical value.\n *\n * @example\n * input.value = '1 234,5';\n * inputElement.MaterialExtFormatfield.getUnformattedValue();\n * // Returns '1234.5'\n *\n * @public\n *\n * @returns {String} the unformatted value\n */\n MaterialExtFormatfield.prototype.getUnformattedValue = function() {\n return this.formatField_.unformat();\n };\n MaterialExtFormatfield.prototype['getUnformattedValue'] = MaterialExtFormatfield.prototype.getUnformattedValue;\n\n /*\n * Downgrade component\n * E.g remove listeners and clean up resources\n */\n MaterialExtFormatfield.prototype.mdlDowngrade_ = function() {\n this.formatField_.downgrade();\n };\n\n // The component registers itself. It can assume componentHandler is available\n // in the global scope.\n /* eslint no-undef: 0 */\n componentHandler.register({\n constructor: MaterialExtFormatfield,\n classAsString: FORMAT_FIELD_COMPONENT,\n cssClass: JS_FORMAT_FIELD,\n widget: true\n });\n\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/formatfield/formatfield.js","import './utils';\nimport './accordion/accordion';\nimport './collapsible/collapsible';\nimport './carousel/carousel';\nimport './lightboard/lightboard';\nimport './lightbox/lightbox';\nimport './menu-button/menu-button';\nimport './selectfield/selectfield';\nimport './formatfield/formatfield';\nimport './sticky-header/sticky-header';\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n/**\n * A lightboard is a translucent surface illuminated from behind, used for situations\n * where a shape laid upon the surface needs to be seen with high contrast. In the \"old days\" of photography\n * photograpers used a lightboard to get a quick view of their slides. The goal is to create a responsive lightbox\n * design, based on flex layout, similar to what is used in Adobe LightRoom to browse images.\n */\n\nimport {\n VK_ENTER,\n VK_SPACE,\n VK_END,\n VK_HOME,\n VK_ARROW_LEFT,\n VK_ARROW_UP,\n VK_ARROW_RIGHT,\n VK_ARROW_DOWN,\n IS_UPGRADED,\n MDL_RIPPLE,\n MDL_RIPPLE_COMPONENT,\n MDL_RIPPLE_EFFECT,\n MDL_RIPPLE_EFFECT_IGNORE_EVENTS\n} from '../utils/constants';\n\nconst MDL_RIPPLE_CONTAINER = 'mdlext-lightboard__slide__ripple-container';\n\n(function() {\n 'use strict';\n\n //const LIGHTBOARD = 'mdlext-lightboard';\n const LIGHTBOARD_ROLE = 'grid';\n const SLIDE = 'mdlext-lightboard__slide';\n const SLIDE_ROLE = 'gridcell';\n const SLIDE_TABSTOP = 'mdlext-lightboard__slide__frame';\n /**\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\n const MaterialExtLightboard = function MaterialExtLightboard(element) {\n // Stores the element.\n this.element_ = element;\n\n // Initialize instance.\n this.init();\n };\n window['MaterialExtLightboard'] = MaterialExtLightboard;\n\n\n // Helpers\n const getSlide = element => {\n return element ? element.closest(`.${SLIDE}`) : null;\n };\n\n\n\n // Private methods.\n\n /**\n * Select a slide, i.e. set aria-selected=\"true\"\n * @param element\n * @private\n */\n MaterialExtLightboard.prototype.selectSlide_ = function(element) {\n const slide = getSlide(element);\n if( slide && !slide.hasAttribute('aria-selected') ) {\n [...this.element_.querySelectorAll(`.${SLIDE}[aria-selected=\"true\"]`)]\n .forEach(selectedSlide => selectedSlide.removeAttribute('aria-selected'));\n\n slide.setAttribute('aria-selected', 'true');\n }\n };\n\n\n /**\n * Dispatch select event\n * @param {Element} slide The slide that caused the event\n * @private\n */\n MaterialExtLightboard.prototype.dispatchSelectEvent_ = function ( slide ) {\n this.element_.dispatchEvent(\n new CustomEvent('select', {\n bubbles: true,\n cancelable: true,\n detail: { source: slide }\n })\n );\n };\n\n /**\n * Handles custom command event, 'first', 'next', 'prev', 'last', 'select' or upgrade\n * @param event. A custom event\n * @private\n */\n MaterialExtLightboard.prototype.commandHandler_ = function( event ) {\n event.preventDefault();\n event.stopPropagation();\n\n if(event && event.detail) {\n this.command(event.detail);\n }\n };\n\n\n // Public methods\n\n /**\n * Initialize lightboard slides\n * @public\n */\n MaterialExtLightboard.prototype.upgradeSlides = function() {\n\n const addRipple = slide => {\n // Use slide frame as ripple container\n if(!slide.querySelector(`.${MDL_RIPPLE_CONTAINER}`)) {\n const a = slide.querySelector(`.${SLIDE_TABSTOP}`);\n if(a) {\n const rippleContainer = a;\n rippleContainer.classList.add(MDL_RIPPLE_CONTAINER);\n rippleContainer.classList.add(MDL_RIPPLE_EFFECT);\n const ripple = document.createElement('span');\n ripple.classList.add(MDL_RIPPLE);\n rippleContainer.appendChild(ripple);\n componentHandler.upgradeElement(rippleContainer, MDL_RIPPLE_COMPONENT);\n }\n }\n };\n\n const hasRippleEffect = this.element_.classList.contains(MDL_RIPPLE_EFFECT);\n\n [...this.element_.querySelectorAll(`.${SLIDE}`)].forEach( slide => {\n\n slide.setAttribute('role', SLIDE_ROLE);\n\n if(!slide.querySelector('a')) {\n slide.setAttribute('tabindex', '0');\n }\n if(hasRippleEffect) {\n addRipple(slide);\n }\n });\n };\n MaterialExtLightboard.prototype['upgradeSlides'] = MaterialExtLightboard.prototype.upgradeSlides;\n\n\n /**\n * Execute command\n * @param detail\n * @public\n */\n MaterialExtLightboard.prototype.command = function( detail ) {\n\n const firstSlide = () => {\n return this.element_.querySelector(`.${SLIDE}:first-child`);\n };\n\n const lastSlide = () => {\n return this.element_.querySelector(`.${SLIDE}:last-child`);\n };\n\n const nextSlide = () => {\n const slide = this.element_.querySelector(`.${SLIDE}[aria-selected=\"true\"]`).nextElementSibling;\n return slide ? slide : firstSlide();\n };\n\n const prevSlide = () => {\n const slide = this.element_.querySelector(`.${SLIDE}[aria-selected=\"true\"]`).previousElementSibling;\n return slide ? slide : lastSlide();\n };\n\n if(detail && detail.action) {\n\n const { action, target } = detail;\n\n let slide;\n switch (action.toLowerCase()) {\n case 'select':\n slide = getSlide(target);\n this.dispatchSelectEvent_(slide);\n break;\n case 'first':\n slide = firstSlide();\n break;\n case 'next':\n slide = nextSlide();\n break;\n case 'prev':\n slide = prevSlide();\n break;\n case 'last':\n slide = lastSlide();\n break;\n case 'upgrade':\n this.upgradeSlides();\n break;\n default:\n throw new Error(`Unknown action \"${action}\". Action must be one of \"first\", \"next\", \"prev\", \"last\", \"select\" or \"upgrade\"`);\n }\n\n if (slide) {\n const a = slide.querySelector('a');\n if (a) {\n a.focus();\n }\n else {\n slide.focus();\n }\n\n // Workaround for JSDom testing:\n // In JsDom 'element.focus()' does not trigger any focus event\n if(!slide.hasAttribute('aria-selected')) {\n this.selectSlide_(slide);\n }\n\n }\n }\n };\n MaterialExtLightboard.prototype['command'] = MaterialExtLightboard.prototype.command;\n\n\n /**\n * Initialize component\n */\n MaterialExtLightboard.prototype.init = function() {\n\n const keydownHandler = event => {\n\n if(event.target !== this.element_) {\n let action;\n let target;\n switch (event.keyCode) {\n case VK_HOME:\n action = 'first';\n break;\n case VK_END:\n action = 'last';\n break;\n case VK_ARROW_UP:\n case VK_ARROW_LEFT:\n action = 'prev';\n break;\n case VK_ARROW_DOWN:\n case VK_ARROW_RIGHT:\n action = 'next';\n break;\n case VK_ENTER:\n case VK_SPACE:\n action = 'select';\n target = event.target;\n break;\n }\n if(action) {\n event.preventDefault();\n event.stopPropagation();\n this.command( { action: action, target: target } );\n }\n }\n };\n\n const clickHandler = event => {\n event.preventDefault();\n event.stopPropagation();\n\n if(event.target !== this.element_) {\n this.command( { action: 'select', target: event.target } );\n }\n };\n\n const focusHandler = event => {\n event.preventDefault();\n event.stopPropagation();\n\n if(event.target !== this.element_) {\n this.selectSlide_(event.target);\n }\n };\n\n\n if (this.element_) {\n this.element_.setAttribute('role', LIGHTBOARD_ROLE);\n\n if (this.element_.classList.contains(MDL_RIPPLE_EFFECT)) {\n this.element_.classList.add(MDL_RIPPLE_EFFECT_IGNORE_EVENTS);\n }\n\n // Remove listeners, just in case ...\n this.element_.removeEventListener('command', this.commandHandler_);\n this.element_.removeEventListener('keydown', keydownHandler);\n this.element_.removeEventListener('click', clickHandler);\n this.element_.removeEventListener('focus', focusHandler);\n\n this.element_.addEventListener('command', this.commandHandler_.bind(this), false);\n this.element_.addEventListener('keydown', keydownHandler, true);\n this.element_.addEventListener('click', clickHandler, true);\n this.element_.addEventListener('focus', focusHandler, true);\n\n this.upgradeSlides();\n\n this.element_.classList.add(IS_UPGRADED);\n }\n };\n\n // The component registers itself. It can assume componentHandler is available\n // in the global scope.\n /* eslint no-undef: 0 */\n /* jshint undef:false */\n componentHandler.register({\n constructor: MaterialExtLightboard,\n classAsString: 'MaterialExtLightboard',\n cssClass: 'mdlext-js-lightboard',\n widget: true\n });\n\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/lightboard/lightboard.js","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n\n/**\n * Responsive Lightbox\n */\n\nimport fullThrottle from '../utils/full-throttle';\nimport {\n VK_ESC,\n VK_SPACE,\n VK_END,\n VK_HOME,\n VK_ARROW_LEFT,\n VK_ARROW_UP,\n VK_ARROW_RIGHT,\n VK_ARROW_DOWN,\n IS_UPGRADED\n} from '../utils/constants';\n\n(function() {\n 'use strict';\n\n const LIGHTBOX = 'mdlext-lightbox';\n const LIGHTBOX_SLIDER = 'mdlext-lightbox__slider';\n const LIGHTBOX_SLIDER_SLIDE = 'mdlext-lightbox__slider__slide';\n const STICKY_FOOTER = 'mdlext-lightbox--sticky-footer';\n const BUTTON = 'mdl-button';\n\n /**\n * https://github.com/google/material-design-lite/issues/4205\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\n const MaterialExtLightbox = function MaterialExtLightbox(element) {\n // Stores the element.\n this.element_ = element;\n\n // Initialize instance.\n this.init();\n };\n window['MaterialExtLightbox'] = MaterialExtLightbox;\n\n\n /**\n * Handle keypress\n * @param event\n * @private\n */\n MaterialExtLightbox.prototype.keyDownHandler_ = function(event) {\n\n if (event) {\n if ( event.keyCode === VK_ESC || event.keyCode === VK_SPACE\n || event.keyCode === VK_END || event.keyCode === VK_HOME\n || event.keyCode === VK_ARROW_UP || event.keyCode === VK_ARROW_LEFT\n || event.keyCode === VK_ARROW_DOWN || event.keyCode === VK_ARROW_RIGHT) {\n\n if(event.keyCode !== VK_ESC) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n let action = 'first';\n if (event.keyCode === VK_END) {\n action = 'last';\n }\n else if (event.keyCode === VK_ARROW_UP || event.keyCode === VK_ARROW_LEFT) {\n action = 'prev';\n }\n else if (event.keyCode === VK_ARROW_DOWN || event.keyCode === VK_ARROW_RIGHT) {\n action = 'next';\n }\n else if (event.keyCode === VK_SPACE) {\n action = 'select';\n }\n else if (event.keyCode === VK_ESC) {\n action = 'cancel';\n }\n\n dispatchAction_(action, this);\n }\n }\n };\n\n /**\n * Handle button clicks\n * @param event\n * @private\n */\n MaterialExtLightbox.prototype.buttonClickHandler_ = function(event) {\n\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n\n dispatchAction_(this.getAttribute('data-action') || '', this);\n\n const n = this.closest(`.${LIGHTBOX}`);\n if(n) {\n n.focus();\n }\n }\n };\n\n /**\n * Dispatches an action custom event\n * @param action\n * @param source\n * @param target\n * @private\n */\n const dispatchAction_ = (action, source, target = source) => {\n\n target.dispatchEvent(new CustomEvent('action', {\n bubbles: true,\n cancelable: true,\n detail: {\n action: action || '',\n source: source\n }\n }));\n };\n\n /**\n * Reposition dialog if component parent element is \"DIALOG\"\n * @param lightboxElement\n * @private\n */\n const repositionDialog_ = lightboxElement => {\n const footerHeight = (footer, isSticky) => isSticky && footer ? footer.offsetHeight : 0;\n\n const reposition = (dialog, fh) => {\n if (window.getComputedStyle(dialog).position === 'absolute') {\n const scrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n const topValue = scrollTop + (window.innerHeight - dialog.offsetHeight - fh) / 2;\n dialog.style.top = `${Math.max(scrollTop, topValue)}px`;\n }\n };\n\n const p = lightboxElement.parentNode;\n const dialog = p && p.nodeName === 'DIALOG' ? p : null;\n\n if(dialog && dialog.hasAttribute('open')) {\n lightboxElement.style.width = 'auto';\n lightboxElement.style.maxWidth = '100%';\n const img = lightboxElement.querySelector('img');\n if(img) {\n lightboxElement.style.maxWidth = img.naturalWidth !== undefined ? `${img.naturalWidth}px` : `${img.width}px` || '100%';\n }\n\n const fh = footerHeight(lightboxElement.querySelector('footer'), lightboxElement.classList.contains(STICKY_FOOTER));\n const vh = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - fh;\n if (dialog.offsetHeight > vh) {\n let n = 0;\n while(dialog.offsetHeight > vh && ++n < 4) {\n lightboxElement.style.width = `${lightboxElement.offsetWidth * vh / lightboxElement.offsetHeight}px`;\n }\n }\n reposition(dialog, fh);\n }\n };\n\n /**\n * Handle image load\n * @param event\n * @private\n */\n\n MaterialExtLightbox.prototype.imgLoadHandler_ = function( /*event*/ ) {\n repositionDialog_(this);\n };\n\n\n /**\n * Handle image drag\n * @param event\n * @private\n */\n MaterialExtLightbox.prototype.imgDragHandler_ = function(event ) {\n\n const setStyles = ( element, properties ) => {\n //noinspection JSAnnotator\n for(const [key, value] of Object.entries(properties)) {\n element.style[key] = value;\n }\n // ... or:\n //for (const key in properties) {\n // element.style[key] = properties[key];\n //}\n };\n\n event.preventDefault();\n //event.stopPropagation();\n\n const x = event.clientX || (event.touches !== undefined ? event.touches[0].clientX : 0);\n\n const img = this;\n img.style.opacity = '0.2';\n\n const slider = document.createElement('div');\n slider.classList.add(LIGHTBOX_SLIDER);\n setStyles(slider, {'width': `${img.offsetWidth}px`, 'height': `${img.offsetHeight}px`} );\n\n let slide = document.createElement('div');\n slide.classList.add(LIGHTBOX_SLIDER_SLIDE);\n slide.textContent = '>';\n setStyles(slide, {\n 'width' : `${img.offsetWidth}px`,\n 'height' : `${img.offsetHeight}px`,\n 'line-height' : `${img.offsetHeight}px`,\n 'font-size' : `${img.offsetHeight/4}px`,\n 'text-align' : 'right',\n 'background-image': `url(\"${img.getAttribute('data-img-url-prev') || ''}\")`\n });\n slider.appendChild(slide);\n\n slide = document.createElement('div');\n slide.classList.add(LIGHTBOX_SLIDER_SLIDE);\n setStyles(slide, {\n 'width' : `${img.offsetWidth}px`,\n 'height' : `${img.offsetHeight}px`,\n 'background-image': `url(\"${img.src}\")`\n });\n slider.appendChild(slide);\n\n slide = document.createElement('div');\n slide.classList.add(LIGHTBOX_SLIDER_SLIDE);\n slide.textContent = '<';\n setStyles(slide, {\n 'width' : `${img.offsetWidth}px`,\n 'height' : `${img.offsetHeight}px`,\n 'line-height' : `${img.offsetHeight}px`,\n 'font-size' : `${img.offsetHeight/4}px`,\n 'text-align' : 'left',\n 'background-image': `url(\"${img.getAttribute('data-img-url-next') || ''}\")`\n });\n slider.appendChild(slide);\n\n img.parentNode.appendChild(slider);\n\n\n // drag handler\n const drag = e => {\n e.preventDefault();\n const dx = (e.clientX || (e.touches !== undefined ? e.touches[0].clientX : 0)) - x; // TODO: maybe rewrite to improve performance\n\n if(slider.offsetWidth - Math.abs(dx) > 19) {\n slider.style.left = `${dx}px`;\n }\n };\n\n // end drag handler\n const endDrag = e => {\n e.preventDefault();\n //e.stopPropagation();\n\n window.removeEventListener('mousemove', drag);\n window.removeEventListener('touchmove', drag);\n window.removeEventListener('mouseup', endDrag);\n window.removeEventListener('touchend', endDrag);\n\n const dx = slider.offsetLeft;\n img.parentNode.removeChild(slider);\n img.style.opacity = '1.0';\n\n if(Math.abs(dx) > 19) {\n dispatchAction_( (dx > 0 ? 'prev' : 'next') , img);\n }\n };\n\n window.addEventListener('mousemove', drag);\n window.addEventListener('touchmove', drag);\n window.addEventListener('mouseup', endDrag);\n window.addEventListener('touchend',endDrag);\n };\n\n\n /**\n * Initialize component\n */\n MaterialExtLightbox.prototype.init = function() {\n\n if (this.element_) {\n // Do the init required for this component to work\n this.element_.addEventListener('keydown', this.keyDownHandler_.bind(this.element_), true);\n\n if(!Number.isInteger(this.element_.getAttribute('tabindex'))) {\n this.element_.setAttribute('tabindex', 1);\n }\n\n [...this.element_.querySelectorAll(`.${BUTTON}`)].forEach( button =>\n button.addEventListener('click', this.buttonClickHandler_.bind(button), false)\n );\n\n const figcaption = this.element_.querySelector('figcaption');\n if(figcaption) {\n figcaption.addEventListener('click', this.buttonClickHandler_.bind(figcaption), false);\n }\n\n const footer = this.element_.querySelector('footer');\n if(footer) {\n footer.addEventListener('click', this.buttonClickHandler_.bind(footer), false);\n }\n\n const img = this.element_.querySelector('img');\n if(img) {\n img.addEventListener('load', this.imgLoadHandler_.bind(this.element_), false);\n img.addEventListener('click', e => e.preventDefault(), true);\n img.addEventListener('mousedown', this.imgDragHandler_.bind(img), true);\n img.addEventListener('touchstart', this.imgDragHandler_.bind(img), true);\n }\n window.addEventListener('resize', fullThrottle( () => repositionDialog_(this.element_) ));\n window.addEventListener('orientationchange', () => repositionDialog_(this.element_));\n\n // Set upgraded flag\n this.element_.classList.add(IS_UPGRADED);\n }\n };\n\n /*\n * Downgrade component\n * E.g remove listeners and clean up resources\n *\n * Nothing to downgrade\n *\n MaterialExtLightbox.prototype.mdlDowngrade_ = function() {\n };\n */\n\n /**\n * The component registers itself. It can assume componentHandler is available in the global scope.\n */\n /* jshint undef:false */\n componentHandler.register({\n constructor: MaterialExtLightbox,\n classAsString: 'MaterialExtLightbox',\n cssClass: 'mdlext-js-lightbox'\n });\n\n})();\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/lightbox/lightbox.js","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n\n/**\n * A menu button is a button that opens a menu. It is often styled as a\n * typical push button with a downward pointing arrow or triangle to hint\n * that activating the button will display a menu.\n */\nimport { randomString } from '../utils/string-utils';\nimport fullThrottle from '../utils/full-throttle';\nimport {\n VK_TAB,\n VK_ENTER,\n VK_ESC,\n VK_SPACE,\n VK_END,\n VK_HOME,\n VK_ARROW_LEFT,\n VK_ARROW_UP,\n VK_ARROW_RIGHT,\n VK_ARROW_DOWN,\n IS_UPGRADED,\n} from '../utils/constants';\n\nimport { getScrollParents, tether } from '../utils/dom-utils';\n\nconst JS_MENU_BUTTON = 'mdlext-js-menu-button';\nconst MENU_BUTTON_MENU = 'mdlext-menu';\nconst MENU_BUTTON_MENU_ITEM = 'mdlext-menu__item';\nconst MENU_BUTTON_MENU_ITEM_SEPARATOR = 'mdlext-menu__item-separator';\n//const MDL_LAYOUT_CONTENT = 'mdl-layout__content';\n\n/**\n * Creates the menu controlled by the menu button\n * @param element\n * @return {{element: Element, selected: Element, open: (function(*=)), removeListeners: (function()), downgrade: (function())}}\n */\n\nconst menuFactory = element => {\n\n let ariaControls = null;\n let parentNode = null;\n\n const removeAllSelected = () => {\n [...element.querySelectorAll(`.${MENU_BUTTON_MENU_ITEM}[aria-selected=\"true\"]`)]\n .forEach(selectedItem => selectedItem.removeAttribute('aria-selected'));\n };\n\n const setSelected = (item, force=false) => {\n if(force || (item && !item.hasAttribute('aria-selected'))) {\n removeAllSelected();\n if(item) {\n item.setAttribute('aria-selected', 'true');\n }\n }\n };\n\n const getSelected = () => {\n return element.querySelector(`.${MENU_BUTTON_MENU_ITEM}[aria-selected=\"true\"]`);\n };\n\n const isDisabled = item => item && item.hasAttribute('disabled');\n\n const isSeparator = item => item && item.classList.contains(MENU_BUTTON_MENU_ITEM_SEPARATOR);\n\n const focus = item => {\n if(item) {\n item = item.closest(`.${MENU_BUTTON_MENU_ITEM}`);\n }\n if(item) {\n item.focus();\n }\n };\n\n const nextItem = current => {\n let n = current.nextElementSibling;\n if(!n) {\n n = element.firstElementChild;\n }\n if(!isDisabled(n) && !isSeparator(n)) {\n focus(n);\n }\n else {\n let i = element.children.length;\n while(n && i-- > 0) {\n if(isDisabled(n) || isSeparator(n)) {\n n = n.nextElementSibling;\n if(!n) {\n n = element.firstElementChild;\n }\n }\n else {\n focus(n);\n break;\n }\n }\n }\n };\n\n const previousItem = current => {\n let p = current.previousElementSibling;\n if(!p) {\n p = element.lastElementChild;\n }\n if(!isDisabled(p) && !isSeparator(p)) {\n focus(p);\n }\n else {\n let i = element.children.length;\n while(p && i-- > 0) {\n if(isDisabled(p) || isSeparator(p)) {\n p = p.previousElementSibling;\n if(!p) {\n p = element.lastElementChild;\n }\n }\n else {\n focus(p);\n break;\n }\n }\n }\n };\n\n const firstItem = () => {\n const item = element.firstElementChild;\n if(isDisabled(item) || isSeparator(item) ) {\n nextItem(item);\n }\n else {\n focus(item);\n }\n };\n\n const lastItem = () => {\n const item = element.lastElementChild;\n if(isDisabled(item) || isSeparator(item)) {\n previousItem(item);\n }\n else {\n focus(item);\n }\n };\n\n const selectItem = item => {\n if(item && !isDisabled(item) && !isSeparator(item)) {\n setSelected(item);\n close(true, item);\n }\n };\n\n const keyDownHandler = event => {\n\n const item = event.target.closest(`.${MENU_BUTTON_MENU_ITEM}`);\n\n switch (event.keyCode) {\n case VK_ARROW_UP:\n case VK_ARROW_LEFT:\n if(item) {\n previousItem(item);\n }\n else {\n firstItem();\n }\n break;\n\n case VK_ARROW_DOWN:\n case VK_ARROW_RIGHT:\n if(item) {\n nextItem(item);\n }\n else {\n lastItem();\n }\n break;\n\n case VK_HOME:\n firstItem();\n break;\n\n case VK_END:\n lastItem();\n break;\n\n case VK_SPACE:\n case VK_ENTER:\n selectItem(item);\n break;\n\n case VK_ESC:\n close(true);\n break;\n\n case VK_TAB:\n // We do not have a \"natural\" tab order from menu, so the best we can do is to set focus back to the button\n close(true);\n break;\n\n default:\n return;\n }\n event.preventDefault();\n };\n\n\n const blurHandler = event => {\n\n // See: https://github.com/facebook/react/issues/2011\n const t = event.relatedTarget ||\n event.explicitOriginalTarget || // FF\n document.activeElement; // IE11\n\n //console.log('***** blur, target, relatedTarget', event.target, t);\n\n try {\n if (t) {\n if (t.closest(`.${MENU_BUTTON_MENU}`) !== element && shouldClose(t)) {\n close();\n }\n }\n else {\n close();\n }\n }\n catch(err) {\n // FF throws error: \"TypeError: n.closest is not a function\" if related target is a text node\n close();\n }\n };\n\n const clickHandler = event => {\n //console.log('***** click, target', event.target);\n\n event.preventDefault();\n const t = event.target;\n if (t && t.closest(`.${MENU_BUTTON_MENU}`) === element) {\n const item = t.closest(`.${MENU_BUTTON_MENU_ITEM}`);\n if (item) {\n selectItem(item);\n }\n }\n else {\n if (shouldClose(t)) {\n close();\n }\n }\n };\n\n const touchStartHandler = event => {\n //console.log('***** touchStart, target', event.target);\n\n const t = event.target;\n if(!(t && t.closest(`.${MENU_BUTTON_MENU}`) === element)) {\n if (event.type === 'touchstart') {\n event.preventDefault();\n }\n close();\n }\n };\n\n const addListeners = () => {\n element.addEventListener('keydown', keyDownHandler, false);\n element.addEventListener('blur', blurHandler, true);\n element.addEventListener('click', clickHandler, true);\n document.documentElement.addEventListener('touchstart', touchStartHandler, true);\n };\n\n const removeListeners = () => {\n element.removeEventListener('keydown', keyDownHandler, false);\n element.removeEventListener('blur', blurHandler, true);\n element.removeEventListener('click', clickHandler, true);\n document.documentElement.removeEventListener('touchstart', touchStartHandler, true);\n };\n\n const open = (controlElement, position='first') => {\n\n ariaControls = controlElement.closest(`.${JS_MENU_BUTTON}`);\n\n element.style['min-width'] = `${Math.max(124, controlElement.getBoundingClientRect().width)}px`;\n element.removeAttribute('hidden');\n tether(controlElement, element);\n\n let item;\n switch (position.toLowerCase()) {\n case 'first':\n firstItem();\n break;\n\n case 'last':\n lastItem();\n break;\n\n case 'selected':\n item = getSelected();\n if(item && !item.hasAttribute('disabled')) {\n focus(item);\n }\n else {\n firstItem();\n }\n break;\n }\n\n addListeners();\n };\n\n\n const shouldClose = target => {\n //console.log('***** shouldClose');\n\n let result = false;\n const btn = (target && target.closest(`.${JS_MENU_BUTTON}`)) || null;\n if(!btn) {\n result = true;\n }\n else if(btn.getAttribute('aria-controls') === element.id) {\n if(btn !== ariaControls) {\n result = true;\n }\n }\n else {\n result = true;\n }\n return result;\n };\n\n const close = (forceFocus = false, item = null) => {\n removeListeners();\n\n element.dispatchEvent(\n new CustomEvent('_closemenu', {\n bubbles: true,\n cancelable: true,\n detail: { forceFocus: forceFocus, item: item }\n })\n );\n };\n\n const addWaiAria = () => {\n if (!element.hasAttribute('id')) {\n // Generate a random id\n element.id = `menu-button-${randomString()}`;\n }\n element.setAttribute('tabindex', '-1');\n element.setAttribute('role', 'menu');\n element.setAttribute('hidden', '');\n\n [...element.querySelectorAll(`.${MENU_BUTTON_MENU_ITEM}`)].forEach( menuitem => {\n menuitem.setAttribute('tabindex', '-1');\n menuitem.setAttribute('role', 'menuitem');\n });\n\n [...element.querySelectorAll(`.${MENU_BUTTON_MENU_ITEM_SEPARATOR}`)].forEach( menuitem => {\n menuitem.setAttribute('role', 'separator');\n });\n };\n\n const init = () => {\n addWaiAria();\n parentNode = element.parentNode;\n element.classList.add('is-upgraded');\n };\n\n const downgrade = () => {\n removeListeners();\n if(element.parentNode !== parentNode) {\n parentNode.appendChild(element);\n }\n element.classList.remove('is-upgraded');\n };\n\n init();\n\n return {\n /**\n * Get the menu element\n * @returns {Element} the menu element\n */\n get element() {\n return element;\n },\n\n /**\n * Set selected menu item\n * @param item\n */\n set selected(item) {\n setSelected(item, true);\n },\n\n /**\n * Open menu\n * @param {Element} controlElement the element where the menu should be aligned to\n * @param {String} position menuElement item to receive focus after menu element is opened\n */\n open: (controlElement, position='first') => open(controlElement, position),\n\n /**\n * Remove event listeners.\n */\n removeListeners: () => removeListeners(),\n\n /**\n * Downgrade menu\n */\n downgrade: () => downgrade(),\n };\n};\n\n\n/**\n * The menubutton component\n */\n\nclass MenuButton {\n\n constructor(element) {\n this.element = element;\n this.focusElement = undefined;\n this.focusElementLastScrollPosition = undefined;\n this.scrollElements = [];\n this.menu = undefined;\n this.selectedItem = null;\n this.init();\n }\n\n keyDownHandler = event => {\n if(!this.isDisabled()) {\n switch (event.keyCode) {\n case VK_ARROW_UP:\n this.openMenu('last');\n break;\n\n case VK_ARROW_DOWN:\n this.openMenu();\n break;\n\n case VK_SPACE:\n case VK_ENTER:\n this.openMenu('selected');\n break;\n\n case VK_ESC:\n this.closeMenu();\n break;\n\n case VK_TAB:\n this.closeMenu();\n return;\n\n default:\n return;\n }\n }\n //event.stopPropagation();\n event.preventDefault();\n };\n\n clickHandler = () => {\n if(!this.isDisabled()) {\n if(this.element.getAttribute('aria-expanded').toLowerCase() === 'true') {\n this.closeMenu(true);\n }\n else {\n this.openMenu('selected');\n }\n }\n };\n\n /**\n * Re-position menu if content is scrolled, window is resized or orientation change\n * @see https://javascriptweblog.wordpress.com/2015/11/02/of-classes-and-arrow-functions-a-cautionary-tale/\n */\n recalcMenuPosition = fullThrottle( () => {\n const c = this.focusElement.getBoundingClientRect();\n const dx = this.focusElementLastScrollPosition.left - c.left;\n const dy = this.focusElementLastScrollPosition.top - c.top;\n const left = (parseFloat(this.menu.element.style.left) || 0) - dx;\n const top = (parseFloat(this.menu.element.style.top) || 0) - dy;\n\n this.menu.element.style.left = `${left}px`;\n this.menu.element.style.top = `${top}px`;\n this.focusElementLastScrollPosition = c;\n });\n\n\n positionChangeHandler = () => {\n this.recalcMenuPosition(this);\n };\n\n closeMenuHandler = event => {\n if(event && event.detail) {\n if(event.detail.item && event.detail.item !== this.selectedItem) {\n this.selectedItem = event.detail.item;\n this.dispatchMenuSelect();\n }\n this.closeMenu(event.detail.forceFocus);\n }\n };\n\n dispatchMenuSelect() {\n this.element.dispatchEvent(\n new CustomEvent('menuselect', {\n bubbles: true,\n cancelable: true,\n detail: { source: this.selectedItem }\n })\n );\n }\n\n isDisabled() {\n return this.element.hasAttribute('disabled');\n }\n\n removeListeners() {\n this.element.removeEventListener('keydown', this.keyDownHandler);\n this.element.removeEventListener('click', this.clickHandler);\n }\n\n openMenu(position='first') {\n\n if(!this.isDisabled() && this.menu) {\n\n // Close the menu if button position change\n this.scrollElements = getScrollParents(this.element);\n this.scrollElements.forEach(el => el.addEventListener('scroll', this.positionChangeHandler));\n\n window.addEventListener('resize', this.positionChangeHandler);\n window.addEventListener('orientationchange', this.positionChangeHandler);\n this.menu.element.addEventListener('_closemenu', this.closeMenuHandler);\n\n this.menu.selected = this.selectedItem;\n this.menu.open(this.focusElement, position);\n this.element.setAttribute('aria-expanded', 'true');\n\n this.focusElementLastScrollPosition = this.focusElement.getBoundingClientRect();\n }\n }\n\n closeMenu(forceFocus = false) {\n if(this.menu) {\n this.menu.removeListeners();\n this.scrollElements.forEach(el => el.removeEventListener('scroll', this.positionChangeHandler));\n window.removeEventListener('resize', this.positionChangeHandler);\n window.removeEventListener('orientationchange', this.positionChangeHandler);\n this.menu.element.removeEventListener('_closemenu', this.closeMenuHandler);\n\n if (forceFocus) {\n this.focus();\n }\n this.element.setAttribute('aria-expanded', 'false');\n this.menu.element.setAttribute('hidden', '');\n }\n }\n\n focus() {\n if(!this.isDisabled()) {\n this.focusElement.focus();\n }\n }\n\n init() {\n const addListeners = () => {\n this.element.addEventListener('keydown', this.keyDownHandler);\n this.element.addEventListener('click', this.clickHandler);\n };\n\n const addWaiAria = () => {\n this.element.setAttribute('role', 'button');\n this.element.setAttribute('aria-expanded', 'false');\n this.element.setAttribute('aria-haspopup', 'true');\n };\n\n const addFocusElement = () => {\n this.focusElement = this.element.querySelector('input[type=\"text\"]');\n if(!this.focusElement) {\n this.focusElement = this.element;\n\n if(!(this.focusElement.tagName.toLowerCase() === 'button' || this.focusElement.tagName.toLowerCase() === 'input')) {\n if (!this.focusElement.hasAttribute('tabindex')) {\n this.focusElement.setAttribute('tabindex', '0');\n }\n }\n }\n };\n\n const moveElementToDocumentBody = (element) => {\n // To position an element on top of all other z-indexed elements, the element should be moved to document.body\n // See: https://philipwalton.com/articles/what-no-one-told-you-about-z-index/\n\n if(element.parentNode !== document.body) {\n return document.body.appendChild(element);\n }\n return element;\n };\n\n const findMenuElement = () => {\n let menuElement;\n const menuElementId = this.element.getAttribute('aria-controls');\n if(menuElementId !== null) {\n menuElement = document.querySelector(`#${menuElementId }`);\n }\n else {\n menuElement = this.element.parentNode.querySelector(`.${MENU_BUTTON_MENU}`);\n }\n return menuElement;\n };\n\n const addMenu = () => {\n const menuElement = findMenuElement();\n if(menuElement) {\n if(menuElement.componentInstance) {\n this.menu = menuElement.componentInstance;\n }\n else {\n this.menu = menuFactory(menuElement);\n menuElement.componentInstance = this.menu;\n moveElementToDocumentBody(menuElement);\n }\n this.element.setAttribute('aria-controls', this.menu.element.id);\n }\n };\n\n addFocusElement();\n addWaiAria();\n addMenu();\n this.removeListeners();\n addListeners();\n }\n\n downgrade() {\n if(this.menu) {\n // Do not downgrade menu if there are other buttons sharing this menu\n const related = [...document.querySelectorAll(`.${JS_MENU_BUTTON}[aria-controls=\"${this.element.getAttribute('aria-controls')}\"]`)];\n if(related.filter( c => c !== this.element && c.getAttribute('data-upgraded').indexOf('MaterialExtMenuButton') >= 0).length === 0) {\n this.menu.downgrade();\n }\n }\n this.removeListeners();\n }\n\n}\n\n(function() {\n 'use strict';\n\n /**\n * https://github.com/google/material-design-lite/issues/4205\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\n const MaterialExtMenuButton = function MaterialExtMenuButton(element) {\n this.element_ = element;\n this.menuButton_ = null;\n\n // Initialize instance.\n this.init();\n };\n window['MaterialExtMenuButton'] = MaterialExtMenuButton;\n\n\n // Public methods.\n\n /**\n * Get the menu element controlled by this button, null if no menu is controlled by this button\n * @public\n */\n MaterialExtMenuButton.prototype.getMenuElement = function() {\n return this.menuButton_.menu ? this.menuButton_.menu.element : null;\n };\n MaterialExtMenuButton.prototype['getMenuElement'] = MaterialExtMenuButton.prototype.getMenuElement;\n\n /**\n * Open menu\n * @public\n * @param {String} position one of \"first\", \"last\" or \"selected\"\n */\n MaterialExtMenuButton.prototype.openMenu = function(position) {\n this.menuButton_.openMenu(position);\n };\n MaterialExtMenuButton.prototype['openMenu'] = MaterialExtMenuButton.prototype.openMenu;\n\n /**\n * Close menu\n * @public\n */\n MaterialExtMenuButton.prototype.closeMenu = function() {\n this.menuButton_.closeMenu(true);\n };\n MaterialExtMenuButton.prototype['closeMenu'] = MaterialExtMenuButton.prototype.closeMenu;\n\n /**\n * Get selected menu item\n * @public\n * @returns {Element} The selected menu item or null if no item selected\n */\n MaterialExtMenuButton.prototype.getSelectedMenuItem = function() {\n return this.menuButton_.selectedItem;\n };\n MaterialExtMenuButton.prototype['getSelectedMenuItem'] = MaterialExtMenuButton.prototype.getSelectedMenuItem;\n\n\n /**\n * Set (default) selected menu item\n * @param {Element} item\n */\n MaterialExtMenuButton.prototype.setSelectedMenuItem = function(item) {\n this.menuButton_.selectedItem = item;\n };\n MaterialExtMenuButton.prototype['setSelectedMenuItem'] = MaterialExtMenuButton.prototype.setSelectedMenuItem;\n\n /**\n * Initialize component\n */\n MaterialExtMenuButton.prototype.init = function() {\n if (this.element_) {\n this.menuButton_ = new MenuButton(this.element_);\n this.element_.addEventListener('mdl-componentdowngraded', this.mdlDowngrade_.bind(this));\n this.element_.classList.add(IS_UPGRADED);\n }\n };\n\n /**\n * Downgrade component\n * E.g remove listeners and clean up resources\n */\n MaterialExtMenuButton.prototype.mdlDowngrade_ = function() {\n this.menuButton_.downgrade();\n };\n\n // The component registers itself. It can assume componentHandler is available\n // in the global scope.\n /* eslint no-undef: 0 */\n componentHandler.register({\n constructor: MaterialExtMenuButton,\n classAsString: 'MaterialExtMenuButton',\n cssClass: JS_MENU_BUTTON,\n widget: true\n });\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/menu-button/menu-button.js","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n/*\n * Copied/Modified from https://github.com/google/material-design-lite/tree/master/src/textfield\n */\n\nimport { randomString } from '../utils/string-utils';\nimport {\n IS_DIRTY,\n IS_FOCUSED,\n IS_DISABLED,\n IS_INVALID,\n IS_UPGRADED\n} from '../utils/constants';\n\n(function() {\n 'use strict';\n const LABEL = 'mdlext-selectfield__label';\n const INPUT = 'mdlext-selectfield__select';\n\n /**\n * Class constructor for Selectfield MDLEXT component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n const MaterialExtSelectfield = function MaterialExtSelectfield(element) {\n this.element_ = element;\n this.init(); // Initialize instance.\n };\n\n window['MaterialExtSelectfield'] = MaterialExtSelectfield;\n\n /**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n /*eslint no-unused-vars: 0*/\n MaterialExtSelectfield.prototype.onFocus_ = function( /*event*/ ) {\n this.element_.classList.add(IS_FOCUSED);\n };\n\n /**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n /*eslint no-unused-vars: 0*/\n MaterialExtSelectfield.prototype.onBlur_ = function( /*event*/ ) {\n this.element_.classList.remove(IS_FOCUSED);\n };\n\n /**\n * Handle reset event from out side.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialExtSelectfield.prototype.onReset_ = function( /*event*/ ) {\n this.updateClasses_();\n };\n\n /**\n * Handle class updates.\n *\n * @private\n */\n MaterialExtSelectfield.prototype.updateClasses_ = function() {\n this.checkDisabled();\n this.checkValidity();\n this.checkDirty();\n this.checkFocus();\n };\n\n // Public methods.\n\n /**\n * Check the disabled state and update field accordingly.\n *\n * @public\n */\n MaterialExtSelectfield.prototype.checkDisabled = function() {\n if (this.select_.disabled) {\n this.element_.classList.add(IS_DISABLED);\n } else {\n this.element_.classList.remove(IS_DISABLED);\n }\n };\n MaterialExtSelectfield.prototype['checkDisabled'] = MaterialExtSelectfield.prototype.checkDisabled;\n\n\n /**\n * Check the focus state and update field accordingly.\n *\n * @public\n */\n MaterialExtSelectfield.prototype.checkFocus = function() {\n // Note: element.querySelector(':focus') always return null in JsDom, even if select element has focus\n /*eslint no-extra-boolean-cast: 0*/\n if (Boolean(this.element_.querySelector(':focus'))) {\n this.element_.classList.add(IS_FOCUSED);\n } else {\n this.element_.classList.remove(IS_FOCUSED);\n }\n };\n\n MaterialExtSelectfield.prototype['checkFocus'] = MaterialExtSelectfield.prototype.checkFocus;\n\n\n /**\n * Check the validity state and update field accordingly.\n *\n * @public\n */\n MaterialExtSelectfield.prototype.checkValidity = function() {\n\n /* Don't think it makes any sense to check validity.\n Tests I've done, so far, indicates that setting an illegal value via JS returns selectedIndex=0\n\n if (this.select_.validity) {\n if (this.select_.validity.valid) {\n this.element_.classList.remove(this.CssClasses_.IS_INVALID);\n } else {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n }\n */\n };\n\n MaterialExtSelectfield.prototype['checkValidity'] = MaterialExtSelectfield.prototype.checkValidity;\n\n /**\n * Check the dirty state and update field accordingly.\n *\n * @public\n */\n MaterialExtSelectfield.prototype.checkDirty = function() {\n if (this.select_.value && this.select_.value.length > 0) {\n this.element_.classList.add(IS_DIRTY);\n } else {\n this.element_.classList.remove(IS_DIRTY);\n }\n };\n\n MaterialExtSelectfield.prototype['checkDirty'] = MaterialExtSelectfield.prototype.checkDirty;\n\n /**\n * Disable select field.\n *\n * @public\n */\n MaterialExtSelectfield.prototype.disable = function() {\n this.select_.disabled = true;\n this.updateClasses_();\n };\n\n MaterialExtSelectfield.prototype['disable'] = MaterialExtSelectfield.prototype.disable;\n\n /**\n * Enable select field.\n *\n * @public\n */\n MaterialExtSelectfield.prototype.enable = function() {\n this.select_.disabled = false;\n this.updateClasses_();\n };\n\n MaterialExtSelectfield.prototype['enable'] = MaterialExtSelectfield.prototype.enable;\n\n /**\n * Update select field value.\n *\n * @param {string} value The value to which to set the control (optional).\n * @public\n */\n MaterialExtSelectfield.prototype.change = function(value) {\n this.select_.value = value || '';\n this.updateClasses_();\n };\n MaterialExtSelectfield.prototype['change'] = MaterialExtSelectfield.prototype.change;\n\n /**\n * Initialize element.\n */\n MaterialExtSelectfield.prototype.init = function() {\n if (this.element_) {\n this.label_ = this.element_.querySelector(`.${LABEL}`);\n this.select_ = this.element_.querySelector(`.${INPUT}`);\n\n if (this.select_) {\n // Remove listeners, just in case ...\n this.select_.removeEventListener('change', this.updateClasses_);\n this.select_.removeEventListener('focus', this.onFocus_);\n this.select_.removeEventListener('blur', this.onBlur_);\n this.select_.removeEventListener('reset', this.onReset_);\n\n this.select_.addEventListener('change', this.updateClasses_.bind(this));\n this.select_.addEventListener('focus', this.onFocus_.bind(this));\n this.select_.addEventListener('blur', this.onBlur_.bind(this));\n this.select_.addEventListener('reset', this.onReset_.bind(this));\n\n if(this.label_) {\n let id;\n if(!this.select_.hasAttribute('id')) {\n id = `select-${randomString()}`;\n this.select_.id = id;\n }\n else {\n id = this.select_.id;\n }\n\n if(!this.label_.hasAttribute('for')) {\n this.label_.setAttribute('for', id);\n }\n }\n\n const invalid = this.element_.classList.contains(IS_INVALID);\n this.updateClasses_();\n this.element_.classList.add(IS_UPGRADED);\n\n if (invalid) {\n this.element_.classList.add(IS_INVALID);\n }\n if (this.select_.hasAttribute('autofocus')) {\n this.element_.focus();\n this.checkFocus();\n }\n }\n }\n };\n\n /**\n * Downgrade component\n * E.g remove listeners and clean up resources\n *\n * Nothing to downgrade\n *\n MaterialExtSelectfield.prototype.mdlDowngrade_ = function() {\n 'use strict';\n console.log('***** MaterialExtSelectfield.mdlDowngrade ');\n };\n */\n\n // The component registers itself. It can assume componentHandler is available\n // in the global scope.\n /*eslint no-undef: 0*/\n componentHandler.register({\n constructor: MaterialExtSelectfield,\n classAsString: 'MaterialExtSelectfield',\n cssClass: 'mdlext-js-selectfield',\n widget: true\n });\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/selectfield/selectfield.js","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n/**\n * A sticky header makes site navigation easily accessible anywhere on the page and saves content space at the same.\n * The header should auto-hide, i.e. hiding the header automatically when a user starts scrolling down the page and\n * bringing the header back when a user might need it: they reach the bottom of the page or start scrolling up.\n */\n\nimport fullThrottle from '../utils/full-throttle';\nimport { jsonStringToObject } from '../utils/json-utils';\nimport {\n IS_UPGRADED\n} from '../utils/constants';\n\n\n(function() {\n 'use strict';\n const MDL_LAYOUT_CONTENT = 'mdl-layout__content';\n const IS_SCROLL_CLASS = 'mdlext-is-scroll';\n\n\n /**\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\n const MaterialExtStickyHeader = function MaterialExtStickyHeader(element) {\n // Stores the element.\n this.header_ = element;\n\n // Heder listens to scroll events from content\n this.content_ = null;\n this.lastScrollTop_ = 0;\n\n // Default config\n this.config_ = {\n visibleAtScrollEnd: false\n };\n\n this.mutationObserver_ = null;\n\n this.drawing_ = false;\n\n // Initialize instance.\n this.init();\n };\n\n window['MaterialExtStickyHeader'] = MaterialExtStickyHeader;\n\n\n /**\n * Update header width\n * @private\n */\n MaterialExtStickyHeader.prototype.recalcWidth_ = function() {\n this.header_.style.width = `${this.content_.clientWidth}px`;\n };\n\n const throttleResize = fullThrottle(self => self.recalcWidth_() );\n\n /**\n * Adjust header width when window resizes or oreientation changes\n * @param event\n * @private\n */\n MaterialExtStickyHeader.prototype.resizeHandler_ = function( /* event */ ) {\n throttleResize(this);\n };\n\n\n /**\n * Update header position\n * @private\n */\n MaterialExtStickyHeader.prototype.reposition_ = function() {\n\n const currentContentScrollTop = this.content_.scrollTop;\n const scrollDiff = this.lastScrollTop_ - currentContentScrollTop;\n\n if(currentContentScrollTop <= 0) {\n // Scrolled to the top. Header sticks to the top\n this.header_.style.top = '0';\n this.header_.classList.remove(IS_SCROLL_CLASS);\n }\n else if(scrollDiff > 0) {\n\n if(scrollDiff >= this.header_.offsetHeight) {\n\n // Scrolled up. Header slides in\n const headerTop = (parseInt( window.getComputedStyle( this.header_ ).getPropertyValue( 'top' ) ) || 0);\n if(headerTop != 0) {\n this.header_.style.top = '0';\n this.header_.classList.add(IS_SCROLL_CLASS);\n }\n this.lastScrollTop_ = currentContentScrollTop;\n }\n return;\n }\n else if(scrollDiff < 0) {\n // Scrolled down\n this.header_.classList.add(IS_SCROLL_CLASS);\n let headerTop = (parseInt( window.getComputedStyle( this.header_ ).getPropertyValue( 'top' ) ) || 0);\n\n if (this.content_.scrollHeight - this.content_.scrollTop <= this.content_.offsetHeight) {\n // Bottom of content\n if(headerTop != 0) {\n this.header_.style.top = this.config_.visibleAtScrollEnd ? '0' : `-${this.header_.offsetHeight}px`;\n }\n }\n else {\n headerTop += scrollDiff;\n const offsetHeight = this.header_.offsetHeight;\n this.header_.style.top = `${( Math.abs( headerTop ) > offsetHeight ? -offsetHeight : headerTop )}px`;\n }\n }\n\n this.lastScrollTop_ = currentContentScrollTop;\n };\n\n\n const throttleScroll = fullThrottle((self) => self.reposition_());\n\n /**\n * Scroll header when content scrolls\n * @param event\n * @private\n */\n MaterialExtStickyHeader.prototype.scrollHandler_ = function( /* event */ ) {\n throttleScroll(this);\n };\n\n /**\n * Init header position\n * @private\n */\n MaterialExtStickyHeader.prototype.updatePosition_ = function( /* event */ ) {\n this.recalcWidth_();\n this.reposition_();\n };\n\n /**\n * Add mutation observer\n * @private\n */\n MaterialExtStickyHeader.prototype.addMutationObserver_ = function() {\n\n // jsdom does not support MutationObserver - so this is not testable\n /* istanbul ignore next */\n this.mutationObserver_ = new MutationObserver( ( /*mutations*/ ) => {\n // Adjust header width if content changes (e.g. in a SPA)\n this.updatePosition_();\n });\n\n this.mutationObserver_.observe( this.content_, {\n attributes: false,\n childList: true,\n characterData: false,\n subtree: true\n });\n };\n\n /**\n * Removes event listeners\n * @private\n */\n MaterialExtStickyHeader.prototype.removeListeners_ = function() {\n\n window.removeEventListener('resize', this.resizeHandler_);\n window.removeEventListener('orientationchange', this.resizeHandler_);\n\n if(this.content_) {\n this.content_.removeEventListener('scroll', this.scrollHandler_);\n }\n\n if(this.mutationObserver_) {\n this.mutationObserver_.disconnect();\n this.mutationObserver_ = null;\n }\n };\n\n /**\n * Initialize component\n */\n MaterialExtStickyHeader.prototype.init = function() {\n\n if (this.header_) {\n\n this.removeListeners_();\n\n if(this.header_.hasAttribute('data-config')) {\n this.config_ = jsonStringToObject(this.header_.getAttribute('data-config'));\n }\n\n this.content_ = this.header_.parentNode.querySelector(`.${MDL_LAYOUT_CONTENT}`) || null;\n\n if(this.content_) {\n this.content_.style.paddingTop = `${this.header_.offsetHeight}px`; // Make room for sticky header\n this.lastScrollTop_ = this.content_.scrollTop;\n\n this.content_.addEventListener('scroll', this.scrollHandler_.bind(this));\n window.addEventListener('resize', this.resizeHandler_.bind(this));\n window.addEventListener('orientationchange', this.resizeHandler_.bind(this));\n\n this.addMutationObserver_();\n this.updatePosition_();\n\n // Set upgraded flag\n this.header_.classList.add(IS_UPGRADED);\n }\n }\n };\n\n /*\n * Downgrade component\n * E.g remove listeners and clean up resources\n *\n * Nothing to clean\n *\n MaterialExtStickyHeader.prototype.mdlDowngrade_ = function() {\n 'use strict';\n console.log('***** MaterialExtStickyHeader.prototype.mdlDowngrade_');\n };\n */\n\n\n // The component registers itself. It can assume componentHandler is available\n // in the global scope.\n /* eslint no-undef: 0 */\n componentHandler.register({\n constructor: MaterialExtStickyHeader,\n classAsString: 'MaterialExtStickyHeader',\n cssClass: 'mdlext-js-sticky-header'\n });\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/sticky-header/sticky-header.js","import './constants';\nimport './dom-utils';\nimport './string-utils';\nimport './json-utils';\nimport './full-throttle';\nimport './easing';\nimport './interval-function';\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/index.js","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/array/from.js\n// module id = 60\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/is-iterable.js\n// module id = 61\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/number/is-nan\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/number/is-nan.js\n// module id = 62\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/define-property.js\n// module id = 63\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/entries.js\n// module id = 64\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/keys.js\n// module id = 65\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/reflect/apply\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/reflect/apply.js\n// module id = 66\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/slicedToArray.js\n// module id = 67\n// module chunks = 0 1","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/array/from.js\n// module id = 68\n// module chunks = 0 1","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/get-iterator.js\n// module id = 69\n// module chunks = 0 1","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/is-iterable.js\n// module id = 70\n// module chunks = 0 1","require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/number/is-integer.js\n// module id = 71\n// module chunks = 0 1","require('../../modules/es6.number.is-nan');\nmodule.exports = require('../../modules/_core').Number.isNaN;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/number/is-nan.js\n// module id = 72\n// module chunks = 0 1","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/object/assign.js\n// module id = 73\n// module chunks = 0 1","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc){\n return $Object.defineProperty(it, key, desc);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/object/define-property.js\n// module id = 74\n// module chunks = 0 1","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/object/entries.js\n// module id = 75\n// module chunks = 0 1","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/object/keys.js\n// module id = 76\n// module chunks = 0 1","require('../../modules/es6.reflect.apply');\nmodule.exports = require('../../modules/_core').Reflect.apply;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/reflect/apply.js\n// module id = 77\n// module chunks = 0 1","module.exports = function(){ /* empty */ };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_add-to-unscopables.js\n// module id = 78\n// module chunks = 0 1","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject')\n , toLength = require('./_to-length')\n , toIndex = require('./_to-index');\nmodule.exports = function(IS_INCLUDES){\n return function($this, el, fromIndex){\n var O = toIObject($this)\n , length = toLength(O.length)\n , index = toIndex(fromIndex, length)\n , value;\n // Array#includes uses SameValueZero equality algorithm\n if(IS_INCLUDES && el != el)while(length > index){\n value = O[index++];\n if(value != value)return true;\n // Array#toIndex ignores holes, Array#includes - not\n } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n if(O[index] === el)return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_array-includes.js\n// module id = 79\n// module chunks = 0 1","'use strict';\nvar $defineProperty = require('./_object-dp')\n , createDesc = require('./_property-desc');\n\nmodule.exports = function(object, index, value){\n if(index in object)$defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_create-property.js\n// module id = 80\n// module chunks = 0 1","module.exports = require('./_global').document && document.documentElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_html.js\n// module id = 81\n// module chunks = 0 1","module.exports = !require('./_descriptors') && !require('./_fails')(function(){\n return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_ie8-dom-define.js\n// module id = 82\n// module chunks = 0 1","// check on default Array iterator\nvar Iterators = require('./_iterators')\n , ITERATOR = require('./_wks')('iterator')\n , ArrayProto = Array.prototype;\n\nmodule.exports = function(it){\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_is-array-iter.js\n// module id = 83\n// module chunks = 0 1","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object')\n , floor = Math.floor;\nmodule.exports = function isInteger(it){\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_is-integer.js\n// module id = 84\n// module chunks = 0 1","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function(iterator, fn, value, entries){\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch(e){\n var ret = iterator['return'];\n if(ret !== undefined)anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-call.js\n// module id = 85\n// module chunks = 0 1","'use strict';\nvar create = require('./_object-create')\n , descriptor = require('./_property-desc')\n , setToStringTag = require('./_set-to-string-tag')\n , IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function(){ return this; });\n\nmodule.exports = function(Constructor, NAME, next){\n Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-create.js\n// module id = 86\n// module chunks = 0 1","var ITERATOR = require('./_wks')('iterator')\n , SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function(){ SAFE_CLOSING = true; };\n Array.from(riter, function(){ throw 2; });\n} catch(e){ /* empty */ }\n\nmodule.exports = function(exec, skipClosing){\n if(!skipClosing && !SAFE_CLOSING)return false;\n var safe = false;\n try {\n var arr = [7]\n , iter = arr[ITERATOR]();\n iter.next = function(){ return {done: safe = true}; };\n arr[ITERATOR] = function(){ return iter; };\n exec(arr);\n } catch(e){ /* empty */ }\n return safe;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-detect.js\n// module id = 87\n// module chunks = 0 1","module.exports = function(done, value){\n return {value: value, done: !!done};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-step.js\n// module id = 88\n// module chunks = 0 1","module.exports = true;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_library.js\n// module id = 89\n// module chunks = 0 1","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie')\n , toObject = require('./_to-object')\n , IObject = require('./_iobject')\n , $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function(){\n var A = {}\n , B = {}\n , S = Symbol()\n , K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function(k){ B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source){ // eslint-disable-line no-unused-vars\n var T = toObject(target)\n , aLen = arguments.length\n , index = 1\n , getSymbols = gOPS.f\n , isEnum = pIE.f;\n while(aLen > index){\n var S = IObject(arguments[index++])\n , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n , length = keys.length\n , j = 0\n , key;\n while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n } return T;\n} : $assign;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-assign.js\n// module id = 90\n// module chunks = 0 1","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object')\n , dPs = require('./_object-dps')\n , enumBugKeys = require('./_enum-bug-keys')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , Empty = function(){ /* empty */ }\n , PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function(){\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe')\n , i = enumBugKeys.length\n , lt = '<'\n , gt = '>'\n , iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties){\n var result;\n if(O !== null){\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty;\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-create.js\n// module id = 91\n// module chunks = 0 1","var dP = require('./_object-dp')\n , anObject = require('./_an-object')\n , getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){\n anObject(O);\n var keys = getKeys(Properties)\n , length = keys.length\n , i = 0\n , P;\n while(length > i)dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-dps.js\n// module id = 92\n// module chunks = 0 1","exports.f = Object.getOwnPropertySymbols;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-gops.js\n// module id = 93\n// module chunks = 0 1","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has')\n , toObject = require('./_to-object')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function(O){\n O = toObject(O);\n if(has(O, IE_PROTO))return O[IE_PROTO];\n if(typeof O.constructor == 'function' && O instanceof O.constructor){\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-gpo.js\n// module id = 94\n// module chunks = 0 1","var has = require('./_has')\n , toIObject = require('./_to-iobject')\n , arrayIndexOf = require('./_array-includes')(false)\n , IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function(object, names){\n var O = toIObject(object)\n , i = 0\n , result = []\n , key;\n for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while(names.length > i)if(has(O, key = names[i++])){\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-keys-internal.js\n// module id = 95\n// module chunks = 0 1","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export')\n , core = require('./_core')\n , fails = require('./_fails');\nmodule.exports = function(KEY, exec){\n var fn = (core.Object || {})[KEY] || Object[KEY]\n , exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-sap.js\n// module id = 96\n// module chunks = 0 1","var getKeys = require('./_object-keys')\n , toIObject = require('./_to-iobject')\n , isEnum = require('./_object-pie').f;\nmodule.exports = function(isEntries){\n return function(it){\n var O = toIObject(it)\n , keys = getKeys(O)\n , length = keys.length\n , i = 0\n , result = []\n , key;\n while(length > i)if(isEnum.call(O, key = keys[i++])){\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-to-array.js\n// module id = 97\n// module chunks = 0 1","module.exports = require('./_hide');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_redefine.js\n// module id = 98\n// module chunks = 0 1","var toInteger = require('./_to-integer')\n , defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function(TO_STRING){\n return function(that, pos){\n var s = String(defined(that))\n , i = toInteger(pos)\n , l = s.length\n , a, b;\n if(i < 0 || i >= l)return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_string-at.js\n// module id = 99\n// module chunks = 0 1","var toInteger = require('./_to-integer')\n , max = Math.max\n , min = Math.min;\nmodule.exports = function(index, length){\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-index.js\n// module id = 100\n// module chunks = 0 1","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n if(!isObject(it))return it;\n var fn, val;\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-primitive.js\n// module id = 101\n// module chunks = 0 1","var anObject = require('./_an-object')\n , get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function(it){\n var iterFn = get(it);\n if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/core.get-iterator.js\n// module id = 102\n// module chunks = 0 1","var classof = require('./_classof')\n , ITERATOR = require('./_wks')('iterator')\n , Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function(it){\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n || Iterators.hasOwnProperty(classof(O));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/core.is-iterable.js\n// module id = 103\n// module chunks = 0 1","'use strict';\nvar ctx = require('./_ctx')\n , $export = require('./_export')\n , toObject = require('./_to-object')\n , call = require('./_iter-call')\n , isArrayIter = require('./_is-array-iter')\n , toLength = require('./_to-length')\n , createProperty = require('./_create-property')\n , getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function(iter){ Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){\n var O = toObject(arrayLike)\n , C = typeof this == 'function' ? this : Array\n , aLen = arguments.length\n , mapfn = aLen > 1 ? arguments[1] : undefined\n , mapping = mapfn !== undefined\n , index = 0\n , iterFn = getIterFn(O)\n , length, result, step, iterator;\n if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){\n for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for(result = new C(length); length > index; index++){\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.array.from.js\n// module id = 104\n// module chunks = 0 1","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables')\n , step = require('./_iter-step')\n , Iterators = require('./_iterators')\n , toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function(iterated, kind){\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , kind = this._k\n , index = this._i++;\n if(!O || index >= O.length){\n this._t = undefined;\n return step(1);\n }\n if(kind == 'keys' )return step(0, index);\n if(kind == 'values')return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.array.iterator.js\n// module id = 105\n// module chunks = 0 1","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {isInteger: require('./_is-integer')});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.number.is-integer.js\n// module id = 106\n// module chunks = 0 1","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number){\n return number != number;\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.number.is-nan.js\n// module id = 107\n// module chunks = 0 1","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', {assign: require('./_object-assign')});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.object.assign.js\n// module id = 108\n// module chunks = 0 1","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperty: require('./_object-dp').f});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.object.define-property.js\n// module id = 109\n// module chunks = 0 1","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object')\n , $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function(){\n return function keys(it){\n return $keys(toObject(it));\n };\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.object.keys.js\n// module id = 110\n// module chunks = 0 1","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export')\n , aFunction = require('./_a-function')\n , anObject = require('./_an-object')\n , rApply = (require('./_global').Reflect || {}).apply\n , fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function(){\n rApply(function(){});\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList){\n var T = aFunction(target)\n , L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.reflect.apply.js\n// module id = 111\n// module chunks = 0 1","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export')\n , $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it){\n return $entries(it);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es7.object.entries.js\n// module id = 112\n// module chunks = 0 1"],"sourceRoot":""}