UNPKG

muicss

Version:

Lightweight CSS framework based on Google's Material Design guidelines

1,737 lines (1,417 loc) 114 kB
(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