diff --git a/CHANGELOG.md b/CHANGELOG.md index 16813227..171b862e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * Moved preset CSS compile to earlier in the process to ensure compilation happens in time. * Prevent Save actions from Flex Objects to trigger the unsaved unload notice [#2125](https://github.com/getgrav/grav-plugin-admin/issues/2125) * Fixed audit vulnerabilities in module dependencies and house cleanup [#2096](https://github.com/getgrav/grav-plugin-admin/issues/2096) + * Fixed issue preventing Drag & Drop of media files while in Expert Mode [#1927](https://github.com/getgrav/grav-plugin-admin/issues/1927) # v1.10.12 ## 04/15/2021 diff --git a/themes/grav/app/pages/page/media.js b/themes/grav/app/pages/page/media.js index 17e46982..832b7eda 100644 --- a/themes/grav/app/pages/page/media.js +++ b/themes/grav/app/pages/page/media.js @@ -108,7 +108,9 @@ export default class PageMedia extends FilesField { onDropzoneComplete(file) { super.onDropzoneComplete(file); - this.sortable.options.onSort(); + if (this.sortable) { + this.sortable.options.onSort(); + } // accepted $('.dz-preview').prop('draggable', 'true'); @@ -116,7 +118,9 @@ export default class PageMedia extends FilesField { onDropzoneRemovedFile(file, ...extra) { super.onDropzoneRemovedFile(file, ...extra); - this.sortable.options.onSort(); + if (this.sortable) { + this.sortable.options.onSort(); + } } attachDragDrop() { diff --git a/themes/grav/js/admin.min.js b/themes/grav/js/admin.min.js index cb3d93a2..36c9c7ba 100644 --- a/themes/grav/js/admin.min.js +++ b/themes/grav/js/admin.min.js @@ -1,14798 +1,1161 @@ +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ var Grav; /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ -/***/ 469: +/***/ "./app/dashboard/backup.js": +/*!*********************************!*\ + !*** ./app/dashboard/backup.js ***! + \*********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -// ESM COMPAT FLAG -__webpack_require__.r(__webpack_exports__); - -// EXPORTS -__webpack_require__.d(__webpack_exports__, { - "default": () => (/* binding */ main) -}); - -// EXTERNAL MODULE: ./node_modules/@babel/polyfill/lib/index.js -var lib = __webpack_require__(26981); -// EXTERNAL MODULE: external "jQuery" -var external_jQuery_ = __webpack_require__(73609); -var external_jQuery_default = /*#__PURE__*/__webpack_require__.n(external_jQuery_); -;// CONCATENATED MODULE: ./app/utils/remodal.js -/* Remodal from https://github.com/vodkabears/Remodal - * With Stackable option from https://github.com/antstorm/Remodal patch - */ - -!function (root, factory) { - return factory(root, (external_jQuery_default())); -}(undefined, function (global, $) { - 'use strict'; - /** - * Name of the plugin - * @private - * @const - * @type {String} - */ - - var PLUGIN_NAME = 'remodal'; - /** - * Namespace for CSS and events - * @private - * @const - * @type {String} - */ - - var NAMESPACE = window.REMODAL_GLOBALS && window.REMODAL_GLOBALS.NAMESPACE || PLUGIN_NAME; - /** - * Animationstart event with vendor prefixes - * @private - * @const - * @type {String} - */ - - var ANIMATIONSTART_EVENTS = $.map(['animationstart', 'webkitAnimationStart', 'MSAnimationStart', 'oAnimationStart'], function (eventName) { - return eventName + '.' + NAMESPACE; - }).join(' '); - /** - * Animationend event with vendor prefixes - * @private - * @const - * @type {String} - */ - - var ANIMATIONEND_EVENTS = $.map(['animationend', 'webkitAnimationEnd', 'MSAnimationEnd', 'oAnimationEnd'], function (eventName) { - return eventName + '.' + NAMESPACE; - }).join(' '); - /** - * Default settings - * @private - * @const - * @type {Object} - */ - - var DEFAULTS = $.extend({ - hashTracking: true, - closeOnConfirm: true, - closeOnCancel: true, - closeOnEscape: true, - closeOnOutsideClick: true, - modifier: '', - stack: false, - appendTo: null - }, window.REMODAL_GLOBALS && window.REMODAL_GLOBALS.DEFAULTS); - /** - * States of the Remodal - * @private - * @const - * @enum {String} - */ - - var STATES = { - CLOSING: 'closing', - CLOSED: 'closed', - OPENING: 'opening', - OPENED: 'opened' - }; - /** - * Reasons of the state change. - * @private - * @const - * @enum {String} - */ - - var STATE_CHANGE_REASONS = { - CONFIRMATION: 'confirmation', - CANCELLATION: 'cancellation' - }; - /** - * Is animation supported? - * @private - * @const - * @type {Boolean} - */ - - var IS_ANIMATION = function () { - var style = document.createElement('div').style; - return style.animationName !== undefined || style.WebkitAnimationName !== undefined || style.MozAnimationName !== undefined || style.msAnimationName !== undefined || style.OAnimationName !== undefined; - }(); - /** - * Is iOS? - * @private - * @const - * @type {Boolean} - */ - - - var IS_IOS = /iPad|iPhone|iPod/.test(navigator.platform); - /** - * Current modal - * @private - * @type {Remodal} - */ - - var openModals = []; - /** - * Scrollbar position - * @private - * @type {Number} - */ - - var scrollTop; - /** - * Returns an animation duration - * @private - * @param {jQuery} $elem - * @returns {Number} - */ - - function getAnimationDuration($elem) { - if (IS_ANIMATION && $elem.css('animation-name') === 'none' && $elem.css('-webkit-animation-name') === 'none' && $elem.css('-moz-animation-name') === 'none' && $elem.css('-o-animation-name') === 'none' && $elem.css('-ms-animation-name') === 'none') { - return 0; - } - - var duration = $elem.css('animation-duration') || $elem.css('-webkit-animation-duration') || $elem.css('-moz-animation-duration') || $elem.css('-o-animation-duration') || $elem.css('-ms-animation-duration') || '0s'; - var delay = $elem.css('animation-delay') || $elem.css('-webkit-animation-delay') || $elem.css('-moz-animation-delay') || $elem.css('-o-animation-delay') || $elem.css('-ms-animation-delay') || '0s'; - var iterationCount = $elem.css('animation-iteration-count') || $elem.css('-webkit-animation-iteration-count') || $elem.css('-moz-animation-iteration-count') || $elem.css('-o-animation-iteration-count') || $elem.css('-ms-animation-iteration-count') || '1'; - var max; - var len; - var num; - var i; - duration = duration.split(', '); - delay = delay.split(', '); - iterationCount = iterationCount.split(', '); // The 'duration' size is the same as the 'delay' size - - for (i = 0, len = duration.length, max = Number.NEGATIVE_INFINITY; i < len; i++) { - num = parseFloat(duration[i]) * parseInt(iterationCount[i], 10) + parseFloat(delay[i]); - - if (num > max) { - max = num; - } - } - - return max; - } - /** - * Returns a scrollbar width - * @private - * @returns {Number} - */ - - - function getScrollbarWidth() { - if ($(document).height() <= $(window).height()) { - return 0; - } - - var outer = document.createElement('div'); - var inner = document.createElement('div'); - var widthNoScroll; - var widthWithScroll; - outer.style.visibility = 'hidden'; - outer.style.width = '100px'; - document.body.appendChild(outer); - widthNoScroll = outer.offsetWidth; // Force scrollbars - - outer.style.overflow = 'scroll'; // Add inner div - - inner.style.width = '100%'; - outer.appendChild(inner); - widthWithScroll = inner.offsetWidth; // Remove divs - - outer.parentNode.removeChild(outer); - return widthNoScroll - widthWithScroll; - } - /** - * Locks the screen - * @private - */ - - - function lockScreen() { - if (IS_IOS) { - return; - } - - var $html = $('html'); - var lockedClass = namespacify('is-locked'); - var paddingRight; - var $body; - - if (!$html.hasClass(lockedClass)) { - $body = $(document.body); // Zepto does not support '-=', '+=' in the `css` method - - paddingRight = parseInt($body.css('padding-right'), 10) + getScrollbarWidth(); - $body.css('padding-right', paddingRight + 'px'); - $html.addClass(lockedClass); - } - } - /** - * Unlocks the screen - * @private - */ - - - function unlockScreen() { - if (IS_IOS) { - return; - } - - var $html = $('html'); - var lockedClass = namespacify('is-locked'); - var paddingRight; - var $body; - - if ($html.hasClass(lockedClass)) { - $body = $(document.body); // Zepto does not support '-=', '+=' in the `css` method - - paddingRight = parseInt($body.css('padding-right'), 10) - getScrollbarWidth(); - $body.css('padding-right', paddingRight + 'px'); - $html.removeClass(lockedClass); - } - } - /** - * Sets a state for an instance - * @private - * @param {Remodal} instance - * @param {STATES} state - * @param {Boolean} isSilent If true, Remodal does not trigger events - * @param {String} Reason of a state change. - */ - - - function setState(instance, state, isSilent, reason) { - var newState = namespacify('is', state); - var allStates = [namespacify('is', STATES.CLOSING), namespacify('is', STATES.OPENING), namespacify('is', STATES.CLOSED), namespacify('is', STATES.OPENED)].join(' '); - instance.$bg.removeClass(allStates).addClass(newState); - instance.$overlay.removeClass(allStates).addClass(newState); - instance.$wrapper.removeClass(allStates).addClass(newState); - instance.$modal.removeClass(allStates).addClass(newState); - instance.state = state; - !isSilent && instance.$modal.trigger({ - type: state, - reason: reason - }, [{ - reason: reason - }]); - } - /** - * Synchronizes with the animation - * @param {Function} doBeforeAnimation - * @param {Function} doAfterAnimation - * @param {Remodal} instance - */ - - - function syncWithAnimation(doBeforeAnimation, doAfterAnimation, instance) { - var runningAnimationsCount = 0; - - var handleAnimationStart = function handleAnimationStart(e) { - if (e.target !== this) { - return; - } - - runningAnimationsCount++; - }; - - var handleAnimationEnd = function handleAnimationEnd(e) { - if (e.target !== this) { - return; - } - - if (--runningAnimationsCount === 0) { - // Remove event listeners - $.each(['$bg', '$overlay', '$wrapper', '$modal'], function (index, elemName) { - instance[elemName].off(ANIMATIONSTART_EVENTS + ' ' + ANIMATIONEND_EVENTS); - }); - doAfterAnimation(); - } - }; - - $.each(['$bg', '$overlay', '$wrapper', '$modal'], function (index, elemName) { - instance[elemName].on(ANIMATIONSTART_EVENTS, handleAnimationStart).on(ANIMATIONEND_EVENTS, handleAnimationEnd); - }); - doBeforeAnimation(); // If the animation is not supported by a browser or its duration is 0 - - if (getAnimationDuration(instance.$bg) === 0 && getAnimationDuration(instance.$overlay) === 0 && getAnimationDuration(instance.$wrapper) === 0 && getAnimationDuration(instance.$modal) === 0) { - // Remove event listeners - $.each(['$bg', '$overlay', '$wrapper', '$modal'], function (index, elemName) { - instance[elemName].off(ANIMATIONSTART_EVENTS + ' ' + ANIMATIONEND_EVENTS); - }); - doAfterAnimation(); - } - } - /** - * Closes immediately - * @private - * @param {Remodal} instance - */ - - - function halt(instance) { - if (instance.state === STATES.CLOSED) { - return; - } - - $.each(['$bg', '$overlay', '$wrapper', '$modal'], function (index, elemName) { - instance[elemName].off(ANIMATIONSTART_EVENTS + ' ' + ANIMATIONEND_EVENTS); - }); - removeModal(instance); - instance.$bg.removeClass(instance.settings.modifier); - instance.$overlay.removeClass(instance.settings.modifier).hide(); - instance.$wrapper.hide(); - - if (openModals.length === 0) { - unlockScreen(); - } - - setState(instance, STATES.CLOSED, true); - } - /** - * Parses a string with options - * @private - * @param str - * @returns {Object} - */ - - - function parseOptions(str) { - var obj = {}; - var arr; - var len; - var val; - var i; // Remove spaces before and after delimiters - - str = str.replace(/\s*:\s*/g, ':').replace(/\s*,\s*/g, ','); // Parse a string - - arr = str.split(','); - - for (i = 0, len = arr.length; i < len; i++) { - arr[i] = arr[i].split(':'); - val = arr[i][1]; // Convert a string value if it is like a boolean - - if (typeof val === 'string' || val instanceof String) { - val = val === 'true' || (val === 'false' ? false : val); - } // Convert a string value if it is like a number - - - if (typeof val === 'string' || val instanceof String) { - val = !isNaN(val) ? +val : val; - } - - obj[arr[i][0]] = val; - } - - return obj; - } - /** - * Generates a string separated by dashes and prefixed with NAMESPACE - * @private - * @param {...String} - * @returns {String} - */ - - - function namespacify() { - var result = NAMESPACE; - - for (var i = 0; i < arguments.length; ++i) { - result += '-' + arguments[i]; - } - - return result; - } - /** - * Handles the hashchange event - * @private - * @listens hashchange - */ - - - function handleHashChangeEvent() { - var id = location.hash.replace('#', ''); - var instance; - var $elem; - var current = currentModal(); - - if (!id) { - // Check if we have currently opened modal and animation was completed - if (current && current.state === STATES.OPENED && current.settings.hashTracking) { - current.close(); - } - } else { - if (!current || current.id !== id) { - // Catch syntax error if your hash is bad - try { - $elem = $('[data-' + PLUGIN_NAME + '-id="' + id + '"]'); - } catch (err) {} - - if ($elem && $elem.length) { - instance = $[PLUGIN_NAME].lookup[$elem.data(PLUGIN_NAME)]; - - if (instance && instance.settings.hashTracking) { - instance.open(); - } - } - } - } - } - - function currentModal() { - return openModals[openModals.length - 1]; - } - - function removeModal(remodal) { - var index = openModals.indexOf(remodal); - - if (index >= 0) { - openModals.slice(index, 1); - } - } - /** - * Remodal constructor - * @constructor - * @param {jQuery} $modal - * @param {Object} options - */ - - - function Remodal($modal, options) { - var $body = $(document.body); - var $appendTo = $body; - var remodal = this; - remodal.id = $modal.attr('data-' + PLUGIN_NAME + '-id'); - remodal.settings = $.extend({}, DEFAULTS, options); - remodal.index = $[PLUGIN_NAME].lookup.push(remodal) - 1; - remodal.state = STATES.CLOSED; // remodal.$overlay = $('.' + namespacify('overlay')); - - if (remodal.settings.appendTo !== null && remodal.settings.appendTo.length) { - $appendTo = $(remodal.settings.appendTo); - } - - if (!remodal.$overlay) { - remodal.$overlay = $('
".concat(error.stack, "") : '';
- utils_toastr.error("Fetch Failed: \n ").concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.UPDATE, " ").concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.ALL, " ").concat(type_translation, "\n \n ").concat(length, " ").concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.OF_YOUR, " ").concat(type_translation.toLowerCase(), " ").concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.HAVE_AN_UPDATE_AVAILABLE, "\n
\n ")); - var existing_slugs = external_jQuery_default()('[data-update-packages]').attr('data-packages-slugs') || ''; - - if (existing_slugs) { - existing_slugs = existing_slugs.split(','); - } else { - existing_slugs = []; - } - - var slugs = unique_default()(existing_slugs.concat(Object.keys(resources))).join(); - external_jQuery_default()('[data-update-packages]').attr('data-packages-slugs', "".concat(slugs)); - Object.keys(resources).forEach(function (item) { - // listing page - var container = external_jQuery_default()("[data-gpm-".concat(singles[index], "=\"").concat(item, "\"]")); - var element = container.find('.gpm-name'); - var url = element.find('a'); - var content_wrapper = container.parents('.content-wrapper'); - - if (type === 'plugins' && !element.find('.badge.update').length) { - element.append("").concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.UPDATE_AVAILABLE, "!")); - content_wrapper.addClass('has-updates'); - } else if (type === 'themes') { - element.append("")); - content_wrapper.addClass('has-updates'); - } // details page - - - if (container.length) { - var details = external_jQuery_default()(".grav-update.".concat(singles[index])); - - if (details.length) { - var releaseType = resources[item].type === 'testing' ? 'test release' : ''; - details.html("\n\n ").concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.UPDATE, " ").concat(singles[index].charAt(0).toUpperCase() + singles[index].substr(1).toLowerCase(), "\n \n v").concat(resources[item].available, " ").concat(releaseType, " ").concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.OF_THIS, " ").concat(singles[index], " ").concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.IS_NOW_AVAILABLE, "!\n
\n ")).css('display', 'block'); - is_current_package_latest = false; - } - } - }); - external_jQuery_default()('[data-update-packages]').removeClass('hidden'); - }); - external_jQuery_default()('.content-wrapper').addClass('updates-checked'); - - if (!is_current_package_latest) { - external_jQuery_default()('.warning-reinstall-not-latest-release').removeClass('hidden'); - } - } - }]); - - return Updates; -}(); - - -var updates_Instance = new Updates(); - // automatically refresh UI for updates (graph, sidebar, plugin/themes pages) after every fetch - -Instance.on('fetched', function (response, raw) { - updates_Instance.setPayload(response.payload || {}); - updates_Instance.grav().resources(); -}); - -if (external_GravAdmin_namespaceObject.config.enable_auto_updates_check === '1') { - Instance.fetch(); -} -// EXTERNAL MODULE: ./node_modules/chartist/dist/chartist.js -var chartist = __webpack_require__(69259); -var chartist_default = /*#__PURE__*/__webpack_require__.n(chartist); -;// CONCATENATED MODULE: ./app/dashboard/chart.js -function chart_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { chart_typeof = function _typeof(obj) { return typeof obj; }; } else { chart_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return chart_typeof(obj); } - -function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = chart_getPrototypeOf(object); if (object === null) break; } return object; } - -function chart_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) chart_setPrototypeOf(subClass, superClass); } - -function chart_setPrototypeOf(o, p) { chart_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return chart_setPrototypeOf(o, p); } - -function chart_createSuper(Derived) { var hasNativeReflectConstruct = chart_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = chart_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = chart_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return chart_possibleConstructorReturn(this, result); }; } - -function chart_possibleConstructorReturn(self, call) { if (call && (chart_typeof(call) === "object" || typeof call === "function")) { return call; } return chart_assertThisInitialized(self); } - -function chart_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function chart_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function chart_getPrototypeOf(o) { chart_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return chart_getPrototypeOf(o); } - -function chart_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function chart_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 chart_createClass(Constructor, protoProps, staticProps) { if (protoProps) chart_defineProperties(Constructor.prototype, protoProps); if (staticProps) chart_defineProperties(Constructor, staticProps); return Constructor; } - - - - - - // let isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; - -var defaults = { - data: { - series: [100, 0] - }, - options: { - Pie: { - donut: true, - donutWidth: 10, - startAngle: 0, - total: 100, - showLabel: false, - height: 150, - // chartPadding: !isFirefox ? 10 : 25 // workaround for older versions of firefox - chartPadding: 5 - }, - Bar: { - height: 164, - chartPadding: 20, - // workaround for older versions of firefox - axisX: { - showGrid: false, - labelOffset: { - x: 0, - y: 0 - } - }, - axisY: { - offset: 15, - showLabel: true, - showGrid: true, - labelOffset: { - x: 5, - y: 5 - }, - scaleMinSpace: 25 - } - } - } -}; - -var Chart = /*#__PURE__*/function () { - function Chart(element) { - var _this = this; - - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - chart_classCallCheck(this, Chart); - - this.element = external_jQuery_default()(element) || []; - - if (!this.element[0]) { - return; - } - - var type = (this.element.data('chart-type') || 'pie').toLowerCase(); - this.type = type.charAt(0).toUpperCase() + type.substr(1).toLowerCase(); - options = Object.assign({}, defaults.options[this.type], options); - data = Object.assign({}, defaults.data, data); - Object.assign(this, { - options: options, - data: data - }); - this.chart = (chartist_default())[this.type](this.element.find('.ct-chart').empty()[0], this.data, this.options); - this.chart.on('created', function () { - _this.element.find('.hidden').removeClass('hidden'); // FIX: workaround for chartist issue not allowing HTML in labels anymore - // https://github.com/gionkunz/chartist-js/issues/937 - - - _this.element.find('.ct-label').each(function (index, label) { - label = external_jQuery_default()(label); - var text = label.html().replace('<', '<').replace('>', '>'); - label.html(text); - }); - }); - } - - chart_createClass(Chart, [{ - key: "updateData", - value: function updateData(data) { - Object.assign(this.data, data); - this.chart.update(this.data); - } - }]); - - return Chart; -}(); - - -; -var UpdatesChart = /*#__PURE__*/function (_Chart) { - chart_inherits(UpdatesChart, _Chart); - - var _super = chart_createSuper(UpdatesChart); - - function UpdatesChart(element) { - var _this2; - - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - chart_classCallCheck(this, UpdatesChart); - - _this2 = _super.call(this, element, options, data); - - _this2.chart.on('draw', function (data) { - return _this2.draw(data); - }); - - Instance.on('fetched', function (response) { - if (!response.payload) { - return; - } - - var payload = response.payload.grav; - var missing = (response.payload.resources.total + (payload.isUpdatable ? 1 : 0)) * 100 / (response.payload.installed + (payload.isUpdatable ? 1 : 0)); - var updated = 100 - missing; - - _this2.updateData({ - series: [updated, missing] - }); - - if (response.payload.resources.total) { - updates_Instance.maintenance('show'); - } - }); - return _this2; - } - - chart_createClass(UpdatesChart, [{ - key: "draw", - value: function draw(data) { - if (data.index) { - return; - } - - var notice = external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN[data.value === 100 ? 'FULLY_UPDATED' : 'UPDATES_AVAILABLE']; - this.element.find('.numeric span').text("".concat(Math.round(data.value), "%")); - this.element.find('.js__updates-available-description').html(notice); - this.element.find('.hidden').removeClass('hidden'); - } - }, { - key: "updateData", - value: function updateData(data) { - _get(chart_getPrototypeOf(UpdatesChart.prototype), "updateData", this).call(this, data); // missing updates - - - if (this.data.series[0] < 100) { - this.element.closest('#updates').find('[data-update-packages]').fadeIn(); - } - } - }]); - - return UpdatesChart; -}(Chart); -var charts = {}; -external_jQuery_default()('[data-chart-name]').each(function () { - var element = external_jQuery_default()(this); - var name = element.data('chart-name') || ''; - var options = element.data('chart-options') || {}; - var data = element.data('chart-data') || {}; - - if (name === 'updates') { - charts[name] = new UpdatesChart(element, options, data); - } else { - charts[name] = new Chart(element, options, data); - } -}); -var Instances = charts; -;// CONCATENATED MODULE: ./app/dashboard/cache.js -function cache_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function cache_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 cache_createClass(Constructor, protoProps, staticProps) { if (protoProps) cache_defineProperties(Constructor.prototype, protoProps); if (staticProps) cache_defineProperties(Constructor, staticProps); return Constructor; } - - - - - -var getUrl = function getUrl() { - var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - - if (type) { - type = "cleartype:".concat(type, "/"); - } - - return "".concat(external_GravAdmin_namespaceObject.config.base_url_relative, "/cache.json/task").concat(external_GravAdmin_namespaceObject.config.param_sep, "clearCache/").concat(type, "admin-nonce").concat(external_GravAdmin_namespaceObject.config.param_sep).concat(external_GravAdmin_namespaceObject.config.admin_nonce); -}; - -var Cache = /*#__PURE__*/function () { - function Cache() { - var _this = this; - - cache_classCallCheck(this, Cache); - - this.element = external_jQuery_default()('[data-clear-cache]'); - external_jQuery_default()('body').on('click', '[data-clear-cache]', function (event) { - return _this.clear(event, event.target); - }); - } - - cache_createClass(Cache, [{ - key: "clear", - value: function clear(event, element) { - var _this2 = this; - - var type = ''; - - if (event && event.preventDefault) { - event.preventDefault(); - } - - if (typeof event === 'string') { - type = event; - } - - element = element ? external_jQuery_default()(element) : external_jQuery_default()("[data-clear-cache-type=\"".concat(type, "\"]")); - type = type || external_jQuery_default()(element).data('clear-cache-type') || ''; - var url = element.data('clearCache') || getUrl(type); - this.disable(); - utils_request(url, function () { - return _this2.enable(); - }); - } - }, { - key: "enable", - value: function enable() { - this.element.removeAttr('disabled').find('> .fa').removeClass('fa-refresh fa-spin fa-retweet').addClass('fa-retweet'); - } - }, { - key: "disable", - value: function disable() { - this.element.attr('disabled', 'disabled').find('> .fa').removeClass('fa-retweet').addClass('fa-refresh fa-spin'); - } - }]); - - return Cache; -}(); - - -var cache_Instance = new Cache(); - -;// CONCATENATED MODULE: ./app/dashboard/backup.js - - - - -external_jQuery_default()('[data-backup][data-ajax*="backup/"]').on('click', function () { - var element = external_jQuery_default()(this); - var url = element.data('ajax'); - var inDropdown = element.closest('.dropdown-menu'); - (inDropdown.length ? inDropdown : element).closest('.button-group').find('> button:first').attr('disabled', 'disabled').find('> .fa').removeClass('fa-life-ring').addClass('fa-spin fa-refresh'); - utils_request(url, function () - /* response */ - { - if (Instances && Instances.backups) { - Instances.backups.updateData({ - series: [0, 100] - }); - Instances.backups.element.find('.numeric').html("0 ".concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.DAYS.toLowerCase(), "")); - } - - (inDropdown.length ? inDropdown : element).closest('.button-group').find('> button:first').removeAttr('disabled').find('> .fa').removeClass('fa-spin fa-refresh').addClass('fa-life-ring'); - }); -}); -external_jQuery_default()('[data-backup][data-ajax*="backupDelete"]').on('click', function () { - var element = external_jQuery_default()(this); - var url = element.data('ajax'); - var tr = element.closest('tr'); - tr.addClass('deleting'); - utils_request(url, function (response) { - if (response.status === 'success') { - tr.remove(); - } else { - tr.removeClass('deleting'); - } - }); -}); -;// CONCATENATED MODULE: ./app/dashboard/index.js - - - -/* harmony default export */ const dashboard = ({ - Chart: { - Chart: Chart, - UpdatesChart: UpdatesChart, - Instances: Instances - }, - Cache: cache_Instance -}); -// EXTERNAL MODULE: ./node_modules/sortablejs/modular/sortable.esm.js -var sortable_esm = __webpack_require__(51474); -// EXTERNAL MODULE: ./node_modules/debounce/index.js -var debounce = __webpack_require__(20296); -var debounce_default = /*#__PURE__*/__webpack_require__.n(debounce); -// EXTERNAL MODULE: ./app/utils/storage.js -var storage = __webpack_require__(92511); -;// CONCATENATED MODULE: ./app/pages/tree.js -function tree_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function tree_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 tree_createClass(Constructor, protoProps, staticProps) { if (protoProps) tree_defineProperties(Constructor.prototype, protoProps); if (staticProps) tree_defineProperties(Constructor, staticProps); return Constructor; } - - - -var sessionKey = 'grav:admin:pages'; - -if (!sessionStorage.getItem(sessionKey)) { - sessionStorage.setItem(sessionKey, '{}'); -} - -var PagesTree = /*#__PURE__*/function () { - function PagesTree(query) { - var _this = this; - - var elements = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; - - tree_classCallCheck(this, PagesTree); - - this.query = query; - this.elements = external_jQuery_default()(elements !== undefined ? elements : this.query); - this.session = JSON.parse(sessionStorage.getItem(sessionKey) || '{}'); - - if (!this.elements.length) { - return; - } - - this.restore(); - this.elements.find('.page-icon').on('click', function (event) { - return _this.toggle(event.target); - }); - this.elements.data('tree_init', 1); - external_jQuery_default()('[data-page-toggleall]').on('click', function (event) { - var element = external_jQuery_default()(event.target).closest('[data-page-toggleall]'); - var action = element.data('page-toggleall'); - - _this[action](); - }); - } - - tree_createClass(PagesTree, [{ - key: "reload", - value: function reload() { - var elements = external_jQuery_default()(this.query).filter(function (index, element) { - return !external_jQuery_default()(element).data('tree_init'); - }); - - if (!elements.length) { - return; - } - - this.constructor(this.query, elements); - } - }, { - key: "toggle", - value: function toggle(elements) { - var _this2 = this; - - var dontStore = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (typeof elements === 'string') { - elements = external_jQuery_default()("[data-nav-id=\"".concat(elements, "\"]")).find('[data-toggle="children"]'); - } - - elements = external_jQuery_default()(elements || this.elements); - elements.each(function (index, element) { - element = external_jQuery_default()(element); - - var state = _this2.getState(element.closest('[data-toggle="children"]')); - - _this2[state.isOpen ? 'collapse' : 'expand'](state.id, dontStore); - }); - } - }, { - key: "collapse", - value: function collapse(elements) { - var _this3 = this; - - var dontStore = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (typeof elements === 'string') { - elements = external_jQuery_default()("[data-nav-id=\"".concat(elements, "\"]")).find('[data-toggle="children"]'); - } - - elements = external_jQuery_default()(elements || this.elements); - elements.each(function (index, element) { - element = external_jQuery_default()(element); - - var state = _this3.getState(element); - - if (state.isOpen) { - state.children.hide(); - state.icon.removeClass('children-open').addClass('children-closed'); - - if (!dontStore) { - delete _this3.session[state.id]; - } - } - }); - - if (!dontStore) { - this.save(); - } - } - }, { - key: "expand", - value: function expand(elements) { - var _this4 = this; - - var dontStore = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (typeof elements === 'string') { - var element = external_jQuery_default()("[data-nav-id=\"".concat(elements, "\"]")); - var parents = element.parents('[data-nav-id]'); // loop back through parents, we don't want to expand an hidden child - - if (parents.length) { - parents = parents.find('[data-toggle="children"]:first'); - parents = parents.add(element.find('[data-toggle="children"]:first')); - return this.expand(parents, dontStore); - } - - elements = element.find('[data-toggle="children"]:first'); - } - - elements = external_jQuery_default()(elements || this.elements); - elements.each(function (index, element) { - element = external_jQuery_default()(element); - - var state = _this4.getState(element); - - if (!state.isOpen) { - state.children.show(); - state.icon.removeClass('children-closed').addClass('children-open'); - - if (!dontStore) { - _this4.session[state.id] = 1; - } - } - }); - - if (!dontStore) { - this.save(); - } - } - }, { - key: "restore", - value: function restore() { - var _this5 = this; - - this.collapse(null, true); - Object.keys(this.session).forEach(function (key) { - _this5.expand(key, 'no-store'); - }); - } - }, { - key: "save", - value: function save() { - return sessionStorage.setItem(sessionKey, JSON.stringify(this.session)); - } - }, { - key: "getState", - value: function getState(element) { - element = external_jQuery_default()(element); - return { - id: element.closest('[data-nav-id]').data('nav-id'), - children: element.closest('li.page-item').find('ul:first'), - icon: element.find('.page-icon'), - - get isOpen() { - return this.icon.hasClass('children-open'); - } - - }; - } - }]); - - return PagesTree; -}(); - - -var tree_Instance = new PagesTree('[data-toggle="children"]'); - -// EXTERNAL MODULE: ./node_modules/selectize/dist/js/selectize.js -var selectize = __webpack_require__(25703); -var selectize_default = /*#__PURE__*/__webpack_require__.n(selectize); -;// CONCATENATED MODULE: ./app/utils/selectize-required-fix.js -/** - * This is a plugin to override the `.refreshValidityState` method of - * the Selectize library (https://selectize.github.io/selectize.js/). - * The library is not maintained anymore (as of 2017-09-13) and contains - * a bug which causes Microsoft Edge to not work with selectized [required] - * form fields. This plugin should be removed if - * https://github.com/selectize/selectize.js/pull/1320 is ever merged - * and a new version of Selectize gets released. - */ - -selectize_default().define('required-fix', function (options) { - var _this = this; - - this.refreshValidityState = function () { - if (!_this.isRequired) return false; - var invalid = !_this.items.length; - _this.isInvalid = invalid; - - if (invalid) { - _this.$control_input.attr('required', ''); - - _this.$input.removeAttr('required'); - } else { - _this.$control_input.removeAttr('required'); - - _this.$input.attr('required'); - } - }; -}); -;// CONCATENATED MODULE: ./app/pages/filter.js -function filter_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { filter_typeof = function _typeof(obj) { return typeof obj; }; } else { filter_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return filter_typeof(obj); } - -function filter_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function filter_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 filter_createClass(Constructor, protoProps, staticProps) { if (protoProps) filter_defineProperties(Constructor.prototype, protoProps); if (staticProps) filter_defineProperties(Constructor, staticProps); return Constructor; } - - - - - - - - - -/* @formatter:off */ - -/* eslint-disable */ - -var options = [{ - flag: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.MODULE, - key: 'Module', - cat: 'mode' -}, { - flag: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.VISIBLE, - key: 'Visible', - cat: 'mode' -}, { - flag: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.ROUTABLE, - key: 'Routable', - cat: 'mode' -}, { - flag: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.PUBLISHED, - key: 'Published', - cat: 'mode' -}, { - flag: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.NON_MODULE, - key: 'NonModule', - cat: 'mode' -}, { - flag: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.NON_VISIBLE, - key: 'NonVisible', - cat: 'mode' -}, { - flag: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.NON_ROUTABLE, - key: 'NonRoutable', - cat: 'mode' -}, { - flag: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.NON_PUBLISHED, - key: 'NonPublished', - cat: 'mode' -}]; -/* @formatter:on */ - -/* eslint-enable */ - -var PagesFilter = /*#__PURE__*/function () { - function PagesFilter(filters, search) { - var _this = this; - - filter_classCallCheck(this, PagesFilter); - - this.filters = external_jQuery_default()(filters); - this.search = external_jQuery_default()(search); - this.options = options; - this.tree = tree_Instance; - var storage = JSON.parse(localStorage.getItem('grav:admin:pages:filter') || '{}'); - - if (!this.filters.length || !this.search.length) { - return; - } - - this.labels = this.filters.data('filter-labels'); - this.search.on('input', debounce_default()(function () { - return _this.filter(); - }, 250)); - this.filters.on('change', function () { - return _this.filter(); - }); // restore state - - if (storage.flags || storage.query) { - this.setValues(storage); - this.filter(); - } - - this._initSelectize(); - } - - filter_createClass(PagesFilter, [{ - key: "filter", - value: function filter(value) { - var _this2 = this; - - var data = { - flags: '', - query: '' - }; - - if (filter_typeof(value) === 'object') { - Object.assign(data, value); - } - - if (typeof value === 'string') { - data.query = value; - } - - if (typeof value === 'undefined') { - data.flags = this.filters.val(); - data.query = this.search.val(); - } - - if (!Object.keys(data).filter(function (key) { - return data[key] !== ''; - }).length) { - this.resetValues(); - return; - } - - data.flags = data.flags.replace(/(\s{1,})?,(\s{1,})?/g, ','); - this.setValues({ - flags: data.flags, - query: data.query - }, 'silent'); - utils_request("".concat(external_GravAdmin_namespaceObject.config.base_url_relative, "/pages-filter.json/task").concat(external_GravAdmin_namespaceObject.config.param_sep, "filterPages"), { - method: 'post', - body: data - }, function (response) { - _this2.refreshDOM(response); - }); - } - }, { - key: "refreshDOM", - value: function refreshDOM(response) { - var _this3 = this; - - var items = external_jQuery_default()('[data-nav-id]'); - - if (!response) { - items.removeClass('search-match').show(); - this.tree.restore(); - return; - } - - items.removeClass('search-match').hide(); - response.results.forEach(function (page) { - var match = items.filter("[data-nav-id=\"".concat(page, "\"]")).addClass('search-match').show(); - match.parents('[data-nav-id]').addClass('search-match').show(); - - _this3.tree.expand(page, 'no-store'); - }); - } - }, { - key: "setValues", - value: function setValues(_ref, silent) { - var _ref$flags = _ref.flags, - flags = _ref$flags === void 0 ? '' : _ref$flags, - _ref$query = _ref.query, - query = _ref$query === void 0 ? '' : _ref$query; - var flagsArray = flags.replace(/(\s{1,})?,(\s{1,})?/g, ',').split(','); - - if (this.filters.val() !== flags) { - var selectize = this.filters.data('selectize'); - this.filters[selectize ? 'setValue' : 'val'](flagsArray, silent); - } - - if (this.search.val() !== query) { - this.search.val(query); - } - - localStorage.setItem('grav:admin:pages:filter', JSON.stringify({ - flags: flags, - query: query - })); - } - }, { - key: "resetValues", - value: function resetValues() { - this.setValues('', 'silent'); - this.refreshDOM(); - } - }, { - key: "_initSelectize", - value: function _initSelectize() { - var _this4 = this; - - var extras = { - type: this.filters.data('filter-types') || {}, - access: this.filters.data('filter-access-levels') || {} - }; - Object.keys(extras).forEach(function (cat) { - Object.keys(extras[cat]).forEach(function (key) { - _this4.options.push({ - cat: cat, - key: key, - flag: extras[cat][key] - }); - }); - }); - this.filters.selectize({ - maxItems: null, - valueField: 'key', - labelField: 'flag', - searchField: ['flag', 'key'], - options: this.options, - optgroups: this.labels, - optgroupField: 'cat', - optgroupLabelField: 'name', - optgroupValueField: 'id', - optgroupOrder: this.labels.map(function (item) { - return item.id; - }), - plugins: ['optgroup_columns', 'required-fix'] - }); - } - }]); - - return PagesFilter; -}(); - - -var filter_Instance = new PagesFilter('input[name="page-filter"]', 'input[name="page-search"]'); - -// EXTERNAL MODULE: ./node_modules/speakingurl/index.js -var speakingurl = __webpack_require__(989); -var speakingurl_default = /*#__PURE__*/__webpack_require__.n(speakingurl); -;// CONCATENATED MODULE: ./app/utils/jquery-utils.js -var _this = undefined; - - - // jQuery no parents filter - -(external_jQuery_default()).expr[":"].noparents = external_jQuery_default().expr.createPseudo(function (text) { - return function (element) { - return external_jQuery_default()(element).parents(text).length < 1; - }; -}); // Slugify -// CommonJS and ES6 version of https://github.com/madflow/jquery-slugify - -(external_jQuery_default()).fn.slugify = function (source, options) { - return _this.each(function (element) { - var target = external_jQuery_default()(element); - var source = external_jQuery_default()(source); - target.on('keyup change', function () { - target.data('locked', target.val() !== '' && target.val() !== undefined); - }); - source.on('keyup change', function () { - if (target.data('locked') === true) { - return true; - } - - var isInput = target.is('input') || target.is('textarea'); - target[isInput ? 'val' : 'text'](external_jQuery_default().slugify(source.val(), options)); - }); - }); -}; // Static method. - - -(external_jQuery_default()).slugify = function (sourceString, options) { - options = external_jQuery_default().extend({}, (external_jQuery_default()).slugify.options, options); - options.lang = options.lang || external_jQuery_default()('html').prop('lang'); - - if (typeof options.preSlug === 'function') { - sourceString = options.preSlug(sourceString); - } - - sourceString = options.slugFunc(sourceString, options); - - if (typeof options.postSlug === 'function') { - sourceString = options.postSlug(sourceString); - } - - return sourceString; -}; // Default plugin options - - -(external_jQuery_default()).slugify.options = { - preSlug: null, - postSlug: null, - slugFunc: function slugFunc(input, opts) { - return speakingurl_default()(input, opts); - } -}; -;// CONCATENATED MODULE: ./app/pages/page/add.js - - - - -var custom = false; -var folder = external_jQuery_default()('[data-remodal-id="modal"] input[name="data[folder]"], [data-remodal-id="module"] input[name="data[folder]"]'); -var title = external_jQuery_default()('[data-remodal-id="modal"] input[name="data[title]"], [data-remodal-id="module"] input[name="data[title]"]'); - -var getFields = function getFields(type, target) { - target = external_jQuery_default()(target); - var query = "[data-remodal-id=\"".concat(target.closest('[data-remodal-id]').data('remodal-id'), "\"]"); - return { - title: type === 'title' ? external_jQuery_default()(target) : external_jQuery_default()("".concat(query, " input[name=\"data[title]\"]")), - folder: type === 'folder' ? external_jQuery_default()(target) : external_jQuery_default()("".concat(query, " input[name=\"data[folder]\"]")) - }; -}; - -title.on('input focus blur', function (event) { - if (custom) { - return true; - } - - var elements = getFields('title', event.currentTarget); - var slug = external_jQuery_default().slugify(elements.title.val(), { - custom: { - "'": '' - } - }); - elements.folder.val(slug); -}); -folder.on('input', function (event) { - var elements = getFields('folder', event.currentTarget); - var input = elements.folder.get(0); - var value = elements.folder.val(); - var selection = { - start: input.selectionStart, - end: input.selectionEnd - }; - value = value.toLowerCase().replace(/\s/g, '-').replace(/[^a-z0-9_\-]/g, ''); - elements.folder.val(value); - custom = !!value; // restore cursor position - - input.setSelectionRange(selection.start, selection.end); -}); -folder.on('focus blur', function (event) { - return getFields('title', event.currentTarget).title.trigger('input'); -}); -external_jQuery_default()(document).on('change', '[name="data[route]"]', function (event) { - var rawroute = external_jQuery_default()(event.currentTarget).val(); - var pageTemplate = external_jQuery_default()('[name="data[name]"]'); - var URI = "".concat(external_GravAdmin_namespaceObject.config.base_url_relative, "/ajax.json/task").concat(external_GravAdmin_namespaceObject.config.param_sep, "getChildTypes"); - - if (pageTemplate.length === 0) { - return; - } - - utils_request(URI, { - method: 'post', - body: { - rawroute: rawroute - } - }, function (response) { - var type = response.child_type; - - if (type !== '' && type !== 'default') { - pageTemplate.val(type); - pageTemplate.data('selectize').setValue(type); - } - }); -}); -;// CONCATENATED MODULE: ./app/pages/page/move.js - -external_jQuery_default()(document).on('click', '[data-page-move] button[name="task"][value="save"]', function (event) { - /* let route = $('form#blueprints:first select[name="data[route]"]'); - let moveTo = $('[data-page-move] select').val(); - if (route.length && route.val() !== moveTo) { - let selectize = route.data('selectize'); - route.val(moveTo); - if (selectize) selectize.setValue(moveTo); - }*/ - var modal = external_jQuery_default()(event.currentTarget).closest('[data-remodal-id]'); - var parents = modal.data('parents') || {}; - var finder = parents.finder; - - if (!parents || !finder) { - return true; - } - - var field = parents.field; - var parentLabel = parents.parentLabel; - var parentName = parents.parentName; - var selection = finder.findLastActive().item[0]; - var value = selection._item[finder.config.valueKey]; - var name = selection._item[finder.config.labelKey]; - field.val(value); - parentLabel.text(value); - parentName.text(name); - finder.config.defaultPath = value; - external_jQuery_default()('').css({ - backgroundColor: 'rgba(255, 255, 255, 0.1)', - position: 'fixed', - top: 0, - left: 0, - width: '100vw', - height: '100vh', - zIndex: 15000 - }).appendTo(external_jQuery_default()('body')); -}); -/* -$(document).on('click', '[data-remodal-id="parents"] [data-parents-select]', (event) => { - const modal = $(event.currentTarget).closest('[data-remodal-id]'); - const parents = modal.data('parents'); - const finder = parents.finder; - const field = parents.field; - const parentLabel = parents.parentLabel; - const parentName = parents.parentName; - const selection = finder.findLastActive().item[0]; - const value = selection._item[finder.config.valueKey]; - const name = selection._item[finder.config.labelKey]; - - field.val(value); - parentLabel.text(value); - parentName.text(name); - finder.config.defaultPath = value; - - const remodal = $.remodal.lookup[$(`[data-remodal-id="${modal.data('remodalId')}"]`).data('remodal')]; - remodal.close(); -}); -*/ -;// CONCATENATED MODULE: ./app/pages/page/delete.js - -external_jQuery_default()(document).on('click', '[data-remodal-target="delete"]', function () { - var confirm = external_jQuery_default()('[data-remodal-id="delete"] [data-delete-action]'); - var link = external_jQuery_default()(this).data('delete-url'); - confirm.data('delete-action', link); -}); -external_jQuery_default()(document).on('click', '[data-delete-action]', function () { - var remodal = (external_jQuery_default()).remodal.lookup[external_jQuery_default()('[data-remodal-id="delete"]').data('remodal')]; - __webpack_require__.g.location.href = external_jQuery_default()(this).data('delete-action'); - remodal.close(); -}); -;// CONCATENATED MODULE: ./app/pages/page/unset.js - -external_jQuery_default()(document).on('click', '.dz-unset', function () { - var file_upload = external_jQuery_default()(this).closest('.files-upload'); - external_jQuery_default()(this).closest('.dz-image-preview').remove(); - var unset_image = external_jQuery_default()(this).closest('.dz-image-preview').find('[data-dz-name]').text().trim(); - var images = JSON.parse(file_upload.find('input[data-grav-field="hidden"]').val()) || {}; - var image_array = {}; - external_jQuery_default().each(images, function (ind, obj) { - if (!ind.endsWith(unset_image)) { - image_array[ind] = obj; - } - }); - file_upload.find('input[data-grav-field="hidden"]').val(JSON.stringify(image_array)); -}); -;// CONCATENATED MODULE: ./app/pages/page/disable-buttons.js - -external_jQuery_default()('.disable-after-click').on('click', function () { - external_jQuery_default()(this).addClass('pointer-events-disabled'); -}); -// EXTERNAL MODULE: ./node_modules/dropzone/dist/dropzone.js -var dist_dropzone = __webpack_require__(32025); -var dropzone_default = /*#__PURE__*/__webpack_require__.n(dist_dropzone); -;// CONCATENATED MODULE: ./app/forms/fields/files.js -function files_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function files_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 files_createClass(Constructor, protoProps, staticProps) { if (protoProps) files_defineProperties(Constructor.prototype, protoProps); if (staticProps) files_defineProperties(Constructor, staticProps); return Constructor; } - - - // import EXIF from 'exif-js'; - - - // translations - -var Dictionary = { - dictCancelUpload: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.DROPZONE_CANCEL_UPLOAD, - dictCancelUploadConfirmation: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.DROPZONE_CANCEL_UPLOAD_CONFIRMATION, - dictDefaultMessage: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.DROPZONE_DEFAULT_MESSAGE, - dictFallbackMessage: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.DROPZONE_FALLBACK_MESSAGE, - dictFallbackText: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.DROPZONE_FALLBACK_TEXT, - dictFileTooBig: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.DROPZONE_FILE_TOO_BIG, - dictInvalidFileType: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.DROPZONE_INVALID_FILE_TYPE, - dictMaxFilesExceeded: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.DROPZONE_MAX_FILES_EXCEEDED, - dictRemoveFile: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.DROPZONE_REMOVE_FILE, - dictResponseError: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.DROPZONE_RESPONSE_ERROR -}; -(dropzone_default()).autoDiscover = false; -(dropzone_default()).options.gravPageDropzone = {}; - -(dropzone_default()).confirm = function (question, accepted, rejected) { - var doc = external_jQuery_default()(document); - var modalSelector = '[data-remodal-id="delete-media"]'; - - var removeEvents = function removeEvents() { - doc.off('confirmation', modalSelector, accept); - doc.off('cancellation', modalSelector, reject); - external_jQuery_default()(modalSelector).find('.remodal-confirm').removeClass('pointer-events-disabled'); - }; - - var accept = function accept() { - accepted && accepted(); - removeEvents(); - }; - - var reject = function reject() { - rejected && rejected(); - removeEvents(); - }; - - (external_jQuery_default()).remodal.lookup[external_jQuery_default()(modalSelector).data('remodal')].open(); - doc.on('confirmation', modalSelector, accept); - doc.on('cancellation', modalSelector, reject); -}; - -var DropzoneMediaConfig = { - timeout: 0, - thumbnailWidth: 200, - thumbnailHeight: 150, - addRemoveLinks: false, - dictDefaultMessage: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.DROP_FILES_HERE_TO_UPLOAD.replace(/</g, '<').replace(/>/g, '>'), - dictRemoveFileConfirmation: '[placeholder]', - previewTemplate: "\n".concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.FILE_ERROR_UPLOAD, " ").concat(file.name, "
\n").concat(response.message, "") - }); - } - }, { - key: "onDropzoneComplete", - value: function onDropzoneComplete(file) { - if (!file.accepted && !file.rejected) { - var data = { - status: 'error', - message: "".concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.FILE_UNSUPPORTED, ": ").concat(file.name.match(/\..+/).join('')) - }; - return this.handleError({ - file: file, - data: data, - mode: 'removeFile', - msg: "
".concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.FILE_ERROR_ADD, " ").concat(file.name, "
\n").concat(data.message, "") - }); - } - - if (this.options.reloadPage) { - __webpack_require__.g.location.reload(); - } - } - }, { - key: "b64_to_utf8", - value: function b64_to_utf8(str) { - str = str.replace(/\s/g, ''); - return decodeURIComponent(escape(window.atob(str))); - } - }, { - key: "onDropzoneRemovedFile", - value: function onDropzoneRemovedFile(file) { - var _this5 = this; - - if (!file.accepted || file.rejected) { - return; - } - - var url = file.removeUrl || this.urls["delete"] || this.options.url; - var path = (url || '').match(/path:(.*)\//); - var body = { - filename: file.name, - uri: this.getURI() - }; - - if (file.sessionParams) { - body.task = 'filessessionremove'; - body.session = file.sessionParams; - } - - var customPost = this.container.data('filePostRemove') || {}; - - if (Object.keys(customPost).length) { - body = {}; - Object.keys(customPost).forEach(function (key) { - body[key] = customPost[key]; - }); - } - - body['filename'] = file.name; - body['admin-nonce'] = external_GravAdmin_namespaceObject.config.admin_nonce; - utils_request(url, { - method: 'post', - body: body - }, function () { - if (!path) { - return; - } - - path = _this5.b64_to_utf8(path[1]); - - var input = _this5.container.find('[name][type="hidden"]'); - - var data = JSON.parse(input.val() || '{}'); - delete data[path]; - input.val(JSON.stringify(data)); - }); - } - }, { - key: "onDropzoneError", - value: function onDropzoneError(file, response, xhr) { - var message = xhr ? response.error.message : response; - external_jQuery_default()(file.previewElement).find('[data-dz-errormessage]').html(message); - return this.handleError({ - file: file, - data: { - status: 'error' - }, - msg: "
".concat(message, "") - }); - } - }, { - key: "handleError", - value: function handleError(options) { - var file = options.file, - data = options.data, - mode = options.mode, - msg = options.msg; - - if (data.status !== 'error' && data.status !== 'unauthorized') { - return; - } - - switch (mode) { - case 'addBack': - if (file instanceof File) { - this.dropzone.addFile.call(this.dropzone, file); - } else { - this.dropzone.files.push(file); - this.dropzone.options.addedfile.call(this.dropzone, file); - this.dropzone.options.thumbnail.call(this.dropzone, file, file.extras.url); - } - - break; - - case 'removeFile': - default: - if (~this.dropzone.files.indexOf(file)) { - file.rejected = true; - this.dropzone.removeFile.call(this.dropzone, file, { - silent: true - }); - } - - break; - } - - var modal = external_jQuery_default()('[data-remodal-id="generic"]'); - modal.find('.error-content').html(msg); - (external_jQuery_default()).remodal.lookup[modal.data('remodal')].open(); - } - }]); - - return FilesField; -}(); - - -function UriToMarkdown(uri) { - uri = uri.replace(/@3x|@2x|@1x/, ''); - uri = uri.replace(/\(/g, '%28'); - uri = uri.replace(/\)/g, '%29'); - var title = uri.split('.').slice(0, -1).join('.'); - return uri.match(/\.(jpe?g|png|gif|svg|mp4|webm|ogv|mov)$/i) ? ".concat(uri, " \"").concat(title, "\")") : "[".concat(decodeURI(uri), "](").concat(uri, ")"); -} -var instances = []; -var cache = external_jQuery_default()(); - -var onAddedNodes = function onAddedNodes(event, target -/* , record, instance */ -) { - var files = external_jQuery_default()(target).find('.dropzone.files-upload'); - - if (!files.length) { - return; - } - - files.each(function (index, file) { - file = external_jQuery_default()(file); - - if (!~cache.index(file)) { - addNode(file); - } - }); -}; - -var addNode = function addNode(container) { - container = external_jQuery_default()(container); - var input = container.find('input[type="file"]'); - var settings = container.data('grav-file-settings') || {}; - - if (settings.accept && ~settings.accept.indexOf('*')) { - settings.accept = ['']; - } - - var options = { - url: container.data('file-url-add') || (container.closest('form').attr('action') || external_GravAdmin_namespaceObject.config.current_url) + '.json', - paramName: settings.paramName || 'file', - dotNotation: settings.name || 'file', - acceptedFiles: settings.accept ? settings.accept.join(',') : input.attr('accept') || container.data('media-types'), - maxFilesize: typeof settings.filesize !== 'undefined' ? settings.filesize : 256, - maxFiles: settings.limit || null, - resizeWidth: settings.resizeWidth || null, - resizeHeight: settings.resizeHeight || null, - resizeQuality: settings.resizeQuality || null, - resolution: settings.resolution || null, - accept: function accept(file, done) { - ACCEPT_FUNC(file, done, settings); - } - }; - cache = cache.add(container); - container = container[0]; - instances.push(new FilesField({ - container: container, - options: options - })); -}; - -var files_Instance = function () { - external_jQuery_default()('.dropzone.files-upload').each(function (i, container) { - return addNode(container); - }); - external_jQuery_default()('body').on('mutation._grav', onAddedNodes); - return instances; -}(); -;// CONCATENATED MODULE: ./app/forms/fields/editor/buttons.js - - - - -var replacer = function replacer(_ref) { - var name = _ref.name, - replace = _ref.replace, - codemirror = _ref.codemirror, - button = _ref.button, - _ref$mode = _ref.mode, - mode = _ref$mode === void 0 ? 'replaceSelections' : _ref$mode, - runner = _ref.runner; - button.on("click.editor.".concat(name), function () { - strategies[mode]({ - token: '$1', - template: replace, - codemirror: codemirror, - runner: runner - }); - }); -}; - -var strategies = { - replaceSelections: function replaceSelections(_ref2) { - var template = _ref2.template, - token = _ref2.token, - codemirror = _ref2.codemirror, - runner = _ref2.runner; - var replacements = []; - var ranges = []; - var selections = codemirror.getSelections(); - var list = codemirror.listSelections(); - var accumulator = {}; - selections.forEach(function (selection, index) { - var markup = template.replace(token, selection); - var cursor = markup.indexOf('$cur'); - var _list$index$anchor = list[index].anchor, - line = _list$index$anchor.line, - ch = _list$index$anchor.ch; - markup = markup.replace('$cur', ''); - markup = runner ? runner(selection, markup, list) : markup; - replacements.push(markup); - - if (!accumulator[line]) { - accumulator[line] = 0; - } - - ch += accumulator[line] + (cursor === -1 ? markup.length : cursor); - var range = { - ch: ch, - line: line - }; - ranges.push({ - anchor: range, - head: range - }); - accumulator[line] += markup.length - selection.length; - }); - codemirror.replaceSelections(replacements); - codemirror.setSelections(ranges); - codemirror.focus(); - }, - replaceLine: function replaceLine(_ref3) { - var template = _ref3.template, - token = _ref3.token, - codemirror = _ref3.codemirror, - runner = _ref3.runner; - var list = codemirror.listSelections(); - var range; - list.forEach(function (selection) { - var lines = { - min: Math.min(selection.anchor.line, selection.head.line), - max: Math.max(selection.anchor.line, selection.head.line) - }; - codemirror.eachLine(lines.min, lines.max + 1, function (handler) { - var markup = template.replace(token, handler.text); - var line = codemirror.getLineNumber(handler); - markup = runner ? runner(handler, markup) : markup; - codemirror.replaceRange(markup, { - line: line, - ch: 0 - }, { - line: line, - ch: markup.length - }); - range = { - line: line, - ch: markup.length - }; - }); - }); - codemirror.setSelection(range, range, 'end'); - codemirror.focus(); - }, - replaceRange: function replaceRange() {} -}; - -var flipDisabled = function flipDisabled(codemirror, button, type) { - var hasHistory = codemirror.historySize()[type]; - var element = button.find('a'); - button[hasHistory ? 'removeClass' : 'addClass']('button-disabled'); - - if (!hasHistory) { - element.attr('title-disabled', element.attr('title')); - element.attr('data-hint-disabled', element.attr('data-hint')); - element.removeAttr('title').removeAttr('data-hint'); - } else { - element.attr('title', element.attr('title-disabled')); - element.attr('data-hint', element.attr('data-hint-disabled')); - element.removeAttr('title-disabled').removeAttr('data-hint-disabled'); - } -}; - -/* harmony default export */ const buttons = ({ - navigation: [{ - undo: { - identifier: 'undo', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.UNDO, - label: '', - modes: [], - action: function action(_ref4) { - var codemirror = _ref4.codemirror, - button = _ref4.button, - textarea = _ref4.textarea; - button.addClass('button-disabled'); - codemirror.on('change', function () { - return flipDisabled(codemirror, button, 'undo'); - }); - button.on('click.editor.undo', function () { - codemirror.undo(); - }); - } - } - }, { - redo: { - identifier: 'redo', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.REDO, - label: '', - modes: [], - action: function action(_ref5) { - var codemirror = _ref5.codemirror, - button = _ref5.button, - textarea = _ref5.textarea; - button.addClass('button-disabled'); - codemirror.on('change', function () { - return flipDisabled(codemirror, button, 'redo'); - }); - button.on('click.editor.redo', function () { - codemirror.redo(); - }); - } - } - }, { - headers: { - identifier: 'headers', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.HEADERS, - label: '', - modes: ['gfm', 'markdown'], - children: [{ - h1: { - identifier: 'h1', - label: '1', - modes: ['gfm', 'markdown'], - action: function action(_ref6) { - var codemirror = _ref6.codemirror, - button = _ref6.button, - textarea = _ref6.textarea; - replacer({ - name: 'h1', - replace: '# $1', - codemirror: codemirror, - button: button, - mode: 'replaceLine' - }); - } - } - }, { - h2: { - identifier: 'h2', - label: '2', - modes: ['gfm', 'markdown'], - action: function action(_ref7) { - var codemirror = _ref7.codemirror, - button = _ref7.button, - textarea = _ref7.textarea; - replacer({ - name: 'h2', - replace: '## $1', - codemirror: codemirror, - button: button, - mode: 'replaceLine' - }); - } - } - }, { - h3: { - identifier: 'h3', - label: '3', - modes: ['gfm', 'markdown'], - action: function action(_ref8) { - var codemirror = _ref8.codemirror, - button = _ref8.button, - textarea = _ref8.textarea; - replacer({ - name: 'h3', - replace: '### $1', - codemirror: codemirror, - button: button, - mode: 'replaceLine' - }); - } - } - }, { - h4: { - identifier: 'h4', - label: '4', - modes: ['gfm', 'markdown'], - action: function action(_ref9) { - var codemirror = _ref9.codemirror, - button = _ref9.button, - textarea = _ref9.textarea; - replacer({ - name: 'h4', - replace: '#### $1', - codemirror: codemirror, - button: button, - mode: 'replaceLine' - }); - } - } - }, { - h5: { - identifier: 'h5', - label: '5', - modes: ['gfm', 'markdown'], - action: function action(_ref10) { - var codemirror = _ref10.codemirror, - button = _ref10.button, - textarea = _ref10.textarea; - replacer({ - name: 'h5', - replace: '##### $1', - codemirror: codemirror, - button: button, - mode: 'replaceLine' - }); - } - } - }, { - h6: { - identifier: 'h6', - label: '6', - modes: ['gfm', 'markdown'], - action: function action(_ref11) { - var codemirror = _ref11.codemirror, - button = _ref11.button, - textarea = _ref11.textarea; - replacer({ - name: 'h6', - replace: '###### $1', - codemirror: codemirror, - button: button, - mode: 'replaceLine' - }); - } - } - }] - } - }, { - bold: { - identifier: 'bold', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.BOLD, - label: '', - modes: ['gfm', 'markdown'], - shortcut: ['Ctrl-B', 'Cmd-B'], - action: function action(_ref12) { - var codemirror = _ref12.codemirror, - button = _ref12.button, - textarea = _ref12.textarea; - replacer({ - name: 'bold', - replace: '**$1$cur**', - codemirror: codemirror, - button: button - }); - } - } - }, { - italic: { - identifier: 'italic', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.ITALIC, - label: '', - modes: ['gfm', 'markdown'], - shortcut: ['Ctrl-I', 'Cmd-I'], - action: function action(_ref13) { - var codemirror = _ref13.codemirror, - button = _ref13.button, - textarea = _ref13.textarea; - replacer({ - name: 'italic', - replace: '_$1$cur_', - codemirror: codemirror, - button: button - }); - } - } - }, { - strike: { - identifier: 'strike', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.STRIKETHROUGH, - label: '', - modes: ['gfm', 'markdown'], - action: function action(_ref14) { - var codemirror = _ref14.codemirror, - button = _ref14.button, - textarea = _ref14.textarea; - replacer({ - name: 'strike', - replace: '~~$1$cur~~', - codemirror: codemirror, - button: button - }); - } - } - }, { - delimiter: { - identifier: 'delimiter', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.SUMMARY_DELIMITER, - label: '', - modes: ['gfm', 'markdown'], - action: function action(_ref15) { - var codemirror = _ref15.codemirror, - button = _ref15.button, - textarea = _ref15.textarea; - replacer({ - name: 'delimiter', - replace: "".concat(external_GravAdmin_namespaceObject.config.site.delimiter, "$1"), - codemirror: codemirror, - button: button, - mode: 'replaceLine' - }); - } - } - }, { - link: { - identifier: 'link', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.LINK, - label: '', - modes: ['gfm', 'markdown'], - shortcut: ['Ctrl-K', 'Cmd-K'], - action: function action(_ref16) { - var codemirror = _ref16.codemirror, - button = _ref16.button, - textarea = _ref16.textarea; - replacer({ - name: 'link', - replace: '[$1]($cur)', - codemirror: codemirror, - button: button - }); - } - } - }, { - image: { - identifier: 'image', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.IMAGE, - label: '', - modes: ['gfm', 'markdown'], - action: function action(_ref17) { - var codemirror = _ref17.codemirror, - button = _ref17.button, - textarea = _ref17.textarea; - replacer({ - name: 'image', - replace: '', - codemirror: codemirror, - button: button - }); - } - } - }, { - blockquote: { - identifier: 'blockquote', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.BLOCKQUOTE, - label: '', - modes: ['gfm', 'markdown'], - action: function action(_ref18) { - var codemirror = _ref18.codemirror, - button = _ref18.button, - textarea = _ref18.textarea; - replacer({ - name: 'blockquote', - replace: '> $1', - codemirror: codemirror, - button: button, - mode: 'replaceLine' - }); - } - } - }, { - listUl: { - identifier: 'listUl', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.UNORDERED_LIST, - label: '', - modes: ['gfm', 'markdown'], - action: function action(_ref19) { - var codemirror = _ref19.codemirror, - button = _ref19.button, - textarea = _ref19.textarea; - replacer({ - name: 'listUl', - replace: '* $1', - codemirror: codemirror, - button: button, - mode: 'replaceLine' - }); - } - } - }, { - listOl: { - identifier: 'listOl', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.ORDERED_LIST, - label: '', - modes: ['gfm', 'markdown'], - action: function action(_ref20) { - var codemirror = _ref20.codemirror, - button = _ref20.button, - textarea = _ref20.textarea; - replacer({ - name: 'listOl', - replace: '. $1', - codemirror: codemirror, - button: button, - mode: 'replaceLine', - runner: function runner(line, markup) { - var lineNo = codemirror.getLineNumber(line); - var previousLine = codemirror.getLine(lineNo - 1) || ''; - var match = previousLine.match(/^(\d+)\./); - var prefix = 1 + (match ? Number(match[1]) : 0); - return "".concat(prefix).concat(markup); - } - }); - } - } - }], - states: [{ - code: { - identifier: 'editor', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.EDITOR, - label: '', - action: function action(_ref21) { - var codemirror = _ref21.codemirror, - button = _ref21.button, - textarea = _ref21.textarea, - ui = _ref21.ui; - - if (textarea.data('grav-editor-mode') === 'editor') { - button.addClass('editor-active'); - } - - button.on('click.states.editor', function () { - button.siblings().removeClass('editor-active'); - button.addClass('editor-active'); - textarea.data('grav-editor-mode', 'editor'); - var previewContainer = textarea.data('grav-editor-preview-container'); - var content = textarea.parent('.grav-editor-content'); - content.addClass('is-active'); - ui.navigation.find('.grav-editor-actions').css('visibility', 'visible'); - - if (previewContainer) { - previewContainer.removeClass('is-active'); - } - }); - } - } - }, { - preview: { - identifier: 'preview', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.PREVIEW, - label: '', - modes: ['gfm', 'markdown'], - action: function action(_ref22) { - var codemirror = _ref22.codemirror, - button = _ref22.button, - textarea = _ref22.textarea, - ui = _ref22.ui; - - if (textarea.data('grav-editor-mode') === 'preview') { - button.addClass('editor-active'); - } - - button.on('click.states.preview', function () { - var previewContainer = textarea.data('grav-editor-preview-container'); - var content = textarea.parent('.grav-editor-content'); - button.siblings().removeClass('editor-active'); - button.addClass('editor-active'); - textarea.data('grav-editor-mode', 'preview'); - - if (!previewContainer) { - previewContainer = external_jQuery_default()(''); - content.after(previewContainer); - textarea.data('grav-editor-preview-container', previewContainer); - } - - previewContainer.css({ - height: content.height() - }); - previewContainer.addClass('is-active'); - content.removeClass('is-active'); - ui.navigation.find('.grav-editor-actions').css('visibility', 'hidden'); - var url = "".concat(textarea.data('grav-urlpreview'), "/task").concat(external_GravAdmin_namespaceObject.config.param_sep, "processmarkdown"); - var params = textarea.closest('form').serializeArray(); - var body = {}; - params.map(function (obj) { - body[obj.name] = obj.value; - }); - utils_request(url, { - method: 'post', - body: body - }, function (response) { - return previewContainer.html(response.preview); - }); - }); - } - } - }, { - fullscreen: { - identifier: 'fullscreen', - title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.FULLSCREEN, - label: '', - action: function action(_ref23) { - var codemirror = _ref23.codemirror, - button = _ref23.button, - textarea = _ref23.textarea; - button.on('click.editor.fullscreen', function () { - var container = textarea.closest('.grav-editor'); - var wrapper = codemirror.getWrapperElement(); - var contentWrapper = external_jQuery_default()('.content-wrapper'); - - if (!container.hasClass('grav-editor-fullscreen')) { - textarea.data('fullScreenRestore', { - scrollTop: __webpack_require__.g.pageYOffset, - scrollLeft: __webpack_require__.g.pageXOffset, - width: wrapper.style.width, - height: wrapper.style.height - }); - wrapper.style.width = ''; - wrapper.style.height = textarea.parent('.grav-editor-content').height() + 'px'; - __webpack_require__.g.document.documentElement.style.overflow = 'hidden'; - var hints = container.find('.grav-editor-toolbar .hint--top'); - - if (hints) { - hints.removeClass('hint--top').addClass('hint--bottom'); - external_jQuery_default()(hints[hints.length - 1]).addClass('hint--bottom-left'); - } - - if (contentWrapper) { - contentWrapper.css('overflow', 'visible'); - } - } else { - __webpack_require__.g.document.documentElement.style.overflow = ''; - var state = textarea.data('fullScreenRestore'); - wrapper.style.width = state.width; - wrapper.style.height = state.height; - __webpack_require__.g.scrollTo(state.scrollLeft, state.scrollTop); - - var _hints = container.find('.grav-editor-toolbar .hint--bottom'); - - if (_hints) { - _hints.removeClass('hint--bottom').addClass('hint--top'); - - external_jQuery_default()(_hints[_hints.length - 1]).removeClass('hint--bottom-left'); - } - - if (contentWrapper) { - contentWrapper.css('overflow', 'auto'); - } - } - - container.toggleClass('grav-editor-fullscreen'); - setTimeout(function () { - codemirror.refresh(); // this.preview.parent().css('height', this.code.height()); - - external_jQuery_default()(__webpack_require__.g).trigger('resize'); - }, 5); - }); - } - } - }] -}); -// EXTERNAL MODULE: ./node_modules/codemirror/lib/codemirror.js -var codemirror = __webpack_require__(4631); -var codemirror_default = /*#__PURE__*/__webpack_require__.n(codemirror); -// EXTERNAL MODULE: ./node_modules/watchjs/src/watch.js -var watch = __webpack_require__(29950); -// EXTERNAL MODULE: ./node_modules/js-yaml/dist/js-yaml.mjs -var js_yaml = __webpack_require__(47180); -// EXTERNAL MODULE: ./node_modules/codemirror/mode/css/css.js -var css = __webpack_require__(36629); -// EXTERNAL MODULE: ./node_modules/codemirror/mode/gfm/gfm.js -var gfm = __webpack_require__(42425); -// EXTERNAL MODULE: ./node_modules/codemirror/mode/htmlmixed/htmlmixed.js -var htmlmixed = __webpack_require__(16531); -// EXTERNAL MODULE: ./node_modules/codemirror/mode/javascript/javascript.js -var javascript = __webpack_require__(96876); -// EXTERNAL MODULE: ./node_modules/codemirror/mode/markdown/markdown.js -var markdown = __webpack_require__(49047); -// EXTERNAL MODULE: ./node_modules/codemirror/mode/php/php.js -var php = __webpack_require__(36702); -// EXTERNAL MODULE: ./node_modules/codemirror/mode/sass/sass.js -var sass = __webpack_require__(81201); -// EXTERNAL MODULE: ./node_modules/codemirror/mode/twig/twig.js -var twig = __webpack_require__(54702); -// EXTERNAL MODULE: ./node_modules/codemirror/mode/xml/xml.js -var xml = __webpack_require__(29589); -// EXTERNAL MODULE: ./node_modules/codemirror/mode/yaml/yaml.js -var yaml = __webpack_require__(53631); -// EXTERNAL MODULE: ./node_modules/codemirror/addon/edit/continuelist.js -var continuelist = __webpack_require__(23350); -// EXTERNAL MODULE: ./node_modules/codemirror/addon/mode/overlay.js -var overlay = __webpack_require__(14146); -// EXTERNAL MODULE: ./node_modules/codemirror/addon/selection/active-line.js -var active_line = __webpack_require__(20017); -// EXTERNAL MODULE: ./node_modules/codemirror/addon/lint/lint.js -var lint = __webpack_require__(3256); -// EXTERNAL MODULE: ./node_modules/codemirror/addon/lint/lint.css -var lint_lint = __webpack_require__(46226); -// EXTERNAL MODULE: ./node_modules/codemirror/addon/lint/css-lint.js -var css_lint = __webpack_require__(41423); -// EXTERNAL MODULE: ./node_modules/codemirror/addon/lint/javascript-lint.js -var javascript_lint = __webpack_require__(96477); -// EXTERNAL MODULE: ./node_modules/codemirror/addon/lint/json-lint.js -var json_lint = __webpack_require__(62193); -// EXTERNAL MODULE: ./node_modules/codemirror/addon/lint/yaml-lint.js -var yaml_lint = __webpack_require__(82783); -;// CONCATENATED MODULE: ./app/forms/fields/editor.js -function editor_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function editor_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 editor_createClass(Constructor, protoProps, staticProps) { if (protoProps) editor_defineProperties(Constructor.prototype, protoProps); if (staticProps) editor_defineProperties(Constructor, staticProps); return Constructor; } - - - - - - -__webpack_require__.g.jsyaml = js_yaml/* default */.ZP; // Modes - - - - - - - - - - - // Add-ons - - - - - - - - - - -var IS_MOUSEDOWN = false; -var ThemesMap = ['paper']; -var Defaults = { - codemirror: { - mode: 'htmlmixed', - theme: 'paper', - lineWrapping: true, - dragDrop: true, - autoCloseTags: true, - matchTags: true, - autoCloseBrackets: true, - matchBrackets: true, - indentUnit: 4, - indentWithTabs: false, - tabSize: 4, - hintOptions: { - completionSingle: false - }, - extraKeys: { - 'Enter': 'newlineAndIndentContinueMarkdownList' - } - } -}; - -var EditorField = /*#__PURE__*/function () { - function EditorField(options) { - var _this = this; - - editor_classCallCheck(this, EditorField); - - var body = external_jQuery_default()('body'); - this.editors = external_jQuery_default()(); - this.options = Object.assign({}, Defaults, options); - this.buttons = buttons; - this.buttonStrategies = strategies; - (0,watch.watch)(buttons, function () - /* key, modifier, prev, next */ - { - _this.editors.each(function (index, editor) { - return external_jQuery_default()(editor).data('toolbar').renderButtons(); - }); - }); - external_jQuery_default()('[data-grav-editor]').each(function (index, editor) { - return _this.addEditor(editor); - }); - external_jQuery_default()(function () { - body.trigger('grav-editor-ready'); - }); - body.on('mutation._grav', this._onAddedNodes.bind(this)); - body.on('mouseup._grav', function () { - if (!IS_MOUSEDOWN) { - return true; - } - - body.unbind('mousemove._grav'); - IS_MOUSEDOWN = false; - }); - body.on('mousedown._grav', '.grav-editor-resizer', function (event) { - event && event.preventDefault(); - IS_MOUSEDOWN = true; - var target = external_jQuery_default()(event.currentTarget); - var container = target.siblings('.grav-editor-content'); - var editor = container.find('.CodeMirror'); - var codemirror = container.find('textarea').data('codemirror'); - body.on('mousemove._grav', function (event) { - editor.css('height', Math.max(100, event.pageY - container.offset().top)); - codemirror.refresh(); - }); - }); - } - - editor_createClass(EditorField, [{ - key: "addButton", - value: function addButton(button, options) { - if (options && (options.before || options.after)) { - var index = this.buttons.navigation.findIndex(function (obj) { - var key = Object.keys(obj).shift(); - return obj[key].identifier === (options.before || options.after); - }); - - if (!~index) { - options = 'end'; - } else { - this.buttons.navigation.splice(options.before ? index : index + 1, 0, button); - } - } - - if (options === 'start') { - this.buttons.navigation.splice(0, 0, button); - } - - if (!options || options === 'end') { - this.buttons.navigation.push(button); - } - } - }, { - key: "addEditor", - value: function addEditor(textarea) { - textarea = external_jQuery_default()(textarea); - var options = Object.assign({}, this.options.codemirror, textarea.data('grav-editor').codemirror); - var theme = options.theme || 'paper'; - this.editors = this.editors.add(textarea); - - if (theme && !~ThemesMap.indexOf(theme)) { - ThemesMap.push(theme); // let themeCSS = `https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.12.0/theme/${theme}.min.css`; - // $('head').append($('').attr('href', themeCSS)); - } - - if (options.mode === 'yaml') { - Object.assign(options.extraKeys, { - Tab: function Tab(cm) { - cm.replaceSelection(' ', 'end'); - } - }); - } - - var editor = codemirror_default().fromTextArea(textarea.get(0), options); - textarea.data('codemirror', editor); - textarea.data('toolbar', new Toolbar(textarea)); - textarea.addClass('code-mirrored'); - - if (options.toolbar === false) { - textarea.data('toolbar').ui.navigation.addClass('grav-editor-hide-toolbar'); - } - - editor.on('change', function () { - return editor.save(); - }); - } - }, { - key: "_onAddedNodes", - value: function _onAddedNodes(event, target - /* , record, instance */ - ) { - var _this2 = this; - - var editors = external_jQuery_default()(target).find('[data-grav-editor]'); - - if (!editors.length) { - return; - } - - editors.each(function (index, editor) { - editor = external_jQuery_default()(editor); - - if (!~_this2.editors.index(editor)) { - _this2.addEditor(editor); - } - }); - } - }]); - - return EditorField; -}(); - - -var Toolbar = /*#__PURE__*/function () { - function Toolbar(editor) { - editor_classCallCheck(this, Toolbar); - - this.editor = external_jQuery_default()(editor); - this.codemirror = this.editor.data('codemirror'); - this.buttons = buttons.navigation; - this.ui = { - navigation: external_jQuery_default()(Toolbar.templates().navigation) - }; - this.editor.parent('.grav-editor-content').before(this.ui.navigation).after(this.ui.states); - this.renderButtons(); - } - - editor_createClass(Toolbar, [{ - key: "renderButtons", - value: function renderButtons() { - var _this3 = this; - - var map = { - 'actions': 'navigation', - 'modes': 'states' - }; - ['actions', 'modes'].forEach(function (type) { - _this3.ui.navigation.find(".grav-editor-".concat(type)).empty().append('
No media found
'); -}; - -var filterFiles = function filterFiles() { - cleanFilesList(); - global_index = 0; - files_ended = false; - external_jQuery_default()('.empty-space').remove(); - loadMedia(filters, function (content) { - if (!content.trim().length) { - showEmptyState(); - } else { - if (!filters.page && (!filters.date || filters.date === '*') && (!filters.type || filters.type === '*')) { - external_jQuery_default()('.js__files').trigger('fillView'); - } - } - }); -}; -/* handle changing page */ - - -external_jQuery_default()('body').on('click', '.pages-list-container .js__page-link', function (event) { - var page = external_jQuery_default()(event.target).data('page'); - filters['page'] = page; - external_jQuery_default()('.media-list-title .page-indicator').html(page); // set indication - - external_jQuery_default()('.js__reset-pages-filter').removeClass('hidden'); // activate reset pages icon - - resetActiveStateInSidebar(); - external_jQuery_default()(event.target).parents('.row').addClass('active'); // set active state in sidebar - - external_jQuery_default()('.js__file-uploader').removeClass('hidden'); // customize processing URL, as the page changes dynamically - - if (external_jQuery_default()('.dropzone')[0]) { - external_jQuery_default()('.dropzone')[0].dropzone.on('processing', function (file) { - this.options.url = "".concat(external_GravAdmin_namespaceObject.config.base_url_relative, "/media-manager").concat(page, ".json/task").concat(external_GravAdmin_namespaceObject.config.param_sep, "addmedia"); - }); - } - - external_jQuery_default()('.js__button-clear-media-cache').addClass('hidden'); - filterFiles(); - disableInfiniteScrolling(); // only infinite scroll on main list, not inside single pages -}); -/* handle clearing page filter */ - -external_jQuery_default()('body').on('click', '.js__reset-pages-filter', function (event) { - external_jQuery_default()('.media-list-title .page-indicator').html('All Pages'); // set indication - - cleanFilesList(); - resetActiveStateInSidebar(); - external_jQuery_default()('.js__reset-pages-filter').addClass('hidden'); // remove reset pages icon - - external_jQuery_default()('.js__file-uploader').addClass('hidden'); - external_jQuery_default()('.js__button-clear-media-cache').removeClass('hidden'); - delete filters['page']; - filterFiles(); -}); -/* handle infinite loading */ - -var enableInfiniteScrolling = function enableInfiniteScrolling() { - external_jQuery_default()('.spinning-wheel').hide(); - var view = external_jQuery_default()('.mediapicker-scroll').last(); - - if (!view.length) { - return; - } - - external_jQuery_default()(view).on('scroll', function () { - if (external_jQuery_default()(this).scrollTop() + external_jQuery_default()(this).innerHeight() + 100 >= external_jQuery_default()(this)[0].scrollHeight) { - fillView(); - } - }); -}; - -var loadNextBatch = function loadNextBatch(callback) { - if (files_ended) { - return; - } - - loadMedia({}, function (content) { - if (!external_jQuery_default()(content).length || content.split('card-item').length - 1 < MEDIA_PAGINATION_INTERVAL) { - files_ended = true; - } else { - if (callback) { - callback(); - } - } - - external_jQuery_default()('.media-container .media-range').trigger('input'); - }); -}; - -var fillView = function fillView() { - if (!external_jQuery_default()('.js__files').find('.card-item').last().offset()) { - setTimeout(function () { - // retry later - fillView(); - }, 300); - return; - } - - if (external_jQuery_default()('.js__files').find('.card-item').last().offset().top - 1 <= external_jQuery_default()('.media-container').height()) { - loadNextBatch(function () { - fillView(); - }); - } -}; -/* disable infinite loading */ - - -var disableInfiniteScrolling = function disableInfiniteScrolling() { - external_jQuery_default()('.spinning-wheel').hide(); - external_jQuery_default()('.content-wrapper').unbind('scroll'); -}; - -external_jQuery_default()('.js__files').on('fillView', function (event) { - // the first batch got the max number of media files, try loading more - if (external_jQuery_default()('.js__files')[0].innerHTML.split('card-item').length - 1 === MEDIA_PAGINATION_INTERVAL) { - fillView(); - enableInfiniteScrolling(); - } -}); -;// CONCATENATED MODULE: ./app/utils/2fa.js - - - -var _2fa_body = external_jQuery_default()('body'); // Dashboard update and Grav update - -_2fa_body.on('click', '[data-2fa-regenerate]', function (event) { - event.preventDefault(); - var element = external_jQuery_default()(this); - var url = "".concat(external_GravAdmin_namespaceObject.config.base_url_relative, "/ajax.json/task").concat(external_GravAdmin_namespaceObject.config.param_sep, "regenerate2FASecret"); - element.attr('disabled', 'disabled').find('> .fa').addClass('fa-spin'); - utils_request(url, { - method: 'post' - }, function (response) { - external_jQuery_default()('[data-2fa-image]').attr('src', response.image); - external_jQuery_default()('[data-2fa-secret]').text(response.secret); - external_jQuery_default()('[data-2fa-value]').val(response.secret.replace(' ', '')); - element.removeAttr('disabled').find('> .fa').removeClass('fa-spin'); - }); -}); - -var toggleSecret = function toggleSecret() { - var toggle = external_jQuery_default()('#toggle_twofa_enabled1'); - var secret = external_jQuery_default()('.twofa-secret'); - secret[toggle.is(':checked') ? 'addClass' : 'removeClass']('show'); -}; - -_2fa_body.on('click', '.twofa-toggle input', toggleSecret); -toggleSecret(); -// EXTERNAL MODULE: ./node_modules/mout/queryString.js -var queryString = __webpack_require__(85407); -;// CONCATENATED MODULE: ./app/tools/logs.js - - - -var prepareQuery = function prepareQuery(key, value) { - return (0,queryString.setParam)(__webpack_require__.g.location.href, key, value); -}; - -external_jQuery_default()(document).on('change', '.logs-content .block-select select[name]', function (event) { - var target = external_jQuery_default()(event.currentTarget); - var name = target.attr('name'); - var value = target.val(); - __webpack_require__.g.location.href = prepareQuery(name, value); -}); -;// CONCATENATED MODULE: ./app/tools/index.js - -;// CONCATENATED MODULE: ./app/whitelabel/compile.js - - -/* harmony default export */ const compile = (function () { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$preview = _ref.preview, - preview = _ref$preview === void 0 ? false : _ref$preview, - _ref$exportScss = _ref.exportScss, - exportScss = _ref$exportScss === void 0 ? false : _ref$exportScss, - _ref$color_scheme = _ref.color_scheme, - color_scheme = _ref$color_scheme === void 0 ? {} : _ref$color_scheme, - _ref$fonts = _ref.fonts, - fonts = _ref$fonts === void 0 ? {} : _ref$fonts, - _ref$callback = _ref.callback, - callback = _ref$callback === void 0 ? function () {} : _ref$callback; - - var task = exportScss ? 'exportScss' : 'compileScss'; // console.log(config); - - var URI = "".concat(external_GravAdmin_namespaceObject.config.base_url_relative, ".json/task:").concat(task); - utils_request(URI, { - method: 'post', - body: Object.assign({}, preview ? { - preview: preview - } : null, color_scheme) - }, callback); -}); -var prepareElement = function prepareElement(element) { - element.data('busy_right_now', true); - - if (!element.data('current_icon')) { - element.data('current_icon', element.find('.fa').attr('class')); - } - - element.find('.fa').attr('class', 'fa fa-fw fa-spin fa-refresh'); -}; -var resetElement = function resetElement(element) { - element.data('busy_right_now', false); - element.find('.fa').attr('class', element.data('current_icon')); -}; -;// CONCATENATED MODULE: ./app/whitelabel/presets.js - - -var presets_body = external_jQuery_default()('body'); -var presets_fields = []; -var presets_FormState = app_forms.FormState.Instance; - -var setField = function setField(field, value) { - var name = field.prop('name'); - var tag = field.prop('tagName').toLowerCase(); - var type = field.prop('type'); - presets_fields.push(name); - - switch (tag) { - case 'select': - field.val(value); - field.data('selectize').setValue(value); - field.trigger('change'); - break; - - case 'input': - if (type === 'radio') { - var strValue = value ? '1' : '0'; - field.filter(function (index, radio) { - return external_jQuery_default()(radio).val() === strValue; - }).prop('checked', true); - break; - } - - if (type === 'checkbox') { - field.prop('checked', value); - break; - } - - field.val(value); - field.trigger('keyup'); - } -}; - -presets_body.on('click', '[data-preset-values]', function (event) { - var target = external_jQuery_default()(event.currentTarget); - var data = target.data('preset-values'); - Object.keys(data).forEach(function (section) { - if (typeof data[section] === 'string') { - return; - } - - Object.keys(data[section]).forEach(function (key) { - var field = external_jQuery_default()("[name=\"data[whitelabel][color_scheme][".concat(section, "][").concat(key, "]\"], [name=\"data[").concat(section, "][").concat(key, "]\"]")); - var value = data[section][key]; - setField(field, value); - }); - }); -}); -presets_body.on('click', '[data-reset-scss]', function (event) { - event && event.preventDefault(); - var element = external_jQuery_default()(event.currentTarget); - var links = external_jQuery_default()('link[id^=admin-pro-preview-]'); - element.remove(); - links.remove(); - presets_fields.forEach(function (field) { - var value = presets_FormState.loadState.get(field); - setField(external_jQuery_default()("[name=\"".concat(field, "\"]")), value); - }); - presets_fields = []; -}); // Horizontal Scroll Functionality - -(external_jQuery_default()).fn.hscrollarrows = function () { - return this.each(function () { - var navNext = external_jQuery_default()(''); - var navPrev = external_jQuery_default()(''); - var scrollTime = null; - var resizeTime = null; - var scrolling = false; - var elm_w = 0; - var elem_data_w = 0; - var max_scroll = 0; - var inc_scroll = 0; - - var calcData = function calcData() { - elm_w = elem.width(); - elem_data_w = elem_data.get(0).scrollWidth; - max_scroll = elem_data_w - elm_w; - inc_scroll = elm_w * 0.3; // 20% - }; - - var revalidate = function revalidate() { - calcData(); - stateNavs(); - }; - - var run = function run() { - calcData(); - setupNavs(); - }; - - var setupNavs = function setupNavs() { - elem.parent().prepend(navNext); - elem.parent().prepend(navPrev); - navNext.on('click', next); - navPrev.on('click', prev); - stateNavs(); - external_jQuery_default()(elem).scroll(function () { - if (!scrolling) { - clearTimeout(scrollTime); - scrollTime = setTimeout(function () { - stateNavs(); - }, 250); - } - }); - external_jQuery_default()(window).resize(function () { - clearTimeout(resizeTime); - resizeTime = setTimeout(function () { - revalidate(); - }, 250); - }); - }; - - var stateNavs = function stateNavs() { - var current_scroll = elem.scrollLeft(); - - if (current_scroll < max_scroll) { - navNext.removeClass('hide'); - } else { - navNext.addClass('hide'); - } - - if (current_scroll > 0) { - navPrev.removeClass('hide'); - } else { - navPrev.addClass('hide'); - } - - scrolling = false; - }; - - var next = function next() { - var current_scroll = elem.scrollLeft(); - - if (current_scroll < max_scroll) { - scrolling = true; - elem.stop().animate({ - scrollLeft: current_scroll + inc_scroll - }, stateNavs); - } - }; - - var prev = function prev() { - var current_scroll = elem.scrollLeft(); - - if (current_scroll > 0) { - scrolling = true; - elem.stop().animate({ - scrollLeft: current_scroll - inc_scroll - }, stateNavs); - } - }; - - var elem = external_jQuery_default()(this); - var elem_data = external_jQuery_default()(':first-child', elem); - run(); - }); -}; - -external_jQuery_default()(document).ready(function () { - external_jQuery_default()('.jquery-horizontal-scroll').hscrollarrows(); -}); -;// CONCATENATED MODULE: ./app/whitelabel/index.js - - - - - -var whitelabel_body = external_jQuery_default()('body'); -var whitelabel_FormState = app_forms.FormState.Instance; - -var compiler = function compiler(element) { - var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var exportScss = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var _callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {}; - - prepareElement(element); - var fields = whitelabel_FormState.collect(); - compile({ - preview: preview, - exportScss: exportScss, - color_scheme: !fields ? [] : fields.filter(function (value, key) { - return key.match(/^data\[whitelabel]\[color_scheme]/); - }).toJS(), - callback: function callback(response) { - _callback.call(_callback, response); - - resetElement(element); - } - }); -}; - -whitelabel_body.on('click', '[data-preview-scss]', function (event) { - event && event.preventDefault(); - var element = external_jQuery_default()(event.currentTarget); - - if (element.data('busy_right_now')) { - return false; - } - - compiler(element, true, false, function (response) { - if (response.files) { - Object.keys(response.files).forEach(function (key) { - var file = external_jQuery_default()("#admin-pro-preview-".concat(key)); - var timestamp = Date.now(); - - if (!file.length) { - file = external_jQuery_default()("")); - external_jQuery_default()('head').append(file); - - if (!external_jQuery_default()('[data-reset-scss]').length) { - var reset = external_jQuery_default()(''); - reset.insertAfter(element); - } - } - - file.attr('href', "".concat(response.files[key], "?").concat(timestamp)); - }); - } - }); -}); -whitelabel_body.on('click', '[data-recompile-scss]', function (event) { - event && event.preventDefault(); - var element = external_jQuery_default()(event.currentTarget); - - if (element.data('busy_right_now')) { - return false; - } - - compiler(element, true, false); -}); -whitelabel_body.on('click', '[data-export-scss]', function (event) { - event && event.preventDefault(); - var element = external_jQuery_default()(event.currentTarget); - - if (element.data('busy_right_now')) { - return false; - } - - compiler(element, true, true, function (response) { - if (response.files) { - Object.keys(response.files).forEach(function (key) { - if (key === 'download') { - var _element = document.createElement('a'); - - _element.setAttribute('href', response.files[key]); - - _element.setAttribute('download', ''); - - _element.style.display = 'none'; - document.body.appendChild(_element); - - _element.click(); - - document.body.removeChild(_element); - } - }); - } - }); -}); -whitelabel_body.on('change._grav_colorpicker', '[data-grav-colorpicker]', function (event, input, hex, opacity) { - var RGB = hex2rgb(hex); - var YIQ = (RGB.r * 299 + RGB.g * 587 + RGB.b * 114) / 1000; - var contrast = YIQ >= 128 || opacity <= 0.50 ? 'dark' : 'light'; - input.parent().removeClass('dark-text light-text').addClass("".concat(contrast, "-text")); -}); -whitelabel_body.ready(function () { - external_jQuery_default()('[data-grav-colorpicker]').trigger('keyup'); -}); -;// CONCATENATED MODULE: ./app/utils/bootstrap-transition.js - -+function ($) { - 'use strict'; // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap'); - var transEndEventNames = { - WebkitTransition: 'webkitTransitionEnd', - MozTransition: 'transitionend', - OTransition: 'oTransitionEnd otransitionend', - transition: 'transitionend' - }; - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { - end: transEndEventNames[name] - }; - } - } - - return false; // explicit for ie8 ( ._.) - } // http://blog.alexmaccaw.com/css-transitions - - - $.fn.emulateTransitionEnd = function (duration) { - var called = false; - var $el = this; - $(this).one('bsTransitionEnd', function () { - called = true; - }); - - var callback = function callback() { - if (!called) $($el).trigger($.support.transition.end); - }; - - setTimeout(callback, duration); - return this; - }; - - $(function () { - $.support.transition = transitionEnd(); - if (!$.support.transition) return; - $.event.special.bsTransitionEnd = { - bindType: $.support.transition.end, - delegateType: $.support.transition.end, - handle: function handle(e) { - if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments); - } - }; - }); -}((external_jQuery_default())); -;// CONCATENATED MODULE: ./app/utils/bootstrap-collapse.js -function bootstrap_collapse_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { bootstrap_collapse_typeof = function _typeof(obj) { return typeof obj; }; } else { bootstrap_collapse_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return bootstrap_collapse_typeof(obj); } - - -/* ======================================================================== - * Bootstrap: collapse.js v3.4.0 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - -/* jshint latedef: false */ - -+function ($) { - 'use strict'; // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function Collapse(element, options) { - this.$element = $(element); - this.options = $.extend({}, Collapse.DEFAULTS, options); - this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + '[data-toggle="collapse"][data-target="#' + element.id + '"]'); - this.transitioning = null; - - if (this.options.parent) { - this.$parent = this.getParent(); - } else { - this.addAriaAndCollapsedClass(this.$element, this.$trigger); - } - - if (this.options.toggle) this.toggle(); - }; - - Collapse.VERSION = '3.4.0'; - Collapse.TRANSITION_DURATION = 350; - Collapse.DEFAULTS = { - toggle: true - }; - - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width'); - return hasWidth ? 'width' : 'height'; - }; - - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return; - var activesData; - var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing'); - - if (actives && actives.length) { - activesData = actives.data('bs.collapse'); - if (activesData && activesData.transitioning) return; - } - - var startEvent = $.Event('show.bs.collapse'); - this.$element.trigger(startEvent); - if (startEvent.isDefaultPrevented()) return; - - if (actives && actives.length) { - Plugin.call(actives, 'hide'); - activesData || actives.data('bs.collapse', null); - } - - var dimension = this.dimension(); - this.$element.removeClass('collapse').addClass('collapsing')[dimension](0).attr('aria-expanded', true); - this.$trigger.removeClass('collapsed').attr('aria-expanded', true); - this.transitioning = 1; - - var complete = function complete() { - this.$element.removeClass('collapsing').addClass('collapse in')[dimension](''); - this.transitioning = 0; - this.$element.trigger('shown.bs.collapse'); - }; - - if (!$.support.transition) return complete.call(this); - var scrollSize = $.camelCase(['scroll', dimension].join('-')); - this.$element.one('bsTransitionEnd', $.proxy(complete, this)).emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]); - }; - - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return; - var startEvent = $.Event('hide.bs.collapse'); - this.$element.trigger(startEvent); - if (startEvent.isDefaultPrevented()) return; - var dimension = this.dimension(); - this.$element[dimension](this.$element[dimension]())[0].offsetHeight; - this.$element.addClass('collapsing').removeClass('collapse in').attr('aria-expanded', false); - this.$trigger.addClass('collapsed').attr('aria-expanded', false); - this.transitioning = 1; - - var complete = function complete() { - this.transitioning = 0; - this.$element.removeClass('collapsing').addClass('collapse').trigger('hidden.bs.collapse'); - }; - - if (!$.support.transition) return complete.call(this); - this.$element[dimension](0).one('bsTransitionEnd', $.proxy(complete, this)).emulateTransitionEnd(Collapse.TRANSITION_DURATION); - }; - - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show'](); - }; - - Collapse.prototype.getParent = function () { - return $(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each($.proxy(function (i, element) { - var $element = $(element); - this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element); - }, this)).end(); - }; - - Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { - var isOpen = $element.hasClass('in'); - $element.attr('aria-expanded', isOpen); - $trigger.toggleClass('collapsed', !isOpen).attr('aria-expanded', isOpen); - }; - - function getTargetFromTrigger($trigger) { - var href; - var target = $trigger.attr('data-target') || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, ''); // strip for ie7 - - return $(target); - } // COLLAPSE PLUGIN DEFINITION - // ========================== - - - function Plugin(option) { - return this.each(function () { - var $this = $(this); - var data = $this.data('bs.collapse'); - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), bootstrap_collapse_typeof(option) === 'object' && option); - if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false; - if (!data) $this.data('bs.collapse', data = new Collapse(this, options)); - if (typeof option === 'string') data[option](); - }); - } - - var old = $.fn.collapse; - $.fn.collapse = Plugin; - $.fn.collapse.Constructor = Collapse; // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old; - return this; - }; // COLLAPSE DATA-API - // ================= - - - $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { - var $this = $(this); - if (!$this.attr('data-target')) e.preventDefault(); - var $target = getTargetFromTrigger($this); - var data = $target.data('bs.collapse'); - var option = data ? 'toggle' : $this.data(); - Plugin.call($target, option); - }); -}((external_jQuery_default())); -;// CONCATENATED MODULE: ./app/utils/bootstrap-dropdown.js - -/* ======================================================================== - * Bootstrap: dropdown.js v3.4.1 - * https://getbootstrap.com/docs/3.4/javascript/#dropdowns - * ======================================================================== - * Copyright 2011-2019 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE) - * ======================================================================== */ - -+function ($) { - 'use strict'; // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop'; - var toggle = '[data-toggle="dropdown"]'; - - var Dropdown = function Dropdown(element) { - $(element).on('click.bs.dropdown', this.toggle); - }; - - Dropdown.VERSION = '3.4.1'; - - function getParent($this) { - var selector = $this.attr('data-target'); - - if (!selector) { - selector = $this.attr('href'); - selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, ''); // strip for ie7 - } - - var $parent = selector !== '#' ? $(document).find(selector) : null; - return $parent && $parent.length ? $parent : $this.parent(); - } - - function clearMenus(e) { - if (e && e.which === 3) { - return; - } - - $(backdrop).remove(); - $(toggle).each(function () { - var $this = $(this); - var $parent = getParent($this); - var relatedTarget = { - relatedTarget: this - }; - - if (!$parent.hasClass('open')) { - return; - } - - if (e && e.type === 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) { - return; - } - - $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)); - - if (e.isDefaultPrevented()) { - return; - } - - $this.attr('aria-expanded', 'false'); - $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)); - }); - } - - Dropdown.prototype.toggle = function (e) { - var $this = $(this); - - if ($this.is('.disabled, :disabled')) { - return; - } - - var $parent = getParent($this); - var isActive = $parent.hasClass('open'); - clearMenus(); - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we use a backdrop because click events don't delegate - $(document.createElement('div')).addClass('dropdown-backdrop').insertAfter($(this)).on('click', clearMenus); - } - - var relatedTarget = { - relatedTarget: this - }; - $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)); - - if (e.isDefaultPrevented()) { - return; - } - - $this.trigger('focus').attr('aria-expanded', 'true'); - $parent.toggleClass('open').trigger($.Event('shown.bs.dropdown', relatedTarget)); - } - - return false; - }; - - Dropdown.prototype.keydown = function (e) { - if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return; - var $this = $(this); - e.preventDefault(); - e.stopPropagation(); - - if ($this.is('.disabled, :disabled')) { - return; - } - - var $parent = getParent($this); - var isActive = $parent.hasClass('open'); - - if (!isActive && e.which !== 27 || isActive && e.which === 27) { - if (e.which === 27) { - $parent.find(toggle).trigger('focus'); - } - - return $this.trigger('click'); - } - - var desc = ' li:not(.disabled):visible a'; - var $items = $parent.find('.dropdown-menu' + desc); - - if (!$items.length) { - return; - } - - var index = $items.index(e.target); - - if (e.which === 38 && index > 0) { - index--; - } // up - - - if (e.which === 40 && index < $items.length - 1) { - index++; - } // down - - - if (!~index) { - index = 0; - } - - $items.eq(index).trigger('focus'); - }; // DROPDOWN PLUGIN DEFINITION - // ========================== - - - function Plugin(option) { - return this.each(function () { - var $this = $(this); - var data = $this.data('bs.dropdown'); - if (!data) $this.data('bs.dropdown', data = new Dropdown(this)); - if (typeof option === 'string') data[option].call($this); - }); - } - - var old = $.fn.dropdown; - $.fn.dropdown = Plugin; - $.fn.dropdown.Constructor = Dropdown; // DROPDOWN NO CONFLICT - // ==================== - - $.fn.dropdown.noConflict = function () { - $.fn.dropdown = old; - return this; - }; // APPLY TO STANDARD DROPDOWN ELEMENTS - // =================================== - - - $(document).on('click.bs.dropdown.data-api', clearMenus).on('click.bs.dropdown.data-api', '.dropdown form', function (e) { - e.stopPropagation(); - }).on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle).on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown).on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown); -}((external_jQuery_default())); -;// CONCATENATED MODULE: ./app/utils/tabs-memory.js - - - -var tabs_memory_Data = JSON.parse(cookies.get('grav-tabs-state') || '{}'); -external_jQuery_default()('body').on('touchstart click', '[data-tabid]', function (event) { - event && event.stopPropagation(); - var target = external_jQuery_default()(event.currentTarget); - tabs_memory_Data[target.data('tabkey')] = target.data('scope'); - cookies.set('grav-tabs-state', JSON.stringify(tabs_memory_Data), { - expires: Infinity - }); - var panel = external_jQuery_default()("[id=\"".concat(target.data('tabid'), "\"]")); - target.siblings('[data-tabid]').removeClass('active'); - target.addClass('active'); - panel.siblings('[id]').removeClass('active'); - panel.addClass('active'); - editor_Instance.editors.each(function (index, editor) { - var codemirror = external_jQuery_default()(editor).data('codemirror'); - - if (!codemirror) { - return; - } - - if (codemirror.display.lastWrapWidth === 0) { - codemirror.refresh(); - } - }); -}); -;// CONCATENATED MODULE: ./app/utils/changelog.js -/* eslint-disable */ - -var TRIGGER = null; -external_jQuery_default()(document).on('click', '[data-remodal-changelog]', function (event) { - TRIGGER = event.currentTarget; -}); -external_jQuery_default()(document).on('opened', '[data-remodal-id="changelog"]', function () { - var instance = (external_jQuery_default()).remodal.lookup[external_jQuery_default()('[data-remodal-id=changelog]').data('remodal')]; - instance.$modal.html('\".concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.FILE_ERROR_UPLOAD, \" \").concat(file.name, \"
\\n\").concat(response.message, \"\")\n });\n }\n }, {\n key: \"onDropzoneComplete\",\n value: function onDropzoneComplete(file) {\n if (!file.accepted && !file.rejected) {\n var data = {\n status: 'error',\n message: \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.FILE_UNSUPPORTED, \": \").concat(file.name.match(/\\..+/).join(''))\n };\n return this.handleError({\n file: file,\n data: data,\n mode: 'removeFile',\n msg: \"
\".concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.FILE_ERROR_ADD, \" \").concat(file.name, \"
\\n\").concat(data.message, \"\")\n });\n }\n\n if (this.options.reloadPage) {\n __webpack_require__.g.location.reload();\n }\n }\n }, {\n key: \"b64_to_utf8\",\n value: function b64_to_utf8(str) {\n str = str.replace(/\\s/g, '');\n return decodeURIComponent(escape(window.atob(str)));\n }\n }, {\n key: \"onDropzoneRemovedFile\",\n value: function onDropzoneRemovedFile(file) {\n var _this5 = this;\n\n if (!file.accepted || file.rejected) {\n return;\n }\n\n var url = file.removeUrl || this.urls[\"delete\"] || this.options.url;\n var path = (url || '').match(/path:(.*)\\//);\n var body = {\n filename: file.name,\n uri: this.getURI()\n };\n\n if (file.sessionParams) {\n body.task = 'filessessionremove';\n body.session = file.sessionParams;\n }\n\n var customPost = this.container.data('filePostRemove') || {};\n\n if (Object.keys(customPost).length) {\n body = {};\n Object.keys(customPost).forEach(function (key) {\n body[key] = customPost[key];\n });\n }\n\n body['filename'] = file.name;\n body['admin-nonce'] = grav_config__WEBPACK_IMPORTED_MODULE_3__.config.admin_nonce;\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(url, {\n method: 'post',\n body: body\n }, function () {\n if (!path) {\n return;\n }\n\n path = _this5.b64_to_utf8(path[1]);\n\n var input = _this5.container.find('[name][type=\"hidden\"]');\n\n var data = JSON.parse(input.val() || '{}');\n delete data[path];\n input.val(JSON.stringify(data));\n });\n }\n }, {\n key: \"onDropzoneError\",\n value: function onDropzoneError(file, response, xhr) {\n var message = xhr ? response.error.message : response;\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(file.previewElement).find('[data-dz-errormessage]').html(message);\n return this.handleError({\n file: file,\n data: {\n status: 'error'\n },\n msg: \"
\".concat(message, \"\")\n });\n }\n }, {\n key: \"handleError\",\n value: function handleError(options) {\n var file = options.file,\n data = options.data,\n mode = options.mode,\n msg = options.msg;\n\n if (data.status !== 'error' && data.status !== 'unauthorized') {\n return;\n }\n\n switch (mode) {\n case 'addBack':\n if (file instanceof File) {\n this.dropzone.addFile.call(this.dropzone, file);\n } else {\n this.dropzone.files.push(file);\n this.dropzone.options.addedfile.call(this.dropzone, file);\n this.dropzone.options.thumbnail.call(this.dropzone, file, file.extras.url);\n }\n\n break;\n\n case 'removeFile':\n default:\n if (~this.dropzone.files.indexOf(file)) {\n file.rejected = true;\n this.dropzone.removeFile.call(this.dropzone, file, {\n silent: true\n });\n }\n\n break;\n }\n\n var modal = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-remodal-id=\"generic\"]');\n modal.find('.error-content').html(msg);\n (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[modal.data('remodal')].open();\n }\n }]);\n\n return FilesField;\n}();\n\n\nfunction UriToMarkdown(uri) {\n uri = uri.replace(/@3x|@2x|@1x/, '');\n uri = uri.replace(/\\(/g, '%28');\n uri = uri.replace(/\\)/g, '%29');\n var title = uri.split('.').slice(0, -1).join('.');\n return uri.match(/\\.(jpe?g|png|gif|svg|mp4|webm|ogv|mov)$/i) ? \".concat(uri, \" \\\"\").concat(title, \"\\\")\") : \"[\".concat(decodeURI(uri), \"](\").concat(uri, \")\");\n}\nvar instances = [];\nvar cache = jquery__WEBPACK_IMPORTED_MODULE_0___default()();\n\nvar onAddedNodes = function onAddedNodes(event, target\n/* , record, instance */\n) {\n var files = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).find('.dropzone.files-upload');\n\n if (!files.length) {\n return;\n }\n\n files.each(function (index, file) {\n file = jquery__WEBPACK_IMPORTED_MODULE_0___default()(file);\n\n if (!~cache.index(file)) {\n addNode(file);\n }\n });\n};\n\nvar addNode = function addNode(container) {\n container = jquery__WEBPACK_IMPORTED_MODULE_0___default()(container);\n var input = container.find('input[type=\"file\"]');\n var settings = container.data('grav-file-settings') || {};\n\n if (settings.accept && ~settings.accept.indexOf('*')) {\n settings.accept = [''];\n }\n\n var options = {\n url: container.data('file-url-add') || (container.closest('form').attr('action') || grav_config__WEBPACK_IMPORTED_MODULE_3__.config.current_url) + '.json',\n paramName: settings.paramName || 'file',\n dotNotation: settings.name || 'file',\n acceptedFiles: settings.accept ? settings.accept.join(',') : input.attr('accept') || container.data('media-types'),\n maxFilesize: typeof settings.filesize !== 'undefined' ? settings.filesize : 256,\n maxFiles: settings.limit || null,\n resizeWidth: settings.resizeWidth || null,\n resizeHeight: settings.resizeHeight || null,\n resizeQuality: settings.resizeQuality || null,\n resolution: settings.resolution || null,\n accept: function accept(file, done) {\n ACCEPT_FUNC(file, done, settings);\n }\n };\n cache = cache.add(container);\n container = container[0];\n instances.push(new FilesField({\n container: container,\n options: options\n }));\n};\n\nvar Instance = function () {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.dropzone.files-upload').each(function (i, container) {\n return addNode(container);\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('mutation._grav', onAddedNodes);\n return instances;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9maWxlcy5qcz82MTc5Il0sIm5hbWVzIjpbIkRpY3Rpb25hcnkiLCJkaWN0Q2FuY2VsVXBsb2FkIiwidHJhbnNsYXRpb25zIiwiZGljdENhbmNlbFVwbG9hZENvbmZpcm1hdGlvbiIsImRpY3REZWZhdWx0TWVzc2FnZSIsImRpY3RGYWxsYmFja01lc3NhZ2UiLCJkaWN0RmFsbGJhY2tUZXh0IiwiZGljdEZpbGVUb29CaWciLCJkaWN0SW52YWxpZEZpbGVUeXBlIiwiZGljdE1heEZpbGVzRXhjZWVkZWQiLCJkaWN0UmVtb3ZlRmlsZSIsImRpY3RSZXNwb25zZUVycm9yIiwiRFJPUFpPTkVfUkVTUE9OU0VfRVJST1IiLCJEcm9wem9uZSIsInF1ZXN0aW9uIiwiYWNjZXB0ZWQiLCJyZWplY3RlZCIsImRvYyIsIiQiLCJkb2N1bWVudCIsIm1vZGFsU2VsZWN0b3IiLCJyZW1vdmVFdmVudHMiLCJvZmYiLCJhY2NlcHQiLCJyZWplY3QiLCJmaW5kIiwicmVtb3ZlQ2xhc3MiLCJkYXRhIiwib3BlbiIsIm9uIiwiRHJvcHpvbmVNZWRpYUNvbmZpZyIsInRpbWVvdXQiLCJ0aHVtYm5haWxXaWR0aCIsInRodW1ibmFpbEhlaWdodCIsImFkZFJlbW92ZUxpbmtzIiwicmVwbGFjZSIsImRpY3RSZW1vdmVGaWxlQ29uZmlybWF0aW9uIiwicHJldmlld1RlbXBsYXRlIiwidHJpbSIsIkFDQ0VQVF9GVU5DIiwiZmlsZSIsImRvbmUiLCJzZXR0aW5ncyIsInJlc29sdXRpb24iLCJyZWFkZXIiLCJGaWxlUmVhZGVyIiwiZXJyb3IiLCJoYXNNaW4iLCJtaW4iLCJ3aWR0aCIsImhlaWdodCIsImhhc01heCIsIm1heCIsInJlc2l6ZVdpZHRoIiwicmVzaXplSGVpZ2h0Iiwib25sb2FkIiwiZXZlbnQiLCJpbWFnZSIsIkltYWdlIiwic3JjIiwidGFyZ2V0IiwicmVzdWx0Iiwib25lcnJvciIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiYXR0ciIsIlVSTCIsInJldm9rZU9iamVjdFVSTCIsInJlYWRBc0RhdGFVUkwiLCJGaWxlc0ZpZWxkIiwiY29udGFpbmVyIiwib3B0aW9ucyIsImxlbmd0aCIsInVybHMiLCJjdXN0b21Qb3N0IiwiYXNzaWduIiwia2xhc3MiLCJ1cmwiLCJjb25maWciLCJhY2NlcHRlZEZpbGVzIiwiaW5pdCIsImluaXREcm9wem9uZSIsImRyb3B6b25lIiwib25Ecm9wem9uZUNvbXBsZXRlIiwiYmluZCIsIm9uRHJvcHpvbmVTdWNjZXNzIiwib25Ecm9wem9uZVJlbW92ZWRGaWxlIiwib25Ecm9wem9uZVNlbmRpbmciLCJvbkRyb3B6b25lRXJyb3IiLCJlIiwidmFsdWUiLCJKU09OIiwicGFyc2UiLCJ2YWwiLCJjdXJyZW50VGFyZ2V0IiwicGFyZW50IiwiZmlsZW5hbWUiLCJlbmNvZGVVUkkiLCJ0ZXh0IiwiZmlsdGVyIiwia2V5IiwibmFtZSIsInNoaWZ0IiwiZmlsZXMiLCJlYWNoIiwiaW5kZXgiLCJtb2NrIiwic2l6ZSIsInR5cGUiLCJzdGF0dXMiLCJyZW1vdmVVcmwiLCJyZW1vdmUiLCJwdXNoIiwiYWRkZWRmaWxlIiwiY2FsbCIsIm1hdGNoIiwidGh1bWJuYWlsIiwicGF0aCIsImNyZWF0ZVRodW1ibmFpbEZyb21VcmwiLCJ4aHIiLCJmb3JtRGF0YSIsImFwcGVuZCIsImRvdE5vdGF0aW9uIiwiZ2V0VVJJIiwicmVzcG9uc2UiLCJyZWxvYWRQYWdlIiwiZ2xvYmFsIiwibG9jYXRpb24iLCJyZWxvYWQiLCJzZXNzaW9uIiwic2Vzc2lvblBhcmFtcyIsImlucHV0IiwiaGFuZGxlRXJyb3IiLCJtb2RlIiwibXNnIiwibWVzc2FnZSIsImpvaW4iLCJzdHIiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ3aW5kb3ciLCJhdG9iIiwiYm9keSIsInVyaSIsInRhc2siLCJyZXF1ZXN0IiwibWV0aG9kIiwiYjY0X3RvX3V0ZjgiLCJzdHJpbmdpZnkiLCJwcmV2aWV3RWxlbWVudCIsImh0bWwiLCJGaWxlIiwiYWRkRmlsZSIsImV4dHJhcyIsImluZGV4T2YiLCJyZW1vdmVGaWxlIiwic2lsZW50IiwibW9kYWwiLCJVcmlUb01hcmtkb3duIiwidGl0bGUiLCJzcGxpdCIsInNsaWNlIiwiZGVjb2RlVVJJIiwiaW5zdGFuY2VzIiwiY2FjaGUiLCJvbkFkZGVkTm9kZXMiLCJhZGROb2RlIiwiY2xvc2VzdCIsInBhcmFtTmFtZSIsIm1heEZpbGVzaXplIiwiZmlsZXNpemUiLCJtYXhGaWxlcyIsImxpbWl0IiwicmVzaXplUXVhbGl0eSIsImFkZCIsIkluc3RhbmNlIiwiaSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0NBRUE7O0FBQ0E7Q0FHQTs7QUFDQSxJQUFNQSxVQUFVLEdBQUc7QUFDZkMsa0JBQWdCLEVBQUVDLHlGQURIO0FBRWZDLDhCQUE0QixFQUFFRCxzR0FGZjtBQUdmRSxvQkFBa0IsRUFBRUYsMkZBSEw7QUFJZkcscUJBQW1CLEVBQUVILDRGQUpOO0FBS2ZJLGtCQUFnQixFQUFFSix5RkFMSDtBQU1mSyxnQkFBYyxFQUFFTCx3RkFORDtBQU9mTSxxQkFBbUIsRUFBRU4sNkZBUE47QUFRZk8sc0JBQW9CLEVBQUVQLDhGQVJQO0FBU2ZRLGdCQUFjLEVBQUVSLHVGQVREO0FBVWZTLG1CQUFpQixFQUFFVCwwRkFBaURVO0FBVnJELENBQW5CO0FBYUFDLDhEQUFBLEdBQXdCLEtBQXhCO0FBQ0FBLDBFQUFBLEdBQW9DLEVBQXBDOztBQUNBQSx5REFBQSxHQUFtQixVQUFDQyxRQUFELEVBQVdDLFFBQVgsRUFBcUJDLFFBQXJCLEVBQWtDO0FBQ2pELE1BQUlDLEdBQUcsR0FBR0MsNkNBQUMsQ0FBQ0MsUUFBRCxDQUFYO0FBQ0EsTUFBSUMsYUFBYSxHQUFHLGtDQUFwQjs7QUFFQSxNQUFJQyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFNO0FBQ3JCSixPQUFHLENBQUNLLEdBQUosQ0FBUSxjQUFSLEVBQXdCRixhQUF4QixFQUF1Q0csTUFBdkM7QUFDQU4sT0FBRyxDQUFDSyxH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SCxDQUxxQixFQUFmIiwiZmlsZSI6Ii4vYXBwL2Zvcm1zL2ZpZWxkcy9maWxlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgRHJvcHpvbmUgZnJvbSAnZHJvcHpvbmUnO1xuLy8gaW1wb3J0IEVYSUYgZnJvbSAnZXhpZi1qcyc7XG5pbXBvcnQgcmVxdWVzdCBmcm9tICcuLi8uLi91dGlscy9yZXF1ZXN0JztcbmltcG9ydCB7IGNvbmZpZywgdHJhbnNsYXRpb25zIH0gZnJvbSAnZ3Jhdi1jb25maWcnO1xuXG4vLyB0cmFuc2xhdGlvbnNcbmNvbnN0IERpY3Rpb25hcnkgPSB7XG4gICAgZGljdENhbmNlbFVwbG9hZDogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QWk9ORV9DQU5DRUxfVVBMT0FELFxuICAgIGRpY3RDYW5jZWxVcGxvYWRDb25maXJtYXRpb246IHRyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uRFJPUFpPTkVfQ0FOQ0VMX1VQTE9BRF9DT05GSVJNQVRJT04sXG4gICAgZGljdERlZmF1bHRNZXNzYWdlOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRST1BaT05FX0RFRkFVTFRfTUVTU0FHRSxcbiAgICBkaWN0RmFsbGJhY2tNZXNzYWdlOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRST1BaT05FX0ZBTExCQUNLX01FU1NBR0UsXG4gICAgZGljdEZhbGxiYWNrVGV4dDogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QWk9ORV9GQUxMQkFDS19URVhULFxuICAgIGRpY3RGaWxlVG9vQmlnOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRST1BaT05FX0ZJTEVfVE9PX0JJRyxcbiAgICBkaWN0SW52YWxpZEZpbGVUeXBlOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRST1BaT05FX0lOVkFMSURfRklMRV9UWVBFLFxuICAgIGRpY3RNYXhGaWxlc0V4Y2VlZGVkOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRST1BaT05FX01BWF9GSUxFU19FWENFRURFRCxcbiAgICBkaWN0UmVtb3ZlRmlsZTogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QWk9ORV9SRU1PVkVfRklMRSxcbiAgICBkaWN0UmVzcG9uc2VFcnJvcjogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QWk9ORV9SRVNQT05TRV9FUlJPUlxufTtcblxuRHJvcHpvbmUuYXV0b0Rpc2NvdmVyID0gZmFsc2U7XG5Ecm9wem9uZS5vcHRpb25zLmdyYXZQYWdlRHJvcHpvbmUgPSB7fTtcbkRyb3B6b25lLmNvbmZpcm0gPSAocXVlc3Rpb24sIGFjY2VwdGVkLCByZWplY3RlZCkgPT4ge1xuICAgIGxldCBkb2MgPSAkKGRvY3VtZW50KTtcbiAgICBsZXQgbW9kYWxTZWxlY3RvciA9ICdbZGF0YS1yZW1vZGFsLWlkPVwiZGVsZXRlLW1lZGlhXCJdJztcblxuICAgIGxldCByZW1vdmVFdmVudHMgPSAoKSA9PiB7XG4gICAgICAgIGRvYy5vZmYoJ2NvbmZpcm1hdGlvbicsIG1vZGFsU2VsZWN0b3IsIGFjY2VwdCk7XG4gICAgICAgIGRvYy5vZmYoJ2NhbmNlbGxhdGlvbicsIG1vZGFsU2VsZWN0b3IsIHJlamVjdCk7XG5cbiAgICAgICAgJChtb2RhbFNlbGVjdG9yKS5maW5kKCcucmVtb2RhbC1jb25maXJtJykucmVtb3ZlQ2xhc3MoJ3BvaW50ZXItZXZlbnRzLWRpc2FibGVkJyk7XG4gICAgfTtcblxuICAgIGxldCBhY2NlcHQgPSAoKSA9PiB7XG4gICAgICAgIGFjY2VwdGVkICYmIGFjY2VwdGVkKCk7XG4gICAgICAgIHJlbW92ZUV2ZW50cygpO1xuICAgIH07XG5cbiAgICBsZXQgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgICByZWplY3RlZCAmJiByZWplY3RlZCgpO1xuICAgICAgICByZW1vdmVFdmVudHMoKTtcbiAgICB9O1xuXG4gICAgJC5yZW1vZGFsLmxvb2t1cFskKG1vZGFsU2VsZWN0b3IpLmRhdGEoJ3JlbW9kYWwnKV0ub3BlbigpO1xuICAgIGRvYy5vbignY29uZmlybWF0aW9uJywgbW9kYWxTZWxlY3RvciwgYWNjZXB0KTtcbiAgICBkb2Mub24oJ2NhbmNlbGxhdGlvbicsIG1vZGFsU2VsZWN0b3IsIHJlamVjdCk7XG59O1xuXG5jb25zdCBEcm9wem9uZU1lZGlhQ29uZmlnID0ge1xuICAgIHRpbWVvdXQ6IDAsXG4gICAgdGh1bWJuYWlsV2lkdGg6IDIwMCxcbiAgICB0aHVtYm5haWxIZWlnaHQ6IDE1MCxcbiAgICBhZGRSZW1vdmVMaW5rczogZmFsc2UsXG4gICAgZGljdERlZmF1bHRNZXNzYWdlOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRST1BfRklMRVNfSEVSRV9UT19VUExPQUQucmVwbGFjZSgvJmx0Oy9nLCAnPCcpLnJlcGxhY2UoLyZndDsvZywgJz4nKSxcbiAgICBkaWN0UmVtb3ZlRmlsZUNvbmZpcm1hdGlvbjogJ1twbGFjZWhvbGRlcl0nLFxuICAgIHByZXZpZXdUZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHotcHJldmlldyBkei1maWxlLXByZXZpZXcgZHotbm8tZWRpdG9yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImR6LWRldGFpbHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkei1maWxlbmFtZVwiPjxzcGFuIGRhdGEtZHotbmFtZT48L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHotc2l6ZVwiIGRhdGEtZHotc2l6ZT48L2Rpdj5cbiAgICAgICAgICAgIDxpbWcgZGF0YS1kei10aHVtYm5haWwgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHotcHJvZ3Jlc3NcIj48c3BhbiBjbGFzcz1cImR6LXVwbG9hZFwiIGRhdGEtZHotdXBsb2FkcHJvZ3Jlc3M+PC9zcGFuPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkei1zdWNjZXNzLW1hcmtcIj48c3Bhbj7inJQ8L3NwYW4+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImR6LWVycm9yLW1hcmtcIj48c3Bhbj7inJg8L3NwYW4+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImR6LWVycm9yLW1lc3NhZ2VcIj48c3BhbiBkYXRhLWR6LWVycm9ybWVzc2FnZT48L3NwYW4+PC9kaXY+XG4gICAgICAgICAgPGEgY2xhc3M9XCJkei11bnNldFwiIHRpdGxlPVwiJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLlVOU0VUfVwiIGhyZWY9XCIjXCIgZGF0YS1kei11bnNldD4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVU5TRVR9PC9hPlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHotcmVtb3ZlXCIgdGl0bGU9XCIke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uREVMRVRFfVwiIGhyZWY9XCJqYXZhc2NyaXB0OnVuZGVmaW5lZDtcIiBkYXRhLWR6LXJlbW92ZT4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uREVMRVRFfTwvYT5cbiAgICAgICAgICA8YSBjbGFzcz1cImR6LW1ldGFkYXRhXCIgdGl0bGU9XCIke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uTUVUQURBVEF9XCIgaHJlZj1cIiNcIiB0YXJnZXQ9XCJfYmxhbmtcIiBkYXRhLWR6LW1ldGFkYXRhPiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5NRVRBREFUQX08L2E+XG4gICAgICAgICAgPGEgY2xhc3M9XCJkei12aWV3XCIgdGl0bGU9XCIke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVklFV31cIiBocmVmPVwiI1wiIHRhcmdldD1cIl9ibGFua1wiIGRhdGEtZHotdmlldz4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVklFV308L2E+XG4gICAgICAgIDwvZGl2PmAudHJpbSgpXG59O1xuXG4vLyBnbG9iYWwuRVhJRiA9IEVYSUY7XG5cbmNvbnN0IEFDQ0VQVF9GVU5DID0gZnVuY3Rpb24oZmlsZSwgZG9uZSwgc2V0dGluZ3MpIHtcbiAgICBjb25zdCByZXNvbHV0aW9uID0gc2V0dGluZ3MucmVzb2x1dGlvbjtcbiAgICBpZiAoIXJlc29sdXRpb24pIHJldHVybiBkb25lKCk7XG5cbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIGxldCBlcnJvciA9ICcnO1xuICAgIGNvbnN0IGhhc01pbiA9IChyZXNvbHV0aW9uLm1pbiAmJiAocmVzb2x1dGlvbi5taW4ud2lkdGggfHwgcmVzb2x1dGlvbi5taW4uaGVpZ2h0KSk7XG4gICAgY29uc3QgaGFzTWF4ID0gKHJlc29sdXRpb24ubWF4ICYmIChyZXNvbHV0aW9uLm1heC53aWR0aCB8fCByZXNvbHV0aW9uLm1heC5oZWlnaHQpKTtcbiAgICBpZiAoaGFzTWluIHx8ICghKHNldHRpbmdzLnJlc2l6ZVdpZHRoIHx8IHNldHRpbmdzLnJlc2l6ZUhlaWdodCkgJiYgaGFzTWF4KSkge1xuICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBpbWFnZS5zcmMgPSBldmVudC50YXJnZXQucmVzdWx0O1xuICAgICAgICAgICAgaW1hZ2Uub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGRvbmUodHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5GSUxFX0VSUk9SX1VQTE9BRCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc29sdXRpb24ubWluKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlc29sdXRpb24ubWluKS5mb3JFYWNoKChhdHRyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzb2x1dGlvbi5taW5bYXR0cl0gJiYgdGhpc1thdHRyXSA8IHJlc29sdXRpb24ubWluW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgKz0gdHJhbnNsYXRpb25zLlBMVUdJTl9GT1JNLlJFU09MVVRJT05fTUlOLnJlcGxhY2UoL3t7YXR0cn19L2csIGF0dHIpLnJlcGxhY2UoL3t7bWlufX0vZywgcmVzb2x1dGlvbi5taW5bYXR0cl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIShzZXR0aW5ncy5yZXNpemVXaWR0aCB8fCBzZXR0aW5ncy5yZXNpemVIZWlnaHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNvbHV0aW9uLm1heCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzb2x1dGlvbi5tYXgpLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzb2x1dGlvbi5tYXhbYXR0cl0gJiYgdGhpc1thdHRyXSA+IHJlc29sdXRpb24ubWF4W2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yICs9IHRyYW5zbGF0aW9ucy5QTFVHSU5fRk9STS5SRVNPTFVUSU9OX01BWC5yZXBsYWNlKC97e2F0dHJ9fS9nLCBhdHRyKS5yZXBsYWNlKC97e21heH19L2csIHJlc29sdXRpb24ubWF4W2F0dHJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoaW1hZ2Uuc3JjKTsgLy8gcmVsZWFzZSBtZW1vcnlcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IgPyBkb25lKGVycm9yKSA6IGRvbmUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG5cbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGVycm9yID8gZG9uZShlcnJvcikgOiBkb25lKCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsZXNGaWVsZCB7XG4gICAgY29uc3RydWN0b3IoeyBjb250YWluZXIgPSAnLmRyb3B6b25lLmZpbGVzLXVwbG9hZCcsIG9wdGlvbnMgPSB7fSB9ID0ge30pIHtcbiAgICAgICAgdGhpcy5jb250YWluZXIgPSAkKGNvbnRhaW5lcik7XG4gICAgICAgIGlmICghdGhpcy5jb250YWluZXIubGVuZ3RoKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHRoaXMudXJscyA9IHt9O1xuICAgICAgICB0aGlzLmN1c3RvbVBvc3QgPSB0aGlzLmNvbnRhaW5lci5kYXRhKCdmaWxlUG9zdEFkZCcpIHx8IHt9O1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBEaWN0aW9uYXJ5LCBEcm9wem9uZU1lZGlhQ29uZmlnLCB7XG4gICAgICAgICAgICBrbGFzczogdGhpcyxcbiAgICAgICAgICAgIHVybDogdGhpcy5jb250YWluZXIuZGF0YSgnZmlsZS11cmwtYWRkJykgfHwgY29uZmlnLmN1cnJlbnRfdXJsLFxuICAgICAgICAgICAgYWNjZXB0ZWRGaWxlczogdGhpcy5jb250YWluZXIuZGF0YSgnbWVkaWEtdHlwZXMnKSxcbiAgICAgICAgICAgIGluaXQ6IHRoaXMuaW5pdERyb3B6b25lXG4gICAgICAgIH0sIHRoaXMuY29udGFpbmVyLmRhdGEoJ2Ryb3B6b25lLW9wdGlvbnMnKSwgb3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5vcHRpb25zLCB7XG4gICAgICAgICAgICBhY2NlcHQ6IGZ1bmN0aW9uKGZpbGUsIGRvbmUpIHsgQUNDRVBUX0ZVTkMoZmlsZSwgZG9uZSwgdGhpcy5vcHRpb25zKTsgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRyb3B6b25lID0gbmV3IERyb3B6b25lKGNvbnRhaW5lciwgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgdGhpcy5kcm9wem9uZS5vbignY29tcGxldGUnLCB0aGlzLm9uRHJvcHpvbmVDb21wbGV0ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy5kcm9wem9uZS5vbignc3VjY2VzcycsIHRoaXMub25Ecm9wem9uZVN1Y2Nlc3MuYmluZCh0aGlzKSk7XG4gICAgICAgIHRoaXMuZHJvcHpvbmUub24oJ3JlbW92ZWRmaWxlJywgdGhpcy5vbkRyb3B6b25lUmVtb3ZlZEZpbGUuYmluZCh0aGlzKSk7XG4gICAgICAgIHRoaXMuZHJvcHpvbmUub24oJ3NlbmRpbmcnLCB0aGlzLm9uRHJvcHpvbmVTZW5kaW5nLmJpbmQodGhpcykpO1xuICAgICAgICB0aGlzLmRyb3B6b25lLm9uKCdlcnJvcicsIHRoaXMub25Ecm9wem9uZUVycm9yLmJpbmQodGhpcykpO1xuXG4gICAgICAgIHRoaXMuY29udGFpbmVyLm9uKCdtb3VzZWVudGVyJywgJ1tkYXRhLWR6LXZpZXddJywgKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gSlNPTi5wYXJzZSh0aGlzLmNvbnRhaW5lci5maW5kKCdbbmFtZV1bdHlwZT1cImhpZGRlblwiXScpLnZhbCgpIHx8ICd7fScpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gJChlLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRhcmdldC5wYXJlbnQoJy5kei1wcmV2aWV3JykuZmluZCgnLmR6LWZpbGVuYW1lJyk7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IGVuY29kZVVSSShmaWxlLnRleHQoKSk7XG5cbiAgICAgICAgICAgIGNvbnN0IFVSTCA9IE9iamVjdC5rZXlzKHZhbHVlKS5maWx0ZXIoKGtleSkgPT4gdmFsdWVba2V5XS5uYW1lID09PSBmaWxlbmFtZSkuc2hpZnQoKTtcbiAgICAgICAgICAgIHRhcmdldC5hdHRyKCdocmVmJywgYCR7Y29uZmlnLmJhc2VfdXJsX3NpbXBsZX0vJHtVUkx9YCk7XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgaW5pdERyb3B6b25lKCkge1xuICAgICAgICBsZXQgZmlsZXMgPSB0aGlzLm9wdGlvbnMua2xhc3MuY29udGFpbmVyLmZpbmQoJ1tkYXRhLWZpbGVdJyk7XG4gICAgICAgIGxldCBkcm9wem9uZSA9IHRoaXM7XG4gICAgICAgIGlmICghZmlsZXMubGVuZ3RoKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGZpbGVzLmVhY2goKGluZGV4LCBmaWxlKSA9PiB7XG4gICAgICAgICAgICBmaWxlID0gJChmaWxlKTtcbiAgICAgICAgICAgIGxldCBkYXRhID0gZmlsZS5kYXRhKCdmaWxlJyk7XG4gICAgICAgICAgICBsZXQgbW9jayA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLm5hbWUsXG4gICAgICAgICAgICAgICAgc2l6ZTogZGF0YS5zaXplLFxuICAgICAgICAgICAgICAgIHR5cGU6IGRhdGEudHlwZSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IERyb3B6b25lLkFEREVELFxuICAgICAgICAgICAgICAgIGFjY2VwdGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHVybDogdGhpcy5vcHRpb25zLnVybCxcbiAgICAgICAgICAgICAgICByZW1vdmVVcmw6IGRhdGEucmVtb3ZlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBkcm9wem9uZS5maWxlcy5wdXNoKG1vY2spO1xuICAgICAgICAgICAgZHJvcHpvbmUub3B0aW9ucy5hZGRlZGZpbGUuY2FsbChkcm9wem9uZSwgbW9jayk7XG4gICAgICAgICAgICBpZiAobW9jay50eXBlLm1hdGNoKC9eaW1hZ2VcXC8vKSkge1xuICAgICAgICAgICAgICAgIGRyb3B6b25lLm9wdGlvbnMudGh1bWJuYWlsLmNhbGwoZHJvcHpvbmUsIG1vY2ssIGRhdGEucGF0aCk7XG4gICAgICAgICAgICAgICAgZHJvcHpvbmUuY3JlYXRlVGh1bWJuYWlsRnJvbVVybChtb2NrLCBkYXRhLnBhdGgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmaWxlLnJlbW92ZSgpO1xuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIGdldFVSSSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmRhdGEoJ21lZGlhVXJpJykgfHwgJyc7XG4gICAgfVxuXG4gICAgb25Ecm9wem9uZVNlbmRpbmcoZmlsZSwgeGhyLCBmb3JtRGF0YSkge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5jdXN0b21Qb3N0KS5sZW5ndGgpIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY3VzdG9tUG9zdCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgdGhpcy5jdXN0b21Qb3N0W2tleV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ25hbWUnLCB0aGlzLm9wdGlvbnMuZG90Tm90YXRpb24pO1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCd0YXNrJywgJ2ZpbGVzdXBsb2FkJyk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VyaScsIHRoaXMuZ2V0VVJJKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdhZG1pbi1ub25jZScsIGNvbmZpZy5hZG1pbl9ub25jZSk7XG4gICAgfVxuXG4gICAgb25Ecm9wem9uZVN1Y2Nlc3MoZmlsZSwgcmVzcG9uc2UsIHhocikge1xuICAgICAgICByZXNwb25zZSA9IHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKHJlc3BvbnNlKSA6IHJlc3BvbnNlO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlbG9hZFBhZ2UpIHtcbiAgICAgICAgICAgIGdsb2JhbC5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHN0b3JlIHBhcmFtcyBmb3IgcmVtb3ZpbmcgZmlsZSBmcm9tIHNlc3Npb24gYmVmb3JlIGl0IGdldHMgc2F2ZWRcbiAgICAgICAgaWYgKHJlc3BvbnNlLnNlc3Npb24pIHtcbiAgICAgICAgICAgIGZpbGUuc2Vzc2lvblBhcmFtcyA9IHJlc3BvbnNlLnNlc3Npb247XG4gICAgICAgICAgICBmaWxlLnJlbW92ZVVybCA9IHRoaXMub3B0aW9ucy51cmw7XG5cbiAgICAgICAgICAgIC8vIFRvdWNoIGZpZWxkIHZhbHVlIHRvIGZvcmNlIGEgbXV0YXRpb24gZGV0ZWN0aW9uXG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuY29udGFpbmVyLmZpbmQoJ1tuYW1lXVt0eXBlPVwiaGlkZGVuXCJdJyk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGlucHV0LnZhbCgpO1xuICAgICAgICAgICAgaW5wdXQudmFsKHZhbHVlICsgJyAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yKHtcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICBkYXRhOiByZXNwb25zZSxcbiAgICAgICAgICAgIG1vZGU6ICdyZW1vdmVGaWxlJyxcbiAgICAgICAgICAgIG1zZzogYDxwPiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5GSUxFX0VSUk9SX1VQTE9BRH0gPHN0cm9uZz4ke2ZpbGUubmFtZX08L3N0cm9uZz48L3A+XG4gICAgICAgICAgICA8cHJlPiR7cmVzcG9uc2UubWVzc2FnZX08L3ByZT5gXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRHJvcHpvbmVDb21wbGV0ZShmaWxlKSB7XG4gICAgICAgIGlmICghZmlsZS5hY2NlcHRlZCAmJiAhZmlsZS5yZWplY3RlZCkge1xuICAgICAgICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGAke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uRklMRV9VTlNVUFBPUlRFRH06ICR7ZmlsZS5uYW1lLm1hdGNoKC9cXC4uKy8pLmpvaW4oJycpfWBcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yKHtcbiAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgbW9kZTogJ3JlbW92ZUZpbGUnLFxuICAgICAgICAgICAgICAgIG1zZzogYDxwPiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5GSUxFX0VSUk9SX0FERH0gPHN0cm9uZz4ke2ZpbGUubmFtZX08L3N0cm9uZz48L3A+XG4gICAgICAgICAgICAgICAgPHByZT4ke2RhdGEubWVzc2FnZX08L3ByZT5gXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVsb2FkUGFnZSkge1xuICAgICAgICAgICAgZ2xvYmFsLmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYjY0X3RvX3V0Zjgoc3RyKSB7XG4gICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXHMvZywgJycpO1xuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZSh3aW5kb3cuYXRvYihzdHIpKSk7XG4gICAgfVxuXG4gICAgb25Ecm9wem9uZVJlbW92ZWRGaWxlKGZpbGUsIC4uLmV4dHJhKSB7XG4gICAgICAgIGlmICghZmlsZS5hY2NlcHRlZCB8fCBmaWxlLnJlamVjdGVkKSB7IHJldHVybjsgfVxuICAgICAgICBsZXQgdXJsID0gZmlsZS5yZW1vdmVVcmwgfHwgdGhpcy51cmxzLmRlbGV0ZSB8fCB0aGlzLm9wdGlvbnMudXJsO1xuICAgICAgICBsZXQgcGF0aCA9ICh1cmwgfHwgJycpLm1hdGNoKC9wYXRoOiguKilcXC8vKTtcbiAgICAgICAgbGV0IGJvZHkgPSB7IGZpbGVuYW1lOiBmaWxlLm5hbWUsIHVyaTogdGhpcy5nZXRVUkkoKSB9O1xuXG4gICAgICAgIGlmIChmaWxlLnNlc3Npb25QYXJhbXMpIHtcbiAgICAgICAgICAgIGJvZHkudGFzayA9ICdmaWxlc3Nlc3Npb25yZW1vdmUnO1xuICAgICAgICAgICAgYm9keS5zZXNzaW9uID0gZmlsZS5zZXNzaW9uUGFyYW1zO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VzdG9tUG9zdCA9IHRoaXMuY29udGFpbmVyLmRhdGEoJ2ZpbGVQb3N0UmVtb3ZlJykgfHwge307XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhjdXN0b21Qb3N0KS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGJvZHkgPSB7fTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGN1c3RvbVBvc3QpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGJvZHlba2V5XSA9IGN1c3RvbVBvc3Rba2V5XTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYm9keVsnZmlsZW5hbWUnXSA9IGZpbGUubmFtZTtcbiAgICAgICAgYm9keVsnYWRtaW4tbm9uY2UnXSA9IGNvbmZpZy5hZG1pbl9ub25jZTtcblxuICAgICAgICByZXF1ZXN0KHVybCwgeyBtZXRob2Q6ICdwb3N0JywgYm9keSB9LCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXBhdGgpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgICAgIHBhdGggPSB0aGlzLmI2NF90b191dGY4KHBhdGhbMV0pO1xuICAgICAgICAgICAgbGV0IGlucHV0ID0gdGhpcy5jb250YWluZXIuZmluZCgnW25hbWVdW3R5cGU9XCJoaWRkZW5cIl0nKTtcbiAgICAgICAgICAgIGxldCBkYXRhID0gSlNPTi5wYXJzZShpbnB1dC52YWwoKSB8fCAne30nKTtcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhW3BhdGhdO1xuICAgICAgICAgICAgaW5wdXQudmFsKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Ecm9wem9uZUVycm9yKGZpbGUsIHJlc3BvbnNlLCB4aHIpIHtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSB4aHIgPyByZXNwb25zZS5lcnJvci5tZXNzYWdlIDogcmVzcG9uc2U7XG4gICAgICAgICQoZmlsZS5wcmV2aWV3RWxlbWVudCkuZmluZCgnW2RhdGEtZHotZXJyb3JtZXNzYWdlXScpLmh0bWwobWVzc2FnZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3Ioe1xuICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgIGRhdGE6IHsgc3RhdHVzOiAnZXJyb3InIH0sXG4gICAgICAgICAgICBtc2c6IGA8cHJlPiR7bWVzc2FnZX08L3ByZT5gXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZUVycm9yKG9wdGlvbnMpIHtcbiAgICAgICAgbGV0IHsgZmlsZSwgZGF0YSwgbW9kZSwgbXNnIH0gPSBvcHRpb25zO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09ICdlcnJvcicgJiYgZGF0YS5zdGF0dXMgIT09ICd1bmF1dGhvcml6ZWQnKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSAnYWRkQmFjayc6XG4gICAgICAgICAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcHpvbmUuYWRkRmlsZS5jYWxsKHRoaXMuZHJvcHpvbmUsIGZpbGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcHpvbmUuZmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wem9uZS5vcHRpb25zLmFkZGVkZmlsZS5jYWxsKHRoaXMuZHJvcHpvbmUsIGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3B6b25lLm9wdGlvbnMudGh1bWJuYWlsLmNhbGwodGhpcy5kcm9wem9uZSwgZmlsZSwgZmlsZS5leHRyYXMudXJsKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JlbW92ZUZpbGUnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAofnRoaXMuZHJvcHpvbmUuZmlsZXMuaW5kZXhPZihmaWxlKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlLnJlamVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wem9uZS5yZW1vdmVGaWxlLmNhbGwodGhpcy5kcm9wem9uZSwgZmlsZSwgeyBzaWxlbnQ6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbW9kYWwgPSAkKCdbZGF0YS1yZW1vZGFsLWlkPVwiZ2VuZXJpY1wiXScpO1xuICAgICAgICBtb2RhbC5maW5kKCcuZXJyb3ItY29udGVudCcpLmh0bWwobXNnKTtcbiAgICAgICAgJC5yZW1vZGFsLmxvb2t1cFttb2RhbC5kYXRhKCdyZW1vZGFsJyldLm9wZW4oKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBVcmlUb01hcmtkb3duKHVyaSkge1xuICAgIHVyaSA9IHVyaS5yZXBsYWNlKC9AM3h8QDJ4fEAxeC8sICcnKTtcbiAgICB1cmkgPSB1cmkucmVwbGFjZSgvXFwoL2csICclMjgnKTtcbiAgICB1cmkgPSB1cmkucmVwbGFjZSgvXFwpL2csICclMjknKTtcblxuICAgIGNvbnN0IHRpdGxlID0gdXJpLnNwbGl0KCcuJykuc2xpY2UoMCwgLTEpLmpvaW4oJy4nKTtcblxuICAgIHJldHVybiB1cmkubWF0Y2goL1xcLihqcGU/Z3xwbmd8Z2lmfHN2Z3xtcDR8d2VibXxvZ3Z8bW92KSQvaSkgPyBgIVske3RpdGxlfV0oJHt1cml9IFwiJHt0aXRsZX1cIilgIDogYFske2RlY29kZVVSSSh1cmkpfV0oJHt1cml9KWA7XG59XG5cbmxldCBpbnN0YW5jZXMgPSBbXTtcbmxldCBjYWNoZSA9ICQoKTtcbmNvbnN0IG9uQWRkZWROb2RlcyA9IChldmVudCwgdGFyZ2V0LyogLCByZWNvcmQsIGluc3RhbmNlICovKSA9PiB7XG4gICAgbGV0IGZpbGVzID0gJCh0YXJnZXQpLmZpbmQoJy5kcm9wem9uZS5maWxlcy11cGxvYWQnKTtcbiAgICBpZiAoIWZpbGVzLmxlbmd0aCkgeyByZXR1cm47IH1cblxuICAgIGZpbGVzLmVhY2goKGluZGV4LCBmaWxlKSA9PiB7XG4gICAgICAgIGZpbGUgPSAkKGZpbGUpO1xuICAgICAgICBpZiAoIX5jYWNoZS5pbmRleChmaWxlKSkge1xuICAgICAgICAgICAgYWRkTm9kZShmaWxlKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuY29uc3QgYWRkTm9kZSA9IChjb250YWluZXIpID0+IHtcbiAgICBjb250YWluZXIgPSAkKGNvbnRhaW5lcik7XG4gICAgbGV0IGlucHV0ID0gY29udGFpbmVyLmZpbmQoJ2lucHV0W3R5cGU9XCJmaWxlXCJdJyk7XG4gICAgbGV0IHNldHRpbmdzID0gY29udGFpbmVyLmRhdGEoJ2dyYXYtZmlsZS1zZXR0aW5ncycpIHx8IHt9O1xuXG4gICAgaWYgKHNldHRpbmdzLmFjY2VwdCAmJiB+c2V0dGluZ3MuYWNjZXB0LmluZGV4T2YoJyonKSkge1xuICAgICAgICBzZXR0aW5ncy5hY2NlcHQgPSBbJyddO1xuICAgIH1cblxuICAgIGxldCBvcHRpb25zID0ge1xuICAgICAgICB1cmw6IGNvbnRhaW5lci5kYXRhKCdmaWxlLXVybC1hZGQnKSB8fCAoY29udGFpbmVyLmNsb3Nlc3QoJ2Zvcm0nKS5hdHRyKCdhY3Rpb24nKSB8fCBjb25maWcuY3VycmVudF91cmwpICsgJy5qc29uJyxcbiAgICAgICAgcGFyYW1OYW1lOiBzZXR0aW5ncy5wYXJhbU5hbWUgfHwgJ2ZpbGUnLFxuICAgICAgICBkb3ROb3RhdGlvbjogc2V0dGluZ3MubmFtZSB8fCAnZmlsZScsXG4gICAgICAgIGFjY2VwdGVkRmlsZXM6IHNldHRpbmdzLmFjY2VwdCA/IHNldHRpbmdzLmFjY2VwdC5qb2luKCcsJykgOiBpbnB1dC5hdHRyKCdhY2NlcHQnKSB8fCBjb250YWluZXIuZGF0YSgnbWVkaWEtdHlwZXMnKSxcbiAgICAgICAgbWF4RmlsZXNpemU6IHR5cGVvZiBzZXR0aW5ncy5maWxlc2l6ZSAhPT0gJ3VuZGVmaW5lZCcgPyBzZXR0aW5ncy5maWxlc2l6ZSA6IDI1NixcbiAgICAgICAgbWF4RmlsZXM6IHNldHRpbmdzLmxpbWl0IHx8IG51bGwsXG4gICAgICAgIHJlc2l6ZVdpZHRoOiBzZXR0aW5ncy5yZXNpemVXaWR0aCB8fCBudWxsLFxuICAgICAgICByZXNpemVIZWlnaHQ6IHNldHRpbmdzLnJlc2l6ZUhlaWdodCB8fCBudWxsLFxuICAgICAgICByZXNpemVRdWFsaXR5OiBzZXR0aW5ncy5yZXNpemVRdWFsaXR5IHx8IG51bGwsXG4gICAgICAgIHJlc29sdXRpb246IHNldHRpbmdzLnJlc29sdXRpb24gfHwgbnVsbCxcbiAgICAgICAgYWNjZXB0OiBmdW5jdGlvbihmaWxlLCBkb25lKSB7IEFDQ0VQVF9GVU5DKGZpbGUsIGRvbmUsIHNldHRpbmdzKTsgfVxuICAgIH07XG5cbiAgICBjYWNoZSA9IGNhY2hlLmFkZChjb250YWluZXIpO1xuICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lclswXTtcbiAgICBpbnN0YW5jZXMucHVzaChuZXcgRmlsZXNGaWVsZCh7IGNvbnRhaW5lciwgb3B0aW9ucyB9KSk7XG59O1xuXG5leHBvcnQgbGV0IEluc3RhbmNlID0gKCgpID0+IHtcbiAgICAkKCcuZHJvcHpvbmUuZmlsZXMtdXBsb2FkJykuZWFjaCgoaSwgY29udGFpbmVyKSA9PiBhZGROb2RlKGNvbnRhaW5lcikpO1xuICAgICQoJ2JvZHknKS5vbignbXV0YXRpb24uX2dyYXYnLCBvbkFkZGVkTm9kZXMpO1xuXG4gICAgcmV0dXJuIGluc3RhbmNlcztcbn0pKCk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/forms/fields/files.js\n"); + +/***/ }), + +/***/ "./app/forms/fields/iconpicker.js": +/*!****************************************!*\ + !*** ./app/forms/fields/iconpicker.js ***! + \****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ IconpickerField),\n/* harmony export */ \"Instance\": () => (/* binding */ Instance)\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/* Icon Picker by QueryLoop\n * Author: @eliorivero\n * URL: http://queryloop.com/\n * License: GPLv2\n */\n\nvar defaults = {\n 'mode': 'dialog',\n // show overlay 'dialog' panel or slide down 'inline' panel\n 'closeOnPick': true,\n // whether to close panel after picking or 'no'\n 'save': 'class',\n // save icon 'class' or 'code'\n 'size': '',\n 'classes': {\n 'launcher': '',\n // extra classes for launcher buttons\n 'clear': 'remove-times',\n // extra classes for button that removes preview and clears field\n 'highlight': '',\n // extra classes when highlighting an icon\n 'close': '' // extra classes for close button\n\n },\n 'iconSets': {\n // example data structure. Used to specify which launchers will be created\n 'genericon': 'Genericon',\n // create a launcher to pick genericon icons\n 'fa': 'FontAwesome' // create a launcher to pick fontawesome icons\n\n }\n};\n\nvar QL_Icon_Picker = /*#__PURE__*/function () {\n function QL_Icon_Picker(element, options) {\n _classCallCheck(this, QL_Icon_Picker);\n\n this.iconSet = '';\n this.iconSetName = '';\n this.$field = '';\n this.element = element;\n this.settings = jquery__WEBPACK_IMPORTED_MODULE_0___default().extend({}, defaults, options);\n this._defaults = defaults;\n this.init();\n }\n\n _createClass(QL_Icon_Picker, [{\n key: \"init\",\n value: function init() {\n var $brick = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.element);\n var pickerId = $brick.data('pickerid');\n var $preview = jquery__WEBPACK_IMPORTED_MODULE_0___default()('');\n this.$field = $brick.find('input'); // Add preview area\n\n this.makePreview($brick, pickerId, $preview); // Make button to clear field and remove preview\n\n this.makeClear(pickerId, $preview); // Make buttons that open the panel of icons\n\n this.makeLaunchers($brick, pickerId); // Prepare display styles, inline and dialog\n\n this.makeDisplay($brick);\n }\n }, {\n key: \"makePreview\",\n value: function makePreview($brick, pickerId, $preview) {\n var $icon = jquery__WEBPACK_IMPORTED_MODULE_0___default()('');\n var iconValue = this.$field.val();\n $preview.prependTo($brick);\n $icon.prependTo($preview);\n\n if (iconValue !== '') {\n $preview.addClass('icon-preview-on');\n $icon.addClass(iconValue);\n }\n }\n }, {\n key: \"makeClear\",\n value: function makeClear(pickerId, $preview) {\n var base = this;\n var $clear = jquery__WEBPACK_IMPORTED_MODULE_0___default()(''); // Hide button to remove icon and preview and append it to preview area\n\n $clear.hide().prependTo($preview); // If there's a icon saved in the field, show remove icon button\n\n if (base.$field.val() !== '') {\n $clear.show();\n }\n\n $preview.on('click', '.remove-icon', function (e) {\n e.preventDefault();\n base.$field.val('');\n $preview.removeClass('icon-preview-on').find('i').removeClass();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).hide();\n });\n }\n }, {\n key: \"makeDisplay\",\n value: function makeDisplay($brick) {\n var base = this;\n var close = base.settings.classes.close;\n var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body');\n var $close = jquery__WEBPACK_IMPORTED_MODULE_0___default()('');\n\n if (base.settings.mode === 'inline') {\n $brick.find('.icon-set').append($close).removeClass('dialog').addClass('ip-inline ' + base.settings.size).parent().addClass('icon-set-wrap');\n } else if (base.settings.mode === 'dialog') {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.icon-set').addClass('dialog ' + base.settings.size);\n\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.icon-picker-overlay').length <= 0) {\n $body.append('