var Grav; /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 3604: /***/ ((module) => { "use strict"; module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII="; /***/ }), /***/ 15980: /***/ ((module) => { "use strict"; module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII="; /***/ }), /***/ 24912: /***/ ((module) => { "use strict"; module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg=="; /***/ }), /***/ 35358: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var map = { "./af": 25177, "./af.js": 25177, "./ar": 61509, "./ar-dz": 41488, "./ar-dz.js": 41488, "./ar-kw": 58676, "./ar-kw.js": 58676, "./ar-ly": 42353, "./ar-ly.js": 42353, "./ar-ma": 24496, "./ar-ma.js": 24496, "./ar-sa": 82682, "./ar-sa.js": 82682, "./ar-tn": 89756, "./ar-tn.js": 89756, "./ar.js": 61509, "./az": 95533, "./az.js": 95533, "./be": 28959, "./be.js": 28959, "./bg": 47777, "./bg.js": 47777, "./bm": 54903, "./bm.js": 54903, "./bn": 61290, "./bn-bd": 17357, "./bn-bd.js": 17357, "./bn.js": 61290, "./bo": 31545, "./bo.js": 31545, "./br": 11470, "./br.js": 11470, "./bs": 44429, "./bs.js": 44429, "./ca": 7306, "./ca.js": 7306, "./cs": 56464, "./cs.js": 56464, "./cv": 73635, "./cv.js": 73635, "./cy": 64226, "./cy.js": 64226, "./da": 93601, "./da.js": 93601, "./de": 77853, "./de-at": 26111, "./de-at.js": 26111, "./de-ch": 54697, "./de-ch.js": 54697, "./de.js": 77853, "./dv": 60708, "./dv.js": 60708, "./el": 54691, "./el.js": 54691, "./en-au": 53872, "./en-au.js": 53872, "./en-ca": 28298, "./en-ca.js": 28298, "./en-gb": 56195, "./en-gb.js": 56195, "./en-ie": 66584, "./en-ie.js": 66584, "./en-il": 65543, "./en-il.js": 65543, "./en-in": 9033, "./en-in.js": 9033, "./en-nz": 79402, "./en-nz.js": 79402, "./en-sg": 43004, "./en-sg.js": 43004, "./eo": 32934, "./eo.js": 32934, "./es": 97650, "./es-do": 20838, "./es-do.js": 20838, "./es-mx": 17730, "./es-mx.js": 17730, "./es-us": 56575, "./es-us.js": 56575, "./es.js": 97650, "./et": 3035, "./et.js": 3035, "./eu": 3508, "./eu.js": 3508, "./fa": 119, "./fa.js": 119, "./fi": 90527, "./fi.js": 90527, "./fil": 95995, "./fil.js": 95995, "./fo": 52477, "./fo.js": 52477, "./fr": 85498, "./fr-ca": 26435, "./fr-ca.js": 26435, "./fr-ch": 37892, "./fr-ch.js": 37892, "./fr.js": 85498, "./fy": 37071, "./fy.js": 37071, "./ga": 41734, "./ga.js": 41734, "./gd": 70217, "./gd.js": 70217, "./gl": 77329, "./gl.js": 77329, "./gom-deva": 32124, "./gom-deva.js": 32124, "./gom-latn": 93383, "./gom-latn.js": 93383, "./gu": 95050, "./gu.js": 95050, "./he": 11713, "./he.js": 11713, "./hi": 43861, "./hi.js": 43861, "./hr": 26308, "./hr.js": 26308, "./hu": 90609, "./hu.js": 90609, "./hy-am": 17160, "./hy-am.js": 17160, "./id": 74063, "./id.js": 74063, "./is": 89374, "./is.js": 89374, "./it": 88383, "./it-ch": 21827, "./it-ch.js": 21827, "./it.js": 88383, "./ja": 23827, "./ja.js": 23827, "./jv": 89722, "./jv.js": 89722, "./ka": 41794, "./ka.js": 41794, "./kk": 27088, "./kk.js": 27088, "./km": 96870, "./km.js": 96870, "./kn": 84451, "./kn.js": 84451, "./ko": 63164, "./ko.js": 63164, "./ku": 98174, "./ku.js": 98174, "./ky": 78474, "./ky.js": 78474, "./lb": 79680, "./lb.js": 79680, "./lo": 15867, "./lo.js": 15867, "./lt": 45766, "./lt.js": 45766, "./lv": 69532, "./lv.js": 69532, "./me": 58076, "./me.js": 58076, "./mi": 41848, "./mi.js": 41848, "./mk": 30306, "./mk.js": 30306, "./ml": 73739, "./ml.js": 73739, "./mn": 99053, "./mn.js": 99053, "./mr": 86169, "./mr.js": 86169, "./ms": 73386, "./ms-my": 92297, "./ms-my.js": 92297, "./ms.js": 73386, "./mt": 77075, "./mt.js": 77075, "./my": 72264, "./my.js": 72264, "./nb": 22274, "./nb.js": 22274, "./ne": 8235, "./ne.js": 8235, "./nl": 92572, "./nl-be": 43784, "./nl-be.js": 43784, "./nl.js": 92572, "./nn": 54566, "./nn.js": 54566, "./oc-lnc": 69330, "./oc-lnc.js": 69330, "./pa-in": 29849, "./pa-in.js": 29849, "./pl": 94418, "./pl.js": 94418, "./pt": 79834, "./pt-br": 48303, "./pt-br.js": 48303, "./pt.js": 79834, "./ro": 24457, "./ro.js": 24457, "./ru": 82271, "./ru.js": 82271, "./sd": 1221, "./sd.js": 1221, "./se": 33478, "./se.js": 33478, "./si": 17538, "./si.js": 17538, "./sk": 5784, "./sk.js": 5784, "./sl": 46637, "./sl.js": 46637, "./sq": 86794, "./sq.js": 86794, "./sr": 45719, "./sr-cyrl": 3322, "./sr-cyrl.js": 3322, "./sr.js": 45719, "./ss": 33619, "./ss.js": 33619, "./sv": 41011, "./sv.js": 41011, "./sw": 40748, "./sw.js": 40748, "./ta": 11025, "./ta.js": 11025, "./te": 11885, "./te.js": 11885, "./tet": 28861, "./tet.js": 28861, "./tg": 86571, "./tg.js": 86571, "./th": 55802, "./th.js": 55802, "./tk": 59527, "./tk.js": 59527, "./tl-ph": 29231, "./tl-ph.js": 29231, "./tlh": 31052, "./tlh.js": 31052, "./tr": 85096, "./tr.js": 85096, "./tzl": 79846, "./tzl.js": 79846, "./tzm": 81765, "./tzm-latn": 97711, "./tzm-latn.js": 97711, "./tzm.js": 81765, "./ug-cn": 48414, "./ug-cn.js": 48414, "./uk": 16618, "./uk.js": 16618, "./ur": 57777, "./ur.js": 57777, "./uz": 57609, "./uz-latn": 72475, "./uz-latn.js": 72475, "./uz.js": 57609, "./vi": 21135, "./vi.js": 21135, "./x-pseudo": 64051, "./x-pseudo.js": 64051, "./yo": 82218, "./yo.js": 82218, "./zh-cn": 52648, "./zh-cn.js": 52648, "./zh-hk": 1632, "./zh-hk.js": 1632, "./zh-mo": 31541, "./zh-mo.js": 31541, "./zh-tw": 50304, "./zh-tw.js": 50304 }; function webpackContext(req) { var id = webpackContextResolve(req); return __webpack_require__(id); } function webpackContextResolve(req) { if(!__webpack_require__.o(map, req)) { var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; } return map[req]; } webpackContext.keys = function webpackContextKeys() { return Object.keys(map); }; webpackContext.resolve = webpackContextResolve; module.exports = webpackContext; webpackContext.id = 35358; /***/ }), /***/ 36736: /***/ ((__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__(27461); // EXTERNAL MODULE: external "jQuery" var external_jQuery_ = __webpack_require__(41669); var external_jQuery_default = /*#__PURE__*/__webpack_require__.n(external_jQuery_); ;// ./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 = $('
').addClass(namespacify('overlay') + ' ' + namespacify('is', STATES.CLOSED)).hide(); $appendTo.append(remodal.$overlay); } remodal.$bg = $('.' + namespacify('bg')).addClass(namespacify('is', STATES.CLOSED)); remodal.$modal = $modal.addClass(NAMESPACE + ' ' + namespacify('is-initialized') + ' ' + remodal.settings.modifier + ' ' + namespacify('is', STATES.CLOSED)).attr('tabindex', '-1'); remodal.$wrapper = $('
').addClass(namespacify('wrapper') + ' ' + remodal.settings.modifier + ' ' + namespacify('is', STATES.CLOSED)).hide().append(remodal.$modal); $appendTo.append(remodal.$wrapper); // Add the event listener for the close button remodal.$wrapper.on('click.' + NAMESPACE, '[data-' + PLUGIN_NAME + '-action="close"]', function (e) { e.preventDefault(); remodal.close(); }); // Add the event listener for the cancel button remodal.$wrapper.on('click.' + NAMESPACE, '[data-' + PLUGIN_NAME + '-action="cancel"]', function (e) { e.preventDefault(); remodal.$modal.trigger(STATE_CHANGE_REASONS.CANCELLATION); if (remodal.settings.closeOnCancel) { remodal.close(STATE_CHANGE_REASONS.CANCELLATION); } }); // Add the event listener for the confirm button remodal.$wrapper.on('click.' + NAMESPACE, '[data-' + PLUGIN_NAME + '-action="confirm"]', function (e) { e.preventDefault(); remodal.$modal.trigger(STATE_CHANGE_REASONS.CONFIRMATION); if (remodal.settings.closeOnConfirm) { remodal.close(STATE_CHANGE_REASONS.CONFIRMATION); } }); // Add the event listener for the overlay remodal.$wrapper.on('click.' + NAMESPACE, function (e) { var $target = $(e.target); var isWrapper = $target.hasClass(namespacify('wrapper')); var isWithin = $target.closest('.' + namespacify('is', STATES.OPENED)).length; if (!isWrapper && isWithin) { return; } if (remodal.settings.closeOnOutsideClick) { remodal.close(); } }); } /** * Opens a modal window * @public */ Remodal.prototype.open = function () { var remodal = this; var current; var modalCount; // Check if the animation was completed if (remodal.state === STATES.OPENING || remodal.state === STATES.CLOSING) { return; } // id = remodal.$modal.attr('data-' + PLUGIN_NAME + '-id'); if (remodal.id && remodal.settings.hashTracking) { scrollTop = $(window).scrollTop(); location.hash = remodal.id; } if (!remodal.settings.stack) { current = currentModal(); if (current && current !== remodal) { halt(current); } } modalCount = openModals.push(remodal); remodal.$overlay.css('z-index', function (_, value) { return parseInt(value, 10) + modalCount; }); remodal.$wrapper.css('z-index', function (_, value) { return parseInt(value, 10) + modalCount; }); lockScreen(); remodal.$bg.addClass(remodal.settings.modifier); remodal.$overlay.addClass(remodal.settings.modifier).show(); remodal.$wrapper.show().scrollTop(0); remodal.$modal.focus(); syncWithAnimation(function () { setState(remodal, STATES.OPENING); }, function () { setState(remodal, STATES.OPENED); }, remodal); }; /** * Closes a modal window * @public * @param {String} reason */ Remodal.prototype.close = function (reason) { var remodal = this; var current; // Check if the animation was completed if (remodal.state === STATES.OPENING || remodal.state === STATES.CLOSING || remodal.state === STATES.CLOSED) { return; } removeModal(remodal); if (remodal.settings.hashTracking && remodal.id === location.hash.substr(1)) { current = currentModal(); if (current) { location.hash = current.id; } else { location.hash = ''; $(window).scrollTop(scrollTop); } } syncWithAnimation(function () { setState(remodal, STATES.CLOSING, false, reason); }, function () { remodal.$bg.removeClass(remodal.settings.modifier); remodal.$overlay.removeClass(remodal.settings.modifier).hide(); remodal.$wrapper.hide(); if (openModals.length === 0) { unlockScreen(); } setState(remodal, STATES.CLOSED, false, reason); }, remodal); }; /** * Returns a current state of a modal * @public * @returns {STATES} */ Remodal.prototype.getState = function () { return this.state; }; /** * Destroys a modal * @public */ Remodal.prototype.destroy = function () { var lookup = $[PLUGIN_NAME].lookup; var instanceCount; halt(this); this.$wrapper.remove(); delete lookup[this.index]; instanceCount = $.grep(lookup, function (instance) { return !!instance; }).length; if (instanceCount === 0) { this.$overlay.remove(); this.$bg.removeClass(namespacify('is', STATES.CLOSING) + ' ' + namespacify('is', STATES.OPENING) + ' ' + namespacify('is', STATES.CLOSED) + ' ' + namespacify('is', STATES.OPENED)); } }; /** * Special plugin object for instances * @public * @type {Object} */ $[PLUGIN_NAME] = { lookup: [] }; /** * Plugin constructor * @constructor * @param {Object} options * @returns {JQuery} */ $.fn[PLUGIN_NAME] = function (opts) { var instance; var $elem; this.each(function (index, elem) { $elem = $(elem); if ($elem.data(PLUGIN_NAME) == null) { instance = new Remodal($elem, opts); $elem.data(PLUGIN_NAME, instance.index); if (instance.settings.hashTracking && instance.id === location.hash.substr(1)) { instance.open(); } } else { instance = $[PLUGIN_NAME].lookup[$elem.data(PLUGIN_NAME)]; } }); return instance; }; $(document).ready(function () { // data-remodal-target opens a modal window with the special Id $(document).on('click', '[data-' + PLUGIN_NAME + '-target]', function (e) { e.preventDefault(); var elem = e.currentTarget; var id = elem.getAttribute('data-' + PLUGIN_NAME + '-target'); var $target = $('[data-' + PLUGIN_NAME + '-id="' + id + '"]'); $[PLUGIN_NAME].lookup[$target.data(PLUGIN_NAME)].open(); }); // Auto initialization of modal windows // They should have the 'remodal' class attribute // Also you can write the `data-remodal-options` attribute to pass params into the modal $(document).find('.' + NAMESPACE).each(function (i, container) { var $container = $(container); var options = $container.data(PLUGIN_NAME + '-options'); if (!options) { options = {}; } else if (typeof options === 'string' || options instanceof String) { options = parseOptions(options); } $container[PLUGIN_NAME](options); }); // Handles the keydown event $(document).on('keydown.' + NAMESPACE, function (e) { var current = currentModal(); if (current && current.settings.closeOnEscape && current.state === STATES.OPENED && e.keyCode === 27) { current.close(); } }); // Handles the hashchange event $(window).on('hashchange.' + NAMESPACE, handleHashChangeEvent); }); }); // EXTERNAL MODULE: ./node_modules/simplebar/dist/simplebar.min.js var simplebar_min = __webpack_require__(88904); // EXTERNAL MODULE: ./node_modules/dropzone/dist/dropzone.js var dist_dropzone = __webpack_require__(62628); var dropzone_default = /*#__PURE__*/__webpack_require__.n(dist_dropzone); // EXTERNAL MODULE: ./node_modules/toastr/toastr.js var toastr = __webpack_require__(47959); var toastr_default = /*#__PURE__*/__webpack_require__.n(toastr); ;// ./app/utils/toastr.js (toastr_default()).options.positionClass = 'toast-top-right'; (toastr_default()).options.preventDuplicates = true; /* harmony default export */ const utils_toastr = ((toastr_default())); ;// ./app/utils/offline.js var offlineElement = external_jQuery_default()('#offline-status'); external_jQuery_default()(window).on('offline', function () { offlineElement.slideDown(); }); external_jQuery_default()(window).on('online', function () { offlineElement.slideUp(); }); external_jQuery_default()(document).ready(function () { if (!offline) { offlineElement.slideDown(); } }); // assume online if can't check /* harmony default export */ const offline = (typeof __webpack_require__.g.navigator.onLine !== 'undefined' ? __webpack_require__.g.navigator.onLine : true); // EXTERNAL MODULE: ./node_modules/mout/string/trim.js var trim = __webpack_require__(35814); var trim_default = /*#__PURE__*/__webpack_require__.n(trim); ;// external "GravAdmin" const external_GravAdmin_namespaceObject = GravAdmin; ;// ./app/utils/keepalive.js function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var MAX_SAFE_DELAY = 2147483647; var KeepAlive = /*#__PURE__*/function () { function KeepAlive() { _classCallCheck(this, KeepAlive); this.active = false; } return _createClass(KeepAlive, [{ key: "start", value: function start() { var _this = this; var timeout = external_GravAdmin_namespaceObject.config.admin_timeout / 1.5 * 1000; this.timer = setInterval(function () { return _this.fetch(); }, Math.min(timeout, MAX_SAFE_DELAY)); this.active = true; } }, { key: "stop", value: function stop() { clearInterval(this.timer); this.active = false; } }, { key: "checkOnce", value: function checkOnce() { var data = new FormData(); data.append('admin-nonce', external_GravAdmin_namespaceObject.config.admin_nonce); return fetch("".concat(external_GravAdmin_namespaceObject.config.base_url_relative, "/task").concat(external_GravAdmin_namespaceObject.config.param_sep, "keepAlive"), { credentials: 'same-origin', method: 'post', body: data }).then(function (response) { if (response && (response.status === 401 || response.status === 403)) { return false; } return true; })["catch"](function () { return false; }); } }, { key: "fetch", value: function fetch() { return this.checkOnce().then(function (ok) { if (!ok) { showSessionExpiredModal(); } })["catch"](userFeedbackError); } }]); }(); /* harmony default export */ const keepalive = (new KeepAlive()); ;// ./app/utils/session-expired.js var shown = false; function showSessionExpiredModal() { if (shown) { return; } shown = true; try { localStorage.setItem('grav:admin:sessionExpiredShown', '1'); } catch (e) {} try { keepalive.stop(); } catch (e) {} // Ensure modal exists (in case a custom layout removed it) var $modal = external_jQuery_default()('[data-remodal-id="session-expired"]'); if (!$modal.length) { var html = "\n
\n
\n

Session Expired

\n

Your admin login session has expired. Please log in again.

\n
\n OK\n
\n
\n
"; external_jQuery_default()('body').append(html); $modal = external_jQuery_default()('[data-remodal-id="session-expired"]'); } // Harden the modal: no escape/overlay close var instance = $modal.remodal({ hashTracking: false, closeOnEscape: false, closeOnOutsideClick: false, closeOnCancel: false, closeOnConfirm: true, stack: false }); // Style overlay + blur background external_jQuery_default()('html').addClass('session-expired-active'); external_jQuery_default()('.remodal-overlay').addClass('session-expired'); // On confirm, redirect to login $modal.off('.session-expired').on('confirmation.session-expired', function () { // Keep suppression flag for the next page load (login) so we don't double prompt window.location.href = external_GravAdmin_namespaceObject.config.base_url_relative; }); // Open modal instance.open(); } // Bind a jQuery global ajax error trap for legacy XHR paths function bindGlobalAjaxTrap() { external_jQuery_default()(document).off('ajaxError._grav_session').on('ajaxError._grav_session', function (event, xhr) { if (!xhr) { return; } var status = xhr.status || 0; if (status === 401 || status === 403) { showSessionExpiredModal(); } }); } // Intercept in-admin link clicks to show the modal before any server redirect to login function installNavigationGuard() { external_jQuery_default()(document).off('click._grav_session_nav').on('click._grav_session_nav', 'a[href]', function (e) { var $a = external_jQuery_default()(this); var href = $a.attr('href'); if (!href || href === '#' || href.indexOf('javascript:') === 0) { return; } if (e.isDefaultPrevented()) { return; } if ($a.attr('target') === '_blank' || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) { return; } // Only guard admin-relative links var base = window.GravAdmin && window.GravAdmin.config && window.GravAdmin.config.base_url_relative || ''; var isAdminLink = href.indexOf(base + '/') === 0 || href === base || href.indexOf('/') === 0; if (!isAdminLink) { return; } e.preventDefault(); // Quick session check, if invalid show modal, else proceed with navigation try { keepalive.checkOnce().then(function (ok) { if (ok) { window.location.href = href; } else { showSessionExpiredModal(); } }); } catch (err) { // On any error, just navigate window.location.href = href; } }); } /* harmony default export */ const session_expired = ({ showSessionExpiredModal: showSessionExpiredModal, bindGlobalAjaxTrap: bindGlobalAjaxTrap }); ;// ./app/utils/response.js function response_typeof(o) { "@babel/helpers - typeof"; return response_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, response_typeof(o); } // import { config } from 'grav-config'; var UNLOADING = false; var error = function error(response) { var error = new Error(response.statusText || response || ''); error.response = response; return error; }; function parseStatus(response) { return response; /* Whoops can handle JSON responses so we don't need this for now. if (response.status >= 200 && response.status < 300) { return response; } else { throw error(response); } */ } function parseJSON(response) { // If the session is no longer valid, surface a blocking modal instead of generic errors if (response && (response.status === 401 || response.status === 403)) { showSessionExpiredModal(); throw new Error('Unauthorized'); } return response.text().then(function (text) { var parsed = text; try { parsed = JSON.parse(text); } catch (error) { var content = document.createElement('div'); content.innerHTML = text; var the_error = new Error(); the_error.stack = trim_default()(content.innerText); throw the_error; } return parsed; }); } function userFeedback(response) { if (UNLOADING) { return true; } var status = response.status || (response.error ? 'error' : ''); var message = response.message || (response.error ? response.error.message : null); var settings = response.toastr || null; var backup; switch (status) { case 'unauthenticated': // Show a blocking modal and stop further processing showSessionExpiredModal(); throw error('Logged out'); case 'unauthorized': status = 'error'; message = message || 'Unauthorized.'; break; case 'error': status = 'error'; message = message || 'Unknown error.'; break; case 'success': status = 'success'; message = message || ''; break; default: status = 'error'; message = message || 'Invalid AJAX response.'; break; } if (settings && response_typeof(settings) === 'object' && settings !== null) { backup = Object.assign({}, utils_toastr.options); Object.keys(settings).forEach(function (key) { utils_toastr.options[key] = settings[key]; }); } if (message && (offline || !offline && status !== 'error')) { utils_toastr[status === 'success' ? 'success' : 'error'](message); } if (settings) { utils_toastr.options = backup; } return response; } function userFeedbackError(error) { if (UNLOADING) { return true; } // If we can detect an unauthorized state here, show modal var unauthorized = error && (error.message === 'Unauthorized' || error.response && (error.response.status === 401 || error.response.status === 403)); if (unauthorized) { showSessionExpiredModal(); return; } var stack = error.stack ? "
".concat(error.stack, "
") : ''; utils_toastr.error("Fetch Failed:
".concat(error.message, " ").concat(stack)); console.error("".concat(error.message, " at ").concat(error.stack)); } external_jQuery_default()(__webpack_require__.g).on('beforeunload._ajax', function () { UNLOADING = true; }); ;// ./app/utils/request.js function request_typeof(o) { "@babel/helpers - typeof"; return request_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, request_typeof(o); } var raw; var request = function request(url) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () { return true; }; if (typeof options === 'function') { callback = options; options = {}; } var silentErrors = !!options.silentErrors; if (options.silentErrors) { delete options.silentErrors; } if (options.method && options.method === 'post') { var data = new FormData(); options.body = Object.assign({ 'admin-nonce': external_GravAdmin_namespaceObject.config.admin_nonce }, options.body || {}); if (options.body && request_typeof(options.body) === 'object') { Object.keys(options.body).map(function (key) { return data.append(key, options.body[key]); }); } options.body = data; } options = Object.assign({ credentials: 'same-origin', headers: { 'Accept': 'application/json' } }, options); return fetch(url, options).then(function (response) { raw = response; return response; }).then(parseStatus).then(parseJSON).then(userFeedback).then(function (response) { return callback(response, raw); })["catch"](function (error) { if (silentErrors) { console.debug('[Request] silent failure', url, error); return undefined; } userFeedbackError(error); return undefined; }); }; /* harmony default export */ const utils_request = (request); ;// ./app/forms/fields/files.js function files_typeof(o) { "@babel/helpers - typeof"; return files_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, files_typeof(o); } function files_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function files_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, files_toPropertyKey(o.key), o); } } function files_createClass(e, r, t) { return r && files_defineProperties(e.prototype, r), t && files_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function files_toPropertyKey(t) { var i = files_toPrimitive(t, "string"); return "symbol" == files_typeof(i) ? i : i + ""; } function files_toPrimitive(t, r) { if ("object" != files_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != files_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // 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 ").trim() }; // global.EXIF = EXIF; var ACCEPT_FUNC = function ACCEPT_FUNC(file, done, settings) { var resolution = settings.resolution; if (!resolution) return done(); var reader = new FileReader(); var error = ''; var hasMin = resolution.min && (resolution.min.width || resolution.min.height); var hasMax = resolution.max && (resolution.max.width || resolution.max.height); if (hasMin || !(settings.resizeWidth || settings.resizeHeight) && hasMax) { reader.onload = function (event) { if (!/image\//.test(file.type)) { done(); return; } var image = new Image(); image.src = event.target.result; image.onerror = function () { done(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.FILE_ERROR_UPLOAD); }; image.onload = function () { var _this = this; if (resolution.min) { Object.keys(resolution.min).forEach(function (attr) { if (resolution.min[attr] && _this[attr] < resolution.min[attr]) { error += external_GravAdmin_namespaceObject.translations.PLUGIN_FORM.RESOLUTION_MIN.replace(/{{attr}}/g, attr).replace(/{{min}}/g, resolution.min[attr]); } }); } if (!(settings.resizeWidth || settings.resizeHeight)) { if (resolution.max) { Object.keys(resolution.max).forEach(function (attr) { if (resolution.max[attr] && _this[attr] > resolution.max[attr]) { error += external_GravAdmin_namespaceObject.translations.PLUGIN_FORM.RESOLUTION_MAX.replace(/{{attr}}/g, attr).replace(/{{max}}/g, resolution.max[attr]); } }); } } URL.revokeObjectURL(image.src); // release memory return error ? done(error) : done(); }; }; reader.readAsDataURL(file); } else { return error ? done(error) : done(); } }; var FilesField = /*#__PURE__*/function () { function FilesField() { var _this2 = this; var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref$container = _ref.container, container = _ref$container === void 0 ? '.dropzone.files-upload' : _ref$container, _ref$options = _ref.options, options = _ref$options === void 0 ? {} : _ref$options; files_classCallCheck(this, FilesField); this.container = external_jQuery_default()(container); if (!this.container.length) { return; } this.urls = {}; this.customPost = this.container.data('filePostAdd') || {}; this.options = Object.assign({}, Dictionary, DropzoneMediaConfig, { klass: this, url: this.container.data('file-url-add') || external_GravAdmin_namespaceObject.config.current_url, acceptedFiles: this.container.data('media-types'), init: this.initDropzone }, this.container.data('dropzone-options'), options); this.options = Object.assign({}, this.options, { accept: function accept(file, done) { ACCEPT_FUNC(file, done, this.options); } }); this.dropzone = new (dropzone_default())(container, this.options); this.dropzone.on('complete', this.onDropzoneComplete.bind(this)); this.dropzone.on('success', this.onDropzoneSuccess.bind(this)); this.dropzone.on('addedfile', this.onDropzoneAddedFile.bind(this)); this.dropzone.on('removedfile', this.onDropzoneRemovedFile.bind(this)); this.dropzone.on('sending', this.onDropzoneSending.bind(this)); this.dropzone.on('error', this.onDropzoneError.bind(this)); this.container.on('mouseenter', '[data-dz-view]', function (e) { var value = JSON.parse(_this2.container.find('[name][type="hidden"]').val() || '{}'); var target = external_jQuery_default()(e.currentTarget); var file = target.parent('.dz-preview').find('.dz-filename'); var filename = encodeURI(file.text()); var URL = Object.keys(value).filter(function (key) { return value[key].name === filename; }).shift(); target.attr('href', "".concat(external_GravAdmin_namespaceObject.config.base_url_simple, "/").concat(URL)); }); } return files_createClass(FilesField, [{ key: "initDropzone", value: function initDropzone() { var _this3 = this; var files = this.options.klass.container.find('[data-file]'); var dropzone = this; if (!files.length) { return; } files.each(function (index, file) { file = external_jQuery_default()(file); var data = file.data('file'); var mock = { name: data.name, size: data.size, type: data.type, status: (dropzone_default()).ADDED, accepted: true, url: _this3.options.url, removeUrl: data.remove }; dropzone.files.push(mock); dropzone.options.addedfile.call(dropzone, mock); if (mock.type.match(/^image\//)) { dropzone.options.thumbnail.call(dropzone, mock, data.path); dropzone.createThumbnailFromUrl(mock, data.path); } file.remove(); }); } }, { key: "getURI", value: function getURI() { return this.container.data('mediaUri') || ''; } }, { key: "onDropzoneSending", value: function onDropzoneSending(file, xhr, formData) { var _this4 = this; if (Object.keys(this.customPost).length) { Object.keys(this.customPost).forEach(function (key) { formData.append(key, _this4.customPost[key]); }); } else { formData.append('name', this.options.dotNotation); formData.append('task', 'filesupload'); formData.append('uri', this.getURI()); } formData.append('admin-nonce', external_GravAdmin_namespaceObject.config.admin_nonce); } }, { key: "onDropzoneSuccess", value: function onDropzoneSuccess(file, response, xhr) { response = typeof response === 'string' ? JSON.parse(response) : response; if (this.options.reloadPage) { __webpack_require__.g.location.reload(); } // store params for removing file from session before it gets saved if (response.session) { file.sessionParams = response.session; file.removeUrl = this.options.url; // Touch field value to force a mutation detection var input = this.container.find('[name][type="hidden"]'); var value = input.val(); input.val(value + ' '); } return this.handleError({ file: file, data: response, mode: 'removeFile', msg: "

".concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.FILE_ERROR_UPLOAD, " {{fileName}}

\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, " {{fileName}}

\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: "onDropzoneAddedFile", value: function onDropzoneAddedFile(file) { return this.dropzone.options.addedfile(file); } }, { 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"]'); var cleanName = file.name.replace('<', '<').replace('>', '>'); modal.find('.error-content').html(msg.replace('{{fileName}}', cleanName)); (external_jQuery_default()).remodal.lookup[modal.data('remodal')].open(); } }]); }(); 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|webp|avif|mp4|webm|ogv|mov)$/i) ? "![".concat(title, "](").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 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; }(); // EXTERNAL MODULE: ./node_modules/events/events.js var events = __webpack_require__(37007); var events_default = /*#__PURE__*/__webpack_require__.n(events); ;// ./app/utils/gpm.js function gpm_typeof(o) { "@babel/helpers - typeof"; return gpm_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, gpm_typeof(o); } function gpm_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function gpm_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, gpm_toPropertyKey(o.key), o); } } function gpm_createClass(e, r, t) { return r && gpm_defineProperties(e.prototype, r), t && gpm_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function gpm_toPropertyKey(t) { var i = gpm_toPrimitive(t, "string"); return "symbol" == gpm_typeof(i) ? i : i + ""; } function gpm_toPrimitive(t, r) { if ("object" != gpm_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != gpm_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _possibleConstructorReturn(t, e) { if (e && ("object" == gpm_typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } var GPM = /*#__PURE__*/function (_EventEmitter) { function GPM() { var _this; var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'getUpdates'; gpm_classCallCheck(this, GPM); _this = _callSuper(this, GPM); _this.payload = {}; _this.raw = {}; _this.action = action; return _this; } _inherits(GPM, _EventEmitter); return gpm_createClass(GPM, [{ key: "setPayload", value: function setPayload() { var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; this.payload = payload; this.emit('payload', payload); return this; } }, { key: "setAction", value: function setAction() { var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'getUpdates'; this.action = action; this.emit('action', action); return this; } }, { key: "fetch", value: function (_fetch) { function fetch() { return _fetch.apply(this, arguments); } fetch.toString = function () { return _fetch.toString(); }; return fetch; }(function () { var _this2 = this; var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () { return true; }; var flush = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var data = new FormData(); data.append('admin-nonce', external_GravAdmin_namespaceObject.config.admin_nonce); if (flush) { data.append('flush', true); } this.emit('fetching', this); fetch("".concat(external_GravAdmin_namespaceObject.config.base_url_relative, "/update.json/task").concat(external_GravAdmin_namespaceObject.config.param_sep, "getUpdates"), { credentials: 'same-origin', method: 'post', body: data }).then(function (response) { _this2.raw = response; return response; }).then(parseStatus).then(parseJSON).then(function (response) { return _this2.response(response); }).then(function (response) { return callback(response, _this2.raw); }).then(function (response) { return _this2.emit('fetched', _this2.payload, _this2.raw, _this2); })["catch"](userFeedbackError); }) }, { key: "response", value: function response(_response) { this.payload = _response; return _response; } }]); }((events_default())); var gpm_Instance = new GPM(); // EXTERNAL MODULE: ./node_modules/mout/array/unique.js var unique = __webpack_require__(45195); var unique_default = /*#__PURE__*/__webpack_require__.n(unique); ;// ./app/updates/notifications.js function notifications_typeof(o) { "@babel/helpers - typeof"; return notifications_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, notifications_typeof(o); } function notifications_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function notifications_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, notifications_toPropertyKey(o.key), o); } } function notifications_createClass(e, r, t) { return r && notifications_defineProperties(e.prototype, r), t && notifications_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function notifications_toPropertyKey(t) { var i = notifications_toPrimitive(t, "string"); return "symbol" == notifications_typeof(i) ? i : i + ""; } function notifications_toPrimitive(t, r) { if ("object" != notifications_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != notifications_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var canFetchNotifications = function canFetchNotifications() { return external_GravAdmin_namespaceObject.config.notifications.enabled; }; var notificationsFilters = function notificationsFilters() { return external_GravAdmin_namespaceObject.config.notifications.filters; }; var Notifications = /*#__PURE__*/function () { function Notifications() { notifications_classCallCheck(this, Notifications); } return notifications_createClass(Notifications, [{ key: "fetch", value: // Grav.default.Notifications.fetch() function fetch() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref$filter = _ref.filter, filter = _ref$filter === void 0 ? notificationsFilters() : _ref$filter, _ref$refresh = _ref.refresh, refresh = _ref$refresh === void 0 ? false : _ref$refresh; if (!canFetchNotifications()) { return false; } var feed = external_jQuery_default()('#notifications'); var loader = feed.find('.widget-loader'); var content = feed.find('.widget-content > ul'); loader.find('div').remove(); loader.find('.fa-warning').removeClass('fa-warning').addClass('fa-refresh fa-spin'); loader.show(); content.hide(); var processNotifications = function processNotifications(response) { var notifications = response.notifications; external_jQuery_default()('#notifications').find('.widget-content > ul').empty(); if (notifications) { Object.keys(notifications).forEach(function (location) { return Notifications.processLocation(location, notifications[location]); }); } }; utils_request("".concat(external_GravAdmin_namespaceObject.config.base_url_relative, "/task").concat(external_GravAdmin_namespaceObject.config.param_sep, "getNotifications"), { method: 'post', body: { refresh: refresh, filter: filter } }, function (response) { processNotifications(response); })["catch"](function () { var widget = external_jQuery_default()('#notifications .widget-content'); widget.find('.widget-loader').find('div').remove(); widget.find('.widget-loader').append('
Failed to retrieve notifications
').find('.fa-spin').removeClass('fa-spin fa-refresh').addClass('fa-warning'); }); } }], [{ key: "addShowAllInFeed", value: function addShowAllInFeed() { external_jQuery_default()('#notifications ul').append('
  • Show all
  • '); } }, { key: "showNotificationInFeed", value: function showNotificationInFeed(notification) { var notifications = external_jQuery_default()('#notifications').removeClass('hidden'); var loader = notifications.find('.widget-loader').hide(); var content = notifications.find('.widget-content > ul').show(); loader.find('div').remove(); loader.find('.fa-warning').removeClass('fa-warning').addClass('fa-refresh fa-spin'); content.append(notification).find('li:nth-child(n+11)').addClass('hidden'); // hide all items > 10 if (content.find('li.hidden').length) { Notifications.addShowAllInFeed(); } } }, { key: "showNotificationInTop", value: function showNotificationInTop(notification) { var container = external_jQuery_default()('.top-notifications-container'); var dummy = external_jQuery_default()('
    ').html(notification); container.removeClass('hidden').append(dummy.children()); dummy.children().slideDown(150); } }, { key: "showNotificationInDashboard", value: function showNotificationInDashboard(notification) { var container = external_jQuery_default()('.dashboard-notifications-container'); var dummy = external_jQuery_default()('
    ').html(notification); container.removeClass('hidden').append(dummy.children()); dummy.children().slideDown(150); } }, { key: "showNotificationInPlugins", value: function showNotificationInPlugins(notification) { var container = external_jQuery_default()('.plugins-notifications-container'); var dummy = external_jQuery_default()('
    ').html(notification); container.removeClass('hidden').append(dummy.children()); dummy.children().slideDown(150); } }, { key: "showNotificationInThemes", value: function showNotificationInThemes(notification) { var container = external_jQuery_default()('.themes-notifications-container'); var dummy = external_jQuery_default()('
    ').html(notification); container.removeClass('hidden').append(dummy.children()); dummy.children().slideDown(150); } }, { key: "processLocation", value: function processLocation(location, notification) { switch (location) { case 'feed': Notifications.showNotificationInFeed(notification); break; case 'top': if (!notification.read) { Notifications.showNotificationInTop(notification); } break; case 'dashboard': if (!notification.read) { Notifications.showNotificationInDashboard(notification); } break; case 'plugins': if (!notification.read) { Notifications.showNotificationInPlugins(notification); } break; case 'themes': if (!notification.read) { Notifications.showNotificationInThemes(notification); } break; } } }]); }(); var notifications = new Notifications(); /* harmony default export */ const updates_notifications = (notifications); if (canFetchNotifications()) { notifications.fetch(); /* Hide a notification and store it hidden */ // external_jQuery_default()(document).on('click', '[data-notification-action="hide-notification"]', function (event) { var notification_id = external_jQuery_default()(event.target).parents('.hide-notification').data('notification-id'); var url = "".concat(external_GravAdmin_namespaceObject.config.base_url_relative, "/notifications.json/task").concat(external_GravAdmin_namespaceObject.config.param_sep, "hideNotification/notification_id").concat(external_GravAdmin_namespaceObject.config.param_sep).concat(notification_id); utils_request(url, { method: 'post' }, function () {}); external_jQuery_default()(event.target).parents('.single-notification').hide(); }); external_jQuery_default()(document).on('click', '[data-notification-action="hide-notification"]', function (event) { var target = external_jQuery_default()(event.currentTarget); var notification = target.parent(); notification.slideUp(function () { return notification.remove(); }); }); external_jQuery_default()(document).on('click', '[data-notification-action="show-all-notifications"]', function (event) { external_jQuery_default()('#notifications .show-all').hide(); external_jQuery_default()('#notifications .hidden').removeClass('hidden'); }); external_jQuery_default()(document).on('click', '[data-refresh="notifications"]', function (event) { event.preventDefault(); notifications.fetch({ filter: ['feed'], refresh: true }); }); } ;// ./app/updates/feed.js function feed_typeof(o) { "@babel/helpers - typeof"; return feed_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, feed_typeof(o); } function feed_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function feed_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, feed_toPropertyKey(o.key), o); } } function feed_createClass(e, r, t) { return r && feed_defineProperties(e.prototype, r), t && feed_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function feed_toPropertyKey(t) { var i = feed_toPrimitive(t, "string"); return "symbol" == feed_typeof(i) ? i : i + ""; } function feed_toPrimitive(t, r) { if ("object" != feed_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != feed_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var URI = "".concat(external_GravAdmin_namespaceObject.config.base_url_relative, "/ajax.json/task").concat(external_GravAdmin_namespaceObject.config.param_sep, "getNewsFeed"); var Feed = /*#__PURE__*/function () { function Feed() { feed_classCallCheck(this, Feed); this.data = null; } return feed_createClass(Feed, [{ key: "fetch", value: function fetch() { var _this = this; var refresh = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; utils_request(URI, { method: 'post', body: { refresh: refresh } }, function (response) { _this.data = response; callback(response); }); } }, { key: "refresh", value: function refresh() { var _refresh = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; var feed = external_jQuery_default()('#news-feed .widget-content'); if (!feed.length) { return; } var loader = feed.find('.widget-loader'); loader.find('div').remove(); loader.find('.fa-warning').removeClass('fa-warning').addClass('fa-refresh fa-spin'); loader.show(); feed.find('> ul').hide(); if (!this.data || this.data.error || _refresh) { this.fetch(_refresh, this.updateContent.bind(this)); } else { this.updateContent(); } } }, { key: "updateContent", value: function updateContent() { var feed = external_jQuery_default()('#news-feed .widget-content'); if (!feed.length) { return; } var loader = feed.find('.widget-loader').hide(); var content = feed.find('> ul').empty().show(); if (this.data.error || this.data.status === 'error') { loader.show().find('div').remove(); loader.find('.fa-refresh').removeClass('fa-refresh fa-spin').addClass('fa-warning'); loader.append("
    ".concat(this.data.error ? this.data.error.message : this.data.message || 'Unable to download news feed', "
    ")); return; } if (this.data && this.data.feed_data) { content.append(this.data.feed_data); } } }]); }(); var feed = new Feed(); external_jQuery_default()(document).ready(function () { return feed.refresh(); }); external_jQuery_default()(document).on('click', '[data-refresh="feed"]', function (event) { event.preventDefault(); feed.refresh(true); }); /* harmony default export */ const updates_feed = (feed); ;// ./app/updates/check.js // Check for updates trigger external_jQuery_default()('[data-gpm-checkupdates]').on('click', function () { var element = external_jQuery_default()(this); element.find('i').addClass('fa-spin'); gpm_Instance.fetch(function (response) { element.find('i').removeClass('fa-spin'); var payload = response.payload; if (!payload) { return; } if (!payload.grav.isUpdatable && !payload.resources.total) { utils_toastr.success(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.EVERYTHING_UP_TO_DATE); } else { var grav = payload.grav.isUpdatable ? 'Grav v' + payload.grav.available : ''; var resources = payload.resources.total ? payload.resources.total + ' ' + external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.UPDATES_ARE_AVAILABLE : ''; if (!resources) { grav += ' ' + external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.IS_AVAILABLE_FOR_UPDATE; } utils_toastr.info(grav + (grav && resources ? ' ' + external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.AND + ' ' : '') + resources); } }, true); }); ;// ./app/utils/formatbytes.js var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; function formatBytes(bytes, decimals) { if (bytes === 0) return '0 Byte'; var k = 1000; var value = Math.floor(Math.log(bytes) / Math.log(k)); var decimal = decimals + 1 || 3; return (bytes / Math.pow(k, value)).toPrecision(decimal) + ' ' + sizes[value]; } ;// ./app/updates/update.js // Dashboard update and Grav update external_jQuery_default()(document).on('click.remodal', '[data-remodal-id="update-grav"] [data-remodal-action="confirm"]', function () { var element = external_jQuery_default()('#grav-update-button'); // Safely get the file size with fallback var sizeText = ''; if (updates_Instance.payload && updates_Instance.payload.grav && updates_Instance.payload.grav.assets && updates_Instance.payload.grav.assets['grav-update'] && updates_Instance.payload.grav.assets['grav-update'].size) { sizeText = " ".concat(formatBytes(updates_Instance.payload.grav.assets['grav-update'].size)); } element.html("".concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.UPDATING_PLEASE_WAIT).concat(sizeText, "..")); element.attr('disabled', 'disabled').find('> .fa').removeClass('fa-cloud-download').addClass('fa-refresh fa-spin'); utils_request(updates_Instance.updateURL, function (response) { if (response.type === 'updategrav') { external_jQuery_default()('[data-gpm-grav]').remove(); external_jQuery_default()('#footer .grav-version').html(response.version); } element.removeAttr('disabled').find('> .fa').removeClass('fa-refresh fa-spin').addClass('fa-cloud-download'); }); }); ;// ./app/updates/channel-switcher.js var switcher = external_jQuery_default()('input[type="radio"][name="channel-switch"]'); if (switcher) { switcher.on('change', function (event) { var radio = external_jQuery_default()(event.target); var url = "".concat(radio.parent('[data-url]').data('url')); utils_request(url, { method: 'post', body: { task: 'gpmRelease', release: radio.val() } }, function (response) { if (response.reload) { __webpack_require__.g.location.reload(); } }); }); } ;// ./app/updates/safe-upgrade.js function safe_upgrade_typeof(o) { "@babel/helpers - typeof"; return safe_upgrade_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, safe_upgrade_typeof(o); } function safe_upgrade_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function safe_upgrade_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, safe_upgrade_toPropertyKey(o.key), o); } } function safe_upgrade_createClass(e, r, t) { return r && safe_upgrade_defineProperties(e.prototype, r), t && safe_upgrade_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function safe_upgrade_toPropertyKey(t) { var i = safe_upgrade_toPrimitive(t, "string"); return "symbol" == safe_upgrade_typeof(i) ? i : i + ""; } function safe_upgrade_toPrimitive(t, r) { if ("object" != safe_upgrade_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != safe_upgrade_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var t = function t(key) { var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; if (external_GravAdmin_namespaceObject.translations && external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN && external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN[key]) { return external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN[key]; } return fallback; }; var r = function r(key, value) { var fallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; var template = t(key, fallback); if (!template || typeof template.replace !== 'function') { return fallback.replace('%s', value); } return template.replace('%s', value); }; var STAGE_TITLES = { queued: function queued() { return t('SAFE_UPGRADE_STAGE_QUEUED', 'Waiting for worker'); }, initializing: function initializing() { return t('SAFE_UPGRADE_STAGE_INITIALIZING', 'Preparing upgrade'); }, downloading: function downloading() { return t('SAFE_UPGRADE_STAGE_DOWNLOADING', 'Downloading update'); }, snapshot: function snapshot() { return t('SAFE_UPGRADE_STAGE_SNAPSHOT', 'Creating backup snapshot'); }, installing: function installing() { return t('SAFE_UPGRADE_STAGE_INSTALLING', 'Installing update'); }, rollback: function rollback() { return t('SAFE_UPGRADE_STAGE_ROLLBACK', 'Restoring snapshot'); }, finalizing: function finalizing() { return t('SAFE_UPGRADE_STAGE_FINALIZING', 'Finalizing changes'); }, complete: function complete() { return t('SAFE_UPGRADE_STAGE_COMPLETE', 'Upgrade complete'); }, error: function error() { return t('SAFE_UPGRADE_STAGE_ERROR', 'Upgrade encountered an error'); } }; var SafeUpgrade = /*#__PURE__*/function () { function SafeUpgrade(updatesInstance) { safe_upgrade_classCallCheck(this, SafeUpgrade); this.updates = updatesInstance; this.modalElement = external_jQuery_default()('[data-remodal-id="update-grav"]'); this.modal = this.modalElement.remodal({ hashTracking: false }); this.steps = { preflight: this.modalElement.find('[data-safe-upgrade-step="preflight"]'), progress: this.modalElement.find('[data-safe-upgrade-step="progress"]'), result: this.modalElement.find('[data-safe-upgrade-step="result"]') }; this.buttons = { start: this.modalElement.find('[data-safe-upgrade-action="start"]'), cancel: this.modalElement.find('[data-safe-upgrade-action="cancel"]'), recheck: this.modalElement.find('[data-safe-upgrade-action="recheck"]'), finish: this.modalElement.find('[data-safe-upgrade-action="finish"]') }; this.urls = this.buildUrls(); this.decisions = {}; this.pollTimer = null; this.statusRequest = null; this.isPolling = false; this.active = false; this.jobId = null; this.statusFailures = 0; this.statusContext = null; this.statusIdleCount = 0; this.currentStage = null; this.stageEnteredAt = 0; this.directStatusUrl = this.resolveDirectStatusUrl(); this.preferDirectStatus = !!this.directStatusUrl; this.modalLocked = false; this.lastOverallPercent = 0; this.registerEvents(); } return safe_upgrade_createClass(SafeUpgrade, [{ key: "buildUrls", value: function buildUrls() { var task = "task".concat(external_GravAdmin_namespaceObject.config.param_sep); var nonce = "admin-nonce".concat(external_GravAdmin_namespaceObject.config.param_sep).concat(external_GravAdmin_namespaceObject.config.admin_nonce); var base = "".concat(external_GravAdmin_namespaceObject.config.base_url_relative, "/update.json"); return { preflight: "".concat(base, "/").concat(task, "safeUpgradePreflight/").concat(nonce), start: "".concat(base, "/").concat(task, "safeUpgradeStart/").concat(nonce), status: "".concat(base, "/").concat(task, "safeUpgradeStatus/").concat(nonce) }; } }, { key: "registerEvents", value: function registerEvents() { var _this = this; external_jQuery_default()(document).on('click', '#grav-update-button', function (event) { if (external_jQuery_default()(event.currentTarget).hasClass('pointer-events-none')) { return; } event.preventDefault(); _this.open(); }); this.modalElement.on('closed', function () { _this.stopPolling(); _this.active = false; }); this.modalElement.on('click', '[data-safe-upgrade-action="recheck"]', function (event) { event.preventDefault(); if (!_this.active) { return; } _this.fetchPreflight(true); }); this.modalElement.on('click', '[data-safe-upgrade-action="start"]', function (event) { event.preventDefault(); if (external_jQuery_default()(event.currentTarget).prop('disabled')) { return; } _this.startUpgrade(); }); this.modalElement.on('click', '[data-safe-upgrade-action="finish"]', function (event) { event.preventDefault(); var button = external_jQuery_default()(event.currentTarget); if (button.prop('disabled')) { return; } _this.modalLocked = false; _this.modal.close('finish'); setTimeout(function () { return window.location.reload(); }, 75); }); this.modalElement.on('change', '[data-safe-upgrade-decision]', function (event) { var target = external_jQuery_default()(event.currentTarget); var decision = target.val(); var type = target.data('safe-upgrade-decision'); _this.decisions[type] = decision; _this.updateStartButtonState(); }); this.modalElement.on('closing', function (event) { if (_this.modalLocked && event.reason !== 'finish') { event.preventDefault(); } }); } }, { key: "setPayload", value: function setPayload() { var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; this.payload = payload; } }, { key: "open", value: function open() { this.active = true; this.decisions = {}; this.statusFailures = 0; this.preferDirectStatus = !!this.directStatusUrl; this.statusContext = null; this.statusIdleCount = 0; this.currentStage = null; this.stageEnteredAt = 0; this.modalLocked = false; this.lastOverallPercent = 0; this.renderLoading(); this.modal.open(); this.fetchPreflight(); } }, { key: "renderLoading", value: function renderLoading() { this.modalLocked = false; this.resetFooterButtons(); this.switchStep('preflight'); this.steps.preflight.html("\n
    \n \n

    ".concat(t('SAFE_UPGRADE_CHECKING', 'Running preflight checks...'), "

    \n
    \n ")); this.buttons.start.prop('disabled', true).addClass('hidden'); this.modalElement.find('[data-safe-upgrade-footer]').removeClass('hidden'); } }, { key: "fetchPreflight", value: function fetchPreflight() { var _this2 = this; var silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; if (!silent) { this.renderLoading(); } else { this.setRecheckLoading(true); } var done = function done() { if (silent) { _this2.setRecheckLoading(false); } }; var requestPromise = utils_request(this.urls.preflight, function (response) { if (!_this2.active) { done(); return; } if (response.status === 'error') { done(); _this2.renderPreflightError(response.message || t('SAFE_UPGRADE_GENERIC_ERROR', 'Safe upgrade could not complete. See Grav logs for details.')); return; } _this2.renderPreflight(response.data || {}); done(); }); if (silent && requestPromise && typeof requestPromise["catch"] === 'function') { requestPromise["catch"](function () { return done(); }); } } }, { key: "renderPreflightError", value: function renderPreflightError(message) { this.switchStep('preflight'); this.steps.preflight.html("\n
    \n

    ".concat(message, "

    \n \n
    \n ")); this.buttons.start.prop('disabled', true).addClass('hidden'); } }, { key: "renderPreflight", value: function renderPreflight(data) { var blockers = []; var version = data.version || {}; var releaseDate = version.release_date || ''; var packageSize = version.package_size ? formatBytes(version.package_size) : t('SAFE_UPGRADE_UNKNOWN_SIZE', 'unknown'); var warnings = data.preflight && data.preflight.warnings || []; var pending = data.preflight && data.preflight.plugins_pending || {}; var psrConflicts = data.preflight && data.preflight.psr_log_conflicts || {}; var monologConflicts = data.preflight && data.preflight.monolog_conflicts || {}; if (data.status === 'error') { blockers.push(data.message || t('SAFE_UPGRADE_GENERIC_ERROR', 'Safe upgrade could not complete. See Grav logs for details.')); } if (!data.requirements || !data.requirements.meets) { blockers.push(r('SAFE_UPGRADE_REQUIREMENTS_FAIL', data.requirements ? data.requirements.minimum_php : '?', 'PHP %s or newer is required before continuing.')); } if (data.symlinked) { blockers.push(t('GRAV_SYMBOLICALLY_LINKED', 'Grav is symbolically linked. Upgrade will not be available.')); } if (data.safe_upgrade && data.safe_upgrade.enabled === false) { blockers.push(t('SAFE_UPGRADE_DISABLED', 'Safe upgrade is disabled. Enable it in Configuration â–¶ System â–¶ Updates.')); } if (!data.safe_upgrade || !data.safe_upgrade.staging_ready) { var err = data.safe_upgrade && data.safe_upgrade.error ? data.safe_upgrade.error : t('SAFE_UPGRADE_STAGING_ERROR', 'Safe upgrade staging directory is not writable.'); blockers.push(err); } if (!data.upgrade_available) { blockers.push(t('SAFE_UPGRADE_NOT_AVAILABLE', 'No Grav update is available.')); } if (Object.keys(pending).length) { blockers.push(t('SAFE_UPGRADE_PENDING_HINT', 'Update all plugins and themes before proceeding.')); } var psrWarningItems = Object.keys(psrConflicts).map(function (slug) { var info = psrConflicts[slug] || {}; var requires = info.requires || '*'; return "
  • ".concat(t('SAFE_UPGRADE_WARNINGS_PSR_ITEM', 'Potential psr/log conflict:'), " ").concat(slug, " — ").concat(r('SAFE_UPGRADE_CONFLICTS_REQUIRES', requires, 'Requires psr/log %s'), "
  • "); }); var monologWarningItems = Object.keys(monologConflicts).map(function (slug) { var entries = Array.isArray(monologConflicts[slug]) ? monologConflicts[slug] : []; var details = entries.map(function (entry) { var method = entry.method || ''; var file = entry.file ? basename(entry.file) : ''; return "".concat(method, " ").concat(file ? "".concat(file, "") : '', ""); }).join(', '); var description = details || t('SAFE_UPGRADE_WARNINGS_MONOLOG_UNKNOWN', 'Review the plugin for potential API changes.'); return "
  • ".concat(t('SAFE_UPGRADE_WARNINGS_MONOLOG_ITEM', 'Potential Monolog conflict:'), " ").concat(slug, " — ").concat(description, "
  • "); }); var filteredWarnings = warnings.filter(function (warning) { var lower = (warning || '').toLowerCase(); var isPsrRelated = lower.includes('psr/log'); var isMonologRelated = lower.includes('monolog'); return !isPsrRelated && !isMonologRelated; }); var warningsList = filteredWarnings.length || psrWarningItems.length || monologWarningItems.length ? "\n
    \n
    \n
    \n \n
    \n ".concat(t('SAFE_UPGRADE_WARNINGS', 'Warnings'), "\n ").concat(t('SAFE_UPGRADE_WARNINGS_HINT', 'These items may require attention before continuing.'), "\n
    \n
    \n
    \n
    \n
      \n ").concat(filteredWarnings.map(function (warning) { return "
    • ".concat(warning, "
    • "); }).join(''), "\n ").concat(psrWarningItems.join(''), "\n ").concat(monologWarningItems.join(''), "\n
    \n
    \n
    \n ") : ''; var pendingList = Object.keys(pending).length ? "\n
    \n
    \n
    \n \n
    \n ".concat(t('SAFE_UPGRADE_PENDING_UPDATES', 'Pending plugin or theme updates'), "\n ").concat(t('SAFE_UPGRADE_PENDING_INTRO', 'Review the extensions that should be updated first.'), "\n
    \n
    \n
    \n
    \n
      \n ").concat(Object.keys(pending).map(function (slug) { var item = pending[slug] || {}; var type = item.type || 'plugin'; var current = item.current || t('SAFE_UPGRADE_UNKNOWN_VERSION', 'unknown'); var next = item.available || t('SAFE_UPGRADE_UNKNOWN_VERSION', 'unknown'); return "
    • ".concat(slug, " (").concat(type, ") ").concat(current, " → ").concat(next, "
    • "); }).join(''), "\n
    \n
    \n
    \n ") : ''; var psrList = Object.keys(psrConflicts).length ? "\n
    \n
    \n
    \n \n
    \n ".concat(t('SAFE_UPGRADE_CONFLICTS_PSR', 'Potential psr/log compatibility issues'), "\n ").concat(t('SAFE_UPGRADE_CONFLICTS_HINT', 'Choose how to handle conflicts before starting the upgrade.'), "\n
    \n
    \n ").concat(this.renderDecisionSelect('psr_log'), "\n
    \n
    \n ") : ''; var monologList = Object.keys(monologConflicts).length ? "\n
    \n
    \n
    \n \n
    \n ".concat(t('SAFE_UPGRADE_CONFLICTS_MONOLOG', 'Potential Monolog API compatibility issues'), "\n ").concat(t('SAFE_UPGRADE_CONFLICTS_HINT', 'Choose how to handle conflicts before starting the upgrade.'), "\n
    \n
    \n ").concat(this.renderDecisionSelect('monolog'), "\n
    \n
    \n ") : ''; var blockersList = blockers.length ? "\n
    \n
    \n
    \n \n
    \n ".concat(t('SAFE_UPGRADE_BLOCKERS_TITLE', 'Action required before continuing'), "\n ").concat(t('SAFE_UPGRADE_BLOCKERS_DESC', 'Resolve the following items to enable the upgrade.'), "\n
    \n
    \n
    \n
    \n
      ").concat(blockers.map(function (item) { return "
    • ".concat(item, "
    • "); }).join(''), "
    \n
    \n
    \n ") : ''; var summary = "\n
    \n

    ".concat(r('SAFE_UPGRADE_SUMMARY_CURRENT', version.local || '?', 'Current Grav version: v%s'), "

    \n

    ").concat(r('SAFE_UPGRADE_SUMMARY_REMOTE', version.remote || '?', 'Available Grav version: v%s'), "

    \n

    ").concat(releaseDate ? r('SAFE_UPGRADE_RELEASED_ON', releaseDate, 'Released on %s') : '', "

    \n

    ").concat(r('SAFE_UPGRADE_PACKAGE_SIZE', packageSize, 'Package size: %s'), "

    \n
    \n "); this.steps.preflight.html("\n
    \n ".concat(summary, "\n ").concat(warningsList, "\n ").concat(pendingList, "\n ").concat(psrList, "\n ").concat(monologList, "\n ").concat(blockersList, "\n
    \n ")); this.switchStep('preflight'); var hasBlockingConflicts = Object.keys(psrConflicts).length && !this.decisions.psr_log || Object.keys(monologConflicts).length && !this.decisions.monolog; var canStart = !blockers.length && !hasBlockingConflicts; this.buttons.start.removeClass('hidden').prop('disabled', !canStart).text(t('SAFE_UPGRADE_START', 'Start Safe Upgrade')); if (Object.keys(psrConflicts).length && !this.decisions.psr_log) { this.decisions.psr_log = 'disable'; } if (Object.keys(monologConflicts).length && !this.decisions.monolog) { this.decisions.monolog = 'disable'; } this.updateStartButtonState(); } }, { key: "renderDecisionSelect", value: function renderDecisionSelect(type) { var currentDecision = this.decisions[type] || 'disable'; var name = "safe-upgrade-decision-".concat(type); var ariaLabel = t('SAFE_UPGRADE_DECISION_PROMPT', 'When conflicts are detected:'); var options = [{ value: 'disable', label: t('SAFE_UPGRADE_DECISION_DISABLE', 'Disable conflicting plugins'), description: t('SAFE_UPGRADE_DECISION_DISABLE_DESC', 'Temporarily disable conflicting plugins during the upgrade.') }, { value: 'continue', label: t('SAFE_UPGRADE_DECISION_CONTINUE', 'Continue with plugins enabled'), description: t('SAFE_UPGRADE_DECISION_CONTINUE_DESC', 'Proceed with plugins enabled. This may require manual fixes.') }]; return "\n
    \n ").concat(options.map(function (option) { return "\n \n "); }).join(''), "\n
    \n "); } }, { key: "updateStartButtonState", value: function updateStartButtonState() { var _this3 = this; var decisionInputs = this.modalElement.find('[data-safe-upgrade-decision]'); var unresolved = []; decisionInputs.each(function (index, element) { var input = external_jQuery_default()(element); var key = input.data('safe-upgrade-decision'); if (!_this3.decisions[key]) { unresolved.push(key); } }); var hasUnresolvedConflicts = unresolved.length > 0; var blockers = this.steps.preflight.find('.safe-upgrade-blockers li'); var disabled = hasUnresolvedConflicts || blockers.length > 0; this.buttons.start.prop('disabled', disabled); } }, { key: "setRecheckLoading", value: function setRecheckLoading(state) { var button = this.modalElement.find('[data-safe-upgrade-action="recheck"]'); if (!button.length) { return; } var dataKey = 'safe-upgrade-recheck-label'; if (state) { if (!button.data(dataKey)) { button.data(dataKey, button.html()); } button.prop('disabled', true).addClass('is-loading').html("\n \n ".concat(t('SAFE_UPGRADE_RECHECKING', 'Re-running Checks...'), "\n ")); } else { var original = button.data(dataKey); button.prop('disabled', false).removeClass('is-loading'); if (original) { button.html(original); button.removeData(dataKey); } else { button.html(t('SAFE_UPGRADE_RECHECK', 'Re-run Checks')); } } } }, { key: "startUpgrade", value: function startUpgrade() { var _this4 = this; this.switchStep('progress'); this.lastOverallPercent = 0; this.renderProgress({ stage: 'initializing', message: t('SAFE_UPGRADE_STAGE_INITIALIZING', 'Preparing upgrade'), percent: 0 }); this.buttons.start.prop('disabled', true); this.buttons.finish.addClass('hidden').prop('disabled', true); this.modalLocked = false; this.stopPolling(); this.jobId = null; var decisionFields = {}; Object.keys(this.decisions || {}).forEach(function (key) { var value = _this4.decisions[key]; if (value) { decisionFields["decisions[".concat(key, "]")] = value; } }); var body = decisionFields; utils_request(this.urls.start, { method: 'post', body: body }, function (response) { if (!_this4.active) { return; } if (response.status === 'error') { _this4.stopPolling(); _this4.renderProgress({ stage: 'error', message: response.message || t('SAFE_UPGRADE_GENERIC_ERROR', 'Safe upgrade could not complete. See Grav logs for details.'), percent: null }); _this4.renderResult({ status: 'error', message: response.message || t('SAFE_UPGRADE_GENERIC_ERROR', 'Safe upgrade could not complete. See Grav logs for details.') }); return; } var data = response.data || {}; if (data.status === 'error') { _this4.stopPolling(); _this4.renderProgress({ stage: 'error', message: data.message || t('SAFE_UPGRADE_GENERIC_ERROR', 'Safe upgrade could not complete. See Grav logs for details.'), percent: null }); _this4.renderResult(data); return; } if (data.fallback) { _this4.renderResult(data); _this4.stopPolling(); _this4.renderProgress({ stage: data.status === 'success' ? 'complete' : 'error', message: data.message || t('SAFE_UPGRADE_STAGE_COMPLETE', 'Upgrade complete'), percent: data.status === 'success' ? 100 : null, target_version: data.version || data.manifest && data.manifest.target_version || null, manifest: data.manifest || null }); return; } if (data.status === 'queued' && data.job_id) { _this4.jobId = data.job_id; if (data.progress) { _this4.renderProgress(data.progress); } _this4.statusFailures = 0; _this4.preferDirectStatus = !!_this4.directStatusUrl; _this4.statusContext = data.context || null; _this4.beginPolling(1200); } else { _this4.renderResult(data); _this4.stopPolling(); } }); } }, { key: "resolveDirectStatusUrl", value: function resolveDirectStatusUrl() { var scriptPath = '/___safe-upgrade-status'; var join = function join(base, path) { if (!base) { return path; } var trimmed = base.endsWith('/') ? base.slice(0, -1) : base; return "".concat(trimmed).concat(path); }; var normalize = function normalize(url) { return url.replace(/([^:]\/)\/+/g, '$1'); }; var candidates = [external_GravAdmin_namespaceObject.config.base_url_simple || '', (external_GravAdmin_namespaceObject.config.base_url_relative || '').replace(/\/admin\/?$/, ''), '']; for (var _i = 0, _candidates = candidates; _i < _candidates.length; _i++) { var base = _candidates[_i]; if (typeof base !== 'string') { continue; } var candidate = normalize(join(base, scriptPath)); if (candidate) { return candidate; } } return scriptPath; } }, { key: "resolveStatusEndpoint", value: function resolveStatusEndpoint() { var useDirect = this.directStatusUrl && this.preferDirectStatus; var url = useDirect ? this.directStatusUrl : this.urls.status; var params = []; if (this.jobId) { params.push("job=".concat(encodeURIComponent(this.jobId))); } if (this.statusContext) { params.push("context=".concat(encodeURIComponent(this.statusContext))); } if (params.length) { url += (url.includes('?') ? '&' : '?') + params.join('&'); } return { url: url, direct: useDirect }; } }, { key: "beginPolling", value: function beginPolling() { var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1200; if (this.isPolling) { return; } this.isPolling = true; this.schedulePoll(delay); } }, { key: "schedulePoll", value: function schedulePoll() { var _this5 = this; var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1200; this.clearPollTimer(); if (!this.isPolling) { return; } this.pollTimer = setTimeout(function () { return _this5.fetchStatus(true); }, delay); } }, { key: "clearPollTimer", value: function clearPollTimer() { if (this.pollTimer) { clearTimeout(this.pollTimer); this.pollTimer = null; } } }, { key: "fetchStatus", value: function fetchStatus() { var _this6 = this; var silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; if (this.statusRequest) { return; } this.pollTimer = null; var nextStage = null; var jobComplete = false; var jobFailed = false; var handled = false; var lastPayload = null; console.debug('[SafeUpgrade] poll status'); var endpoint = this.resolveStatusEndpoint(); var statusUrl = endpoint.url; var usingDirect = endpoint.direct; var requestOptions = { silentErrors: true }; this.statusRequest = utils_request(statusUrl, requestOptions, function (response) { console.debug('[SafeUpgrade] status response', response); if (!response) { _this6.statusFailures += 1; return; } handled = true; _this6.statusFailures = 0; if (response.status === 'error') { if (!silent) { _this6.renderProgress({ stage: 'error', message: response.message || t('SAFE_UPGRADE_GENERIC_ERROR', 'Safe upgrade could not complete. See Grav logs for details.'), percent: null }); } nextStage = 'error'; jobFailed = true; return; } var payload = response.data || {}; lastPayload = payload; if (Object.prototype.hasOwnProperty.call(payload, 'context')) { _this6.statusContext = payload.context || null; } var job = payload.job || {}; var data = payload.progress || payload; nextStage = data.stage || null; if (!job || !Object.keys(job).length) { _this6.statusIdleCount += 1; } else { _this6.statusIdleCount = 0; } _this6.renderProgress(data, job); if (job.status === 'error') { nextStage = 'error'; var message = job.error || data.message || t('SAFE_UPGRADE_GENERIC_ERROR', 'Safe upgrade could not complete. See Grav logs for details.'); _this6.renderProgress({ stage: 'error', message: message, percent: null }, job); jobFailed = true; } else if (job.status === 'success') { if (data.stage !== 'complete') { var completePayload = { stage: 'complete', message: t('SAFE_UPGRADE_STAGE_COMPLETE', 'Upgrade complete'), percent: 100, target_version: job.result && job.result.version || data.target_version || null, manifest: job.result && job.result.manifest || data.manifest || null }; _this6.renderProgress(completePayload, job); nextStage = 'complete'; } jobComplete = true; } else if (!job.status && data.stage === 'complete') { jobComplete = true; } }); var finalize = function finalize() { _this6.statusRequest = null; if (!_this6.isPolling) { return; } if (!handled) { if (usingDirect && _this6.statusFailures >= 3) { _this6.preferDirectStatus = false; _this6.statusFailures = 0; _this6.statusIdleCount = 0; _this6.schedulePoll(); } else { var delay = Math.min(5000, 1200 * Math.max(1, _this6.statusFailures)); _this6.schedulePoll(delay); } } else if ((!lastPayload || !lastPayload.job || !Object.keys(lastPayload.job).length) && usingDirect && _this6.statusIdleCount >= 5) { _this6.preferDirectStatus = false; _this6.statusFailures = 0; _this6.statusIdleCount = 0; _this6.schedulePoll(); } else if (jobFailed) { _this6.stopPolling(); _this6.jobId = null; } else if (jobComplete || nextStage === 'complete') { _this6.stopPolling(); _this6.jobId = null; } else { _this6.schedulePoll(); } }; this.statusRequest.then(finalize, finalize); } }, { key: "renderProgress", value: function renderProgress(data) { var _this7 = this; var job = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; if (!data) { return; } var stage = data.stage || 'initializing'; if (stage !== this.currentStage) { this.currentStage = stage; this.stageEnteredAt = Date.now(); } var titleResolver = STAGE_TITLES[stage] || STAGE_TITLES.initializing; var title = titleResolver(); var percent = typeof data.percent === 'number' ? data.percent : null; var scaledPercent = function scaledPercent() { if (stage === 'queued') { return 0; } if (stage === 'initializing') { return percent !== null ? Math.min(Math.max(percent, 0), 5) : 5; } if (stage === 'downloading') { return _this7.scaleStagePercent(5, 45, percent, 2); } if (stage === 'snapshot') { return _this7.scaleStagePercent(45, 70, percent, 2); } if (stage === 'installing') { return _this7.scaleStagePercent(70, 95, percent, 3); } if (stage === 'rollback') { return _this7.scaleStagePercent(40, 95, percent, 3); } if (stage === 'finalizing') { return _this7.scaleStagePercent(95, 99, percent, 1.5); } if (stage === 'complete') { return 100; } if (stage === 'error') { return null; } return percent; }; percent = scaledPercent(); if (percent !== null) { var baseline = typeof this.lastOverallPercent === 'number' ? this.lastOverallPercent : 0; percent = Math.max(percent, baseline); this.lastOverallPercent = percent; } var displayPercent = percent !== null ? Math.round(percent) : null; var percentLabel = displayPercent !== null ? "".concat(displayPercent, "%") : ''; var message = typeof data.message === 'string' ? data.message : ''; var normalize = function normalize(value) { return value.replace(/\u2026/g, '...').replace(/\.+$/, '').trim().toLowerCase(); }; var normalizedTitle = normalize(title || ''); var normalizedMessage = normalize(message || ''); var shouldShowMessage = stage === 'error' ? message.trim().length > 0 : message && stage !== 'installing' && stage !== 'finalizing' && normalizedMessage !== '' && normalizedMessage !== normalizedTitle; var statusLine = job && job.status ? "

    ".concat(t('SAFE_UPGRADE_JOB_STATUS', 'Status'), ": ").concat(job.status.toUpperCase(), "").concat(job.error ? " — ".concat(job.error) : '', "

    ") : ''; var animateBar = stage !== 'complete' && stage !== 'error' && percent !== null; var barClass = "safe-upgrade-progress-bar".concat(animateBar ? ' is-active' : ''); var detailMessage = shouldShowMessage ? "

    ".concat(message, "

    ") : ''; this.steps.progress.html("\n
    \n

    ".concat(title, "

    \n ").concat(detailMessage, "\n ").concat(statusLine, "\n ").concat(percentLabel ? "
    ").concat(percentLabel, "
    ") : '', "\n
    \n ")); this.switchStep('progress'); if (stage === 'complete') { this.renderResult({ status: 'success', manifest: data.manifest || null, version: data.target_version || null }); } else if (stage === 'error') { this.renderResult({ status: 'error', message: data.message || t('SAFE_UPGRADE_GENERIC_ERROR', 'Safe upgrade could not complete. See Grav logs for details.') }); } } }, { key: "renderResult", value: function renderResult(result) { var status = result.status || 'success'; if (status === 'success' || status === 'finalized') { var manifest = result.manifest || {}; var target = result.version || manifest.target_version || ''; var identifier = manifest.id || ''; this.steps.result.html("\n
    \n

    ".concat(r('SAFE_UPGRADE_RESULT_SUCCESS', target, 'Grav upgraded to v%s'), "

    \n ").concat(identifier ? "

    ".concat(r('SAFE_UPGRADE_RESULT_MANIFEST', identifier, 'Snapshot reference: %s'), "

    ") : '', "\n

    ").concat(t('SAFE_UPGRADE_RESULT_HINT', 'Restore snapshots from Tools → Restore Grav.'), "

    \n
    \n ")); this.switchStep('result'); external_jQuery_default()('[data-gpm-grav]').remove(); if (target) { external_jQuery_default()('#footer .grav-version').html("v".concat(target)); } if (this.updates) { this.updates.fetch(true); } this.prepareCompletionFooter(); } else if (status === 'noop') { this.steps.result.html("\n
    \n

    ".concat(t('SAFE_UPGRADE_RESULT_NOOP', 'Grav is already up to date.'), "

    \n
    \n ")); this.switchStep('result'); this.prepareCompletionFooter(); } else { this.steps.result.html("\n
    \n

    ".concat(t('SAFE_UPGRADE_RESULT_FAILURE', 'Safe upgrade failed'), "

    \n

    ").concat(result.message || t('SAFE_UPGRADE_GENERIC_ERROR', 'Safe upgrade could not complete. See Grav logs for details.'), "

    \n
    \n ")); this.switchStep('result'); this.modalLocked = false; this.buttons.finish.addClass('hidden').prop('disabled', true); this.buttons.cancel.removeClass('hidden').prop('disabled', false); this.buttons.recheck.removeClass('hidden').prop('disabled', false); } } }, { key: "switchStep", value: function switchStep(step) { var _this8 = this; Object.keys(this.steps).forEach(function (handle) { var isActive = handle === step; _this8.steps[handle].toggle(isActive); _this8.steps[handle].toggleClass('hidden', !isActive); }); } }, { key: "resetFooterButtons", value: function resetFooterButtons() { this.buttons.cancel.removeClass('hidden').prop('disabled', false); this.buttons.recheck.removeClass('hidden').prop('disabled', false); this.buttons.finish.addClass('hidden').prop('disabled', true); } }, { key: "prepareCompletionFooter", value: function prepareCompletionFooter() { this.modalLocked = true; this.buttons.cancel.addClass('hidden').prop('disabled', true); this.buttons.recheck.addClass('hidden').prop('disabled', true); this.buttons.start.addClass('hidden').prop('disabled', true); this.buttons.finish.removeClass('hidden').prop('disabled', false); } }, { key: "stopPolling", value: function stopPolling() { this.isPolling = false; this.clearPollTimer(); } }, { key: "scaleStagePercent", value: function scaleStagePercent(start, end, stagePercent, fallbackSeconds) { var safeStart = typeof start === 'number' ? start : 0; var safeEnd = typeof end === 'number' ? end : safeStart; if (stagePercent !== null && !Number.isNaN(stagePercent)) { var normalized = Math.min(100, Math.max(0, stagePercent)); return safeStart + (safeEnd - safeStart) * normalized / 100; } var duration = typeof fallbackSeconds === 'number' ? Math.max(fallbackSeconds, 0.25) : 1; return this.computeSmoothPercent(safeStart, safeEnd, duration, stagePercent); } }, { key: "computeSmoothPercent", value: function computeSmoothPercent(base, target, durationSeconds, actualPercent) { var span = target - base; if (span <= 0) { return actualPercent !== null ? Math.min(Math.max(actualPercent, base), target) : base; } var elapsed = Math.max(0, (Date.now() - this.stageEnteredAt) / 1000); var progressRatio = Math.min(1, elapsed / Math.max(durationSeconds, 1)); var smooth = base + progressRatio * span; if (actualPercent !== null && !Number.isNaN(actualPercent)) { smooth = Math.max(smooth, Math.min(actualPercent, target)); } return Math.min(smooth, target); } }]); }(); function basename(path) { if (!path) { return ''; } return path.split(/[\\/]/).pop(); } ;// ./app/updates/index.js function updates_typeof(o) { "@babel/helpers - typeof"; return updates_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, updates_typeof(o); } function updates_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function updates_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, updates_toPropertyKey(o.key), o); } } function updates_createClass(e, r, t) { return r && updates_defineProperties(e.prototype, r), t && updates_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function updates_toPropertyKey(t) { var i = updates_toPrimitive(t, "string"); return "symbol" == updates_typeof(i) ? i : i + ""; } function updates_toPrimitive(t, r) { if ("object" != updates_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != updates_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var Updates = /*#__PURE__*/function () { function Updates() { var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; updates_classCallCheck(this, Updates); this.setPayload(payload); this.task = "task".concat(external_GravAdmin_namespaceObject.config.param_sep); this.updateURL = ''; this.safeUpgrade = new SafeUpgrade(this); } return updates_createClass(Updates, [{ key: "setPayload", value: function setPayload() { var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; this.payload = payload; if (this.safeUpgrade) { this.safeUpgrade.setPayload(payload); } return this; } }, { key: "fetch", value: function fetch() { var _this = this; var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; gpm_Instance.fetch(function (response) { return _this.setPayload(response); }, force); return this; } }, { key: "maintenance", value: function maintenance() { var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'hide'; var element = external_jQuery_default()('#updates [data-update-packages]'); element[mode === 'show' ? 'fadeIn' : 'fadeOut'](); if (mode === 'hide') { external_jQuery_default()('.badges.with-updates').removeClass('with-updates').find('.badge.updates').remove(); } return this; } }, { key: "grav", value: function grav() { var payload = this.payload.grav; if (payload && payload.isUpdatable) { var task = this.task; var bar = ''; if (!payload.isSymlink) { this.updateURL = "".concat(external_GravAdmin_namespaceObject.config.base_url_relative, "/update.json/").concat(task, "updategrav/admin-nonce").concat(external_GravAdmin_namespaceObject.config.param_sep).concat(external_GravAdmin_namespaceObject.config.admin_nonce); bar += ""); } else { bar += ""); } bar += "\n Grav v".concat(payload.available, " ").concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.IS_NOW_AVAILABLE, "! (").concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.CURRENT, " v").concat(payload.version, ")\n "); var element = external_jQuery_default()('[data-gpm-grav]').removeClass('hidden'); if (element.is(':empty')) { element.hide(); } element.addClass('grav').html("".concat(bar)).slideDown(150, function () { var c = 5; var x = setInterval(function () { c -= 1; element.find('.pointer-events-none .cnt-down').text('(' + c + 's)'); }, 1000); setTimeout(function () { clearInterval(x); element.find('.pointer-events-none .cnt-down').remove(); element.find('.pointer-events-none').removeClass('pointer-events-none'); }, 5000); }).parent('#messages').addClass('default-box-shadow'); } return this; } }, { key: "resources", value: function resources() { if (!this.payload || !this.payload.resources || !this.payload.resources.total) { return this.maintenance('hide'); } var is_current_package_latest = true; var map = ['plugins', 'themes']; var singles = ['plugin', 'theme']; var _this$payload$resourc = this.payload.resources, plugins = _this$payload$resourc.plugins, themes = _this$payload$resourc.themes; if (!this.payload.resources.total) { return this; } [plugins, themes].forEach(function (resources, index) { if (!resources || Array.isArray(resources) || updates_typeof(resources) !== 'object') { return; } var length = Object.keys(resources).length; var type = map[index]; // sidebar external_jQuery_default()("#admin-menu a[href$=\"/".concat(map[index], "\"]")).find('.badges').addClass('with-updates').find('.badge.updates').text(length); var type_translation = ''; // update all if (type === 'plugins') { type_translation = external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.PLUGINS; } else { type_translation = external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.THEMES; } var updateAll = external_jQuery_default()(".grav-update.".concat(type)); updateAll.css('display', 'block').html("\n

    \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'); } } }]); }(); var updates_Instance = new Updates(); // automatically refresh UI for updates (graph, sidebar, plugin/themes pages) after every fetch gpm_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') { gpm_Instance.fetch(); } // EXTERNAL MODULE: ./node_modules/chartist/dist/chartist.js var chartist = __webpack_require__(9592); var chartist_default = /*#__PURE__*/__webpack_require__.n(chartist); ;// ./app/dashboard/chart.js function chart_callSuper(t, o, e) { return o = chart_getPrototypeOf(o), chart_possibleConstructorReturn(t, chart_isNativeReflectConstruct() ? Reflect.construct(o, e || [], chart_getPrototypeOf(t).constructor) : o.apply(t, e)); } function chart_possibleConstructorReturn(t, e) { if (e && ("object" == chart_typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return chart_assertThisInitialized(t); } function chart_assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } function chart_isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (chart_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } function _superPropGet(t, o, e, r) { var p = _get(chart_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; } function _get() { return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); } function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = chart_getPrototypeOf(t));); return t; } function chart_getPrototypeOf(t) { return chart_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, chart_getPrototypeOf(t); } function chart_inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && chart_setPrototypeOf(t, e); } function chart_setPrototypeOf(t, e) { return chart_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, chart_setPrototypeOf(t, e); } function chart_typeof(o) { "@babel/helpers - typeof"; return chart_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, chart_typeof(o); } function chart_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function chart_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, chart_toPropertyKey(o.key), o); } } function chart_createClass(e, r, t) { return r && chart_defineProperties(e.prototype, r), t && chart_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function chart_toPropertyKey(t) { var i = chart_toPrimitive(t, "string"); return "symbol" == chart_typeof(i) ? i : i + ""; } function chart_toPrimitive(t, r) { if ("object" != chart_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != chart_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // 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); }); }); } return chart_createClass(Chart, [{ key: "updateData", value: function updateData(data) { Object.assign(this.data, data); this.chart.update(this.data); } }]); }(); ; var UpdatesChart = /*#__PURE__*/function (_Chart) { 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 = chart_callSuper(this, UpdatesChart, [element, options, data]); _this2.chart.on('draw', function (data) { return _this2.draw(data); }); gpm_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_inherits(UpdatesChart, _Chart); return 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) { _superPropGet(UpdatesChart, "updateData", this, 3)([data]); // missing updates if (this.data.series[0] < 100) { this.element.closest('#updates').find('[data-update-packages]').fadeIn(); } } }]); }(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; ;// ./app/dashboard/cache.js function cache_typeof(o) { "@babel/helpers - typeof"; return cache_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, cache_typeof(o); } function cache_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function cache_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, cache_toPropertyKey(o.key), o); } } function cache_createClass(e, r, t) { return r && cache_defineProperties(e.prototype, r), t && cache_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function cache_toPropertyKey(t) { var i = cache_toPrimitive(t, "string"); return "symbol" == cache_typeof(i) ? i : i + ""; } function cache_toPrimitive(t, r) { if ("object" != cache_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != cache_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } 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); }); } return 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'); } }]); }(); var cache_Instance = new Cache(); ;// ./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'); } }); }); ;// ./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__(10246); // EXTERNAL MODULE: ./node_modules/debounce/index.js var debounce = __webpack_require__(17334); var debounce_default = /*#__PURE__*/__webpack_require__.n(debounce); // EXTERNAL MODULE: ./app/utils/storage.js var storage = __webpack_require__(95851); ;// ./app/pages/tree.js function tree_typeof(o) { "@babel/helpers - typeof"; return tree_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tree_typeof(o); } function tree_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function tree_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tree_toPropertyKey(o.key), o); } } function tree_createClass(e, r, t) { return r && tree_defineProperties(e.prototype, r), t && tree_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function tree_toPropertyKey(t) { var i = tree_toPrimitive(t, "string"); return "symbol" == tree_typeof(i) ? i : i + ""; } function tree_toPrimitive(t, r) { if ("object" != tree_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tree_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } 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](); }); } return 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'); } }; } }]); }(); var tree_Instance = new PagesTree('[data-toggle="children"]'); // EXTERNAL MODULE: ./node_modules/selectize/dist/js/selectize.js var selectize = __webpack_require__(72890); var selectize_default = /*#__PURE__*/__webpack_require__.n(selectize); ;// ./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'); } }; }); ;// ./app/pages/filter.js function filter_typeof(o) { "@babel/helpers - typeof"; return filter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, filter_typeof(o); } function filter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function filter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, filter_toPropertyKey(o.key), o); } } function filter_createClass(e, r, t) { return r && filter_defineProperties(e.prototype, r), t && filter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function filter_toPropertyKey(t) { var i = filter_toPrimitive(t, "string"); return "symbol" == filter_typeof(i) ? i : i + ""; } function filter_toPrimitive(t, r) { if ("object" != filter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != filter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* @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(); } return 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'] }); } }]); }(); var filter_Instance = new PagesFilter('input[name="page-filter"]', 'input[name="page-search"]'); // EXTERNAL MODULE: ./node_modules/speakingurl/index.js var speakingurl = __webpack_require__(91264); var speakingurl_default = /*#__PURE__*/__webpack_require__.n(speakingurl); ;// ./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); } }; ;// ./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]"], [data-remodal-id="modal-page-copy"] 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]"], [data-remodal-id="modal-page-copy"] 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) { getFields('title').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); } }); }); ;// ./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(); }); */ ;// ./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(); }); ;// ./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)); }); ;// ./app/pages/page/disable-buttons.js external_jQuery_default()('.disable-after-click').on('click', function () { external_jQuery_default()(this).addClass('pointer-events-disabled'); }); ;// ./app/utils/cookies.js function cookies_typeof(o) { "@babel/helpers - typeof"; return cookies_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, cookies_typeof(o); } /* * Cookies.js - 1.2.3-grav * https://github.com/ScottHamper/Cookies * * With SameSite support by Grav * * This is free and unencumbered software released into the public domain. */ var factory = function factory(window) { var _arguments = arguments; if (cookies_typeof(window.document) !== 'object') { throw new Error('Cookies.js requires a `window` with a `document` object'); } var _Cookies = function Cookies(key, value, options) { return _arguments.length === 1 ? _Cookies.get(key) : _Cookies.set(key, value, options); }; // Allows for setter injection in unit tests _Cookies._document = window.document; // Used to ensure cookie keys do not collide with // built-in `Object` properties _Cookies._cacheKeyPrefix = 'cookey.'; // Hurr hurr, :) _Cookies._maxExpireDate = new Date('Fri, 31 Dec 9999 23:59:59 UTC'); _Cookies.defaults = { path: '/', secure: false, sameSite: 'Lax' }; _Cookies.get = function (key) { if (_Cookies._cachedDocumentCookie !== _Cookies._document.cookie) { _Cookies._renewCache(); } var value = _Cookies._cache[_Cookies._cacheKeyPrefix + key]; return value === undefined ? undefined : decodeURIComponent(value); }; _Cookies.set = function (key, value, options) { options = _Cookies._getExtendedOptions(options); options.expires = _Cookies._getExpiresDate(value === undefined ? -1 : options.expires); _Cookies._document.cookie = _Cookies._generateCookieString(key, value, options); return _Cookies; }; _Cookies.expire = function (key, options) { return _Cookies.set(key, undefined, options); }; _Cookies._getExtendedOptions = function (options) { return { path: options && options.path || _Cookies.defaults.path, domain: options && options.domain || _Cookies.defaults.domain, expires: options && options.expires || _Cookies.defaults.expires, secure: options && options.secure !== undefined ? options.secure : _Cookies.defaults.secure, sameSite: options && options.sameSite || _Cookies.defaults.sameSite }; }; _Cookies._isValidDate = function (date) { return Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date.getTime()); }; _Cookies._getExpiresDate = function (expires, now) { now = now || new Date(); if (typeof expires === 'number') { expires = expires === Infinity ? _Cookies._maxExpireDate : new Date(now.getTime() + expires * 1000); } else if (typeof expires === 'string') { expires = new Date(expires); } if (expires && !_Cookies._isValidDate(expires)) { throw new Error('`expires` parameter cannot be converted to a valid Date instance'); } return expires; }; _Cookies._generateCookieString = function (key, value, options) { key = key.replace(/[^#$&+\^`|]/g, encodeURIComponent); key = key.replace(/\(/g, '%28').replace(/\)/g, '%29'); value = (value + '').replace(/[^!#$&-+\--:<-\[\]-~]/g, encodeURIComponent); options = options || {}; var cookieString = key + '=' + value; cookieString += options.path ? ';path=' + options.path : ''; cookieString += options.domain ? ';domain=' + options.domain : ''; cookieString += options.expires ? ';expires=' + options.expires.toUTCString() : ''; cookieString += options.secure ? ';secure' : ''; cookieString += options.sameSite ? ';SameSite=' + options.sameSite : ''; return cookieString; }; _Cookies._getCacheFromString = function (documentCookie) { var cookieCache = {}; var cookiesArray = documentCookie ? documentCookie.split('; ') : []; for (var i = 0; i < cookiesArray.length; i++) { var cookieKvp = _Cookies._getKeyValuePairFromCookieString(cookiesArray[i]); if (cookieCache[_Cookies._cacheKeyPrefix + cookieKvp.key] === undefined) { cookieCache[_Cookies._cacheKeyPrefix + cookieKvp.key] = cookieKvp.value; } } return cookieCache; }; _Cookies._getKeyValuePairFromCookieString = function (cookieString) { // "=" is a valid character in a cookie value according to RFC6265, so cannot `split('=')` var separatorIndex = cookieString.indexOf('='); // IE omits the "=" when the cookie value is an empty string separatorIndex = separatorIndex < 0 ? cookieString.length : separatorIndex; var key = cookieString.substr(0, separatorIndex); var decodedKey; try { decodedKey = decodeURIComponent(key); } catch (e) { if (console && typeof console.error === 'function') { console.error('Could not decode cookie with key "' + key + '"', e); } } return { key: decodedKey, value: cookieString.substr(separatorIndex + 1) // Defer decoding value until accessed }; }; _Cookies._renewCache = function () { _Cookies._cache = _Cookies._getCacheFromString(_Cookies._document.cookie); _Cookies._cachedDocumentCookie = _Cookies._document.cookie; }; _Cookies._areEnabled = function () { var testKey = 'cookies.js'; var areEnabled = _Cookies.set(testKey, 1).get(testKey) === '1'; _Cookies.expire(testKey); return areEnabled; }; _Cookies.enabled = _Cookies._areEnabled(); return _Cookies; }; __webpack_require__.g.Cookies = __webpack_require__.g && cookies_typeof(__webpack_require__.g.document) === 'object' ? factory(__webpack_require__.g) : factory; /* harmony default export */ const cookies = (__webpack_require__.g.Cookies); ;// ./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(_ref0) { var codemirror = _ref0.codemirror, button = _ref0.button, textarea = _ref0.textarea; replacer({ name: 'h5', replace: '##### $1', codemirror: codemirror, button: button, mode: 'replaceLine' }); } } }, { h6: { identifier: 'h6', label: '6', modes: ['gfm', 'markdown'], action: function action(_ref1) { var codemirror = _ref1.codemirror, button = _ref1.button, textarea = _ref1.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(_ref10) { var codemirror = _ref10.codemirror, button = _ref10.button, textarea = _ref10.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(_ref11) { var codemirror = _ref11.codemirror, button = _ref11.button, textarea = _ref11.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(_ref12) { var codemirror = _ref12.codemirror, button = _ref12.button, textarea = _ref12.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(_ref13) { var codemirror = _ref13.codemirror, button = _ref13.button, textarea = _ref13.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(_ref14) { var codemirror = _ref14.codemirror, button = _ref14.button, textarea = _ref14.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(_ref15) { var codemirror = _ref15.codemirror, button = _ref15.button, textarea = _ref15.textarea; replacer({ name: 'image', replace: '![$1]($cur)', codemirror: codemirror, button: button }); } } }, { blockquote: { identifier: 'blockquote', title: external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.BLOCKQUOTE, label: '', modes: ['gfm', 'markdown'], action: function action(_ref16) { var codemirror = _ref16.codemirror, button = _ref16.button, textarea = _ref16.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(_ref17) { var codemirror = _ref17.codemirror, button = _ref17.button, textarea = _ref17.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(_ref18) { var codemirror = _ref18.codemirror, button = _ref18.button, textarea = _ref18.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(_ref19) { var codemirror = _ref19.codemirror, button = _ref19.button, textarea = _ref19.textarea, ui = _ref19.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(_ref20) { var codemirror = _ref20.codemirror, button = _ref20.button, textarea = _ref20.textarea, ui = _ref20.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(_ref21) { var codemirror = _ref21.codemirror, button = _ref21.button, textarea = _ref21.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__(15237); var codemirror_default = /*#__PURE__*/__webpack_require__.n(codemirror); // EXTERNAL MODULE: ./node_modules/watchjs/src/watch.js var watch = __webpack_require__(72797); // EXTERNAL MODULE: ./node_modules/js-yaml/dist/js-yaml.mjs var js_yaml = __webpack_require__(20382); // EXTERNAL MODULE: ./node_modules/codemirror/mode/css/css.js var css = __webpack_require__(68656); // EXTERNAL MODULE: ./node_modules/codemirror/mode/gfm/gfm.js var gfm = __webpack_require__(21764); // EXTERNAL MODULE: ./node_modules/codemirror/mode/htmlmixed/htmlmixed.js var htmlmixed = __webpack_require__(12520); // EXTERNAL MODULE: ./node_modules/codemirror/mode/javascript/javascript.js var javascript = __webpack_require__(16792); // EXTERNAL MODULE: ./node_modules/codemirror/mode/markdown/markdown.js var markdown = __webpack_require__(47216); // EXTERNAL MODULE: ./node_modules/codemirror/mode/php/php.js var php = __webpack_require__(98000); // EXTERNAL MODULE: ./node_modules/codemirror/mode/sass/sass.js var sass = __webpack_require__(17246); // EXTERNAL MODULE: ./node_modules/codemirror/mode/twig/twig.js var twig = __webpack_require__(11956); // EXTERNAL MODULE: ./node_modules/codemirror/mode/xml/xml.js var xml = __webpack_require__(40576); // EXTERNAL MODULE: ./node_modules/codemirror/mode/yaml/yaml.js var yaml = __webpack_require__(20496); // EXTERNAL MODULE: ./node_modules/codemirror/addon/edit/continuelist.js var continuelist = __webpack_require__(97382); // EXTERNAL MODULE: ./node_modules/codemirror/addon/mode/overlay.js var overlay = __webpack_require__(32580); // EXTERNAL MODULE: ./node_modules/codemirror/addon/selection/active-line.js var active_line = __webpack_require__(50436); // EXTERNAL MODULE: ./node_modules/codemirror/addon/lint/lint.js var lint = __webpack_require__(71561); // EXTERNAL MODULE: ./node_modules/codemirror/addon/lint/lint.css var lint_lint = __webpack_require__(3419); // EXTERNAL MODULE: ./node_modules/codemirror/addon/lint/css-lint.js var css_lint = __webpack_require__(9279); // EXTERNAL MODULE: ./node_modules/codemirror/addon/lint/javascript-lint.js var javascript_lint = __webpack_require__(12089); // EXTERNAL MODULE: ./node_modules/codemirror/addon/lint/json-lint.js var json_lint = __webpack_require__(92154); // EXTERNAL MODULE: ./node_modules/codemirror/addon/lint/yaml-lint.js var yaml_lint = __webpack_require__(23857); ;// ./app/forms/fields/editor.js function editor_typeof(o) { "@babel/helpers - typeof"; return editor_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, editor_typeof(o); } function editor_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function editor_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, editor_toPropertyKey(o.key), o); } } function editor_createClass(e, r, t) { return r && editor_defineProperties(e.prototype, r), t && editor_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function editor_toPropertyKey(t) { var i = editor_toPrimitive(t, "string"); return "symbol" == editor_typeof(i) ? i : i + ""; } function editor_toPrimitive(t, r) { if ("object" != editor_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != editor_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } __webpack_require__.g.jsyaml = js_yaml/* default */.Ay; // 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(); }); }); } return 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); } }); } }]); }(); 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(); } return 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('