AzuraCast/frontend/js/material.js

641 lines
19 KiB
JavaScript

/*!
* Daemonite Material v4.1.1 (http://daemonite.github.io/material/)
* Copyright 2011-2018 Daemon Pty Ltd
* Licensed under MIT (https://github.com/Daemonite/material/blob/master/LICENSE)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery')) :
typeof define === 'function' && define.amd ? define(['exports', 'jquery'], factory) :
(factory((global.material = {}),global.jQuery));
}(this, (function (exports,$) { 'use strict';
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
/*
* Expansion panel plugins expands a collapsed panel in full upon selecting
*/
var ExpansionPanel = function ($$$1) {
// constants >>>
var DATA_KEY = 'bs.collapse';
var EVENT_KEY = "." + DATA_KEY;
var ClassName = {
SHOW: 'show',
SHOW_PREDECESSOR: 'show-predecessor'
};
var Event = {
HIDE: "hide" + EVENT_KEY,
SHOW: "show" + EVENT_KEY
};
var Selector = {
PANEL: '.expansion-panel',
PANEL_BODY: '.expansion-panel .collapse' // <<< constants
};
$$$1(document).on("" + Event.HIDE, Selector.PANEL_BODY, function () {
var target = $$$1(this).closest(Selector.PANEL);
target.removeClass(ClassName.SHOW);
var predecessor = target.prev(Selector.PANEL);
if (predecessor.length) {
predecessor.removeClass(ClassName.SHOW_PREDECESSOR);
}
}).on("" + Event.SHOW, Selector.PANEL_BODY, function () {
var target = $$$1(this).closest(Selector.PANEL);
target.addClass(ClassName.SHOW);
var predecessor = target.prev(Selector.PANEL);
if (predecessor.length) {
predecessor.addClass(ClassName.SHOW_PREDECESSOR);
}
});
}($);
/*
* Floating label plugin moves inline label to float above the field
* when a user engages with the assosciated text input field
*/
var FloatingLabel = function ($$$1) {
// constants >>>
var DATA_KEY = 'md.floatinglabel';
var EVENT_KEY = "." + DATA_KEY;
var NAME = 'floatinglabel';
var NO_CONFLICT = $$$1.fn[NAME];
var ClassName = {
IS_FOCUSED: 'is-focused',
HAS_VALUE: 'has-value'
};
var Event = {
CHANGE: "change" + EVENT_KEY,
FOCUSIN: "focusin" + EVENT_KEY,
FOCUSOUT: "focusout" + EVENT_KEY
};
var Selector = {
DATA_PARENT: '.floating-label',
DATA_TOGGLE: '.floating-label .custom-select, .floating-label .form-control' // <<< constants
};
var FloatingLabel =
/*#__PURE__*/
function () {
function FloatingLabel(element) {
this._element = element;
this._parent = $$$1(element).closest(Selector.DATA_PARENT)[0];
}
var _proto = FloatingLabel.prototype;
_proto.change = function change() {
if ($$$1(this._element).val() || $$$1(this._element).is('select') && $$$1('option:first-child', $$$1(this._element)).html().replace(' ', '') !== '') {
$$$1(this._parent).addClass(ClassName.HAS_VALUE);
} else {
$$$1(this._parent).removeClass(ClassName.HAS_VALUE);
}
};
_proto.focusin = function focusin() {
$$$1(this._parent).addClass(ClassName.IS_FOCUSED);
};
_proto.focusout = function focusout() {
$$$1(this._parent).removeClass(ClassName.IS_FOCUSED);
};
FloatingLabel._jQueryInterface = function _jQueryInterface(event) {
return this.each(function () {
var _event = event ? event : 'change';
var data = $$$1(this).data(DATA_KEY);
if (!data) {
data = new FloatingLabel(this);
$$$1(this).data(DATA_KEY, data);
}
if (typeof _event === 'string') {
if (typeof data[_event] === 'undefined') {
throw new Error("No method named \"" + _event + "\"");
}
data[_event]();
}
});
};
return FloatingLabel;
}();
$$$1(document).on(Event.CHANGE + " " + Event.FOCUSIN + " " + Event.FOCUSOUT, Selector.DATA_TOGGLE, function (event) {
FloatingLabel._jQueryInterface.call($$$1(this), event.type);
});
$$$1.fn[NAME] = FloatingLabel._jQueryInterface;
$$$1.fn[NAME].Constructor = FloatingLabel;
$$$1.fn[NAME].noConflict = function () {
$$$1.fn[NAME] = NO_CONFLICT;
return FloatingLabel._jQueryInterface;
};
return FloatingLabel;
}($);
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;
}
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;
}
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
var ownKeys = Object.keys(source);
if (typeof Object.getOwnPropertySymbols === 'function') {
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
}));
}
ownKeys.forEach(function (key) {
_defineProperty(target, key, source[key]);
});
}
return target;
}
/*
* Global util js
* Based on Bootstrap's (v4.1.X) `util.js`
*/
var Util = function ($$$1) {
var MAX_UID = 1000000;
var MILLISECONDS_MULTIPLIER = 1000;
var TRANSITION_END = 'transitionend';
function getSpecialTransitionEndEvent() {
return {
bindType: TRANSITION_END,
delegateType: TRANSITION_END,
handle: function handle(event) {
if ($$$1(event.target).is(this)) {
return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
}
return undefined; // eslint-disable-line no-undefined
}
};
}
function setTransitionEndSupport() {
$$$1.fn.emulateTransitionEnd = transitionEndEmulator;
$$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
}
function toType(obj) {
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
}
function transitionEndEmulator(duration) {
var _this = this;
var called = false;
$$$1(this).one(Util.TRANSITION_END, function () {
called = true;
});
setTimeout(function () {
if (!called) {
Util.triggerTransitionEnd(_this);
}
}, duration);
return this;
}
var Util = {
TRANSITION_END: 'mdTransitionEnd',
getSelectorFromElement: function getSelectorFromElement(element) {
var selector = element.getAttribute('data-target');
if (!selector || selector === '#') {
selector = element.getAttribute('href') || '';
}
try {
var $selector = $$$1(document).find(selector);
return $selector.length > 0 ? selector : null;
} catch (err) {
return null;
}
},
getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
if (!element) {
return 0;
}
var transitionDuration = $$$1(element).css('transition-duration');
if (!transitionDuration) {
return 0;
}
transitionDuration = transitionDuration.split(',')[0];
return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER;
},
getUID: function getUID(prefix) {
do {
// eslint-disable-next-line no-bitwise
prefix += ~~(Math.random() * MAX_UID);
} while (document.getElementById(prefix));
return prefix;
},
isElement: function isElement(obj) {
return (obj[0] || obj).nodeType;
},
reflow: function reflow(element) {
return element.offsetHeight;
},
supportsTransitionEnd: function supportsTransitionEnd() {
return Boolean(TRANSITION_END);
},
triggerTransitionEnd: function triggerTransitionEnd(element) {
$$$1(element).trigger(TRANSITION_END);
},
typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
for (var property in configTypes) {
if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
var expectedTypes = configTypes[property];
var value = config[property];
var valueType = value && Util.isElement(value) ? 'element' : toType(value);
if (!new RegExp(expectedTypes).test(valueType)) {
throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
}
}
}
}
};
setTransitionEndSupport();
return Util;
}($);
/*
* Navigation drawer plguin
* Based on Bootstrap's (v4.1.X) `modal.js`
*/
var NavDrawer = function ($$$1) {
// constants >>>
var DATA_API_KEY = '.data-api';
var DATA_KEY = 'md.navdrawer';
var ESCAPE_KEYCODE = 27;
var EVENT_KEY = "." + DATA_KEY;
var NAME = 'navdrawer';
var NO_CONFLICT = $$$1.fn[NAME];
var ClassName = {
BACKDROP: 'navdrawer-backdrop',
OPEN: 'navdrawer-open',
SHOW: 'show'
};
var Default = {
breakpoint: '',
keyboard: true,
show: true,
type: 'default'
};
var DefaultType = {
keyboard: 'boolean',
show: 'boolean',
type: 'string'
};
var Event = {
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
FOCUSIN: "focusin" + EVENT_KEY,
HIDDEN: "hidden" + EVENT_KEY,
HIDE: "hide" + EVENT_KEY,
KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
SHOW: "show" + EVENT_KEY,
SHOWN: "shown" + EVENT_KEY
};
var Selector = {
CONTENT: '.navdrawer-content',
DATA_DISMISS: '[data-dismiss="navdrawer"]',
DATA_TOGGLE: '[data-toggle="navdrawer"]' // <<< constants
};
var NavDrawer =
/*#__PURE__*/
function () {
function NavDrawer(element, config) {
this._backdrop = null;
this._config = this._getConfig(config);
this._content = $$$1(element).find(Selector.CONTENT)[0];
this._element = element;
this._ignoreBackdropClick = false;
this._isShown = false;
this._typeBreakpoint = this._config.breakpoint === '' ? '' : "-" + this._config.breakpoint;
}
var _proto = NavDrawer.prototype;
_proto.hide = function hide(event) {
var _this = this;
if (event) {
event.preventDefault();
}
if (this._isTransitioning || !this._isShown) {
return;
}
var hideEvent = $$$1.Event(Event.HIDE);
$$$1(this._element).trigger(hideEvent);
if (!this._isShown || hideEvent.isDefaultPrevented()) {
return;
}
this._isShown = false;
this._isTransitioning = true;
this._setEscapeEvent();
$$$1(document).off(Event.FOCUSIN);
$$$1(document.body).removeClass(ClassName.OPEN + "-" + this._config.type + this._typeBreakpoint);
$$$1(this._element).removeClass(ClassName.SHOW);
$$$1(this._element).off(Event.CLICK_DISMISS);
$$$1(this._content).off(Event.MOUSEDOWN_DISMISS);
var transitionDuration = Util.getTransitionDurationFromElement(this._content);
$$$1(this._content).one(Util.TRANSITION_END, function (event) {
return _this._hideNavdrawer(event);
}).emulateTransitionEnd(transitionDuration);
this._showBackdrop();
};
_proto.show = function show(relatedTarget) {
var _this2 = this;
if (this._isTransitioning || this._isShown) {
return;
}
this._isTransitioning = true;
var showEvent = $$$1.Event(Event.SHOW, {
relatedTarget: relatedTarget
});
$$$1(this._element).trigger(showEvent);
if (this._isShown || showEvent.isDefaultPrevented()) {
return;
}
this._isShown = true;
this._setEscapeEvent();
$$$1(this._element).addClass(NAME + "-" + this._config.type + this._typeBreakpoint);
$$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
return _this2.hide(event);
});
$$$1(this._content).on(Event.MOUSEDOWN_DISMISS, function () {
$$$1(_this2._element).one(Event.MOUSEUP_DISMISS, function (event) {
if ($$$1(event.target).is(_this2._element)) {
_this2._ignoreBackdropClick = true;
}
});
});
this._showBackdrop();
this._showElement(relatedTarget);
};
_proto.toggle = function toggle(relatedTarget) {
return this._isShown ? this.hide() : this.show(relatedTarget);
};
_proto._enforceFocus = function _enforceFocus() {
var _this3 = this;
$$$1(document).off(Event.FOCUSIN).on(Event.FOCUSIN, function (event) {
if (document !== event.target && _this3._element !== event.target && $$$1(_this3._element).has(event.target).length === 0) {
_this3._element.focus();
}
});
};
_proto._getConfig = function _getConfig(config) {
config = _objectSpread({}, Default, config);
Util.typeCheckConfig(NAME, config, DefaultType);
return config;
};
_proto._hideNavdrawer = function _hideNavdrawer() {
this._element.style.display = 'none';
this._element.setAttribute('aria-hidden', true);
this._isTransitioning = false;
$$$1(this._element).trigger(Event.HIDDEN);
};
_proto._removeBackdrop = function _removeBackdrop() {
if (this._backdrop) {
$$$1(this._backdrop).remove();
this._backdrop = null;
}
};
_proto._setEscapeEvent = function _setEscapeEvent() {
var _this4 = this;
if (this._isShown && this._config.keyboard) {
$$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
if (event.which === ESCAPE_KEYCODE) {
event.preventDefault();
_this4.hide();
}
});
} else if (!this._isShown) {
$$$1(this._element).off(Event.KEYDOWN_DISMISS);
}
};
_proto._showBackdrop = function _showBackdrop() {
var _this5 = this;
if (this._isShown) {
this._backdrop = document.createElement('div');
$$$1(this._backdrop).addClass(ClassName.BACKDROP).addClass(ClassName.BACKDROP + "-" + this._config.type + this._typeBreakpoint).appendTo(document.body);
$$$1(this._element).on(Event.CLICK_DISMISS, function (event) {
if (_this5._ignoreBackdropClick) {
_this5._ignoreBackdropClick = false;
return;
}
if (event.target !== event.currentTarget) {
return;
}
_this5.hide();
});
Util.reflow(this._backdrop);
$$$1(this._backdrop).addClass(ClassName.SHOW);
} else if (!this._isShown && this._backdrop) {
$$$1(this._backdrop).removeClass(ClassName.SHOW);
this._removeBackdrop();
}
};
_proto._showElement = function _showElement(relatedTarget) {
var _this6 = this;
if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
document.body.appendChild(this._element);
}
this._element.style.display = 'block';
this._element.removeAttribute('aria-hidden');
Util.reflow(this._element);
$$$1(document.body).addClass(ClassName.OPEN + "-" + this._config.type + this._typeBreakpoint);
$$$1(this._element).addClass(ClassName.SHOW);
this._enforceFocus();
var shownEvent = $$$1.Event(Event.SHOWN, {
relatedTarget: relatedTarget
});
var transitionComplete = function transitionComplete() {
_this6._element.focus();
_this6._isTransitioning = false;
$$$1(_this6._element).trigger(shownEvent);
};
var transitionDuration = Util.getTransitionDurationFromElement(this._content);
$$$1(this._content).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
};
NavDrawer._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
return this.each(function () {
var _config = _objectSpread({}, Default, $$$1(this).data(), typeof config === 'object' && config ? config : {});
var data = $$$1(this).data(DATA_KEY);
if (!data) {
data = new NavDrawer(this, _config);
$$$1(this).data(DATA_KEY, data);
}
if (typeof config === 'string') {
if (typeof data[config] === 'undefined') {
throw new TypeError("No method named \"" + config + "\"");
}
data[config](relatedTarget);
} else if (_config.show) {
data.show(relatedTarget);
}
});
};
_createClass(NavDrawer, null, [{
key: "Default",
get: function get() {
return Default;
}
}]);
return NavDrawer;
}();
$$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
var _this7 = this;
var selector = Util.getSelectorFromElement(this);
var target;
if (selector) {
target = $$$1(selector)[0];
}
var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _objectSpread({}, $$$1(target).data(), $$$1(this).data());
if (this.tagName === 'A' || this.tagName === 'AREA') {
event.preventDefault();
}
var $target = $$$1(target).one(Event.SHOW, function (showEvent) {
if (showEvent.isDefaultPrevented()) {
return;
}
$target.one(Event.HIDDEN, function () {
if ($$$1(_this7).is(':visible')) {
_this7.focus();
}
});
});
NavDrawer._jQueryInterface.call($$$1(target), config, this);
});
$$$1.fn[NAME] = NavDrawer._jQueryInterface;
$$$1.fn[NAME].Constructor = NavDrawer;
$$$1.fn[NAME].noConflict = function () {
$$$1.fn[NAME] = NO_CONFLICT;
return NavDrawer._jQueryInterface;
};
return NavDrawer;
}($);
exports.Util = Util;
exports.ExpansionPanel = ExpansionPanel;
exports.FloatingLabel = FloatingLabel;
exports.NavDrawer = NavDrawer;
Object.defineProperty(exports, '__esModule', { value: true });
})));