(function (global) { var babelHelpers = global.babelHelpers = {}; babelHelpers.interopRequireDefault = function (obj) { return obj && obj.__esModule ? obj : { default: obj }; }; babelHelpers.interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }; })(typeof global === "undefined" ? self : global);(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o', link: function link(scope, element, attrs, controller, transcludeFn) { // use transcludeFn to pass ng-controller on parent element transcludeFn(scope, function (clone) { element.append(clone); }); } }; }); /** Define module API */ exports.default = moduleName; module.exports = exports['default']; },{"angular":"angular"}],3:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _angular = window.angular; var _angular2 = babelHelpers.interopRequireDefault(_angular); var _jqLite = require('../js/lib/jqLite'); var jqLite = babelHelpers.interopRequireWildcard(_jqLite); var _util = require('../js/lib/util'); var util = babelHelpers.interopRequireWildcard(_util); var moduleName = 'mui.button', supportsTouch = 'ontouchstart' in document.documentElement, mouseDownEvents = supportsTouch ? 'touchstart' : 'mousedown', mouseUpEvents = supportsTouch ? 'touchend' : 'mouseup mouseleave'; /** * MUI Angular Button Component * @module angular/button */ _angular2.default.module(moduleName, []).directive('muiButton', function () { return { restrict: 'AE', replace: true, template: '', transclude: true, link: function link(scope, element, attrs) { var isUndef = _angular2.default.isUndefined, el = element[0]; // disable MUI js el._muiDropdown = true; el._muiRipple = true; // handle disabled attribute if (!isUndef(attrs.disabled) && isUndef(attrs.ngDisabled)) { element.prop('disabled', true); } // set button styles _angular2.default.forEach(['variant', 'color', 'size'], function (attrName) { var attrVal = attrs[attrName]; if (attrVal) element.addClass('mui-btn--' + attrVal); }); } }; }).directive('muiRipple', ['$timeout', function ($timeout) { return { restrict: 'A', link: function link(scope, element, attrs) { var buttonEl = element[0]; // cache reference to ripple element buttonEl._rippleEl = buttonEl.querySelector('.mui-ripple'); // add mousedown and mouseup event ripple effect handlers element.on(mouseDownEvents, mouseDownHandler); } }; }]); /** * MouseDown event handler. * @param {Event} ev - The DOM event */ function mouseDownHandler(ev) { var buttonEl = this, rippleEl = buttonEl._rippleEl; // exit if disabled if (buttonEl.disabled) return; // add mouseup handler on first-click if (!rippleEl._init) { jqLite.on(buttonEl, mouseUpEvents, mouseUpHandler); rippleEl._init = true; } // get (x, y) position of click var offset = jqLite.offset(buttonEl), clickEv = ev.type === 'touchstart' ? ev.touches[0] : ev, radius, diameter; // calculate radius radius = Math.sqrt(offset.width * offset.width + offset.height * offset.height); diameter = radius * 2 + 'px'; // set position and dimensions jqLite.css(rippleEl, { width: diameter, height: diameter, top: Math.round(clickEv.pageY - offset.top - radius) + 'px', left: Math.round(clickEv.pageX - offset.left - radius) + 'px' }); jqLite.removeClass(rippleEl, 'mui--is-animating'); jqLite.addClass(rippleEl, 'mui--is-visible'); // start animation util.requestAnimationFrame(function () { jqLite.addClass(rippleEl, 'mui--is-animating'); }); } /** * MouseUp event handler. * @param {Event} ev - The DOM event */ function mouseUpHandler(ev) { // get ripple element var rippleEl = this._rippleEl; // allow a repaint to occur before removing class so animation shows for // tap events util.requestAnimationFrame(function () { jqLite.removeClass(rippleEl, 'mui--is-visible'); }); } /** Define module API */ exports.default = moduleName; module.exports = exports['default']; },{"../js/lib/jqLite":20,"../js/lib/util":21,"angular":"angular"}],4:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _angular = window.angular; var _angular2 = babelHelpers.interopRequireDefault(_angular); var moduleName = 'mui.caret'; /** * MUI Angular Caret Component * @module angular/caret */ _angular2.default.module(moduleName, []).directive('muiCaret', function () { return { restrict: 'AE', replace: true, template: '' }; }); /** Define module API */ exports.default = moduleName; module.exports = exports['default']; },{"angular":"angular"}],5:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _angular = window.angular; var _angular2 = babelHelpers.interopRequireDefault(_angular); var moduleName = 'mui.checkbox'; /** * MUI Angular Checkbox Component * @module angular/checkox */ _angular2.default.module(moduleName, []).directive('muiCheckbox', ['$parse', function () { return { restrict: 'AE', replace: true, scope: { label: '@', name: '@', value: '@', ngChecked: '=', ngDisabled: '=', ngModel: '=' }, template: function template(tElement, tAttrs) { var isUndef = _angular2.default.isUndefined, html = ''; html += '
', transclude: true, link: function link(scope, element, attrs, controller, transcludeFn) { // use transcludeFn to pass ng-controller on parent element transcludeFn(scope, function (clone) { element.append(clone); }); // iterate through breakpoints var breakpoints = { 'xs': 'mui-col-xs-', 'sm': 'mui-col-sm-', 'md': 'mui-col-md-', 'lg': 'mui-col-lg-', 'xl': 'mui-col-xl-', 'xs-offset': 'mui-col-xs-offset-', 'sm-offset': 'mui-col-sm-offset-', 'md-offset': 'mui-col-md-offset-', 'lg-offset': 'mui-col-lg-offset-', 'xl-offset': 'mui-col-xl-offset-' }; _angular2.default.forEach(breakpoints, function (value, key) { var attrVal = attrs[attrs.$normalize(key)]; if (attrVal) element.addClass(value + attrVal); }); } }; }); /** Define module API */ exports.default = moduleName; module.exports = exports['default']; },{"angular":"angular"}],7:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _angular = window.angular; var _angular2 = babelHelpers.interopRequireDefault(_angular); var moduleName = 'mui.container'; /** * MUI Angular Container Component * @module angular/container */ _angular2.default.module(moduleName, []).directive('muiContainer', function () { return { restrict: 'AE', template: '
', transclude: true, scope: true, replace: true, link: function link(scope, element, attrs, controller, transcludeFn) { // use transcludeFn to pass ng-controller on parent element transcludeFn(scope, function (clone) { element.append(clone); }); // handle fluid containers if (!_angular2.default.isUndefined(attrs.fluid)) { element.removeClass('mui-container').addClass('mui-container-fluid'); } } }; }); /** Define module API */ exports.default = moduleName; module.exports = exports['default']; },{"angular":"angular"}],8:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _angular = window.angular; var _angular2 = babelHelpers.interopRequireDefault(_angular); var moduleName = 'mui.divider'; /** * MUI Angular Divider Component * @module angular/divider */ _angular2.default.module(moduleName, []).directive('muiDivider', function () { return { restrict: 'AE', replace: true, compile: function compile(tElement, tAttrs) { tElement.addClass('mui-divider'); } }; }); /** Define module API */ exports.default = moduleName; module.exports = exports['default']; },{"angular":"angular"}],9:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _angular = window.angular; var _angular2 = babelHelpers.interopRequireDefault(_angular); var moduleName = 'mui.dropdown-item'; /** * MUI Angular DropdownItem Component * @module angular/dropdown-item */ _angular2.default.module(moduleName, []).directive('muiDropdownItem', function () { return { restrict: 'AE', replace: true, scope: { link: '@' }, transclude: true, template: '
  • ' }; }); /** Define module API */ exports.default = moduleName; module.exports = exports['default']; },{"angular":"angular"}],10:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _angular = window.angular; var _angular2 = babelHelpers.interopRequireDefault(_angular); var moduleName = 'mui.dropdown'; /** * MUI Angular Dropdown Component * @module angular/dropdown */ _angular2.default.module(moduleName, []).directive('muiDropdown', ['$timeout', '$compile', function ($timeout, $compile) { return { restrict: 'AE', transclude: true, replace: true, scope: { variant: '@', color: '@', size: '@', open: '=?', ngDisabled: '=' }, template: '
    ' + '' + '' + '
    ', link: function link(scope, element, attrs) { var dropdownClass = 'mui-dropdown', menuClass = 'mui-dropdown__menu', openClass = 'mui--is-open', rightClass = 'mui-dropdown__menu--right', isUndef = _angular2.default.isUndefined, menuEl, buttonEl; // save references menuEl = _angular2.default.element(element[0].querySelector('.' + menuClass)); buttonEl = _angular2.default.element(element[0].querySelector('.mui-btn')); menuEl.css('margin-top', '-3px'); // handle is-open if (!isUndef(attrs.open)) scope.open = true; // handle disabled if (!isUndef(attrs.disabled)) { buttonEl.attr('disabled', true); } // handle right-align if (!isUndef(attrs.rightAlign)) menuEl.addClass(rightClass); // handle no-caret if (!isUndef(attrs.noCaret)) buttonEl.html(attrs.label);else buttonEl.html(attrs.label + ' '); function closeDropdownFn() { scope.open = false; scope.$apply(); } function handleKeyDownFn(ev) { // close dropdown on escape key var key = ev.key; if (key === 'Escape' || key === 'Esc') closeDropdownFn(); } // handle menu open scope.$watch('open', function (newValue) { var doc = document; if (newValue === true) { menuEl.addClass(openClass); doc.addEventListener('click', closeDropdownFn); doc.addEventListener('keydown', handleKeyDownFn); } else if (newValue === false) { menuEl.removeClass(openClass); doc.removeEventListener('click', closeDropdownFn); doc.removeEventListener('keydown', handleKeyDownFn); } }); // click handler scope.onClick = function ($event) { // exit if disabled if (scope.disabled) return; // prevent form submission $event.preventDefault(); $event.stopPropagation(); // toggle open if (scope.open) scope.open = false;else scope.open = true; }; } }; }]); /** Define module API */ exports.default = moduleName; module.exports = exports['default']; },{"angular":"angular"}],11:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _angular = window.angular; var _angular2 = babelHelpers.interopRequireDefault(_angular); var moduleName = 'mui.form'; /** * MUI Angular Form Directive * @module angular/form */ _angular2.default.module(moduleName, []).directive('muiForm', function () { return { restrict: 'AE', template: '
    ', transclude: true, scope: true, replace: true, link: function link(scope, element, attrs, controller, transcludeFn) { // use transcludeFn to pass ng-controller on parent element transcludeFn(scope, function (clone) { element.append(clone); }); // handle inline forms if (!_angular2.default.isUndefined(attrs.inline)) { element.addClass('mui-form--inline'); } } }; }); /** Define module API */ exports.default = moduleName; module.exports = exports['default']; },{"angular":"angular"}],12:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _angular = window.angular; var _angular2 = babelHelpers.interopRequireDefault(_angular); var moduleName = 'mui.input'; /** * Build directive function. * @param {Boolean} isTextArea */ /** * MUI Angular Input and Textarea Components * @module angular/input */ function inputFactory(isTextArea) { var scopeArgs, template, ngClassStr, attrs; // defaults scopeArgs = { floatLabel: '@', hint: '@', label: '@', name: '@', ngDisabled: '=', ngMaxlength: '@', ngMinlength: '@', ngModel: '=' }; template = '
    '; ngClassStr = '{' + ["'mui--is-touched': inputCtrl.$touched", // hasn't lost focus yet "'mui--is-untouched': inputCtrl.$untouched", "'mui--is-pristine': inputCtrl.$pristine", // user hasn't interacted yet "'mui--is-dirty': inputCtrl.$dirty", "'mui--is-empty': inputCtrl.$isEmpty(inputCtrl.$viewValue)", "'mui--is-not-empty': !inputCtrl.$isEmpty(inputCtrl.$viewValue)", "'mui--is-invalid': inputCtrl.$invalid"].join(',') + '}'; attrs = ['name={{name}}', 'placeholder={{hint}}', 'ng-class="' + ngClassStr + '"', 'ng-disabled="ngDisabled"', 'ng-maxlength={{ngMaxlength}}', 'ng-minlength={{ngMinlength}}', 'ng-model="ngModel"']; // element-specific if (!isTextArea) { scopeArgs.type = '@'; attrs.push('type={{type}}'); template += ''; } else { scopeArgs.rows = '@'; attrs.push('rows={{rows}}'); template += ''; } // update template template += '
    '; // directive function return ['$timeout', function ($timeout) { return { restrict: 'AE', require: ['ngModel'], scope: scopeArgs, replace: true, template: template, link: function link(scope, element, attrs, controllers) { var inputEl = element.find(isTextArea ? 'textarea' : 'input'), labelEl = element.find('label'), ngModelCtrl = controllers[0], formCtrl = controllers[1], isUndef = _angular2.default.isUndefined, el = inputEl[0]; // add inputCrl to scope scope.inputCtrl = inputEl.controller('ngModel'); // disable MUI js if (el) el._muiTextfield = true; // remove attributes from wrapper element.removeAttr('ng-change'); element.removeAttr('ng-model'); element.removeAttr('ng-minlength'); element.removeAttr('ng-maxlength'); // scope defaults if (!isTextArea) scope.type = scope.type || 'text';else scope.rows = scope.rows || 2; // autofocus if (!isUndef(attrs.autofocus)) inputEl[0].focus(); // required if (!isUndef(attrs.required)) inputEl.prop('required', true); // invalid if (!isUndef(attrs.invalid)) inputEl.addClass('mui--is-invalid'); // float-label if (!isUndef(scope.floatLabel)) { element.addClass('mui-textfield--float-label'); $timeout(function () { labelEl.css({ 'transition': '.15s ease-out', '-webkit-transition': '.15s ease-out', '-moz-transition': '.15s ease-out', '-o-transition': '.15s ease-out', '-ms-transition': '.15s ease-out' }); }, 150); } // handle changes scope.onChange = function () { // trigger ng-change on parent if (ngModelCtrl) ngModelCtrl.$setViewValue(scope.ngModel); }; } }; }]; } _angular2.default.module(moduleName, []).directive('muiInput', inputFactory(false)).directive('muiTextarea', inputFactory(true)); /** Define module API */ exports.default = moduleName; module.exports = exports['default']; },{"angular":"angular"}],13:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _angular = window.angular; var _angular2 = babelHelpers.interopRequireDefault(_angular); var moduleName = 'mui.panel'; /** * MUI Angular Panel Component * @module angular/panel */ _angular2.default.module(moduleName, []).directive('muiPanel', function () { return { restrict: 'AE', replace: true, scope: true, template: '
    ', transclude: true, link: function link(scope, element, attr, controller, transcludeFn) { transcludeFn(scope, function (clone) { element.append(clone); }); } }; }); /** Define module API */ exports.default = moduleName; module.exports = exports['default']; },{"angular":"angular"}],14:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _angular = window.angular; var _angular2 = babelHelpers.interopRequireDefault(_angular); var moduleName = 'mui.radio'; /** * MUI Angular Radio Component * @module angular/radio */ _angular2.default.module(moduleName, []).directive('muiRadio', function () { return { restrict: 'AE', replace: true, scope: { label: '@', name: '@', value: '@', ngChecked: '=', ngDisabled: '=', ngModel: '=' }, template: function template(tElement, tAttrs) { var isUndef = _angular2.default.isUndefined, html = ''; html += '
    ', transclude: true, link: function link(scope, element, attr, controller, transcludeFn) { transcludeFn(scope, function (clone) { element.append(clone); }); } }; }); /** Define module API */ exports.default = moduleName; module.exports = exports['default']; },{"angular":"angular"}],16:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _angular = window.angular; var _angular2 = babelHelpers.interopRequireDefault(_angular); var _forms = require('../js/lib/forms'); var formlib = babelHelpers.interopRequireWildcard(_forms); var _util = require('../js/lib/util'); var util = babelHelpers.interopRequireWildcard(_util); var _jqLite = require('../js/lib/jqLite'); var jqLite = babelHelpers.interopRequireWildcard(_jqLite); /** * MUI Angular Select Component * @module angular/select */ var moduleName = 'mui.select'; _angular2.default.module(moduleName, []).directive('muiSelect', ['$timeout', function ($timeout) { return { restrict: 'AE', require: ['ngModel'], scope: { label: '@', name: '@', ngDisabled: '=', ngModel: '=' }, replace: true, transclude: true, template: '
    ' + '' + '' + '
    ' + '
    {{option.label}}
    ' + '
    ' + '
    ', link: function link(scope, element, attrs, controller, transcludeFn) { var wrapperEl = element, menuEl = element.find('div'), selectEl = element.find('select'), isUndef = _angular2.default.isUndefined, cacheIndex; // disable MUI js selectEl[0]._muiSelect = true; // init scope scope.options = []; scope.isOpen = false; scope.useDefault = 'ontouchstart' in document.documentElement ? true : false; scope.origTabIndex = selectEl[0].tabIndex; scope.menuIndex = 0; scope.q = ''; scope.qTimeout = null; // handle `use-default` attribute if (!isUndef(attrs.useDefault)) scope.useDefault = true; // use tabIndex to make wrapper or inner focusable if (scope.useDefault === false) { wrapperEl.prop('tabIndex', '0'); selectEl.prop('tabIndex', '-1'); } else { wrapperEl.prop('tabIndex', '-1'); selectEl.prop('tabIndex', '0'); } // extract