@material/menu
Advanced tools
Comparing version 0.4.0 to 0.4.1
1233
dist/mdc.menu.js
@@ -51,5 +51,2 @@ /*! | ||
/******/ | ||
/******/ // identity function for calling harmony imports with the correct context | ||
/******/ __webpack_require__.i = function(value) { return value; }; | ||
/******/ | ||
/******/ // define getter function for harmony exports | ||
@@ -82,3 +79,3 @@ /******/ __webpack_require__.d = function(exports, name, getter) { | ||
/******/ // Load entry module and return exports | ||
/******/ return __webpack_require__(__webpack_require__.s = 86); | ||
/******/ return __webpack_require__(__webpack_require__.s = 64); | ||
/******/ }) | ||
@@ -119,3 +116,2 @@ /************************************************************************/ | ||
/** @return enum{cssClasses} */ | ||
@@ -160,3 +156,3 @@ get: function get() { | ||
/** | ||
* @param {!A} adapter | ||
* @param {A=} adapter | ||
*/ | ||
@@ -171,3 +167,3 @@ | ||
/** @private {!A} */ | ||
/** @protected {!A} */ | ||
this.adapter_ = adapter; | ||
@@ -195,6 +191,7 @@ } | ||
/***/ 12: | ||
/***/ 1: | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(0); | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
@@ -205,3 +202,3 @@ | ||
/** | ||
* Copyright 2016 Google Inc. All Rights Reserved. | ||
* Copyright 2016 Google Inc. | ||
* | ||
@@ -212,3 +209,3 @@ * Licensed under the Apache License, Version 2.0 (the "License"); | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
@@ -222,250 +219,198 @@ * Unless required by applicable law or agreed to in writing, software | ||
/* eslint no-unused-vars: [2, {"args": "none"}] */ | ||
/** | ||
* Adapter for MDC Simple Menu. Provides an interface for managing | ||
* - classes | ||
* - dom | ||
* - focus | ||
* - position | ||
* - dimensions | ||
* - event handlers | ||
* | ||
* Additionally, provides type information for the adapter to the Closure | ||
* compiler. | ||
* | ||
* Implement this adapter for your framework of choice to delegate updates to | ||
* the component in your framework of choice. See architecture documentation | ||
* for more details. | ||
* https://github.com/material-components/material-components-web/blob/master/docs/architecture.md | ||
* | ||
* @record | ||
* @template F | ||
*/ | ||
var MDCSimpleMenuAdapter = function () { | ||
function MDCSimpleMenuAdapter() { | ||
_classCallCheck(this, MDCSimpleMenuAdapter); | ||
} | ||
_createClass(MDCSimpleMenuAdapter, [{ | ||
key: "addClass", | ||
var MDCComponent = function () { | ||
_createClass(MDCComponent, null, [{ | ||
key: 'attachTo', | ||
/** @param {string} className */ | ||
value: function addClass(className) {} | ||
/** @param {string} className */ | ||
}, { | ||
key: "removeClass", | ||
value: function removeClass(className) {} | ||
/** | ||
* @param {string} className | ||
* @return {boolean} | ||
* @param {!Element} root | ||
* @return {!MDCComponent} | ||
*/ | ||
value: function attachTo(root) { | ||
// Subclasses which extend MDCBase should provide an attachTo() method that takes a root element and | ||
// returns an instantiated component with its root set to that element. Also note that in the cases of | ||
// subclasses, an explicit foundation class will not have to be passed in; it will simply be initialized | ||
// from getDefaultFoundation(). | ||
return new MDCComponent(root, new __WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */]()); | ||
} | ||
}, { | ||
key: "hasClass", | ||
value: function hasClass(className) {} | ||
/** @return {boolean} */ | ||
}, { | ||
key: "hasNecessaryDom", | ||
value: function hasNecessaryDom() {} | ||
/** | ||
* @param {EventTarget} target | ||
* @param {string} attributeName | ||
* @return {string} | ||
* @param {!Element} root | ||
* @param {F=} foundation | ||
* @param {...?} args | ||
*/ | ||
}, { | ||
key: "getAttributeForEventTarget", | ||
value: function getAttributeForEventTarget(target, attributeName) {} | ||
}]); | ||
/** @return {{ width: number, height: number }} */ | ||
function MDCComponent(root) { | ||
var foundation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; | ||
}, { | ||
key: "getInnerDimensions", | ||
value: function getInnerDimensions() {} | ||
_classCallCheck(this, MDCComponent); | ||
/** @return {boolean} */ | ||
/** @protected {!Element} */ | ||
this.root_ = root; | ||
}, { | ||
key: "hasAnchor", | ||
value: function hasAnchor() {} | ||
for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { | ||
args[_key - 2] = arguments[_key]; | ||
} | ||
/** @return {{width: number, height: number, top: number, right: number, bottom: number, left: number}} */ | ||
this.initialize.apply(this, args); | ||
// Note that we initialize foundation here and not within the constructor's default param so that | ||
// this.root_ is defined and can be used within the foundation class. | ||
/** @protected {!F} */ | ||
this.foundation_ = foundation === undefined ? this.getDefaultFoundation() : foundation; | ||
this.foundation_.init(); | ||
this.initialSyncWithDOM(); | ||
} | ||
}, { | ||
key: "getAnchorDimensions", | ||
value: function getAnchorDimensions() {} | ||
_createClass(MDCComponent, [{ | ||
key: 'initialize', | ||
value: function initialize() /* ...args */{} | ||
// Subclasses can override this to do any additional setup work that would be considered part of a | ||
// "constructor". Essentially, it is a hook into the parent constructor before the foundation is | ||
// initialized. Any additional arguments besides root and foundation will be passed in here. | ||
/** @return {{ width: number, height: number }} */ | ||
}, { | ||
key: "getWindowDimensions", | ||
value: function getWindowDimensions() {} | ||
/** | ||
* @param {number} x | ||
* @param {number} y | ||
* @return {!F} foundation | ||
*/ | ||
}, { | ||
key: "setScale", | ||
value: function setScale(x, y) {} | ||
/** | ||
* @param {number} x | ||
* @param {number} y | ||
*/ | ||
key: 'getDefaultFoundation', | ||
value: function getDefaultFoundation() { | ||
// Subclasses must override this method to return a properly configured foundation class for the | ||
// component. | ||
throw new Error('Subclasses must override getDefaultFoundation to return a properly configured ' + 'foundation class'); | ||
} | ||
}, { | ||
key: "setInnerScale", | ||
value: function setInnerScale(x, y) {} | ||
/** @return {number} */ | ||
key: 'initialSyncWithDOM', | ||
value: function initialSyncWithDOM() { | ||
// Subclasses should override this method if they need to perform work to synchronize with a host DOM | ||
// object. An example of this would be a form control wrapper that needs to synchronize its internal state | ||
// to some property or attribute of the host DOM. Please note: this is *not* the place to perform DOM | ||
// reads/writes that would cause layout / paint, as this is called synchronously from within the constructor. | ||
} | ||
}, { | ||
key: "getNumberOfItems", | ||
value: function getNumberOfItems() {} | ||
key: 'destroy', | ||
value: function destroy() { | ||
// Subclasses may implement this method to release any resources / deregister any listeners they have | ||
// attached. An example of this might be deregistering a resize event from the window object. | ||
this.foundation_.destroy(); | ||
} | ||
/** | ||
* @param {string} type | ||
* @param {function(!Event)} handler | ||
* Wrapper method to add an event listener to the component's root element. This is most useful when | ||
* listening for custom events. | ||
* @param {string} evtType | ||
* @param {!Function} handler | ||
*/ | ||
}, { | ||
key: "registerInteractionHandler", | ||
value: function registerInteractionHandler(type, handler) {} | ||
key: 'listen', | ||
value: function listen(evtType, handler) { | ||
this.root_.addEventListener(evtType, handler); | ||
} | ||
/** | ||
* @param {string} type | ||
* @param {function(!Event)} handler | ||
* Wrapper method to remove an event listener to the component's root element. This is most useful when | ||
* unlistening for custom events. | ||
* @param {string} evtType | ||
* @param {!Function} handler | ||
*/ | ||
}, { | ||
key: "deregisterInteractionHandler", | ||
value: function deregisterInteractionHandler(type, handler) {} | ||
key: 'unlisten', | ||
value: function unlisten(evtType, handler) { | ||
this.root_.removeEventListener(evtType, handler); | ||
} | ||
/** @param {function(!Event)} handler */ | ||
}, { | ||
key: "registerBodyClickHandler", | ||
value: function registerBodyClickHandler(handler) {} | ||
/** @param {function(!Event)} handler */ | ||
}, { | ||
key: "deregisterBodyClickHandler", | ||
value: function deregisterBodyClickHandler(handler) {} | ||
/** | ||
* @param {number} index | ||
* @return {{top: number, height: number}} | ||
* Fires a cross-browser-compatible custom event from the component root of the given type, | ||
* with the given data. | ||
* @param {string} evtType | ||
* @param {!Object} evtData | ||
* @param {boolean=} shouldBubble | ||
*/ | ||
}, { | ||
key: "getYParamsForItemAtIndex", | ||
value: function getYParamsForItemAtIndex(index) {} | ||
key: 'emit', | ||
value: function emit(evtType, evtData) { | ||
var shouldBubble = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; | ||
/** | ||
* @param {number} index | ||
* @param {string|null} value | ||
*/ | ||
var evt = void 0; | ||
if (typeof CustomEvent === 'function') { | ||
evt = new CustomEvent(evtType, { | ||
detail: evtData, | ||
bubbles: shouldBubble | ||
}); | ||
} else { | ||
evt = document.createEvent('CustomEvent'); | ||
evt.initCustomEvent(evtType, shouldBubble, false, evtData); | ||
} | ||
}, { | ||
key: "setTransitionDelayForItemAtIndex", | ||
value: function setTransitionDelayForItemAtIndex(index, value) {} | ||
this.root_.dispatchEvent(evt); | ||
} | ||
}]); | ||
/** | ||
* @param {EventTarget} target | ||
* @return {number} | ||
*/ | ||
return MDCComponent; | ||
}(); | ||
}, { | ||
key: "getIndexForEventTarget", | ||
value: function getIndexForEventTarget(target) {} | ||
/* harmony default export */ __webpack_exports__["a"] = (MDCComponent); | ||
/** @param {{index: number}} evtData */ | ||
/***/ }), | ||
}, { | ||
key: "notifySelected", | ||
value: function notifySelected(evtData) {} | ||
}, { | ||
key: "notifyCancel", | ||
value: function notifyCancel() {} | ||
}, { | ||
key: "saveFocus", | ||
value: function saveFocus() {} | ||
}, { | ||
key: "restoreFocus", | ||
value: function restoreFocus() {} | ||
/***/ 11: | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
/** @return {boolean} */ | ||
"use strict"; | ||
Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util__ = __webpack_require__(9); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__simple__ = __webpack_require__(13); | ||
/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSimpleMenu", function() { return __WEBPACK_IMPORTED_MODULE_1__simple__["a"]; }); | ||
/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSimpleMenuFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__simple__["b"]; }); | ||
/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "util", function() { return __WEBPACK_IMPORTED_MODULE_0__util__; }); | ||
/** | ||
* Copyright 2016 Google Inc. All Rights Reserved. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
}, { | ||
key: "isFocused", | ||
value: function isFocused() {} | ||
}, { | ||
key: "focus", | ||
value: function focus() {} | ||
/** @return {number} */ | ||
}, { | ||
key: "getFocusedItemIndex", | ||
value: function getFocusedItemIndex() /* number */{} | ||
/** @param {number} index */ | ||
}, { | ||
key: "focusItemAtIndex", | ||
value: function focusItemAtIndex(index) {} | ||
/***/ }), | ||
/** @return {boolean} */ | ||
/***/ 13: | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
}, { | ||
key: "isRtl", | ||
value: function isRtl() {} | ||
"use strict"; | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCSimpleMenu; }); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(14); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(9); | ||
/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; }); | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
/** @param {string} origin */ | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
}, { | ||
key: "setTransformOrigin", | ||
value: function setTransformOrigin(origin) {} | ||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } | ||
/** @param {{ | ||
* top: (string|undefined), | ||
* right: (string|undefined), | ||
* bottom: (string|undefined), | ||
* left: (string|undefined) | ||
* }} position */ | ||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } | ||
}, { | ||
key: "setPosition", | ||
value: function setPosition(position) {} | ||
/** @return {number} */ | ||
}, { | ||
key: "getAccurateTime", | ||
value: function getAccurateTime() {} | ||
}]); | ||
return MDCSimpleMenuAdapter; | ||
}(); | ||
/* unused harmony default export */ var _unused_webpack_default_export = (MDCSimpleMenuAdapter); | ||
/***/ }), | ||
/***/ 13: | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; }); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; }); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return numbers; }); | ||
/** | ||
@@ -487,39 +432,226 @@ * Copyright 2016 Google Inc. All Rights Reserved. | ||
/** @enum {string} */ | ||
var cssClasses = { | ||
ROOT: 'mdc-simple-menu', | ||
OPEN: 'mdc-simple-menu--open', | ||
ANIMATING: 'mdc-simple-menu--animating', | ||
TOP_RIGHT: 'mdc-simple-menu--open-from-top-right', | ||
BOTTOM_LEFT: 'mdc-simple-menu--open-from-bottom-left', | ||
BOTTOM_RIGHT: 'mdc-simple-menu--open-from-bottom-right' | ||
}; | ||
/** @enum {string} */ | ||
var strings = { | ||
ITEMS_SELECTOR: '.mdc-simple-menu__items', | ||
SELECTED_EVENT: 'MDCSimpleMenu:selected', | ||
CANCEL_EVENT: 'MDCSimpleMenu:cancel', | ||
ARIA_DISABLED_ATTR: 'aria-disabled' | ||
}; | ||
/** @enum {number} */ | ||
var numbers = { | ||
// Amount of time to wait before triggering a selected event on the menu. Note that this time | ||
// will most likely be bumped up once interactive lists are supported to allow for the ripple to | ||
// animate before closing the menu | ||
SELECTED_TRIGGER_DELAY: 50, | ||
// Total duration of the menu animation. | ||
TRANSITION_DURATION_MS: 300, | ||
// The menu starts its open animation with the X axis at this time value (0 - 1). | ||
TRANSITION_SCALE_ADJUSTMENT_X: 0.5, | ||
// The time value the menu waits until the animation starts on the Y axis (0 - 1). | ||
TRANSITION_SCALE_ADJUSTMENT_Y: 0.2, | ||
// The cubic bezier control points for the animation (cubic-bezier(0, 0, 0.2, 1)). | ||
TRANSITION_X1: 0, | ||
TRANSITION_Y1: 0, | ||
TRANSITION_X2: 0.2, | ||
TRANSITION_Y2: 1 | ||
}; | ||
/** | ||
* @extends MDCComponent<!MDCSimpleMenuFoundation> | ||
*/ | ||
var MDCSimpleMenu = function (_MDCComponent) { | ||
_inherits(MDCSimpleMenu, _MDCComponent); | ||
/** @param {...?} args */ | ||
function MDCSimpleMenu() { | ||
var _ref; | ||
_classCallCheck(this, MDCSimpleMenu); | ||
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||
args[_key] = arguments[_key]; | ||
} | ||
/** @private {!Element} */ | ||
var _this = _possibleConstructorReturn(this, (_ref = MDCSimpleMenu.__proto__ || Object.getPrototypeOf(MDCSimpleMenu)).call.apply(_ref, [this].concat(args))); | ||
_this.previousFocus_; | ||
return _this; | ||
} | ||
/** | ||
* @param {!Element} root | ||
* @return {!MDCSimpleMenu} | ||
*/ | ||
_createClass(MDCSimpleMenu, [{ | ||
key: 'show', | ||
/** @param {{focusIndex: ?number}=} options */ | ||
value: function show() { | ||
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, | ||
_ref2$focusIndex = _ref2.focusIndex, | ||
focusIndex = _ref2$focusIndex === undefined ? null : _ref2$focusIndex; | ||
this.foundation_.open({ focusIndex: focusIndex }); | ||
} | ||
}, { | ||
key: 'hide', | ||
value: function hide() { | ||
this.foundation_.close(); | ||
} | ||
/** | ||
* Return the item container element inside the component. | ||
* @return {?Element} | ||
*/ | ||
}, { | ||
key: 'getDefaultFoundation', | ||
/** @return {!MDCSimpleMenuFoundation} */ | ||
value: function getDefaultFoundation() { | ||
var _this2 = this; | ||
return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({ | ||
addClass: function addClass(className) { | ||
return _this2.root_.classList.add(className); | ||
}, | ||
removeClass: function removeClass(className) { | ||
return _this2.root_.classList.remove(className); | ||
}, | ||
hasClass: function hasClass(className) { | ||
return _this2.root_.classList.contains(className); | ||
}, | ||
hasNecessaryDom: function hasNecessaryDom() { | ||
return Boolean(_this2.itemsContainer_); | ||
}, | ||
getAttributeForEventTarget: function getAttributeForEventTarget(target, attributeName) { | ||
return target.getAttribute(attributeName); | ||
}, | ||
getInnerDimensions: function getInnerDimensions() { | ||
var itemsContainer = _this2.itemsContainer_; | ||
return { width: itemsContainer.offsetWidth, height: itemsContainer.offsetHeight }; | ||
}, | ||
hasAnchor: function hasAnchor() { | ||
return _this2.root_.parentElement && _this2.root_.parentElement.classList.contains('mdc-menu-anchor'); | ||
}, | ||
getAnchorDimensions: function getAnchorDimensions() { | ||
return _this2.root_.parentElement.getBoundingClientRect(); | ||
}, | ||
getWindowDimensions: function getWindowDimensions() { | ||
return { width: window.innerWidth, height: window.innerHeight }; | ||
}, | ||
setScale: function setScale(x, y) { | ||
_this2.root_.style[__WEBPACK_IMPORTED_MODULE_2__util__["getTransformPropertyName"](window)] = 'scale(' + x + ', ' + y + ')'; | ||
}, | ||
setInnerScale: function setInnerScale(x, y) { | ||
_this2.itemsContainer_.style[__WEBPACK_IMPORTED_MODULE_2__util__["getTransformPropertyName"](window)] = 'scale(' + x + ', ' + y + ')'; | ||
}, | ||
getNumberOfItems: function getNumberOfItems() { | ||
return _this2.items.length; | ||
}, | ||
registerInteractionHandler: function registerInteractionHandler(type, handler) { | ||
return _this2.root_.addEventListener(type, handler); | ||
}, | ||
deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) { | ||
return _this2.root_.removeEventListener(type, handler); | ||
}, | ||
registerBodyClickHandler: function registerBodyClickHandler(handler) { | ||
return document.body.addEventListener('click', handler); | ||
}, | ||
deregisterBodyClickHandler: function deregisterBodyClickHandler(handler) { | ||
return document.body.removeEventListener('click', handler); | ||
}, | ||
getYParamsForItemAtIndex: function getYParamsForItemAtIndex(index) { | ||
var _items$index = _this2.items[index], | ||
top = _items$index.offsetTop, | ||
height = _items$index.offsetHeight; | ||
return { top: top, height: height }; | ||
}, | ||
setTransitionDelayForItemAtIndex: function setTransitionDelayForItemAtIndex(index, value) { | ||
return _this2.items[index].style.setProperty('transition-delay', value); | ||
}, | ||
getIndexForEventTarget: function getIndexForEventTarget(target) { | ||
return _this2.items.indexOf(target); | ||
}, | ||
notifySelected: function notifySelected(evtData) { | ||
return _this2.emit(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.SELECTED_EVENT, { | ||
index: evtData.index, | ||
item: _this2.items[evtData.index] | ||
}); | ||
}, | ||
notifyCancel: function notifyCancel() { | ||
return _this2.emit(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.CANCEL_EVENT, {}); | ||
}, | ||
saveFocus: function saveFocus() { | ||
_this2.previousFocus_ = document.activeElement; | ||
}, | ||
restoreFocus: function restoreFocus() { | ||
if (_this2.previousFocus_) { | ||
_this2.previousFocus_.focus(); | ||
} | ||
}, | ||
isFocused: function isFocused() { | ||
return document.activeElement === _this2.root_; | ||
}, | ||
focus: function focus() { | ||
return _this2.root_.focus(); | ||
}, | ||
getFocusedItemIndex: function getFocusedItemIndex() { | ||
return _this2.items.indexOf(document.activeElement); | ||
}, | ||
focusItemAtIndex: function focusItemAtIndex(index) { | ||
return _this2.items[index].focus(); | ||
}, | ||
isRtl: function isRtl() { | ||
return getComputedStyle(_this2.root_).getPropertyValue('direction') === 'rtl'; | ||
}, | ||
setTransformOrigin: function setTransformOrigin(origin) { | ||
_this2.root_.style[__WEBPACK_IMPORTED_MODULE_2__util__["getTransformPropertyName"](window) + '-origin'] = origin; | ||
}, | ||
setPosition: function setPosition(position) { | ||
_this2.root_.style.left = 'left' in position ? position.left : null; | ||
_this2.root_.style.right = 'right' in position ? position.right : null; | ||
_this2.root_.style.top = 'top' in position ? position.top : null; | ||
_this2.root_.style.bottom = 'bottom' in position ? position.bottom : null; | ||
}, | ||
getAccurateTime: function getAccurateTime() { | ||
return window.performance.now(); | ||
} | ||
}); | ||
} | ||
}, { | ||
key: 'open', | ||
/** @return {boolean} */ | ||
get: function get() { | ||
return this.foundation_.isOpen(); | ||
} | ||
/** @param {boolean} value */ | ||
, | ||
set: function set(value) { | ||
if (value) { | ||
this.foundation_.open(); | ||
} else { | ||
this.foundation_.close(); | ||
} | ||
} | ||
}, { | ||
key: 'itemsContainer_', | ||
get: function get() { | ||
return this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.ITEMS_SELECTOR); | ||
} | ||
/** | ||
* Return the items within the menu. Note that this only contains the set of elements within | ||
* the items container that are proper list items, and not supplemental / presentational DOM | ||
* elements. | ||
* @return {!Array<!Element>} | ||
*/ | ||
}, { | ||
key: 'items', | ||
get: function get() { | ||
var itemsContainer = this.itemsContainer_; | ||
return [].slice.call(itemsContainer.querySelectorAll('.mdc-list-item[role]')); | ||
} | ||
}], [{ | ||
key: 'attachTo', | ||
value: function attachTo(root) { | ||
return new MDCSimpleMenu(root); | ||
} | ||
}]); | ||
return MDCSimpleMenu; | ||
}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]); | ||
/***/ }), | ||
@@ -532,5 +664,5 @@ | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(12); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(13); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(8); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(15); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(16); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(9); | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
@@ -589,3 +721,3 @@ | ||
get: function get() { | ||
return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */]; | ||
return __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */]; | ||
} | ||
@@ -598,3 +730,3 @@ | ||
get: function get() { | ||
return __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* numbers */]; | ||
return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */]; | ||
} | ||
@@ -830,6 +962,6 @@ | ||
var currentTime = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util__["clamp"])((time - this.startTime_) / TRANSITION_DURATION_MS); | ||
var currentTime = __WEBPACK_IMPORTED_MODULE_3__util__["clamp"]((time - this.startTime_) / TRANSITION_DURATION_MS); | ||
// Animate X axis very slowly, so that only the Y axis animation is visible during fade-out. | ||
var currentTimeX = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util__["clamp"])((currentTime - TRANSITION_SCALE_ADJUSTMENT_X) / (1 - TRANSITION_SCALE_ADJUSTMENT_X)); | ||
var currentTimeX = __WEBPACK_IMPORTED_MODULE_3__util__["clamp"]((currentTime - TRANSITION_SCALE_ADJUSTMENT_X) / (1 - TRANSITION_SCALE_ADJUSTMENT_X)); | ||
// No time-shifting on the Y axis when closing. | ||
@@ -845,10 +977,10 @@ var currentTimeY = currentTime; | ||
// X axis moves faster, so time-shift forward. | ||
currentTimeX = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util__["clamp"])(currentTime + TRANSITION_SCALE_ADJUSTMENT_X); | ||
currentTimeX = __WEBPACK_IMPORTED_MODULE_3__util__["clamp"](currentTime + TRANSITION_SCALE_ADJUSTMENT_X); | ||
// Y axis moves slower, so time-shift backwards and adjust speed by the difference. | ||
currentTimeY = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util__["clamp"])((currentTime - TRANSITION_SCALE_ADJUSTMENT_Y) / (1 - TRANSITION_SCALE_ADJUSTMENT_Y)); | ||
currentTimeY = __WEBPACK_IMPORTED_MODULE_3__util__["clamp"]((currentTime - TRANSITION_SCALE_ADJUSTMENT_Y) / (1 - TRANSITION_SCALE_ADJUSTMENT_Y)); | ||
} | ||
// Apply cubic bezier easing independently to each axis. | ||
var easeX = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util__["bezierProgress"])(currentTimeX, TRANSITION_X1, TRANSITION_Y1, TRANSITION_X2, TRANSITION_Y2); | ||
var easeY = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util__["bezierProgress"])(currentTimeY, TRANSITION_X1, TRANSITION_Y1, TRANSITION_X2, TRANSITION_Y2); | ||
var easeX = __WEBPACK_IMPORTED_MODULE_3__util__["bezierProgress"](currentTimeX, TRANSITION_X1, TRANSITION_Y1, TRANSITION_X2, TRANSITION_Y2); | ||
var easeY = __WEBPACK_IMPORTED_MODULE_3__util__["bezierProgress"](currentTimeY, TRANSITION_X1, TRANSITION_Y1, TRANSITION_X2, TRANSITION_Y2); | ||
@@ -1026,3 +1158,3 @@ // Calculate the scales to apply to the outer container and inner container. | ||
if (this.adapter_.getAttributeForEventTarget(evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_DISABLED_ATTR) === 'true') { | ||
if (this.adapter_.getAttributeForEventTarget(evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].ARIA_DISABLED_ATTR) === 'true') { | ||
return; | ||
@@ -1042,3 +1174,3 @@ } | ||
_this4.adapter_.notifySelected({ index: targetIndex }); | ||
}, __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* numbers */].SELECTED_TRIGGER_DELAY); | ||
}, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].SELECTED_TRIGGER_DELAY); | ||
} | ||
@@ -1135,3 +1267,3 @@ | ||
var targetIsDisabled = evt ? this.adapter_.getAttributeForEventTarget(evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_DISABLED_ATTR) === 'true' : false; | ||
var targetIsDisabled = evt ? this.adapter_.getAttributeForEventTarget(evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].ARIA_DISABLED_ATTR) === 'true' : false; | ||
@@ -1173,7 +1305,2 @@ if (targetIsDisabled) { | ||
"use strict"; | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCSimpleMenu; }); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(2); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(14); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(8); | ||
/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; }); | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
@@ -1183,6 +1310,2 @@ | ||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } | ||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } | ||
/** | ||
@@ -1204,405 +1327,317 @@ * Copyright 2016 Google Inc. All Rights Reserved. | ||
/* eslint no-unused-vars: [2, {"args": "none"}] */ | ||
/** | ||
* @extends MDCComponent<!MDCSimpleMenuFoundation> | ||
* Adapter for MDC Simple Menu. Provides an interface for managing | ||
* - classes | ||
* - dom | ||
* - focus | ||
* - position | ||
* - dimensions | ||
* - event handlers | ||
* | ||
* Additionally, provides type information for the adapter to the Closure | ||
* compiler. | ||
* | ||
* Implement this adapter for your framework of choice to delegate updates to | ||
* the component in your framework of choice. See architecture documentation | ||
* for more details. | ||
* https://github.com/material-components/material-components-web/blob/master/docs/architecture.md | ||
* | ||
* @record | ||
*/ | ||
var MDCSimpleMenu = function (_MDCComponent) { | ||
_inherits(MDCSimpleMenu, _MDCComponent); | ||
var MDCSimpleMenuAdapter = function () { | ||
function MDCSimpleMenuAdapter() { | ||
_classCallCheck(this, MDCSimpleMenuAdapter); | ||
} | ||
/** @param {...?} args */ | ||
function MDCSimpleMenu() { | ||
var _ref; | ||
_createClass(MDCSimpleMenuAdapter, [{ | ||
key: "addClass", | ||
_classCallCheck(this, MDCSimpleMenu); | ||
/** @param {string} className */ | ||
value: function addClass(className) {} | ||
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||
args[_key] = arguments[_key]; | ||
} | ||
/** @param {string} className */ | ||
/** @private {!Element} */ | ||
var _this = _possibleConstructorReturn(this, (_ref = MDCSimpleMenu.__proto__ || Object.getPrototypeOf(MDCSimpleMenu)).call.apply(_ref, [this].concat(args))); | ||
}, { | ||
key: "removeClass", | ||
value: function removeClass(className) {} | ||
_this.previousFocus_; | ||
return _this; | ||
} | ||
/** | ||
* @param {string} className | ||
* @return {boolean} | ||
*/ | ||
/** | ||
* @param {!Element} root | ||
* @return {!MDCSimpleMenu} | ||
*/ | ||
}, { | ||
key: "hasClass", | ||
value: function hasClass(className) {} | ||
/** @return {boolean} */ | ||
_createClass(MDCSimpleMenu, [{ | ||
key: 'show', | ||
/** @param {{focusIndex: ?number}=} options */ | ||
value: function show() { | ||
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, | ||
_ref2$focusIndex = _ref2.focusIndex, | ||
focusIndex = _ref2$focusIndex === undefined ? null : _ref2$focusIndex; | ||
this.foundation_.open({ focusIndex: focusIndex }); | ||
} | ||
}, { | ||
key: 'hide', | ||
value: function hide() { | ||
this.foundation_.close(); | ||
} | ||
key: "hasNecessaryDom", | ||
value: function hasNecessaryDom() {} | ||
/** | ||
* Return the item container element inside the component. | ||
* @return {?Element} | ||
* @param {EventTarget} target | ||
* @param {string} attributeName | ||
* @return {string} | ||
*/ | ||
}, { | ||
key: 'getDefaultFoundation', | ||
key: "getAttributeForEventTarget", | ||
value: function getAttributeForEventTarget(target, attributeName) {} | ||
/** @return {{ width: number, height: number }} */ | ||
/** @return {!MDCSimpleMenuFoundation} */ | ||
value: function getDefaultFoundation() { | ||
var _this2 = this; | ||
}, { | ||
key: "getInnerDimensions", | ||
value: function getInnerDimensions() {} | ||
return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({ | ||
addClass: function addClass(className) { | ||
return _this2.root_.classList.add(className); | ||
}, | ||
removeClass: function removeClass(className) { | ||
return _this2.root_.classList.remove(className); | ||
}, | ||
hasClass: function hasClass(className) { | ||
return _this2.root_.classList.contains(className); | ||
}, | ||
hasNecessaryDom: function hasNecessaryDom() { | ||
return Boolean(_this2.itemsContainer_); | ||
}, | ||
getAttributeForEventTarget: function getAttributeForEventTarget(target, attributeName) { | ||
return target.getAttribute(attributeName); | ||
}, | ||
getInnerDimensions: function getInnerDimensions() { | ||
var itemsContainer = _this2.itemsContainer_; | ||
/** @return {boolean} */ | ||
return { width: itemsContainer.offsetWidth, height: itemsContainer.offsetHeight }; | ||
}, | ||
hasAnchor: function hasAnchor() { | ||
return _this2.root_.parentElement && _this2.root_.parentElement.classList.contains('mdc-menu-anchor'); | ||
}, | ||
getAnchorDimensions: function getAnchorDimensions() { | ||
return _this2.root_.parentElement.getBoundingClientRect(); | ||
}, | ||
getWindowDimensions: function getWindowDimensions() { | ||
return { width: window.innerWidth, height: window.innerHeight }; | ||
}, | ||
setScale: function setScale(x, y) { | ||
_this2.root_.style[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__["getTransformPropertyName"])(window)] = 'scale(' + x + ', ' + y + ')'; | ||
}, | ||
setInnerScale: function setInnerScale(x, y) { | ||
_this2.itemsContainer_.style[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__["getTransformPropertyName"])(window)] = 'scale(' + x + ', ' + y + ')'; | ||
}, | ||
getNumberOfItems: function getNumberOfItems() { | ||
return _this2.items.length; | ||
}, | ||
registerInteractionHandler: function registerInteractionHandler(type, handler) { | ||
return _this2.root_.addEventListener(type, handler); | ||
}, | ||
deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) { | ||
return _this2.root_.removeEventListener(type, handler); | ||
}, | ||
registerBodyClickHandler: function registerBodyClickHandler(handler) { | ||
return document.body.addEventListener('click', handler); | ||
}, | ||
deregisterBodyClickHandler: function deregisterBodyClickHandler(handler) { | ||
return document.body.removeEventListener('click', handler); | ||
}, | ||
getYParamsForItemAtIndex: function getYParamsForItemAtIndex(index) { | ||
var _items$index = _this2.items[index], | ||
top = _items$index.offsetTop, | ||
height = _items$index.offsetHeight; | ||
}, { | ||
key: "hasAnchor", | ||
value: function hasAnchor() {} | ||
return { top: top, height: height }; | ||
}, | ||
setTransitionDelayForItemAtIndex: function setTransitionDelayForItemAtIndex(index, value) { | ||
return _this2.items[index].style.setProperty('transition-delay', value); | ||
}, | ||
getIndexForEventTarget: function getIndexForEventTarget(target) { | ||
return _this2.items.indexOf(target); | ||
}, | ||
notifySelected: function notifySelected(evtData) { | ||
return _this2.emit(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.SELECTED_EVENT, { | ||
index: evtData.index, | ||
item: _this2.items[evtData.index] | ||
}); | ||
}, | ||
notifyCancel: function notifyCancel() { | ||
return _this2.emit(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.CANCEL_EVENT, {}); | ||
}, | ||
saveFocus: function saveFocus() { | ||
_this2.previousFocus_ = document.activeElement; | ||
}, | ||
restoreFocus: function restoreFocus() { | ||
if (_this2.previousFocus_) { | ||
_this2.previousFocus_.focus(); | ||
} | ||
}, | ||
isFocused: function isFocused() { | ||
return document.activeElement === _this2.root_; | ||
}, | ||
focus: function focus() { | ||
return _this2.root_.focus(); | ||
}, | ||
getFocusedItemIndex: function getFocusedItemIndex() { | ||
return _this2.items.indexOf(document.activeElement); | ||
}, | ||
focusItemAtIndex: function focusItemAtIndex(index) { | ||
return _this2.items[index].focus(); | ||
}, | ||
isRtl: function isRtl() { | ||
return getComputedStyle(_this2.root_).getPropertyValue('direction') === 'rtl'; | ||
}, | ||
setTransformOrigin: function setTransformOrigin(origin) { | ||
_this2.root_.style[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__["getTransformPropertyName"])(window) + '-origin'] = origin; | ||
}, | ||
setPosition: function setPosition(position) { | ||
_this2.root_.style.left = 'left' in position ? position.left : null; | ||
_this2.root_.style.right = 'right' in position ? position.right : null; | ||
_this2.root_.style.top = 'top' in position ? position.top : null; | ||
_this2.root_.style.bottom = 'bottom' in position ? position.bottom : null; | ||
}, | ||
getAccurateTime: function getAccurateTime() { | ||
return window.performance.now(); | ||
} | ||
}); | ||
} | ||
/** @return {{width: number, height: number, top: number, right: number, bottom: number, left: number}} */ | ||
}, { | ||
key: 'open', | ||
key: "getAnchorDimensions", | ||
value: function getAnchorDimensions() {} | ||
/** @return {{ width: number, height: number }} */ | ||
/** @return {boolean} */ | ||
get: function get() { | ||
return this.foundation_.isOpen(); | ||
} | ||
}, { | ||
key: "getWindowDimensions", | ||
value: function getWindowDimensions() {} | ||
/** @param {boolean} value */ | ||
, | ||
set: function set(value) { | ||
if (value) { | ||
this.foundation_.open(); | ||
} else { | ||
this.foundation_.close(); | ||
} | ||
} | ||
/** | ||
* @param {number} x | ||
* @param {number} y | ||
*/ | ||
}, { | ||
key: 'itemsContainer_', | ||
get: function get() { | ||
return this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.ITEMS_SELECTOR); | ||
} | ||
key: "setScale", | ||
value: function setScale(x, y) {} | ||
/** | ||
* Return the items within the menu. Note that this only contains the set of elements within | ||
* the items container that are proper list items, and not supplemental / presentational DOM | ||
* elements. | ||
* @return {!Array<!Element>} | ||
* @param {number} x | ||
* @param {number} y | ||
*/ | ||
}, { | ||
key: 'items', | ||
get: function get() { | ||
var itemsContainer = this.itemsContainer_; | ||
key: "setInnerScale", | ||
value: function setInnerScale(x, y) {} | ||
return [].slice.call(itemsContainer.querySelectorAll('.mdc-list-item[role]')); | ||
} | ||
}], [{ | ||
key: 'attachTo', | ||
value: function attachTo(root) { | ||
return new MDCSimpleMenu(root); | ||
} | ||
}]); | ||
/** @return {number} */ | ||
return MDCSimpleMenu; | ||
}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]); | ||
}, { | ||
key: "getNumberOfItems", | ||
value: function getNumberOfItems() {} | ||
/***/ }), | ||
/** | ||
* @param {string} type | ||
* @param {function(!Event)} handler | ||
*/ | ||
/***/ 2: | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
}, { | ||
key: "registerInteractionHandler", | ||
value: function registerInteractionHandler(type, handler) {} | ||
"use strict"; | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(0); | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
/** | ||
* @param {string} type | ||
* @param {function(!Event)} handler | ||
*/ | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
}, { | ||
key: "deregisterInteractionHandler", | ||
value: function deregisterInteractionHandler(type, handler) {} | ||
/** | ||
* Copyright 2016 Google Inc. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
/** @param {function(!Event)} handler */ | ||
}, { | ||
key: "registerBodyClickHandler", | ||
value: function registerBodyClickHandler(handler) {} | ||
/** @param {function(!Event)} handler */ | ||
/** | ||
* @template F | ||
*/ | ||
}, { | ||
key: "deregisterBodyClickHandler", | ||
value: function deregisterBodyClickHandler(handler) {} | ||
var MDCComponent = function () { | ||
_createClass(MDCComponent, null, [{ | ||
key: 'attachTo', | ||
/** | ||
* @param {number} index | ||
* @return {{top: number, height: number}} | ||
*/ | ||
}, { | ||
key: "getYParamsForItemAtIndex", | ||
value: function getYParamsForItemAtIndex(index) {} | ||
/** | ||
* @param {!Element} root | ||
* @return {!MDCComponent} | ||
* @param {number} index | ||
* @param {string|null} value | ||
*/ | ||
value: function attachTo(root) { | ||
// Subclasses which extend MDCBase should provide an attachTo() method that takes a root element and | ||
// returns an instantiated component with its root set to that element. Also note that in the cases of | ||
// subclasses, an explicit foundation class will not have to be passed in; it will simply be initialized | ||
// from getDefaultFoundation(). | ||
return new MDCComponent(root, new __WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */]()); | ||
} | ||
}, { | ||
key: "setTransitionDelayForItemAtIndex", | ||
value: function setTransitionDelayForItemAtIndex(index, value) {} | ||
/** | ||
* @param {!Element} root | ||
* @param {!F} foundation | ||
* @param {...?} args | ||
* @param {EventTarget} target | ||
* @return {number} | ||
*/ | ||
}]); | ||
}, { | ||
key: "getIndexForEventTarget", | ||
value: function getIndexForEventTarget(target) {} | ||
function MDCComponent(root) { | ||
var foundation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; | ||
/** @param {{index: number}} evtData */ | ||
_classCallCheck(this, MDCComponent); | ||
}, { | ||
key: "notifySelected", | ||
value: function notifySelected(evtData) {} | ||
}, { | ||
key: "notifyCancel", | ||
value: function notifyCancel() {} | ||
}, { | ||
key: "saveFocus", | ||
value: function saveFocus() {} | ||
}, { | ||
key: "restoreFocus", | ||
value: function restoreFocus() {} | ||
/** @protected {!Element} */ | ||
this.root_ = root; | ||
/** @return {boolean} */ | ||
for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { | ||
args[_key - 2] = arguments[_key]; | ||
} | ||
}, { | ||
key: "isFocused", | ||
value: function isFocused() {} | ||
}, { | ||
key: "focus", | ||
value: function focus() {} | ||
this.initialize.apply(this, args); | ||
// Note that we initialize foundation here and not within the constructor's default param so that | ||
// this.root_ is defined and can be used within the foundation class. | ||
/** @private {!F} */ | ||
this.foundation_ = foundation === undefined ? this.getDefaultFoundation() : foundation; | ||
this.foundation_.init(); | ||
this.initialSyncWithDOM(); | ||
} | ||
/** @return {number} */ | ||
_createClass(MDCComponent, [{ | ||
key: 'initialize', | ||
value: function initialize() /* ...args */{} | ||
// Subclasses can override this to do any additional setup work that would be considered part of a | ||
// "constructor". Essentially, it is a hook into the parent constructor before the foundation is | ||
// initialized. Any additional arguments besides root and foundation will be passed in here. | ||
}, { | ||
key: "getFocusedItemIndex", | ||
value: function getFocusedItemIndex() /* number */{} | ||
/** @param {number} index */ | ||
/** | ||
* @return {!F} foundation | ||
*/ | ||
}, { | ||
key: 'getDefaultFoundation', | ||
value: function getDefaultFoundation() { | ||
// Subclasses must override this method to return a properly configured foundation class for the | ||
// component. | ||
throw new Error('Subclasses must override getDefaultFoundation to return a properly configured ' + 'foundation class'); | ||
} | ||
}, { | ||
key: 'initialSyncWithDOM', | ||
value: function initialSyncWithDOM() { | ||
// Subclasses should override this method if they need to perform work to synchronize with a host DOM | ||
// object. An example of this would be a form control wrapper that needs to synchronize its internal state | ||
// to some property or attribute of the host DOM. Please note: this is *not* the place to perform DOM | ||
// reads/writes that would cause layout / paint, as this is called synchronously from within the constructor. | ||
} | ||
}, { | ||
key: 'destroy', | ||
value: function destroy() { | ||
// Subclasses may implement this method to release any resources / deregister any listeners they have | ||
// attached. An example of this might be deregistering a resize event from the window object. | ||
this.foundation_.destroy(); | ||
} | ||
key: "focusItemAtIndex", | ||
value: function focusItemAtIndex(index) {} | ||
/** | ||
* Wrapper method to add an event listener to the component's root element. This is most useful when | ||
* listening for custom events. | ||
* @param {string} evtType | ||
* @param {!Function} handler | ||
*/ | ||
/** @return {boolean} */ | ||
}, { | ||
key: 'listen', | ||
value: function listen(evtType, handler) { | ||
this.root_.addEventListener(evtType, handler); | ||
} | ||
key: "isRtl", | ||
value: function isRtl() {} | ||
/** | ||
* Wrapper method to remove an event listener to the component's root element. This is most useful when | ||
* unlistening for custom events. | ||
* @param {string} evtType | ||
* @param {!Function} handler | ||
*/ | ||
/** @param {string} origin */ | ||
}, { | ||
key: 'unlisten', | ||
value: function unlisten(evtType, handler) { | ||
this.root_.removeEventListener(evtType, handler); | ||
} | ||
key: "setTransformOrigin", | ||
value: function setTransformOrigin(origin) {} | ||
/** | ||
* Fires a cross-browser-compatible custom event from the component root of the given type, | ||
* with the given data. | ||
* @param {string} evtType | ||
* @param {!Object} evtData | ||
* @param {boolean=} shouldBubble | ||
*/ | ||
/** @param {{ | ||
* top: (string|undefined), | ||
* right: (string|undefined), | ||
* bottom: (string|undefined), | ||
* left: (string|undefined) | ||
* }} position */ | ||
}, { | ||
key: 'emit', | ||
value: function emit(evtType, evtData) { | ||
var shouldBubble = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; | ||
key: "setPosition", | ||
value: function setPosition(position) {} | ||
var evt = void 0; | ||
if (typeof CustomEvent === 'function') { | ||
evt = new CustomEvent(evtType, { | ||
detail: evtData, | ||
bubbles: shouldBubble | ||
}); | ||
} else { | ||
evt = document.createEvent('CustomEvent'); | ||
evt.initCustomEvent(evtType, shouldBubble, false, evtData); | ||
} | ||
/** @return {number} */ | ||
this.root_.dispatchEvent(evt); | ||
} | ||
}, { | ||
key: "getAccurateTime", | ||
value: function getAccurateTime() {} | ||
}]); | ||
return MDCComponent; | ||
return MDCSimpleMenuAdapter; | ||
}(); | ||
/* harmony default export */ __webpack_exports__["a"] = (MDCComponent); | ||
/* unused harmony default export */ var _unused_webpack_default_export = (MDCSimpleMenuAdapter); | ||
/***/ }), | ||
/***/ 8: | ||
/***/ 16: | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; }); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; }); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; }); | ||
/** | ||
* Copyright 2016 Google Inc. All Rights Reserved. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
/** @enum {string} */ | ||
var cssClasses = { | ||
ROOT: 'mdc-simple-menu', | ||
OPEN: 'mdc-simple-menu--open', | ||
ANIMATING: 'mdc-simple-menu--animating', | ||
TOP_RIGHT: 'mdc-simple-menu--open-from-top-right', | ||
BOTTOM_LEFT: 'mdc-simple-menu--open-from-bottom-left', | ||
BOTTOM_RIGHT: 'mdc-simple-menu--open-from-bottom-right' | ||
}; | ||
/** @enum {string} */ | ||
var strings = { | ||
ITEMS_SELECTOR: '.mdc-simple-menu__items', | ||
SELECTED_EVENT: 'MDCSimpleMenu:selected', | ||
CANCEL_EVENT: 'MDCSimpleMenu:cancel', | ||
ARIA_DISABLED_ATTR: 'aria-disabled' | ||
}; | ||
/** @enum {number} */ | ||
var numbers = { | ||
// Amount of time to wait before triggering a selected event on the menu. Note that this time | ||
// will most likely be bumped up once interactive lists are supported to allow for the ripple to | ||
// animate before closing the menu | ||
SELECTED_TRIGGER_DELAY: 50, | ||
// Total duration of the menu animation. | ||
TRANSITION_DURATION_MS: 300, | ||
// The menu starts its open animation with the X axis at this time value (0 - 1). | ||
TRANSITION_SCALE_ADJUSTMENT_X: 0.5, | ||
// The time value the menu waits until the animation starts on the Y axis (0 - 1). | ||
TRANSITION_SCALE_ADJUSTMENT_Y: 0.2, | ||
// The cubic bezier control points for the animation (cubic-bezier(0, 0, 0.2, 1)). | ||
TRANSITION_X1: 0, | ||
TRANSITION_Y1: 0, | ||
TRANSITION_X2: 0.2, | ||
TRANSITION_Y2: 1 | ||
}; | ||
/***/ }), | ||
/***/ 64: | ||
/***/ (function(module, exports, __webpack_require__) { | ||
module.exports = __webpack_require__(11); | ||
/***/ }), | ||
/***/ 9: | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); | ||
@@ -1770,42 +1805,2 @@ /* harmony export (immutable) */ __webpack_exports__["getTransformPropertyName"] = getTransformPropertyName; | ||
/***/ }), | ||
/***/ 86: | ||
/***/ (function(module, exports, __webpack_require__) { | ||
module.exports = __webpack_require__(9); | ||
/***/ }), | ||
/***/ 9: | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util__ = __webpack_require__(8); | ||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__simple__ = __webpack_require__(15); | ||
/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSimpleMenu", function() { return __WEBPACK_IMPORTED_MODULE_1__simple__["a"]; }); | ||
/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSimpleMenuFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__simple__["b"]; }); | ||
/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "util", function() { return __WEBPACK_IMPORTED_MODULE_0__util__; }); | ||
/** | ||
* Copyright 2016 Google Inc. All Rights Reserved. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
/***/ }) | ||
@@ -1812,0 +1807,0 @@ |
@@ -6,2 +6,2 @@ /*! | ||
*/ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.menu=t():(e.mdc=e.mdc||{},e.mdc.menu=t())}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/assets/",t(t.s=86)}({0:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r(this,e),this.adapter_=t}return i(e,null,[{key:"cssClasses",get:function(){return{}}},{key:"strings",get:function(){return{}}},{key:"numbers",get:function(){return{}}},{key:"defaultAdapter",get:function(){return{}}}]),i(e,[{key:"init",value:function(){}},{key:"destroy",value:function(){}}]),e}();t.a=o},12:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();!function(){function e(){r(this,e)}i(e,[{key:"addClass",value:function(e){}},{key:"removeClass",value:function(e){}},{key:"hasClass",value:function(e){}},{key:"hasNecessaryDom",value:function(){}},{key:"getAttributeForEventTarget",value:function(e,t){}},{key:"getInnerDimensions",value:function(){}},{key:"hasAnchor",value:function(){}},{key:"getAnchorDimensions",value:function(){}},{key:"getWindowDimensions",value:function(){}},{key:"setScale",value:function(e,t){}},{key:"setInnerScale",value:function(e,t){}},{key:"getNumberOfItems",value:function(){}},{key:"registerInteractionHandler",value:function(e,t){}},{key:"deregisterInteractionHandler",value:function(e,t){}},{key:"registerBodyClickHandler",value:function(e){}},{key:"deregisterBodyClickHandler",value:function(e){}},{key:"getYParamsForItemAtIndex",value:function(e){}},{key:"setTransitionDelayForItemAtIndex",value:function(e,t){}},{key:"getIndexForEventTarget",value:function(e){}},{key:"notifySelected",value:function(e){}},{key:"notifyCancel",value:function(){}},{key:"saveFocus",value:function(){}},{key:"restoreFocus",value:function(){}},{key:"isFocused",value:function(){}},{key:"focus",value:function(){}},{key:"getFocusedItemIndex",value:function(){}},{key:"focusItemAtIndex",value:function(e){}},{key:"isRtl",value:function(){}},{key:"setTransformOrigin",value:function(e){}},{key:"setPosition",value:function(e){}},{key:"getAccurateTime",value:function(){}}])}()},13:function(e,t,n){"use strict";n.d(t,"a",function(){return r}),n.d(t,"b",function(){return i}),n.d(t,"c",function(){return o});var r={ROOT:"mdc-simple-menu",OPEN:"mdc-simple-menu--open",ANIMATING:"mdc-simple-menu--animating",TOP_RIGHT:"mdc-simple-menu--open-from-top-right",BOTTOM_LEFT:"mdc-simple-menu--open-from-bottom-left",BOTTOM_RIGHT:"mdc-simple-menu--open-from-bottom-right"},i={ITEMS_SELECTOR:".mdc-simple-menu__items",SELECTED_EVENT:"MDCSimpleMenu:selected",CANCEL_EVENT:"MDCSimpleMenu:cancel",ARIA_DISABLED_ATTR:"aria-disabled"},o={SELECTED_TRIGGER_DELAY:50,TRANSITION_DURATION_MS:300,TRANSITION_SCALE_ADJUSTMENT_X:.5,TRANSITION_SCALE_ADJUSTMENT_Y:.2,TRANSITION_X1:0,TRANSITION_Y1:0,TRANSITION_X2:.2,TRANSITION_Y2:1}},14:function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=n(0),u=(n(12),n(13)),c=n(8),l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),d=function(e){function t(e){i(this,t);var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,l(t.defaultAdapter,e)));return n.clickHandler_=function(e){return n.handlePossibleSelected_(e)},n.keydownHandler_=function(e){return n.handleKeyboardDown_(e)},n.keyupHandler_=function(e){return n.handleKeyboardUp_(e)},n.documentClickHandler_=function(e){n.adapter_.notifyCancel(),n.close(e)},n.isOpen_=!1,n.startScaleX_=0,n.startScaleY_=0,n.targetScale_=1,n.scaleX_=0,n.scaleY_=0,n.running_=!1,n.selectedTriggerTimerId_=0,n.animationRequestId_=0,n.dimensions_,n.startTime_,n.itemHeight_,n}return a(t,e),f(t,null,[{key:"cssClasses",get:function(){return u.a}},{key:"strings",get:function(){return u.b}},{key:"numbers",get:function(){return u.c}},{key:"defaultAdapter",get:function(){return{addClass:function(){},removeClass:function(){},hasClass:function(){return!1},hasNecessaryDom:function(){return!1},getAttributeForEventTarget:function(){},getInnerDimensions:function(){return{}},hasAnchor:function(){return!1},getAnchorDimensions:function(){return{}},getWindowDimensions:function(){return{}},setScale:function(){},setInnerScale:function(){},getNumberOfItems:function(){return 0},registerInteractionHandler:function(){},deregisterInteractionHandler:function(){},registerBodyClickHandler:function(){},deregisterBodyClickHandler:function(){},getYParamsForItemAtIndex:function(){return{}},setTransitionDelayForItemAtIndex:function(){},getIndexForEventTarget:function(){return 0},notifySelected:function(){},notifyCancel:function(){},saveFocus:function(){},restoreFocus:function(){},isFocused:function(){return!1},focus:function(){},getFocusedItemIndex:function(){return-1},focusItemAtIndex:function(){},isRtl:function(){return!1},setTransformOrigin:function(){},setPosition:function(){},getAccurateTime:function(){return 0}}}}]),f(t,[{key:"init",value:function(){var e=t.cssClasses,n=e.ROOT,r=e.OPEN;if(!this.adapter_.hasClass(n))throw new Error(n+" class required in root element.");if(!this.adapter_.hasNecessaryDom())throw new Error("Required DOM nodes missing in "+n+" component.");this.adapter_.hasClass(r)&&(this.isOpen_=!0),this.adapter_.registerInteractionHandler("click",this.clickHandler_),this.adapter_.registerInteractionHandler("keyup",this.keyupHandler_),this.adapter_.registerInteractionHandler("keydown",this.keydownHandler_)}},{key:"destroy",value:function(){clearTimeout(this.selectedTriggerTimerId_),cancelAnimationFrame(this.animationRequestId_),this.adapter_.deregisterInteractionHandler("click",this.clickHandler_),this.adapter_.deregisterInteractionHandler("keyup",this.keyupHandler_),this.adapter_.deregisterInteractionHandler("keydown",this.keydownHandler_),this.adapter_.deregisterBodyClickHandler(this.documentClickHandler_)}},{key:"applyTransitionDelays_",value:function(){for(var e=t.cssClasses,n=e.BOTTOM_LEFT,r=e.BOTTOM_RIGHT,i=this.adapter_.getNumberOfItems(),o=this.dimensions_.height,a=t.numbers.TRANSITION_DURATION_MS/1e3,s=t.numbers.TRANSITION_SCALE_ADJUSTMENT_Y,u=0;u<i;u++){var c=this.adapter_.getYParamsForItemAtIndex(u),l=c.top,f=c.height;this.itemHeight_=f;var d=l/o;(this.adapter_.hasClass(n)||this.adapter_.hasClass(r))&&(d=(o-l-f)/o);var h=(s+d*(1-s))*a;this.adapter_.setTransitionDelayForItemAtIndex(u,h.toFixed(3)+"s")}}},{key:"removeTransitionDelays_",value:function(){for(var e=this.adapter_.getNumberOfItems(),t=0;t<e;t++)this.adapter_.setTransitionDelayForItemAtIndex(t,null)}},{key:"animationLoop_",value:function(){var e=this,r=this.adapter_.getAccurateTime(),i=t.numbers,o=i.TRANSITION_DURATION_MS,a=i.TRANSITION_X1,s=i.TRANSITION_Y1,u=i.TRANSITION_X2,l=i.TRANSITION_Y2,f=i.TRANSITION_SCALE_ADJUSTMENT_X,d=i.TRANSITION_SCALE_ADJUSTMENT_Y,h=n.i(c.clamp)((r-this.startTime_)/o),_=n.i(c.clamp)((h-f)/(1-f)),m=h,p=this.startScaleY_;1===this.targetScale_&&(this.itemHeight_&&(p=Math.max(this.itemHeight_/this.dimensions_.height,p)),_=n.i(c.clamp)(h+f),m=n.i(c.clamp)((h-d)/(1-d)));var y=n.i(c.bezierProgress)(_,a,s,u,l),v=n.i(c.bezierProgress)(m,a,s,u,l);this.scaleX_=this.startScaleX_+(this.targetScale_-this.startScaleX_)*y;var g=1/(0===this.scaleX_?1:this.scaleX_);this.scaleY_=p+(this.targetScale_-p)*v;var I=1/(0===this.scaleY_?1:this.scaleY_);this.adapter_.setScale(this.scaleX_,this.scaleY_),this.adapter_.setInnerScale(g,I),h<1?this.animationRequestId_=requestAnimationFrame(function(){return e.animationLoop_()}):(this.animationRequestId_=0,this.running_=!1,this.adapter_.removeClass(t.cssClasses.ANIMATING))}},{key:"animateMenu_",value:function(){var e=this;this.startTime_=this.adapter_.getAccurateTime(),this.startScaleX_=this.scaleX_,this.startScaleY_=this.scaleY_,this.targetScale_=this.isOpen_?1:0,this.running_||(this.running_=!0,this.animationRequestId_=requestAnimationFrame(function(){return e.animationLoop_()}))}},{key:"focusOnOpen_",value:function(e){null===e?(this.adapter_.focus(),this.adapter_.isFocused()||this.adapter_.focusItemAtIndex(0)):this.adapter_.focusItemAtIndex(e)}},{key:"handleKeyboardDown_",value:function(e){if(e.altKey||e.ctrlKey||e.metaKey)return!0;var t=e.keyCode,n=e.key,r=e.shiftKey,i="Tab"===n||9===t,o="ArrowUp"===n||38===t,a="ArrowDown"===n||40===t,s="Space"===n||32===t,u=this.adapter_.getFocusedItemIndex(),c=this.adapter_.getNumberOfItems()-1;return r&&i&&0===u?(this.adapter_.focusItemAtIndex(c),e.preventDefault(),!1):!r&&i&&u===c?(this.adapter_.focusItemAtIndex(0),e.preventDefault(),!1):((o||a||s)&&e.preventDefault(),o?0===u||this.adapter_.isFocused()?this.adapter_.focusItemAtIndex(c):this.adapter_.focusItemAtIndex(u-1):a&&(u===c||this.adapter_.isFocused()?this.adapter_.focusItemAtIndex(0):this.adapter_.focusItemAtIndex(u+1)),!0)}},{key:"handleKeyboardUp_",value:function(e){if(e.altKey||e.ctrlKey||e.metaKey)return!0;var t=e.keyCode,n=e.key,r="Enter"===n||13===t,i="Space"===n||32===t,o="Escape"===n||27===t;return(r||i)&&this.handlePossibleSelected_(e),o&&(this.adapter_.notifyCancel(),this.close()),!0}},{key:"handlePossibleSelected_",value:function(e){var t=this;if("true"!==this.adapter_.getAttributeForEventTarget(e.target,u.b.ARIA_DISABLED_ATTR)){var n=this.adapter_.getIndexForEventTarget(e.target);n<0||this.selectedTriggerTimerId_||(this.selectedTriggerTimerId_=setTimeout(function(){t.selectedTriggerTimerId_=0,t.close(),t.adapter_.notifySelected({index:n})},u.c.SELECTED_TRIGGER_DELAY))}}},{key:"autoPosition_",value:function(){var e;if(this.adapter_.hasAnchor()){var t="top",n="left",i=this.adapter_.getAnchorDimensions(),o=this.adapter_.getWindowDimensions(),a=i.top+this.dimensions_.height-o.height,s=this.dimensions_.height-i.bottom;a>0&&s<a&&(t="bottom");var u=i.left+this.dimensions_.width-o.width,c=this.dimensions_.width-i.right,l=u>0,f=c>0;this.adapter_.isRtl()?(n="right",f&&u<c&&(n="left")):l&&c<u&&(n="right");var d=(e={},r(e,n,"0"),r(e,t,"0"),e);this.adapter_.setTransformOrigin(t+" "+n),this.adapter_.setPosition(d)}}},{key:"open",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.focusIndex,i=void 0===r?null:r;this.adapter_.saveFocus(),this.adapter_.addClass(t.cssClasses.ANIMATING),this.animationRequestId_=requestAnimationFrame(function(){e.dimensions_=e.adapter_.getInnerDimensions(),e.applyTransitionDelays_(),e.autoPosition_(),e.animateMenu_(),e.adapter_.addClass(t.cssClasses.OPEN),e.focusOnOpen_(i),e.adapter_.registerBodyClickHandler(e.documentClickHandler_)}),this.isOpen_=!0}},{key:"close",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;!!n&&"true"===this.adapter_.getAttributeForEventTarget(n.target,u.b.ARIA_DISABLED_ATTR)||(this.adapter_.deregisterBodyClickHandler(this.documentClickHandler_),this.adapter_.addClass(t.cssClasses.ANIMATING),requestAnimationFrame(function(){e.removeTransitionDelays_(),e.animateMenu_(),e.adapter_.removeClass(t.cssClasses.OPEN)}),this.isOpen_=!1,this.adapter_.restoreFocus())}},{key:"isOpen",value:function(){return this.isOpen_}}]),t}(s.a);t.a=d},15:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}n.d(t,"a",function(){return l});var a=n(2),s=n(14),u=n(8);n.d(t,"b",function(){return s.a});var c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=function(e){function t(){var e;r(this,t);for(var n=arguments.length,o=Array(n),a=0;a<n;a++)o[a]=arguments[a];var s=i(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(o)));return s.previousFocus_,s}return o(t,e),c(t,[{key:"show",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.focusIndex,n=void 0===t?null:t;this.foundation_.open({focusIndex:n})}},{key:"hide",value:function(){this.foundation_.close()}},{key:"getDefaultFoundation",value:function(){var e=this;return new s.a({addClass:function(t){return e.root_.classList.add(t)},removeClass:function(t){return e.root_.classList.remove(t)},hasClass:function(t){return e.root_.classList.contains(t)},hasNecessaryDom:function(){return Boolean(e.itemsContainer_)},getAttributeForEventTarget:function(e,t){return e.getAttribute(t)},getInnerDimensions:function(){var t=e.itemsContainer_;return{width:t.offsetWidth,height:t.offsetHeight}},hasAnchor:function(){return e.root_.parentElement&&e.root_.parentElement.classList.contains("mdc-menu-anchor")},getAnchorDimensions:function(){return e.root_.parentElement.getBoundingClientRect()},getWindowDimensions:function(){return{width:window.innerWidth,height:window.innerHeight}},setScale:function(t,r){e.root_.style[n.i(u.getTransformPropertyName)(window)]="scale("+t+", "+r+")"},setInnerScale:function(t,r){e.itemsContainer_.style[n.i(u.getTransformPropertyName)(window)]="scale("+t+", "+r+")"},getNumberOfItems:function(){return e.items.length},registerInteractionHandler:function(t,n){return e.root_.addEventListener(t,n)},deregisterInteractionHandler:function(t,n){return e.root_.removeEventListener(t,n)},registerBodyClickHandler:function(e){return document.body.addEventListener("click",e)},deregisterBodyClickHandler:function(e){return document.body.removeEventListener("click",e)},getYParamsForItemAtIndex:function(t){var n=e.items[t];return{top:n.offsetTop,height:n.offsetHeight}},setTransitionDelayForItemAtIndex:function(t,n){return e.items[t].style.setProperty("transition-delay",n)},getIndexForEventTarget:function(t){return e.items.indexOf(t)},notifySelected:function(t){return e.emit(s.a.strings.SELECTED_EVENT,{index:t.index,item:e.items[t.index]})},notifyCancel:function(){return e.emit(s.a.strings.CANCEL_EVENT,{})},saveFocus:function(){e.previousFocus_=document.activeElement},restoreFocus:function(){e.previousFocus_&&e.previousFocus_.focus()},isFocused:function(){return document.activeElement===e.root_},focus:function(){return e.root_.focus()},getFocusedItemIndex:function(){return e.items.indexOf(document.activeElement)},focusItemAtIndex:function(t){return e.items[t].focus()},isRtl:function(){return"rtl"===getComputedStyle(e.root_).getPropertyValue("direction")},setTransformOrigin:function(t){e.root_.style[n.i(u.getTransformPropertyName)(window)+"-origin"]=t},setPosition:function(t){e.root_.style.left="left"in t?t.left:null,e.root_.style.right="right"in t?t.right:null,e.root_.style.top="top"in t?t.top:null,e.root_.style.bottom="bottom"in t?t.bottom:null},getAccurateTime:function(){return window.performance.now()}})}},{key:"open",get:function(){return this.foundation_.isOpen()},set:function(e){e?this.foundation_.open():this.foundation_.close()}},{key:"itemsContainer_",get:function(){return this.root_.querySelector(s.a.strings.ITEMS_SELECTOR)}},{key:"items",get:function(){var e=this.itemsContainer_;return[].slice.call(e.querySelectorAll(".mdc-list-item[role]"))}}],[{key:"attachTo",value:function(e){return new t(e)}}]),t}(a.a)},2:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=n(0),o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;r(this,e),this.root_=t;for(var i=arguments.length,o=Array(i>2?i-2:0),a=2;a<i;a++)o[a-2]=arguments[a];this.initialize.apply(this,o),this.foundation_=void 0===n?this.getDefaultFoundation():n,this.foundation_.init(),this.initialSyncWithDOM()}return o(e,null,[{key:"attachTo",value:function(t){return new e(t,new i.a)}}]),o(e,[{key:"initialize",value:function(){}},{key:"getDefaultFoundation",value:function(){throw new Error("Subclasses must override getDefaultFoundation to return a properly configured foundation class")}},{key:"initialSyncWithDOM",value:function(){}},{key:"destroy",value:function(){this.foundation_.destroy()}},{key:"listen",value:function(e,t){this.root_.addEventListener(e,t)}},{key:"unlisten",value:function(e,t){this.root_.removeEventListener(e,t)}},{key:"emit",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=void 0;"function"==typeof CustomEvent?r=new CustomEvent(e,{detail:t,bubbles:n}):(r=document.createEvent("CustomEvent"),r.initCustomEvent(e,n,!1,t)),this.root_.dispatchEvent(r)}}]),e}();t.a=a},8:function(e,t,n){"use strict";function r(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(void 0===u||t){var n=e.document.createElement("div"),r="transform"in n.style?"transform":"webkitTransform";u=r}return u}function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.min(n,Math.max(t,e))}function o(e,t,n,r,i){return a(s(e,t,r),n,i)}function a(e,t,n){if(0===e||1===e)return e;var r=e*t,i=t+e*(n-t),o=n+e*(1-n);return r+=e*(i-r),i+=e*(o-i),r+e*(i-r)}function s(e,t,n){if(e<=0)return 0;if(e>=1)return 1;for(var r=e,i=0,o=1,s=0,u=0;u<8;u++){s=a(r,t,n);var c=(a(r+1e-6,t,n)-s)/1e-6;if(Math.abs(s-e)<1e-6)return r;if(Math.abs(c)<1e-6)break;s<e?i=r:o=r,r-=(s-e)/c}for(var l=0;Math.abs(s-e)>1e-6&&l<8;l++)s<e?(i=r,r=(r+o)/2):(o=r,r=(r+i)/2),s=a(r,t,n);return r}Object.defineProperty(t,"__esModule",{value:!0}),t.getTransformPropertyName=r,t.clamp=i,t.bezierProgress=o;var u=void 0},86:function(e,t,n){e.exports=n(9)},9:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8),i=n(15);n.d(t,"MDCSimpleMenu",function(){return i.a}),n.d(t,"MDCSimpleMenuFoundation",function(){return i.b}),n.d(t,"util",function(){return r})}})}); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.menu=t():(e.mdc=e.mdc||{},e.mdc.menu=t())}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/assets/",t(t.s=64)}({0:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r(this,e),this.adapter_=t}return i(e,null,[{key:"cssClasses",get:function(){return{}}},{key:"strings",get:function(){return{}}},{key:"numbers",get:function(){return{}}},{key:"defaultAdapter",get:function(){return{}}}]),i(e,[{key:"init",value:function(){}},{key:"destroy",value:function(){}}]),e}();t.a=o},1:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=n(0),o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;r(this,e),this.root_=t;for(var i=arguments.length,o=Array(i>2?i-2:0),a=2;a<i;a++)o[a-2]=arguments[a];this.initialize.apply(this,o),this.foundation_=void 0===n?this.getDefaultFoundation():n,this.foundation_.init(),this.initialSyncWithDOM()}return o(e,null,[{key:"attachTo",value:function(t){return new e(t,new i.a)}}]),o(e,[{key:"initialize",value:function(){}},{key:"getDefaultFoundation",value:function(){throw new Error("Subclasses must override getDefaultFoundation to return a properly configured foundation class")}},{key:"initialSyncWithDOM",value:function(){}},{key:"destroy",value:function(){this.foundation_.destroy()}},{key:"listen",value:function(e,t){this.root_.addEventListener(e,t)}},{key:"unlisten",value:function(e,t){this.root_.removeEventListener(e,t)}},{key:"emit",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=void 0;"function"==typeof CustomEvent?r=new CustomEvent(e,{detail:t,bubbles:n}):(r=document.createEvent("CustomEvent"),r.initCustomEvent(e,n,!1,t)),this.root_.dispatchEvent(r)}}]),e}();t.a=a},11:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9),i=n(13);n.d(t,"MDCSimpleMenu",function(){return i.a}),n.d(t,"MDCSimpleMenuFoundation",function(){return i.b}),n.d(t,"util",function(){return r})},13:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}n.d(t,"a",function(){return l});var a=n(1),s=n(14),u=n(9);n.d(t,"b",function(){return s.a});var c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=function(e){function t(){var e;r(this,t);for(var n=arguments.length,o=Array(n),a=0;a<n;a++)o[a]=arguments[a];var s=i(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(o)));return s.previousFocus_,s}return o(t,e),c(t,[{key:"show",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.focusIndex,n=void 0===t?null:t;this.foundation_.open({focusIndex:n})}},{key:"hide",value:function(){this.foundation_.close()}},{key:"getDefaultFoundation",value:function(){var e=this;return new s.a({addClass:function(t){return e.root_.classList.add(t)},removeClass:function(t){return e.root_.classList.remove(t)},hasClass:function(t){return e.root_.classList.contains(t)},hasNecessaryDom:function(){return Boolean(e.itemsContainer_)},getAttributeForEventTarget:function(e,t){return e.getAttribute(t)},getInnerDimensions:function(){var t=e.itemsContainer_;return{width:t.offsetWidth,height:t.offsetHeight}},hasAnchor:function(){return e.root_.parentElement&&e.root_.parentElement.classList.contains("mdc-menu-anchor")},getAnchorDimensions:function(){return e.root_.parentElement.getBoundingClientRect()},getWindowDimensions:function(){return{width:window.innerWidth,height:window.innerHeight}},setScale:function(t,n){e.root_.style[u.getTransformPropertyName(window)]="scale("+t+", "+n+")"},setInnerScale:function(t,n){e.itemsContainer_.style[u.getTransformPropertyName(window)]="scale("+t+", "+n+")"},getNumberOfItems:function(){return e.items.length},registerInteractionHandler:function(t,n){return e.root_.addEventListener(t,n)},deregisterInteractionHandler:function(t,n){return e.root_.removeEventListener(t,n)},registerBodyClickHandler:function(e){return document.body.addEventListener("click",e)},deregisterBodyClickHandler:function(e){return document.body.removeEventListener("click",e)},getYParamsForItemAtIndex:function(t){var n=e.items[t];return{top:n.offsetTop,height:n.offsetHeight}},setTransitionDelayForItemAtIndex:function(t,n){return e.items[t].style.setProperty("transition-delay",n)},getIndexForEventTarget:function(t){return e.items.indexOf(t)},notifySelected:function(t){return e.emit(s.a.strings.SELECTED_EVENT,{index:t.index,item:e.items[t.index]})},notifyCancel:function(){return e.emit(s.a.strings.CANCEL_EVENT,{})},saveFocus:function(){e.previousFocus_=document.activeElement},restoreFocus:function(){e.previousFocus_&&e.previousFocus_.focus()},isFocused:function(){return document.activeElement===e.root_},focus:function(){return e.root_.focus()},getFocusedItemIndex:function(){return e.items.indexOf(document.activeElement)},focusItemAtIndex:function(t){return e.items[t].focus()},isRtl:function(){return"rtl"===getComputedStyle(e.root_).getPropertyValue("direction")},setTransformOrigin:function(t){e.root_.style[u.getTransformPropertyName(window)+"-origin"]=t},setPosition:function(t){e.root_.style.left="left"in t?t.left:null,e.root_.style.right="right"in t?t.right:null,e.root_.style.top="top"in t?t.top:null,e.root_.style.bottom="bottom"in t?t.bottom:null},getAccurateTime:function(){return window.performance.now()}})}},{key:"open",get:function(){return this.foundation_.isOpen()},set:function(e){e?this.foundation_.open():this.foundation_.close()}},{key:"itemsContainer_",get:function(){return this.root_.querySelector(s.a.strings.ITEMS_SELECTOR)}},{key:"items",get:function(){var e=this.itemsContainer_;return[].slice.call(e.querySelectorAll(".mdc-list-item[role]"))}}],[{key:"attachTo",value:function(e){return new t(e)}}]),t}(a.a)},14:function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=n(0),u=(n(15),n(16)),c=n(9),l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),d=function(e){function t(e){i(this,t);var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,l(t.defaultAdapter,e)));return n.clickHandler_=function(e){return n.handlePossibleSelected_(e)},n.keydownHandler_=function(e){return n.handleKeyboardDown_(e)},n.keyupHandler_=function(e){return n.handleKeyboardUp_(e)},n.documentClickHandler_=function(e){n.adapter_.notifyCancel(),n.close(e)},n.isOpen_=!1,n.startScaleX_=0,n.startScaleY_=0,n.targetScale_=1,n.scaleX_=0,n.scaleY_=0,n.running_=!1,n.selectedTriggerTimerId_=0,n.animationRequestId_=0,n.dimensions_,n.startTime_,n.itemHeight_,n}return a(t,e),f(t,null,[{key:"cssClasses",get:function(){return u.a}},{key:"strings",get:function(){return u.c}},{key:"numbers",get:function(){return u.b}},{key:"defaultAdapter",get:function(){return{addClass:function(){},removeClass:function(){},hasClass:function(){return!1},hasNecessaryDom:function(){return!1},getAttributeForEventTarget:function(){},getInnerDimensions:function(){return{}},hasAnchor:function(){return!1},getAnchorDimensions:function(){return{}},getWindowDimensions:function(){return{}},setScale:function(){},setInnerScale:function(){},getNumberOfItems:function(){return 0},registerInteractionHandler:function(){},deregisterInteractionHandler:function(){},registerBodyClickHandler:function(){},deregisterBodyClickHandler:function(){},getYParamsForItemAtIndex:function(){return{}},setTransitionDelayForItemAtIndex:function(){},getIndexForEventTarget:function(){return 0},notifySelected:function(){},notifyCancel:function(){},saveFocus:function(){},restoreFocus:function(){},isFocused:function(){return!1},focus:function(){},getFocusedItemIndex:function(){return-1},focusItemAtIndex:function(){},isRtl:function(){return!1},setTransformOrigin:function(){},setPosition:function(){},getAccurateTime:function(){return 0}}}}]),f(t,[{key:"init",value:function(){var e=t.cssClasses,n=e.ROOT,r=e.OPEN;if(!this.adapter_.hasClass(n))throw new Error(n+" class required in root element.");if(!this.adapter_.hasNecessaryDom())throw new Error("Required DOM nodes missing in "+n+" component.");this.adapter_.hasClass(r)&&(this.isOpen_=!0),this.adapter_.registerInteractionHandler("click",this.clickHandler_),this.adapter_.registerInteractionHandler("keyup",this.keyupHandler_),this.adapter_.registerInteractionHandler("keydown",this.keydownHandler_)}},{key:"destroy",value:function(){clearTimeout(this.selectedTriggerTimerId_),cancelAnimationFrame(this.animationRequestId_),this.adapter_.deregisterInteractionHandler("click",this.clickHandler_),this.adapter_.deregisterInteractionHandler("keyup",this.keyupHandler_),this.adapter_.deregisterInteractionHandler("keydown",this.keydownHandler_),this.adapter_.deregisterBodyClickHandler(this.documentClickHandler_)}},{key:"applyTransitionDelays_",value:function(){for(var e=t.cssClasses,n=e.BOTTOM_LEFT,r=e.BOTTOM_RIGHT,i=this.adapter_.getNumberOfItems(),o=this.dimensions_.height,a=t.numbers.TRANSITION_DURATION_MS/1e3,s=t.numbers.TRANSITION_SCALE_ADJUSTMENT_Y,u=0;u<i;u++){var c=this.adapter_.getYParamsForItemAtIndex(u),l=c.top,f=c.height;this.itemHeight_=f;var d=l/o;(this.adapter_.hasClass(n)||this.adapter_.hasClass(r))&&(d=(o-l-f)/o);var h=(s+d*(1-s))*a;this.adapter_.setTransitionDelayForItemAtIndex(u,h.toFixed(3)+"s")}}},{key:"removeTransitionDelays_",value:function(){for(var e=this.adapter_.getNumberOfItems(),t=0;t<e;t++)this.adapter_.setTransitionDelayForItemAtIndex(t,null)}},{key:"animationLoop_",value:function(){var e=this,n=this.adapter_.getAccurateTime(),r=t.numbers,i=r.TRANSITION_DURATION_MS,o=r.TRANSITION_X1,a=r.TRANSITION_Y1,s=r.TRANSITION_X2,u=r.TRANSITION_Y2,l=r.TRANSITION_SCALE_ADJUSTMENT_X,f=r.TRANSITION_SCALE_ADJUSTMENT_Y,d=c.clamp((n-this.startTime_)/i),h=c.clamp((d-l)/(1-l)),_=d,m=this.startScaleY_;1===this.targetScale_&&(this.itemHeight_&&(m=Math.max(this.itemHeight_/this.dimensions_.height,m)),h=c.clamp(d+l),_=c.clamp((d-f)/(1-f)));var p=c.bezierProgress(h,o,a,s,u),y=c.bezierProgress(_,o,a,s,u);this.scaleX_=this.startScaleX_+(this.targetScale_-this.startScaleX_)*p;var v=1/(0===this.scaleX_?1:this.scaleX_);this.scaleY_=m+(this.targetScale_-m)*y;var g=1/(0===this.scaleY_?1:this.scaleY_);this.adapter_.setScale(this.scaleX_,this.scaleY_),this.adapter_.setInnerScale(v,g),d<1?this.animationRequestId_=requestAnimationFrame(function(){return e.animationLoop_()}):(this.animationRequestId_=0,this.running_=!1,this.adapter_.removeClass(t.cssClasses.ANIMATING))}},{key:"animateMenu_",value:function(){var e=this;this.startTime_=this.adapter_.getAccurateTime(),this.startScaleX_=this.scaleX_,this.startScaleY_=this.scaleY_,this.targetScale_=this.isOpen_?1:0,this.running_||(this.running_=!0,this.animationRequestId_=requestAnimationFrame(function(){return e.animationLoop_()}))}},{key:"focusOnOpen_",value:function(e){null===e?(this.adapter_.focus(),this.adapter_.isFocused()||this.adapter_.focusItemAtIndex(0)):this.adapter_.focusItemAtIndex(e)}},{key:"handleKeyboardDown_",value:function(e){if(e.altKey||e.ctrlKey||e.metaKey)return!0;var t=e.keyCode,n=e.key,r=e.shiftKey,i="Tab"===n||9===t,o="ArrowUp"===n||38===t,a="ArrowDown"===n||40===t,s="Space"===n||32===t,u=this.adapter_.getFocusedItemIndex(),c=this.adapter_.getNumberOfItems()-1;return r&&i&&0===u?(this.adapter_.focusItemAtIndex(c),e.preventDefault(),!1):!r&&i&&u===c?(this.adapter_.focusItemAtIndex(0),e.preventDefault(),!1):((o||a||s)&&e.preventDefault(),o?0===u||this.adapter_.isFocused()?this.adapter_.focusItemAtIndex(c):this.adapter_.focusItemAtIndex(u-1):a&&(u===c||this.adapter_.isFocused()?this.adapter_.focusItemAtIndex(0):this.adapter_.focusItemAtIndex(u+1)),!0)}},{key:"handleKeyboardUp_",value:function(e){if(e.altKey||e.ctrlKey||e.metaKey)return!0;var t=e.keyCode,n=e.key,r="Enter"===n||13===t,i="Space"===n||32===t,o="Escape"===n||27===t;return(r||i)&&this.handlePossibleSelected_(e),o&&(this.adapter_.notifyCancel(),this.close()),!0}},{key:"handlePossibleSelected_",value:function(e){var t=this;if("true"!==this.adapter_.getAttributeForEventTarget(e.target,u.c.ARIA_DISABLED_ATTR)){var n=this.adapter_.getIndexForEventTarget(e.target);n<0||this.selectedTriggerTimerId_||(this.selectedTriggerTimerId_=setTimeout(function(){t.selectedTriggerTimerId_=0,t.close(),t.adapter_.notifySelected({index:n})},u.b.SELECTED_TRIGGER_DELAY))}}},{key:"autoPosition_",value:function(){var e;if(this.adapter_.hasAnchor()){var t="top",n="left",i=this.adapter_.getAnchorDimensions(),o=this.adapter_.getWindowDimensions(),a=i.top+this.dimensions_.height-o.height,s=this.dimensions_.height-i.bottom;a>0&&s<a&&(t="bottom");var u=i.left+this.dimensions_.width-o.width,c=this.dimensions_.width-i.right,l=u>0,f=c>0;this.adapter_.isRtl()?(n="right",f&&u<c&&(n="left")):l&&c<u&&(n="right");var d=(e={},r(e,n,"0"),r(e,t,"0"),e);this.adapter_.setTransformOrigin(t+" "+n),this.adapter_.setPosition(d)}}},{key:"open",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.focusIndex,i=void 0===r?null:r;this.adapter_.saveFocus(),this.adapter_.addClass(t.cssClasses.ANIMATING),this.animationRequestId_=requestAnimationFrame(function(){e.dimensions_=e.adapter_.getInnerDimensions(),e.applyTransitionDelays_(),e.autoPosition_(),e.animateMenu_(),e.adapter_.addClass(t.cssClasses.OPEN),e.focusOnOpen_(i),e.adapter_.registerBodyClickHandler(e.documentClickHandler_)}),this.isOpen_=!0}},{key:"close",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;!!n&&"true"===this.adapter_.getAttributeForEventTarget(n.target,u.c.ARIA_DISABLED_ATTR)||(this.adapter_.deregisterBodyClickHandler(this.documentClickHandler_),this.adapter_.addClass(t.cssClasses.ANIMATING),requestAnimationFrame(function(){e.removeTransitionDelays_(),e.animateMenu_(),e.adapter_.removeClass(t.cssClasses.OPEN)}),this.isOpen_=!1,this.adapter_.restoreFocus())}},{key:"isOpen",value:function(){return this.isOpen_}}]),t}(s.a);t.a=d},15:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();!function(){function e(){r(this,e)}i(e,[{key:"addClass",value:function(e){}},{key:"removeClass",value:function(e){}},{key:"hasClass",value:function(e){}},{key:"hasNecessaryDom",value:function(){}},{key:"getAttributeForEventTarget",value:function(e,t){}},{key:"getInnerDimensions",value:function(){}},{key:"hasAnchor",value:function(){}},{key:"getAnchorDimensions",value:function(){}},{key:"getWindowDimensions",value:function(){}},{key:"setScale",value:function(e,t){}},{key:"setInnerScale",value:function(e,t){}},{key:"getNumberOfItems",value:function(){}},{key:"registerInteractionHandler",value:function(e,t){}},{key:"deregisterInteractionHandler",value:function(e,t){}},{key:"registerBodyClickHandler",value:function(e){}},{key:"deregisterBodyClickHandler",value:function(e){}},{key:"getYParamsForItemAtIndex",value:function(e){}},{key:"setTransitionDelayForItemAtIndex",value:function(e,t){}},{key:"getIndexForEventTarget",value:function(e){}},{key:"notifySelected",value:function(e){}},{key:"notifyCancel",value:function(){}},{key:"saveFocus",value:function(){}},{key:"restoreFocus",value:function(){}},{key:"isFocused",value:function(){}},{key:"focus",value:function(){}},{key:"getFocusedItemIndex",value:function(){}},{key:"focusItemAtIndex",value:function(e){}},{key:"isRtl",value:function(){}},{key:"setTransformOrigin",value:function(e){}},{key:"setPosition",value:function(e){}},{key:"getAccurateTime",value:function(){}}])}()},16:function(e,t,n){"use strict";n.d(t,"a",function(){return r}),n.d(t,"c",function(){return i}),n.d(t,"b",function(){return o});var r={ROOT:"mdc-simple-menu",OPEN:"mdc-simple-menu--open",ANIMATING:"mdc-simple-menu--animating",TOP_RIGHT:"mdc-simple-menu--open-from-top-right",BOTTOM_LEFT:"mdc-simple-menu--open-from-bottom-left",BOTTOM_RIGHT:"mdc-simple-menu--open-from-bottom-right"},i={ITEMS_SELECTOR:".mdc-simple-menu__items",SELECTED_EVENT:"MDCSimpleMenu:selected",CANCEL_EVENT:"MDCSimpleMenu:cancel",ARIA_DISABLED_ATTR:"aria-disabled"},o={SELECTED_TRIGGER_DELAY:50,TRANSITION_DURATION_MS:300,TRANSITION_SCALE_ADJUSTMENT_X:.5,TRANSITION_SCALE_ADJUSTMENT_Y:.2,TRANSITION_X1:0,TRANSITION_Y1:0,TRANSITION_X2:.2,TRANSITION_Y2:1}},64:function(e,t,n){e.exports=n(11)},9:function(e,t,n){"use strict";function r(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(void 0===u||t){var n=e.document.createElement("div"),r="transform"in n.style?"transform":"webkitTransform";u=r}return u}function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.min(n,Math.max(t,e))}function o(e,t,n,r,i){return a(s(e,t,r),n,i)}function a(e,t,n){if(0===e||1===e)return e;var r=e*t,i=t+e*(n-t),o=n+e*(1-n);return r+=e*(i-r),i+=e*(o-i),r+e*(i-r)}function s(e,t,n){if(e<=0)return 0;if(e>=1)return 1;for(var r=e,i=0,o=1,s=0,u=0;u<8;u++){s=a(r,t,n);var c=(a(r+1e-6,t,n)-s)/1e-6;if(Math.abs(s-e)<1e-6)return r;if(Math.abs(c)<1e-6)break;s<e?i=r:o=r,r-=(s-e)/c}for(var l=0;Math.abs(s-e)>1e-6&&l<8;l++)s<e?(i=r,r=(r+o)/2):(o=r,r=(r+i)/2),s=a(r,t,n);return r}Object.defineProperty(t,"__esModule",{value:!0}),t.getTransformPropertyName=r,t.clamp=i,t.bezierProgress=o;var u=void 0}})}); |
{ | ||
"name": "@material/menu", | ||
"version": "0.4.0", | ||
"version": "0.4.1", | ||
"description": "The Material Components for the web menu component", | ||
@@ -18,3 +18,3 @@ "license": "Apache-2.0", | ||
"@material/animation": "^0.2.3", | ||
"@material/base": "^0.2.1", | ||
"@material/base": "^0.2.2", | ||
"@material/elevation": "^0.1.9", | ||
@@ -21,0 +21,0 @@ "@material/theme": "^0.1.5", |
@@ -195,3 +195,3 @@ /** | ||
const {TRANSITION_DURATION_MS, TRANSITION_X1, TRANSITION_Y1, TRANSITION_X2, TRANSITION_Y2, | ||
TRANSITION_SCALE_ADJUSTMENT_X, TRANSITION_SCALE_ADJUSTMENT_Y} = MDCSimpleMenuFoundation.numbers; | ||
TRANSITION_SCALE_ADJUSTMENT_X, TRANSITION_SCALE_ADJUSTMENT_Y} = MDCSimpleMenuFoundation.numbers; | ||
const currentTime = clamp((time - this.startTime_) / TRANSITION_DURATION_MS); | ||
@@ -481,3 +481,1 @@ | ||
} | ||
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
150090
2665
1
Updated@material/base@^0.2.2