muicss
Version:
Lightweight CSS framework based on Google's Material Design guidelines
1,737 lines (1,417 loc) • 114 kB
JavaScript
(function (global) {
var babelHelpers = global.babelHelpers = {};
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
babelHelpers.classCallCheck = _classCallCheck;
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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
babelHelpers.createClass = _createClass;
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
babelHelpers.defineProperty = _defineProperty;
function _extends() {
babelHelpers.extends = _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;
};
return _extends.apply(this, arguments);
}
babelHelpers.extends = _extends;
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) babelHelpers.setPrototypeOf(subClass, superClass);
}
babelHelpers.inherits = _inherits;
function _getPrototypeOf(o) {
babelHelpers.getPrototypeOf = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
babelHelpers.getPrototypeOf = _getPrototypeOf;
function _setPrototypeOf(o, p) {
babelHelpers.setPrototypeOf = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
babelHelpers.setPrototypeOf = _setPrototypeOf;
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
babelHelpers.interopRequireDefault = _interopRequireDefault;
function _getRequireWildcardCache() {
if (typeof WeakMap !== "function") return null;
var cache = new WeakMap();
_getRequireWildcardCache = function () {
return cache;
};
return cache;
}
function _interopRequireWildcard(obj) {
if (obj && obj.__esModule) {
return obj;
}
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
return {
default: obj
};
}
var cache = _getRequireWildcardCache();
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
newObj.default = obj;
if (cache) {
cache.set(obj, newObj);
}
return newObj;
}
babelHelpers.interopRequireWildcard = _interopRequireWildcard;
function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
babelHelpers.objectWithoutPropertiesLoose = _objectWithoutPropertiesLoose;
function _objectWithoutProperties(source, excluded) {
if (source == null) return {};
var target = babelHelpers.objectWithoutPropertiesLoose(source, excluded);
var key, i;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for (i = 0; i < sourceSymbolKeys.length; i++) {
key = sourceSymbolKeys[i];
if (excluded.indexOf(key) >= 0) continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
target[key] = source[key];
}
}
return target;
}
babelHelpers.objectWithoutProperties = _objectWithoutProperties;
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
babelHelpers.assertThisInitialized = _assertThisInitialized;
function _possibleConstructorReturn(self, call) {
if (call && (typeof call === "object" || typeof call === "function")) {
return call;
}
return babelHelpers.assertThisInitialized(self);
}
babelHelpers.possibleConstructorReturn = _possibleConstructorReturn;
})(typeof global === "undefined" ? self : global);(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
"use strict";
/**
* MUI React main module
* @module react/main
*/
(function (win) {
// return if library has been loaded already
if (win._muiReactLoaded) return;else win._muiReactLoaded = true;
var mui = win.mui = win.mui || [],
react = mui.react = {},
lib;
react.Appbar = require('src/react/appbar');
react.Button = require('src/react/button');
react.Caret = require('src/react/caret');
react.Checkbox = require('src/react/checkbox');
react.Col = require('src/react/col');
react.Container = require('src/react/container');
react.Divider = require('src/react/divider');
react.Dropdown = require('src/react/dropdown'), react.DropdownItem = require('src/react/dropdown-item'), react.Form = require('src/react/form');
react.Input = require('src/react/input');
react.Option = require('src/react/option');
react.Panel = require('src/react/panel');
react.Radio = require('src/react/radio');
react.Row = require('src/react/row');
react.Select = require('src/react/select');
react.Tab = require('src/react/tab');
react.Tabs = require('src/react/tabs');
react.Textarea = require('src/react/textarea');
})(window);
},{"src/react/appbar":11,"src/react/button":12,"src/react/caret":13,"src/react/checkbox":14,"src/react/col":15,"src/react/container":16,"src/react/divider":17,"src/react/dropdown":19,"src/react/dropdown-item":18,"src/react/form":20,"src/react/input":21,"src/react/option":22,"src/react/panel":23,"src/react/radio":24,"src/react/row":25,"src/react/select":26,"src/react/tab":27,"src/react/tabs":28,"src/react/textarea":29}],2:[function(require,module,exports){
/**
* Copyright (c) 2013-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @typechecks
*
*/
/*eslint-disable no-self-compare */
'use strict';
var hasOwnProperty = Object.prototype.hasOwnProperty;
/**
* inlined Object.is polyfill to avoid requiring consumers ship their own
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
*/
function is(x, y) {
// SameValue algorithm
if (x === y) {
// Steps 1-5, 7-10
// Steps 6.b-6.e: +0 != -0
// Added the nonzero y check to make Flow happy, but it is redundant
return x !== 0 || y !== 0 || 1 / x === 1 / y;
} else {
// Step 6.a: NaN == NaN
return x !== x && y !== y;
}
}
/**
* Performs equality by iterating through keys on an object and returning false
* when any key has values which are not strictly equal between the arguments.
* Returns true when the values of all keys are strictly equal.
*/
function shallowEqual(objA, objB) {
if (is(objA, objB)) {
return true;
}
if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
return false;
}
var keysA = Object.keys(objA);
var keysB = Object.keys(objB);
if (keysA.length !== keysB.length) {
return false;
}
// Test for A's keys different from B.
for (var i = 0; i < keysA.length; i++) {
if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
return false;
}
}
return true;
}
module.exports = shallowEqual;
},{}],3:[function(require,module,exports){
// shim for using process in browser
var process = module.exports = {};
// cached from whatever global is present so that test runners that stub it
// don't break things. But we need to wrap it in a try catch in case it is
// wrapped in strict mode code which doesn't define any globals. It's inside a
// function because try/catches deoptimize in certain engines.
var cachedSetTimeout;
var cachedClearTimeout;
function defaultSetTimout() {
throw new Error('setTimeout has not been defined');
}
function defaultClearTimeout () {
throw new Error('clearTimeout has not been defined');
}
(function () {
try {
if (typeof setTimeout === 'function') {
cachedSetTimeout = setTimeout;
} else {
cachedSetTimeout = defaultSetTimout;
}
} catch (e) {
cachedSetTimeout = defaultSetTimout;
}
try {
if (typeof clearTimeout === 'function') {
cachedClearTimeout = clearTimeout;
} else {
cachedClearTimeout = defaultClearTimeout;
}
} catch (e) {
cachedClearTimeout = defaultClearTimeout;
}
} ())
function runTimeout(fun) {
if (cachedSetTimeout === setTimeout) {
//normal enviroments in sane situations
return setTimeout(fun, 0);
}
// if setTimeout wasn't available but was latter defined
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
cachedSetTimeout = setTimeout;
return setTimeout(fun, 0);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedSetTimeout(fun, 0);
} catch(e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedSetTimeout.call(null, fun, 0);
} catch(e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
return cachedSetTimeout.call(this, fun, 0);
}
}
}
function runClearTimeout(marker) {
if (cachedClearTimeout === clearTimeout) {
//normal enviroments in sane situations
return clearTimeout(marker);
}
// if clearTimeout wasn't available but was latter defined
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
cachedClearTimeout = clearTimeout;
return clearTimeout(marker);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedClearTimeout(marker);
} catch (e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedClearTimeout.call(null, marker);
} catch (e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
return cachedClearTimeout.call(this, marker);
}
}
}
var queue = [];
var draining = false;
var currentQueue;
var queueIndex = -1;
function cleanUpNextTick() {
if (!draining || !currentQueue) {
return;
}
draining = false;
if (currentQueue.length) {
queue = currentQueue.concat(queue);
} else {
queueIndex = -1;
}
if (queue.length) {
drainQueue();
}
}
function drainQueue() {
if (draining) {
return;
}
var timeout = runTimeout(cleanUpNextTick);
draining = true;
var len = queue.length;
while(len) {
currentQueue = queue;
queue = [];
while (++queueIndex < len) {
if (currentQueue) {
currentQueue[queueIndex].run();
}
}
queueIndex = -1;
len = queue.length;
}
currentQueue = null;
draining = false;
runClearTimeout(timeout);
}
process.nextTick = function (fun) {
var args = new Array(arguments.length - 1);
if (arguments.length > 1) {
for (var i = 1; i < arguments.length; i++) {
args[i - 1] = arguments[i];
}
}
queue.push(new Item(fun, args));
if (queue.length === 1 && !draining) {
runTimeout(drainQueue);
}
};
// v8 likes predictible objects
function Item(fun, array) {
this.fun = fun;
this.array = array;
}
Item.prototype.run = function () {
this.fun.apply(null, this.array);
};
process.title = 'browser';
process.browser = true;
process.env = {};
process.argv = [];
process.version = ''; // empty string to avoid regexp issues
process.versions = {};
function noop() {}
process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;
process.prependListener = noop;
process.prependOnceListener = noop;
process.listeners = function (name) { return [] }
process.binding = function (name) {
throw new Error('process.binding is not supported');
};
process.cwd = function () { return '/' };
process.chdir = function (dir) {
throw new Error('process.chdir is not supported');
};
process.umask = function() { return 0; };
},{}],4:[function(require,module,exports){
/**
* Copyright (c) 2013-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @providesModule shallowCompare
*/
'use strict';
var shallowEqual = require('fbjs/lib/shallowEqual');
/**
* Does a shallow comparison for props and state.
* See ReactComponentWithPureRenderMixin
* See also https://facebook.github.io/react/docs/shallow-compare.html
*/
function shallowCompare(instance, nextProps, nextState) {
return (
!shallowEqual(instance.props, nextProps) ||
!shallowEqual(instance.state, nextState)
);
}
module.exports = shallowCompare;
},{"fbjs/lib/shallowEqual":2}],5:[function(require,module,exports){
"use strict";
/**
* MUI config module
* @module config
*/
/** Define module API */
module.exports = {
/** Use debug mode */
debug: true
};
},{}],6:[function(require,module,exports){
/**
* MUI CSS/JS form helpers module
* @module lib/forms.py
*/
'use strict';
var jqLite = require('./jqLite');
/**
* Menu position/size/scroll helper
* @returns {Object} Object with keys 'height', 'top', 'scrollTop'
*/
function getMenuPositionalCSSFn(wrapperEl, menuEl, selectedRow) {
var viewHeight = document.documentElement.clientHeight,
numRows = menuEl.children.length; // determine menu height
var h = parseInt(menuEl.offsetHeight),
height = Math.min(h, viewHeight); // determine row height
var p = parseInt(jqLite.css(menuEl, 'padding-top')),
rowHeight = (h - 2 * p) / numRows; // determine 'top'
var top, initTop, minTop, maxTop;
initTop = -1 * selectedRow * rowHeight;
minTop = -1 * wrapperEl.getBoundingClientRect().top;
maxTop = viewHeight - height + minTop;
top = Math.min(Math.max(initTop, minTop), maxTop); // determine 'scrollTop'
var scrollTop = 0,
scrollIdeal,
scrollMax;
if (h > viewHeight) {
scrollIdeal = top + p + selectedRow * rowHeight;
scrollMax = numRows * rowHeight + 2 * p - height;
scrollTop = Math.min(scrollIdeal, scrollMax);
}
return {
'height': height + 'px',
'top': top + 'px',
'scrollTop': scrollTop
};
}
/** Define module API */
module.exports = {
getMenuPositionalCSS: getMenuPositionalCSSFn
};
},{"./jqLite":7}],7:[function(require,module,exports){
/**
* MUI CSS/JS jqLite module
* @module lib/jqLite
*/
'use strict';
/**
* Add a class to an element.
* @param {Element} element - The DOM element.
* @param {string} cssClasses - Space separated list of class names.
*/
function jqLiteAddClass(element, cssClasses) {
if (!cssClasses || !element.setAttribute) return;
var existingClasses = _getExistingClasses(element),
splitClasses = cssClasses.split(' '),
cssClass;
for (var i = 0; i < splitClasses.length; i++) {
cssClass = splitClasses[i].trim();
if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {
existingClasses += cssClass + ' ';
}
}
element.setAttribute('class', existingClasses.trim());
}
/**
* Get or set CSS properties.
* @param {Element} element - The DOM element.
* @param {string} [name] - The property name.
* @param {string} [value] - The property value.
*/
function jqLiteCss(element, name, value) {
// Return full style object
if (name === undefined) {
return getComputedStyle(element);
}
var nameType = jqLiteType(name); // Set multiple values
if (nameType === 'object') {
for (var key in name) {
element.style[_camelCase(key)] = name[key];
}
return;
} // Set a single value
if (nameType === 'string' && value !== undefined) {
element.style[_camelCase(name)] = value;
}
var styleObj = getComputedStyle(element),
isArray = jqLiteType(name) === 'array'; // Read single value
if (!isArray) return _getCurrCssProp(element, name, styleObj); // Read multiple values
var outObj = {},
key;
for (var i = 0; i < name.length; i++) {
key = name[i];
outObj[key] = _getCurrCssProp(element, key, styleObj);
}
return outObj;
}
/**
* Check if element has class.
* @param {Element} element - The DOM element.
* @param {string} cls - The class name string.
*/
function jqLiteHasClass(element, cls) {
if (!cls || !element.getAttribute) return false;
return _getExistingClasses(element).indexOf(' ' + cls + ' ') > -1;
}
/**
* Return the type of a variable.
* @param {} somevar - The JavaScript variable.
*/
function jqLiteType(somevar) {
// handle undefined
if (somevar === undefined) return 'undefined'; // handle others (of type [object <Type>])
var typeStr = Object.prototype.toString.call(somevar);
if (typeStr.indexOf('[object ') === 0) {
return typeStr.slice(8, -1).toLowerCase();
} else {
throw new Error("MUI: Could not understand type: " + typeStr);
}
}
/**
* Attach an event handler to a DOM element
* @param {Element} element - The DOM element.
* @param {string} events - Space separated event names.
* @param {Function} callback - The callback function.
* @param {Boolean} useCapture - Use capture flag.
*/
function jqLiteOn(element, events, callback, useCapture) {
useCapture = useCapture === undefined ? false : useCapture;
var cache = element._muiEventCache = element._muiEventCache || {};
events.split(' ').map(function (event) {
// add to DOM
element.addEventListener(event, callback, useCapture); // add to cache
cache[event] = cache[event] || [];
cache[event].push([callback, useCapture]);
});
}
/**
* Remove an event handler from a DOM element
* @param {Element} element - The DOM element.
* @param {string} events - Space separated event names.
* @param {Function} callback - The callback function.
* @param {Boolean} useCapture - Use capture flag.
*/
function jqLiteOff(element, events, callback, useCapture) {
useCapture = useCapture === undefined ? false : useCapture; // remove from cache
var cache = element._muiEventCache = element._muiEventCache || {},
argsList,
args,
i;
events.split(' ').map(function (event) {
argsList = cache[event] || [];
i = argsList.length;
while (i--) {
args = argsList[i]; // remove all events if callback is undefined
if (callback === undefined || args[0] === callback && args[1] === useCapture) {
// remove from cache
argsList.splice(i, 1); // remove from DOM
element.removeEventListener(event, args[0], args[1]);
}
}
});
}
/**
* Attach an event hander which will only execute once per element per event
* @param {Element} element - The DOM element.
* @param {string} events - Space separated event names.
* @param {Function} callback - The callback function.
* @param {Boolean} useCapture - Use capture flag.
*/
function jqLiteOne(element, events, callback, useCapture) {
events.split(' ').map(function (event) {
jqLiteOn(element, event, function onFn(ev) {
// execute callback
if (callback) callback.apply(this, arguments); // remove wrapper
jqLiteOff(element, event, onFn, useCapture);
}, useCapture);
});
}
/**
* Get or set horizontal scroll position
* @param {Element} element - The DOM element
* @param {number} [value] - The scroll position
*/
function jqLiteScrollLeft(element, value) {
var win = window; // get
if (value === undefined) {
if (element === win) {
var docEl = document.documentElement;
return (win.pageXOffset || docEl.scrollLeft) - (docEl.clientLeft || 0);
} else {
return element.scrollLeft;
}
} // set
if (element === win) win.scrollTo(value, jqLiteScrollTop(win));else element.scrollLeft = value;
}
/**
* Get or set vertical scroll position
* @param {Element} element - The DOM element
* @param {number} value - The scroll position
*/
function jqLiteScrollTop(element, value) {
var win = window; // get
if (value === undefined) {
if (element === win) {
var docEl = document.documentElement;
return (win.pageYOffset || docEl.scrollTop) - (docEl.clientTop || 0);
} else {
return element.scrollTop;
}
} // set
if (element === win) win.scrollTo(jqLiteScrollLeft(win), value);else element.scrollTop = value;
}
/**
* Return object representing top/left offset and element height/width.
* @param {Element} element - The DOM element.
*/
function jqLiteOffset(element) {
var win = window,
rect = element.getBoundingClientRect(),
scrollTop = jqLiteScrollTop(win),
scrollLeft = jqLiteScrollLeft(win);
return {
top: rect.top + scrollTop,
left: rect.left + scrollLeft,
height: rect.height,
width: rect.width
};
}
/**
* Attach a callback to the DOM ready event listener
* @param {Function} fn - The callback function.
*/
function jqLiteReady(fn) {
var done = false,
top = true,
doc = document,
win = doc.defaultView,
root = doc.documentElement,
add = doc.addEventListener ? 'addEventListener' : 'attachEvent',
rem = doc.addEventListener ? 'removeEventListener' : 'detachEvent',
pre = doc.addEventListener ? '' : 'on';
var init = function init(e) {
if (e.type == 'readystatechange' && doc.readyState != 'complete') {
return;
}
(e.type == 'load' ? win : doc)[rem](pre + e.type, init, false);
if (!done && (done = true)) fn.call(win, e.type || e);
};
var poll = function poll() {
try {
root.doScroll('left');
} catch (e) {
setTimeout(poll, 50);
return;
}
init('poll');
};
if (doc.readyState == 'complete') {
fn.call(win, 'lazy');
} else {
if (doc.createEventObject && root.doScroll) {
try {
top = !win.frameElement;
} catch (e) {}
if (top) poll();
}
doc[add](pre + 'DOMContentLoaded', init, false);
doc[add](pre + 'readystatechange', init, false);
win[add](pre + 'load', init, false);
}
}
/**
* Remove classes from a DOM element
* @param {Element} element - The DOM element.
* @param {string} cssClasses - Space separated list of class names.
*/
function jqLiteRemoveClass(element, cssClasses) {
if (!cssClasses || !element.setAttribute) return;
var existingClasses = _getExistingClasses(element),
splitClasses = cssClasses.split(' '),
cssClass;
for (var i = 0; i < splitClasses.length; i++) {
cssClass = splitClasses[i].trim();
while (existingClasses.indexOf(' ' + cssClass + ' ') >= 0) {
existingClasses = existingClasses.replace(' ' + cssClass + ' ', ' ');
}
}
element.setAttribute('class', existingClasses.trim());
} // ------------------------------
// Utilities
// ------------------------------
var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g,
MOZ_HACK_REGEXP = /^moz([A-Z])/,
ESCAPE_REGEXP = /([.*+?^=!:${}()|\[\]\/\\])/g;
function _getExistingClasses(element) {
var classes = (element.getAttribute('class') || '').replace(/[\n\t]/g, '');
return ' ' + classes + ' ';
}
function _camelCase(name) {
return name.replace(SPECIAL_CHARS_REGEXP, function (_, separator, letter, offset) {
return offset ? letter.toUpperCase() : letter;
}).replace(MOZ_HACK_REGEXP, 'Moz$1');
}
function _escapeRegExp(string) {
return string.replace(ESCAPE_REGEXP, "\\$1");
}
function _getCurrCssProp(elem, name, computed) {
var ret; // try computed style
ret = computed.getPropertyValue(name); // try style attribute (if element is not attached to document)
if (ret === '' && !elem.ownerDocument) ret = elem.style[_camelCase(name)];
return ret;
}
/**
* Module API
*/
module.exports = {
/** Add classes */
addClass: jqLiteAddClass,
/** Get or set CSS properties */
css: jqLiteCss,
/** Check for class */
hasClass: jqLiteHasClass,
/** Remove event handlers */
off: jqLiteOff,
/** Return offset values */
offset: jqLiteOffset,
/** Add event handlers */
on: jqLiteOn,
/** Add an execute-once event handler */
one: jqLiteOne,
/** DOM ready event handler */
ready: jqLiteReady,
/** Remove classes */
removeClass: jqLiteRemoveClass,
/** Check JavaScript variable instance type */
type: jqLiteType,
/** Get or set horizontal scroll position */
scrollLeft: jqLiteScrollLeft,
/** Get or set vertical scroll position */
scrollTop: jqLiteScrollTop
};
},{}],8:[function(require,module,exports){
/**
* MUI CSS/JS utilities module
* @module lib/util
*/
'use strict';
var config = require('../config'),
jqLite = require('./jqLite'),
scrollLock = 0,
scrollLockCls = 'mui-scroll-lock',
scrollLockPos,
scrollStyleEl,
scrollEventHandler,
_scrollBarWidth,
_supportsPointerEvents;
scrollEventHandler = function scrollEventHandler(ev) {
// stop propagation on window scroll events
if (!ev.target.tagName) ev.stopImmediatePropagation();
};
/**
* Logging function
*/
function logFn() {
var win = window;
if (config.debug && typeof win.console !== "undefined") {
try {
win.console.log.apply(win.console, arguments);
} catch (a) {
var e = Array.prototype.slice.call(arguments);
win.console.log(e.join("\n"));
}
}
}
/**
* Load CSS text in new stylesheet
* @param {string} cssText - The css text.
*/
function loadStyleFn(cssText) {
var doc = document,
head; // copied from jQuery
head = doc.head || doc.getElementsByTagName('head')[0] || doc.documentElement;
var e = doc.createElement('style');
e.type = 'text/css';
if (e.styleSheet) e.styleSheet.cssText = cssText;else e.appendChild(doc.createTextNode(cssText)); // add to document
head.insertBefore(e, head.firstChild);
return e;
}
/**
* Raise an error
* @param {string} msg - The error message.
*/
function raiseErrorFn(msg, useConsole) {
if (useConsole) {
if (typeof console !== 'undefined') console.warn('MUI Warning: ' + msg);
} else {
throw new Error('MUI: ' + msg);
}
}
/**
* Convert Classname object, with class as key and true/false as value, to an
* class string.
* @param {Object} classes The classes
* @return {String} class string
*/
function classNamesFn(classes) {
var cs = '';
for (var i in classes) {
cs += classes[i] ? i + ' ' : '';
}
return cs.trim();
}
/**
* Check if client supports pointer events.
*/
function supportsPointerEventsFn() {
// check cache
if (_supportsPointerEvents !== undefined) return _supportsPointerEvents;
var element = document.createElement('x');
element.style.cssText = 'pointer-events:auto';
_supportsPointerEvents = element.style.pointerEvents === 'auto';
return _supportsPointerEvents;
}
/**
* Create callback closure.
* @param {Object} instance - The object instance.
* @param {String} funcName - The name of the callback function.
*/
function callbackFn(instance, funcName) {
return function () {
instance[funcName].apply(instance, arguments);
};
}
/**
* Dispatch event.
* @param {Element} element - The DOM element.
* @param {String} eventType - The event type.
* @param {Boolean} bubbles=true - If true, event bubbles.
* @param {Boolean} cancelable=true = If true, event is cancelable
* @param {Object} [data] - Data to add to event object
*/
function dispatchEventFn(element, eventType, bubbles, cancelable, data) {
var ev = document.createEvent('HTMLEvents'),
bubbles = bubbles !== undefined ? bubbles : true,
cancelable = cancelable !== undefined ? cancelable : true,
k;
ev.initEvent(eventType, bubbles, cancelable); // add data to event object
if (data) for (k in data) {
ev[k] = data[k];
} // dispatch
if (element) element.dispatchEvent(ev);
return ev;
}
/**
* Turn on window scroll lock.
*/
function enableScrollLockFn() {
// increment counter
scrollLock += 1; // add lock
if (scrollLock === 1) {
var doc = document,
win = window,
htmlEl = doc.documentElement,
bodyEl = doc.body,
scrollBarWidth = getScrollBarWidth(),
cssProps,
cssStr,
x; // define scroll lock class dynamically
cssProps = ['overflow:hidden'];
if (scrollBarWidth) {
// scrollbar-y
if (htmlEl.scrollHeight > htmlEl.clientHeight) {
x = parseInt(jqLite.css(bodyEl, 'padding-right')) + scrollBarWidth;
cssProps.push('padding-right:' + x + 'px');
} // scrollbar-x
if (htmlEl.scrollWidth > htmlEl.clientWidth) {
x = parseInt(jqLite.css(bodyEl, 'padding-bottom')) + scrollBarWidth;
cssProps.push('padding-bottom:' + x + 'px');
}
} // define css class dynamically
cssStr = '.' + scrollLockCls + '{';
cssStr += cssProps.join(' !important;') + ' !important;}';
scrollStyleEl = loadStyleFn(cssStr); // cancel 'scroll' event listener callbacks
jqLite.on(win, 'scroll', scrollEventHandler, true); // add scroll lock
scrollLockPos = {
left: jqLite.scrollLeft(win),
top: jqLite.scrollTop(win)
};
jqLite.addClass(bodyEl, scrollLockCls);
}
}
/**
* Turn off window scroll lock.
* @param {Boolean} resetPos - Reset scroll position to original value.
*/
function disableScrollLockFn(resetPos) {
// ignore
if (scrollLock === 0) return; // decrement counter
scrollLock -= 1; // remove lock
if (scrollLock === 0) {
// remove scroll lock and delete style element
jqLite.removeClass(document.body, scrollLockCls); // restore scroll position
if (resetPos) window.scrollTo(scrollLockPos.left, scrollLockPos.top); // restore scroll event listeners
jqLite.off(window, 'scroll', scrollEventHandler, true); // delete style element (deferred for Firefox Quantum bugfix)
setTimeout(function () {
scrollStyleEl.parentNode.removeChild(scrollStyleEl);
}, 0);
}
}
/**
* Return scroll bar width.
*/
var getScrollBarWidth = function getScrollBarWidth() {
// check cache
if (_scrollBarWidth !== undefined) return _scrollBarWidth; // calculate scroll bar width
var doc = document,
bodyEl = doc.body,
el = doc.createElement('div');
el.innerHTML = '<div style="width:50px;height:50px;position:absolute;' + 'left:-50px;top:-50px;overflow:auto;"><div style="width:1px;' + 'height:100px;"></div></div>';
el = el.firstChild;
bodyEl.appendChild(el);
_scrollBarWidth = el.offsetWidth - el.clientWidth;
bodyEl.removeChild(el);
return _scrollBarWidth;
};
/**
* requestAnimationFrame polyfilled
* @param {Function} callback - The callback function
*/
function requestAnimationFrameFn(callback) {
var fn = window.requestAnimationFrame;
if (fn) fn(callback);else setTimeout(callback, 0);
}
/**
* Define the module API
*/
module.exports = {
/** Create callback closures */
callback: callbackFn,
/** Classnames object to string */
classNames: classNamesFn,
/** Disable scroll lock */
disableScrollLock: disableScrollLockFn,
/** Dispatch event */
dispatchEvent: dispatchEventFn,
/** Enable scroll lock */
enableScrollLock: enableScrollLockFn,
/** Log messages to the console when debug is turned on */
log: logFn,
/** Load CSS text as new stylesheet */
loadStyle: loadStyleFn,
/** Raise MUI error */
raiseError: raiseErrorFn,
/** Request animation frame */
requestAnimationFrame: requestAnimationFrameFn,
/** Support Pointer Events check */
supportsPointerEvents: supportsPointerEventsFn
};
},{"../config":5,"./jqLite":7}],9:[function(require,module,exports){
/**
* MUI React helpers
* @module react/_helpers
*/
'use strict';
var controlledMessage = 'You provided a `value` prop to a form field ' + 'without an `OnChange` handler. Please see React documentation on ' + 'controlled components';
/** Module export */
module.exports = {
controlledMessage: controlledMessage
};
},{}],10:[function(require,module,exports){
/**
* MUI React Textfield Helpers
* @module react/_textfieldHelpers
*/
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.textfieldWrapper = void 0;
var _react = babelHelpers.interopRequireDefault(window.React);
var _reactAddonsShallowCompare = babelHelpers.interopRequireDefault(require("react-addons-shallow-compare"));
var jqLite = babelHelpers.interopRequireWildcard(require("../js/lib/jqLite"));
var util = babelHelpers.interopRequireWildcard(require("../js/lib/util"));
var _helpers = require("./_helpers");
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = babelHelpers.getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
/**
* Textfield Wrapper
* @function
*/
var textfieldWrapper = function textfieldWrapper(TextfieldComponent) {
var _class, _temp;
return _temp = _class = /*#__PURE__*/function (_React$Component) {
babelHelpers.inherits(_class, _React$Component);
var _super = _createSuper(_class);
function _class(props) {
var _this;
babelHelpers.classCallCheck(this, _class);
_this = _super.call(this, props); // set initial state
_this.state = {
isEmpty: isEmpty('value' in props ? props.value : props.defaultValue),
isTouched: false,
isPristine: true
}; // warn if value defined but onChange is not
if ('value' in props && !props.onChange) {
util.raiseError(_helpers.controlledMessage, true);
} // callbacks
var cb = util.callback;
_this.onBlurCB = cb(babelHelpers.assertThisInitialized(_this), 'onBlur');
_this.onChangeCB = cb(babelHelpers.assertThisInitialized(_this), 'onChange');
_this.onLabelClickCB = cb(babelHelpers.assertThisInitialized(_this), 'onLabelClick');
return _this;
}
babelHelpers.createClass(_class, [{
key: "onBlur",
value: function onBlur(ev) {
// ignore if event is a window blur
if (document.activeElement !== this.controlEl) {
this.setState({
isTouched: true
});
} // execute callback
var fn = this.props.onBlur;
fn && fn(ev);
}
}, {
key: "onChange",
value: function onChange(ev) {
this.setState({
isEmpty: isEmpty(ev.target.value),
isPristine: false
}); // execute callback
var fn = this.props.onChange;
fn && fn(ev);
}
}, {
key: "onLabelClick",
value: function onLabelClick(ev) {
// pointer-events shim
if (util.supportsPointerEvents() === false) {
ev.target.style.cursor = 'text';
this.controlEl.focus();
}
}
}, {
key: "UNSAFE_componentWillReceiveProps",
value: function UNSAFE_componentWillReceiveProps(nextProps) {
if ('value' in nextProps) {
this.setState({
isEmpty: isEmpty(nextProps.value)
});
}
}
}, {
key: "shouldComponentUpdate",
value: function shouldComponentUpdate(nextProps, nextState) {
return (0, _reactAddonsShallowCompare.default)(this, nextProps, nextState);
}
}, {
key: "componentDidMount",
value: function componentDidMount() {
// disable MUI js
this.controlEl._muiTextfield = true;
}
}, {
key: "render",
value: function render() {
var _this2 = this;
var wrapperCls = {},
inputCls = {},
labelEl;
var _this$props = this.props,
children = _this$props.children,
className = _this$props.className,
style = _this$props.style,
hint = _this$props.hint,
invalid = _this$props.invalid,
label = _this$props.label,
floatingLabel = _this$props.floatingLabel,
other = babelHelpers.objectWithoutProperties(_this$props, ["children", "className", "style", "hint", "invalid", "label", "floatingLabel"]);
var labelType = jqLite.type(label);
if (labelType == 'string' && label.length || labelType == 'object') {
labelEl = /*#__PURE__*/_react.default.createElement(Label, {
text: label,
onClick: this.onClickCB,
htmlFor: this.props.id
});
}
wrapperCls['mui-textfield'] = true;
wrapperCls['mui-textfield--float-label'] = floatingLabel;
wrapperCls = util.classNames(wrapperCls);
inputCls['mui--is-touched'] = this.state.isTouched;
inputCls['mui--is-untouched'] = !this.state.isTouched;
inputCls['mui--is-pristine'] = this.state.isPristine;
inputCls['mui--is-dirty'] = !this.state.isPristine;
inputCls['mui--is-empty'] = this.state.isEmpty;
inputCls['mui--is-not-empty'] = !this.state.isEmpty;
inputCls['mui--is-invalid'] = invalid;
inputCls = util.classNames(inputCls);
return /*#__PURE__*/_react.default.createElement("div", {
className: wrapperCls + ' ' + className,
style: style
}, /*#__PURE__*/_react.default.createElement(TextfieldComponent, babelHelpers.extends({
className: inputCls,
inputRef: function inputRef(el) {
_this2.controlEl = el;
},
placeholder: hint
}, other, {
onBlur: this.onBlurCB,
onChange: this.onChangeCB
})), labelEl);
}
}]);
return _class;
}(_react.default.Component), babelHelpers.defineProperty(_class, "defaultProps", {
className: '',
hint: null,
invalid: false,
label: null,
floatingLabel: false
}), _temp;
};
/**
* Label constructor
* @class
*/
exports.textfieldWrapper = textfieldWrapper;
var Label = /*#__PURE__*/function (_React$Component2) {
babelHelpers.inherits(Label, _React$Component2);
var _super2 = _createSuper(Label);
function Label() {
var _this3;
babelHelpers.classCallCheck(this, Label);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this3 = _super2.call.apply(_super2, [this].concat(args));
babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this3), "state", {
style: {}
});
return _this3;
}
babelHelpers.createClass(Label, [{
key: "componentDidMount",
value: function componentDidMount() {
var _this4 = this;
this.styleTimer = setTimeout(function () {
var s = '.15s ease-out';
var style;
style = {
transition: s,
WebkitTransition: s,
MozTransition: s,
OTransition: s,
msTransform: s
};
_this4.setState({
style: style
});
}, 150);
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
// clear timer
clearTimeout(this.styleTimer);
}
}, {
key: "render",
value: function render() {
return /*#__PURE__*/_react.default.createElement("label", {
style: this.state.style,
onClick: this.props.onClick,
htmlFor: this.props.htmlFor,
tabIndex: "-1" // firefox bugfix (see #252)
}, this.props.text);
}
}]);
return Label;
}(_react.default.Component);
/**
* isEmpty helper
* @function
*/
babelHelpers.defineProperty(Label, "defaultProps", {
text: '',
onClick: null
});
function isEmpty(value) {
return value === undefined || value === null || value === '';
}
/** Define module API */
},{"../js/lib/jqLite":7,"../js/lib/util":8,"./_helpers":9,"react":"react","react-addons-shallow-compare":4}],11:[function(require,module,exports){
/**
* MUI React Appbar Module
* @module react/appbar
*/
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = babelHelpers.interopRequireDefault(window.React);
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = babelHelpers.getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
/**
* Appbar constructor
* @class
*/
var Appbar = /*#__PURE__*/function (_React$Component) {
babelHelpers.inherits(Appbar, _React$Component);
var _super = _createSuper(Appbar);
function Appbar() {
babelHelpers.classCallCheck(this, Appbar);
return _super.apply(this, arguments);
}
babelHelpers.createClass(Appbar, [{
key: "render",
value: function render() {
var _this$props = this.props,
children = _this$props.children,
reactProps = babelHelpers.objectWithoutProperties(_this$props, ["children"]);
return /*#__PURE__*/_react.default.createElement("div", babelHelpers.extends({}, reactProps, {
className: 'mui-appbar ' + this.props.className
}), children);
}
}]);
return Appbar;
}(_react.default.Component);
/** Define module API */
babelHelpers.defineProperty(Appbar, "defaultProps", {
className: ''
});
var _default = Appbar;
exports.default = _default;
module.exports = exports.default;
},{"react":"react"}],12:[function(require,module,exports){
/**
* MUI React button module
* @module react/button
*/
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = babelHelpers.interopRequireDefault(window.React);
var jqLite = babelHelpers.interopRequireWildcard(require("../js/lib/jqLite"));
var util = babelHelpers.interopRequireWildcard(require("../js/lib/util"));
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = babelHelpers.getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = babelHelpers.getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return babelHelpers.possibleConstructorReturn(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
var btnClass = 'mui-btn',
btnAttrs = {
color: 1,
variant: 1,
size: 1
};
/**
* Button element
* @class
*/
var Button = /*#__PURE__*/function (_React$Component) {
babelHelpers.inherits(Button, _React$Component);
var _super = _createSuper(Button);
function Button(props) {
var _this;
babelHelpers.classCallCheck(this, Button);
_this = _super.call(this, props);
babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "state", {
rippleStyle: {},
rippleIsVisible: false
});
var cb = util.callback;
_this.onMouseDownCB = cb(babelHelpers.assertThisInitialized(_this), 'onMouseDown');
_this.onMouseUpCB = cb(babelHelpers.assertThisInitialized(_this), 'onMouseUp');
_this.onMouseLeaveCB = cb(babelHelpers.assertThisInitialized(_this), 'onMouseLeave');
_this.onTouchStartCB = cb(babelHelpers.assertThisInitialized(_this), 'onTouchStart');
_this.onTouchEndCB = cb(babelHelpers.assertThisInitialized(_this), 'onTouchEnd');
return _this;
}
babelHelpers.createClass(Button, [{
key: "componentDidMount",
value: function componentDidMount() {
// disable MUI js
var el = this.buttonElRef;
el._muiDropdown = true;
el._muiRipple = true;
}
}, {
key: "onMouseDown",
value: function onMouseDown(ev) {
this.showRipple(ev); // execute callback
var fn = this.props.onMouseDown;
fn && fn(ev);
}
}, {
key: "onMouseUp",
value: function onMouseUp(ev) {
this.hideRipple(ev); // execute callback
var fn = this.props.onMouseUp;
fn && fn(ev);
}
}, {
key: "onMouseLeave",
value: function onMouseLeave(ev) {
this.hideRipple(ev); // execute callback
var fn = this.props.onMouseLeave;
fn && fn(ev);
}
}, {
key: "onTouchStart",
value: function onTouchStart(ev) {
this.showRipple(ev); // execute callback
var fn = this.props.onTouchStart;
fn && fn(ev);
}
}, {
key: "onTouchEnd",
value: function onTouchEnd(ev) {
this.hideRipple(ev); // execute callback
var fn = this.props.onTouchEnd;
fn && fn(ev);
}
}, {
key: "showRipple",
value: function showRipple(ev) {
var buttonEl = this.buttonElRef; // de-dupe touch events
if ('ontouchstart' in buttonEl && ev.type === 'mousedown') return; // get (x, y) position of click
var offset = jqLite.offset(this.buttonElRef),
clickEv;
if (ev.type === 'touchstart' && ev.touches) clickEv = ev.touches[0];else clickEv = ev; // calculate radius
var radius = Math.sqrt(offset.width * offset.width + offset.height * offset.height);
var diameterPx = radius * 2 + 'px'; // add ripple to state
this.setState({
rippleStyle: {
top: Math.round(clickEv.pageY - offset.top - radius) + 'px',
left: Math.round(clickEv.pageX - offset.left - radius) + 'px',
width: diameterPx,
height: diameterPx
},
rippleIsVisible: true
});
}
}, {
key: "hideRipple",
value: function hideRipple(ev) {
this.setState({
rippleIsVisible: false
});
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate(prevProps, prevState) {
var state = this.state,
rippleEl = this.rippleElRef; // show ripple
if (state.rippleIsVisible && !prevState.rippleIsVisible) {
jqLite.removeClass(rippleEl, 'mui--is-animating');
jqLite.addClass(rippleEl, 'mui--is-visible');
util.req