diff --git a/themes/grav/app/pages/page/media.js b/themes/grav/app/pages/page/media.js
index 283ffb01..9a0ad734 100644
--- a/themes/grav/app/pages/page/media.js
+++ b/themes/grav/app/pages/page/media.js
@@ -116,6 +116,7 @@ export default class PageMedia extends FilesField {
// accepted
this.updateThumbsSize();
+ this.updateMediaCount();
$('.dz-preview').prop('draggable', 'true');
}
@@ -127,6 +128,8 @@ export default class PageMedia extends FilesField {
onDropzoneRemovedFile(file, ...extra) {
super.onDropzoneRemovedFile(file, ...extra);
+
+ this.updateMediaCount();
if (this.sortable) {
this.sortable.options.onSort();
}
@@ -141,6 +144,11 @@ export default class PageMedia extends FilesField {
}
}
+ updateMediaCount() {
+ const element = this.container.closest('.pagemedia-field').find('[data-pagemedia-count]');
+ element.text(`(${this.dropzone.files.length})`);
+ }
+
attachDragDrop() {
this.container.delegate('[data-dz-insert]', 'click', (e) => {
let target = $(e.currentTarget).parent('.dz-preview').find('.dz-filename');
diff --git a/themes/grav/js/admin.min.js b/themes/grav/js/admin.min.js
index 00477788..040b52ca 100644
--- a/themes/grav/js/admin.min.js
+++ b/themes/grav/js/admin.min.js
@@ -435,7 +435,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PageMedia),\n/* harmony export */ \"updateMediaSizes\": () => (/* binding */ updateMediaSizes),\n/* harmony export */ \"updateMediaCollapseStatus\": () => (/* binding */ updateMediaCollapseStatus),\n/* harmony export */ \"Instance\": () => (/* binding */ Instance)\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/cookies.js */ \"./app/utils/cookies.js\");\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/request */ \"./app/utils/request.js\");\n/* harmony import */ var _forms_fields_files__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../forms/fields/files */ \"./app/forms/fields/files.js\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _forms_fields_editor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../forms/fields/editor */ \"./app/forms/fields/editor.js\");\n/* harmony import */ var sortablejs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! sortablejs */ \"./node_modules/sortablejs/modular/sortable.esm.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n\n\nvar previewTemplate = \"\\n
\").trim();\n\nvar PageMedia = /*#__PURE__*/function (_FilesField) {\n _inherits(PageMedia, _FilesField);\n\n var _super = _createSuper(PageMedia);\n\n function PageMedia() {\n var _this;\n\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$container = _ref.container,\n container = _ref$container === void 0 ? '#grav-dropzone' : _ref$container,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options;\n\n _classCallCheck(this, PageMedia);\n\n options = Object.assign(options, {\n previewTemplate: previewTemplate\n });\n _this = _super.call(this, {\n container: container,\n options: options\n });\n\n if (!_this.container.length) {\n return _possibleConstructorReturn(_this);\n }\n\n _this.urls = {\n fetch: \"\".concat(_this.container.data('media-url'), \"/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_4__.config.param_sep, \"listmedia\"),\n add: \"\".concat(_this.container.data('media-url'), \"/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_4__.config.param_sep, \"addmedia\"),\n \"delete\": \"\".concat(_this.container.data('media-url'), \"/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_4__.config.param_sep, \"delmedia\")\n };\n _this.dropzone.options.url = _this.urls.add;\n\n if (typeof _this.options.fetchMedia === 'undefined' || _this.options.fetchMedia) {\n _this.fetchMedia();\n }\n\n if (typeof _this.options.attachDragDrop === 'undefined' || _this.options.attachDragDrop) {\n _this.attachDragDrop();\n }\n\n var field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[name=\\\"\".concat(_this.container.data('dropzone-field'), \"\\\"]\"));\n\n if (field.length) {\n _this.sortable = new sortablejs__WEBPACK_IMPORTED_MODULE_6__[\"default\"](_this.container.get(0), {\n animation: 150,\n // forceFallback: true,\n setData: function setData(dataTransfer, target) {\n target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target);\n var uri = encodeURI(target.find('.dz-filename').text());\n var shortcode = (0,_forms_fields_files__WEBPACK_IMPORTED_MODULE_3__.UriToMarkdown)(uri);\n\n _this.dropzone.disable();\n\n target.addClass('hide-backface');\n dataTransfer.effectAllowed = 'copy';\n dataTransfer.setData('text', shortcode);\n },\n onSort: function onSort() {\n var names = [];\n\n _this.container.find('[data-dz-name]').each(function (index, file) {\n file = jquery__WEBPACK_IMPORTED_MODULE_0___default()(file);\n var name = file.text().trim();\n names.push(name);\n });\n\n field.val(names.join(','));\n }\n });\n }\n\n return _this;\n }\n\n _createClass(PageMedia, [{\n key: \"fetchMedia\",\n value: function fetchMedia() {\n var _this2 = this;\n\n var order = this.container.closest('.form-field').find('[name=\"data[header][media_order]\"]').val();\n var body = {\n uri: this.getURI(),\n order: order\n };\n var url = this.urls.fetch;\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(url, {\n method: 'post',\n body: body\n }, function (response) {\n var results = response.results;\n Object.keys(results).forEach(function (name) {\n var data = results[name];\n var mock = {\n name: name,\n size: data.size,\n accepted: true,\n extras: data\n };\n\n _this2.dropzone.files.push(mock);\n\n _this2.dropzone.options.addedfile.call(_this2.dropzone, mock);\n\n _this2.dropzone.options.thumbnail.call(_this2.dropzone, mock, data.url);\n });\n\n _this2.updateThumbsSize();\n\n _this2.container.find('.dz-preview').prop('draggable', 'true');\n });\n }\n }, {\n key: \"onDropzoneSending\",\n value: function onDropzoneSending(file, xhr, formData) {\n /*\n // Cannot call super because Safari and IE API don't implement `delete`\n super.onDropzoneSending(file, xhr, formData);\n formData.delete('task');\n */\n formData.append('name', this.options.dotNotation || file.name);\n formData.append('admin-nonce', grav_config__WEBPACK_IMPORTED_MODULE_4__.config.admin_nonce);\n formData.append('uri', this.getURI());\n }\n }, {\n key: \"onDropzoneComplete\",\n value: function onDropzoneComplete(file) {\n _get(_getPrototypeOf(PageMedia.prototype), \"onDropzoneComplete\", this).call(this, file);\n\n if (this.sortable) {\n this.sortable.options.onSort();\n } // accepted\n\n\n this.updateThumbsSize();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.dz-preview').prop('draggable', 'true');\n }\n }, {\n key: \"onDropzoneAddedFile\",\n value: function onDropzoneAddedFile(file) {\n for (var _len = arguments.length, extra = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n extra[_key - 1] = arguments[_key];\n }\n\n _get(_getPrototypeOf(PageMedia.prototype), \"onDropzoneAddedFile\", this).call(this, file, extra);\n\n this.updateThumbsSize();\n }\n }, {\n key: \"onDropzoneRemovedFile\",\n value: function onDropzoneRemovedFile(file) {\n var _get2;\n\n for (var _len2 = arguments.length, extra = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n extra[_key2 - 1] = arguments[_key2];\n }\n\n (_get2 = _get(_getPrototypeOf(PageMedia.prototype), \"onDropzoneRemovedFile\", this)).call.apply(_get2, [this, file].concat(extra));\n\n if (this.sortable) {\n this.sortable.options.onSort();\n }\n }\n }, {\n key: \"updateThumbsSize\",\n value: function updateThumbsSize() {\n var status = JSON.parse(_utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get('grav-admin-pagemedia') || '{}');\n\n if (status.width) {\n var input = this.container.closest('.pagemedia-field').find('.media-resizer');\n updateMediaSizes(input, status.width, false);\n }\n }\n }, {\n key: \"attachDragDrop\",\n value: function attachDragDrop() {\n var _this3 = this;\n\n this.container.delegate('[data-dz-insert]', 'click', function (e) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget).parent('.dz-preview').find('.dz-filename');\n var editor = _forms_fields_editor__WEBPACK_IMPORTED_MODULE_5__.Instance.editors.filter(function (index, editor) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default()(editor).attr('name') === 'data[content]';\n });\n\n if (editor.length) {\n editor = editor.data('codemirror');\n editor.focus();\n var filename = encodeURI(target.text());\n var shortcode = (0,_forms_fields_files__WEBPACK_IMPORTED_MODULE_3__.UriToMarkdown)(filename);\n editor.doc.replaceSelection(shortcode);\n }\n });\n this.container.delegate('[data-dz-view]', 'mouseenter', function (e) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);\n var file = target.parent('.dz-preview').find('.dz-filename');\n var filename = encodeURI(file.text());\n var URL = target.closest('[data-media-path]').data('media-path');\n\n var original = _this3.dropzone.files.filter(function (file) {\n return encodeURI(file.name) === filename;\n }).shift();\n\n original = original && (original.extras && original.extras.original || encodeURI(original.name));\n target.attr('href', \"\".concat(URL, \"/\").concat(original));\n });\n this.container.delegate('[data-dz-metadata]', 'click', function (e) {\n e.preventDefault();\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);\n var file = target.parent('.dz-preview').find('.dz-filename');\n var filename = encodeURI(file.text());\n var cleanName = file.text().replace('<', '<').replace('>', '>');\n var fileObj = _this3.dropzone.files.filter(function (file) {\n return file.name === __webpack_require__.g.decodeURI(filename);\n }).shift() || {};\n\n if (!fileObj.extras) {\n fileObj.extras = {\n metadata: []\n };\n }\n\n if (Array.isArray(fileObj.extras.metadata) && !fileObj.extras.metadata.length) {\n fileObj.extras.metadata = {\n '': \"\".concat(cleanName, \".meta.yaml doesn't exist\")\n };\n }\n\n fileObj = fileObj.extras;\n var modal_element = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').find('[data-remodal-id=\"metadata\"]');\n var modal = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[modal_element.data('remodal')];\n modal_element.find('h1 strong').html(cleanName);\n\n if (fileObj.url) {\n modal_element.find('.meta-preview').html(\"
\"));\n }\n\n var container = modal_element.find('.meta-content').html('').find('ul');\n Object.keys(fileObj.metadata).forEach(function (meta) {\n var cleanMeta = fileObj.metadata[meta].replace('<', '<').replace('>', '>');\n container.append(\"\".concat(meta ? meta + ':' : '', \" \").concat(cleanMeta, \"\"));\n });\n modal.open();\n });\n this.container.delegate('.dz-preview', 'dragstart', function (e) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);\n var uri = encodeURI(target.find('.dz-filename').text());\n var shortcode = (0,_forms_fields_files__WEBPACK_IMPORTED_MODULE_3__.UriToMarkdown)(uri);\n\n _this3.dropzone.disable();\n\n target.addClass('hide-backface');\n e.originalEvent.dataTransfer.effectAllowed = 'copy';\n e.originalEvent.dataTransfer.setData('text', shortcode);\n });\n this.container.delegate('.dz-preview', 'dragend', function (e) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);\n\n _this3.dropzone.enable();\n\n target.removeClass('hide-backface');\n });\n }\n }]);\n\n return PageMedia;\n}(_forms_fields_files__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n\nvar updateMediaSizes = function updateMediaSizes(input, width) {\n var store = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var status = JSON.parse(_utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get('grav-admin-pagemedia') || '{}');\n var height = 150 * width / 200;\n var media = input.closest('.pagemedia-field').find('.dz-details, [data-dz-thumbnail]');\n media.css({\n width: width,\n height: height\n });\n\n if (store) {\n var data = Object.assign({}, status, {\n width: width\n });\n _utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].set('grav-admin-pagemedia', JSON.stringify(data), {\n expires: Infinity\n });\n }\n};\nvar updateMediaCollapseStatus = function updateMediaCollapseStatus(element) {\n var store = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var status = JSON.parse(_utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get('grav-admin-pagemedia') || '{}');\n element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);\n var icon = element.find('i.fa');\n var container = element.closest('.pagemedia-field');\n var panel = container.find('.form-data');\n var slider = container.find('.media-resizer').parent();\n var isCollapsed = !icon.hasClass('fa-chevron-down');\n var collapsed = !isCollapsed;\n icon.removeClass('fa-chevron-down fa-chevron-right').addClass(isCollapsed ? 'fa-chevron-down' : 'fa-chevron-right');\n slider[isCollapsed ? 'removeClass' : 'addClass']('hidden');\n panel[isCollapsed ? 'slideDown' : 'slideUp']();\n\n if (store) {\n var data = Object.assign({}, status, {\n collapsed: collapsed\n });\n _utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].set('grav-admin-pagemedia', JSON.stringify(data), {\n expires: Infinity\n });\n }\n};\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('input', '.media-resizer', function (event) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var width = target.val();\n updateMediaSizes(target, width);\n});\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '.media-collapser', function (event) {\n updateMediaCollapseStatus(event.currentTarget);\n});\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).ready(function () {\n var status = JSON.parse(_utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get('grav-admin-pagemedia') || '{}');\n\n if (status.width) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.media-resizer').each(function (index, input) {\n input = jquery__WEBPACK_IMPORTED_MODULE_0___default()(input);\n updateMediaSizes(input, status.width, false);\n });\n }\n});\nvar Instance = new PageMedia();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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eUIsVUFBQ0MsS0FBRCxFQUFRbUMsS0FBUixFQUFrQjtBQUN6Q0EsTUFBQUEsS0FBSyxHQUFHckYsNkNBQUMsQ0FBQ3FGLEtBQUQsQ0FBVDtBQUNBQyxNQUFBQSxnQkFBZ0IsQ0FBQ0QsS0FBRCxFQUFRSixNQUFNLENBQUNHLEtBQWYsRUFBc0IsS0FBdEIsQ0FBaEI7QUFDRCxLQUhEO0FBSUQ7QUFDRixDQVJEO0FBVU8sSUFBSTdFLFFBQVEsR0FBRyxJQUFJVSxTQUFKLEVBQWYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BhZ2VzL3BhZ2UvbWVkaWEuanM/ZTlhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IENvb2tpZXMgZnJvbSAnLi4vLi4vdXRpbHMvY29va2llcy5qcyc7XG5pbXBvcnQgcmVxdWVzdCBmcm9tICcuLi8uLi91dGlscy9yZXF1ZXN0JztcbmltcG9ydCBGaWxlc0ZpZWxkLCB7IFVyaVRvTWFya2Rvd24gfSBmcm9tICcuLi8uLi9mb3Jtcy9maWVsZHMvZmlsZXMnO1xuaW1wb3J0IHsgY29uZmlnLCB0cmFuc2xhdGlvbnMgfSBmcm9tICdncmF2LWNvbmZpZyc7XG5pbXBvcnQgeyBJbnN0YW5jZSBhcyBFZGl0b3IgfSBmcm9tICcuLi8uLi9mb3Jtcy9maWVsZHMvZWRpdG9yJztcbmltcG9ydCBTb3J0YWJsZSBmcm9tICdzb3J0YWJsZWpzJztcblxuY29uc3QgcHJldmlld1RlbXBsYXRlID0gYFxuICAgIDxkaXYgY2xhc3M9XCJkei1wcmV2aWV3IGR6LWZpbGUtcHJldmlld1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImR6LWRldGFpbHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImR6LWZpbGVuYW1lXCI+PHNwYW4gZGF0YS1kei1uYW1lPjwvc3Bhbj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImR6LXNpemVcIiBkYXRhLWR6LXNpemU+PC9kaXY+XG4gICAgICAgIDxpbWcgZGF0YS1kei10aHVtYm5haWwgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImR6LXByb2dyZXNzXCI+PHNwYW4gY2xhc3M9XCJkei11cGxvYWRcIiBkYXRhLWR6LXVwbG9hZHByb2dyZXNzPjwvc3Bhbj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkei1zdWNjZXNzLW1hcmtcIj48c3Bhbj7inJQ8L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHotZXJyb3ItbWFya1wiPjxzcGFuPuKcmDwvc3Bhbj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkei1lcnJvci1tZXNzYWdlXCI+PHNwYW4gZGF0YS1kei1lcnJvcm1lc3NhZ2U+PC9zcGFuPjwvZGl2PlxuICAgICAgPGEgY2xhc3M9XCJkei1yZW1vdmVcIiB0aXRsZT1cIiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5ERUxFVEV9XCIgaHJlZj1cImphdmFzY3JpcHQ6dW5kZWZpbmVkO1wiIGRhdGEtZHotcmVtb3ZlPiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5ERUxFVEV9PC9hPlxuICAgICAgPGEgY2xhc3M9XCJkei1tZXRhZGF0YVwiIHRpdGxlPVwiJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLk1FVEFEQVRBfVwiIGhyZWY9XCIjXCIgdGFyZ2V0PVwiX2JsYW5rXCIgZGF0YS1kei1tZXRhZGF0YT4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uTUVUQURBVEF9PC9hPlxuICAgICAgPGEgY2xhc3M9XCJkei12aWV3XCIgdGl0bGU9XCIke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVklFV31cIiBocmVmPVwiI1wiIHRhcmdldD1cIl9ibGFua1wiIGRhdGEtZHotdmlldz4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVklFV308L2E+XG4gICAgICA8YSBjbGFzcz1cImR6LWluc2VydFwiIHRpdGxlPVwiJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLklOU0VSVH1cIiBocmVmPVwiamF2YXNjcmlwdDp1bmRlZmluZWQ7XCIgZGF0YS1kei1pbnNlcnQ+JHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLklOU0VSVH08L2E+XG4gICAgPC9kaXY+YC50cmltKCk7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhZ2VNZWRpYSBleHRlbmRzIEZpbGVzRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKHsgY29udGFpbmVyID0gJyNncmF2LWRyb3B6b25lJywgb3B0aW9ucyA9IHt9IH0gPSB7fSkge1xuICAgICAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7IHByZXZpZXdUZW1wbGF0ZSB9KTtcbiAgICAgICAgc3VwZXIoeyBjb250YWluZXIsIG9wdGlvbnMgfSk7XG4gICAgICAgIGlmICghdGhpcy5jb250YWluZXIubGVuZ3RoKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHRoaXMudXJscyA9IHtcbiAgICAgICAgICAgIGZldGNoOiBgJHt0aGlzLmNvbnRhaW5lci5kYXRhKCdtZWRpYS11cmwnKX0vdGFzayR7Y29uZmlnLnBhcmFtX3NlcH1saXN0bWVkaWFgLFxuICAgICAgICAgICAgYWRkOiBgJHt0aGlzLmNvbnRhaW5lci5kYXRhKCdtZWRpYS11cmwnKX0vdGFzayR7Y29uZmlnLnBhcmFtX3NlcH1hZGRtZWRpYWAsXG4gICAgICAgICAgICBkZWxldGU6IGAke3RoaXMuY29udGFpbmVyLmRhdGEoJ21lZGlhLXVybCcpfS90YXNrJHtjb25maWcucGFyYW1fc2VwfWRlbG1lZGlhYFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZHJvcHpvbmUub3B0aW9ucy51cmwgPSB0aGlzLnVybHMuYWRkO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLmZldGNoTWVkaWEgPT09ICd1bmRlZmluZWQnIHx8IHRoaXMub3B0aW9ucy5mZXRjaE1lZGlhKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoTWVkaWEoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLmF0dGFjaERyYWdEcm9wID09PSAndW5kZWZpbmVkJyB8fCB0aGlzLm9wdGlvbnMuYXR0YWNoRHJhZ0Ryb3ApIHtcbiAgICAgICAgICAgIHRoaXMuYXR0YWNoRHJhZ0Ryb3AoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpZWxkID0gJChgW25hbWU9XCIke3RoaXMuY29udGFpbmVyLmRhdGEoJ2Ryb3B6b25lLWZpZWxkJyl9XCJdYCk7XG5cbiAgICAgICAgaWYgKGZpZWxkLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zb3J0YWJsZSA9IG5ldyBTb3J0YWJsZSh0aGlzLmNvbnRhaW5lci5nZXQoMCksIHtcbiAgICAgICAgICAgICAgICBhbmltYXRpb246IDE1MCxcbiAgICAgICAgICAgICAgICAvLyBmb3JjZUZhbGxiYWNrOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNldERhdGE6IChkYXRhVHJhbnNmZXIsIHRhcmdldCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSAkKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCB1cmkgPSBlbmNvZGVVUkkodGFyZ2V0LmZpbmQoJy5kei1maWxlbmFtZScpLnRleHQoKSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzaG9ydGNvZGUgPSBVcmlUb01hcmtkb3duKHVyaSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcHpvbmUuZGlzYWJsZSgpO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuYWRkQ2xhc3MoJ2hpZGUtYmFja2ZhY2UnKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAnY29weSc7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFUcmFuc2Zlci5zZXREYXRhKCd0ZXh0Jywgc2hvcnRjb2RlKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uU29ydDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmFtZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIuZmluZCgnW2RhdGEtZHotbmFtZV0nKS5lYWNoKChpbmRleCwgZmlsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9ICQoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gZmlsZS50ZXh0KCkudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMucHVzaChuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgZmllbGQudmFsKG5hbWVzLmpvaW4oJywnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmZXRjaE1lZGlhKCkge1xuICAgICAgICBjb25zdCBvcmRlciA9IHRoaXMuY29udGFpbmVyLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJykuZmluZCgnW25hbWU9XCJkYXRhW2hlYWRlcl1bbWVkaWFfb3JkZXJdXCJdJykudmFsKCk7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB7IHVyaTogdGhpcy5nZXRVUkkoKSwgb3JkZXIgfTtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMudXJscy5mZXRjaDtcblxuICAgICAgICByZXF1ZXN0KHVybCwgeyBtZXRob2Q6ICdwb3N0JywgYm9keSB9LCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHRzID0gcmVzcG9uc2UucmVzdWx0cztcblxuICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzdWx0cykuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gcmVzdWx0c1tuYW1lXTtcbiAgICAgICAgICAgICAgICBsZXQgbW9jayA9IHsgbmFtZSwgc2l6ZTogZGF0YS5zaXplLCBhY2NlcHRlZDogdHJ1ZSwgZXh0cmFzOiBkYXRhIH07XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRyb3B6b25lLmZpbGVzLnB1c2gobW9jayk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wem9uZS5vcHRpb25zLmFkZGVkZmlsZS5jYWxsKHRoaXMuZHJvcHpvbmUsIG1vY2spO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcHpvbmUub3B0aW9ucy50aHVtYm5haWwuY2FsbCh0aGlzLmRyb3B6b25lLCBtb2NrLCBkYXRhLnVybCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVUaHVtYnNTaXplKCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5maW5kKCcuZHotcHJldmlldycpLnByb3AoJ2RyYWdnYWJsZScsICd0cnVlJyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRHJvcHpvbmVTZW5kaW5nKGZpbGUsIHhociwgZm9ybURhdGEpIHtcbiAgICAgICAgLypcbiAgICAgICAgLy8gQ2Fubm90IGNhbGwgc3VwZXIgYmVjYXVzZSBTYWZhcmkgYW5kIElFIEFQSSBkb24ndCBpbXBsZW1lbnQgYGRlbGV0ZWBcbiAgICAgICAgc3VwZXIub25Ecm9wem9uZVNlbmRpbmcoZmlsZSwgeGhyLCBmb3JtRGF0YSk7XG4gICAgICAgIGZvcm1EYXRhLmRlbGV0ZSgndGFzaycpO1xuICAgICAgICAqL1xuXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnbmFtZScsIHRoaXMub3B0aW9ucy5kb3ROb3RhdGlvbiB8fCBmaWxlLm5hbWUpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2FkbWluLW5vbmNlJywgY29uZmlnLmFkbWluX25vbmNlKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCd1cmknLCB0aGlzLmdldFVSSSgpKTtcbiAgICB9XG5cbiAgICBvbkRyb3B6b25lQ29tcGxldGUoZmlsZSkge1xuICAgICAgICBzdXBlci5vbkRyb3B6b25lQ29tcGxldGUoZmlsZSk7XG4gICAgICAgIGlmICh0aGlzLnNvcnRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnNvcnRhYmxlLm9wdGlvbnMub25Tb3J0KCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhY2NlcHRlZFxuICAgICAgICB0aGlzLnVwZGF0ZVRodW1ic1NpemUoKTtcbiAgICAgICAgJCgnLmR6LXByZXZpZXcnKS5wcm9wKCdkcmFnZ2FibGUnLCAndHJ1ZScpO1xuICAgIH1cblxuICAgIG9uRHJvcHpvbmVBZGRlZEZpbGUoZmlsZSwgLi4uZXh0cmEpIHtcbiAgICAgIHN1cGVyLm9uRHJvcHpvbmVBZGRlZEZpbGUoZmlsZSwgZXh0cmEpO1xuXG4gICAgICB0aGlzLnVwZGF0ZVRodW1ic1NpemUoKTtcbiAgICB9XG5cbiAgICBvbkRyb3B6b25lUmVtb3ZlZEZpbGUoZmlsZSwgLi4uZXh0cmEpIHtcbiAgICAgICAgc3VwZXIub25Ecm9wem9uZVJlbW92ZWRGaWxlKGZpbGUsIC4uLmV4dHJhKTtcbiAgICAgICAgaWYgKHRoaXMuc29ydGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydGFibGUub3B0aW9ucy5vblNvcnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVRodW1ic1NpemUoKSB7XG4gICAgICBjb25zdCBzdGF0dXMgPSBKU09OLnBhcnNlKENvb2tpZXMuZ2V0KCdncmF2LWFkbWluLXBhZ2VtZWRpYScpIHx8ICd7fScpO1xuXG4gICAgICBpZiAoc3RhdHVzLndpZHRoKSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5jb250YWluZXIuY2xvc2VzdCgnLnBhZ2VtZWRpYS1maWVsZCcpLmZpbmQoJy5tZWRpYS1yZXNpemVyJyk7XG4gICAgICAgIHVwZGF0ZU1lZGlhU2l6ZXMoaW5wdXQsIHN0YXR1cy53aWR0aCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGF0dGFjaERyYWdEcm9wKCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lci5kZWxlZ2F0ZSgnW2RhdGEtZHotaW5zZXJ0XScsICdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0gJChlLmN1cnJlbnRUYXJnZXQpLnBhcmVudCgnLmR6LXByZXZpZXcnKS5maW5kKCcuZHotZmlsZW5hbWUnKTtcbiAgICAgICAgICAgIGxldCBlZGl0b3IgPSBFZGl0b3IuZWRpdG9ycy5maWx0ZXIoKGluZGV4LCBlZGl0b3IpID0+ICQoZWRpdG9yKS5hdHRyKCduYW1lJykgPT09ICdkYXRhW2NvbnRlbnRdJyk7XG5cbiAgICAgICAgICAgIGlmIChlZGl0b3IubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZWRpdG9yID0gZWRpdG9yLmRhdGEoJ2NvZGVtaXJyb3InKTtcbiAgICAgICAgICAgICAgICBlZGl0b3IuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IGVuY29kZVVSSSh0YXJnZXQudGV4dCgpKTtcbiAgICAgICAgICAgICAgICBsZXQgc2hvcnRjb2RlID0gVXJpVG9NYXJrZG93bihmaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgZWRpdG9yLmRvYy5yZXBsYWNlU2VsZWN0aW9uKHNob3J0Y29kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29udGFpbmVyLmRlbGVnYXRlKCdbZGF0YS1kei12aWV3XScsICdtb3VzZWVudGVyJywgKGUpID0+IHtcbiAgICAgICAgICAgIGxldCB0YXJnZXQgPSAkKGUuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICBsZXQgZmlsZSA9IHRhcmdldC5wYXJlbnQoJy5kei1wcmV2aWV3JykuZmluZCgnLmR6LWZpbGVuYW1lJyk7XG4gICAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBlbmNvZGVVUkkoZmlsZS50ZXh0KCkpO1xuICAgICAgICAgICAgbGV0IFVSTCA9IHRhcmdldC5jbG9zZXN0KCdbZGF0YS1tZWRpYS1wYXRoXScpLmRhdGEoJ21lZGlhLXBhdGgnKTtcbiAgICAgICAgICAgIGxldCBvcmlnaW5hbCA9IHRoaXMuZHJvcHpvbmUuZmlsZXMuZmlsdGVyKChmaWxlKSA9PiBlbmNvZGVVUkkoZmlsZS5uYW1lKSA9PT0gZmlsZW5hbWUpLnNoaWZ0KCk7XG5cbiAgICAgICAgICAgIG9yaWdpbmFsID0gb3JpZ2luYWwgJiYgKChvcmlnaW5hbC5leHRyYXMgJiYgb3JpZ2luYWwuZXh0cmFzLm9yaWdpbmFsKSB8fCBlbmNvZGVVUkkob3JpZ2luYWwubmFtZSkpO1xuXG4gICAgICAgICAgICB0YXJnZXQuYXR0cignaHJlZicsIGAke1VSTH0vJHtvcmlnaW5hbH1gKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb250YWluZXIuZGVsZWdhdGUoJ1tkYXRhLWR6LW1ldGFkYXRhXScsICdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAkKGUuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gdGFyZ2V0LnBhcmVudCgnLmR6LXByZXZpZXcnKS5maW5kKCcuZHotZmlsZW5hbWUnKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gZW5jb2RlVVJJKGZpbGUudGV4dCgpKTtcbiAgICAgICAgICAgIGNvbnN0IGNsZWFuTmFtZSA9IGZpbGUudGV4dCgpLnJlcGxhY2UoJzwnLCAnJmx0OycpLnJlcGxhY2UoJz4nLCAnJmd0OycpO1xuXG4gICAgICAgICAgICBsZXQgZmlsZU9iaiA9IHRoaXMuZHJvcHpvbmUuZmlsZXMuZmlsdGVyKChmaWxlKSA9PiBmaWxlLm5hbWUgPT09IGdsb2JhbC5kZWNvZGVVUkkoZmlsZW5hbWUpKS5zaGlmdCgpIHx8IHt9O1xuXG4gICAgICAgICAgICBpZiAoIWZpbGVPYmouZXh0cmFzKSB7XG4gICAgICAgICAgICAgICAgZmlsZU9iai5leHRyYXMgPSB7IG1ldGFkYXRhOiBbXSB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWxlT2JqLmV4dHJhcy5tZXRhZGF0YSkgJiYgIWZpbGVPYmouZXh0cmFzLm1ldGFkYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZpbGVPYmouZXh0cmFzLm1ldGFkYXRhID0geyAnJzogYCR7Y2xlYW5OYW1lfS5tZXRhLnlhbWwgZG9lc24ndCBleGlzdGAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZmlsZU9iaiA9IGZpbGVPYmouZXh0cmFzO1xuXG4gICAgICAgICAgICBjb25zdCBtb2RhbF9lbGVtZW50ID0gJCgnYm9keScpLmZpbmQoJ1tkYXRhLXJlbW9kYWwtaWQ9XCJtZXRhZGF0YVwiXScpO1xuICAgICAgICAgICAgY29uc3QgbW9kYWwgPSAkLnJlbW9kYWwubG9va3VwW21vZGFsX2VsZW1lbnQuZGF0YSgncmVtb2RhbCcpXTtcblxuICAgICAgICAgICAgbW9kYWxfZWxlbWVudC5maW5kKCdoMSBzdHJvbmcnKS5odG1sKGNsZWFuTmFtZSk7XG4gICAgICAgICAgICBpZiAoZmlsZU9iai51cmwpIHtcbiAgICAgICAgICAgICAgICBtb2RhbF9lbGVtZW50LmZpbmQoJy5tZXRhLXByZXZpZXcnKS5odG1sKGA8aW1nIHNyYz1cIiR7ZmlsZU9iai51cmx9XCIgLz5gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gbW9kYWxfZWxlbWVudC5maW5kKCcubWV0YS1jb250ZW50JykuaHRtbCgnPHVsIC8+JykuZmluZCgndWwnKTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZpbGVPYmoubWV0YWRhdGEpLmZvckVhY2goKG1ldGEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGVhbk1ldGEgPSBmaWxlT2JqLm1ldGFkYXRhW21ldGFdLnJlcGxhY2UoJzwnLCAnJmx0OycpLnJlcGxhY2UoJz4nLCAnJmd0OycpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoYDxsaT48c3Ryb25nPiR7bWV0YSA/IG1ldGEgKyAnOicgOiAnJ308L3N0cm9uZz4gJHtjbGVhbk1ldGF9PC9saT5gKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBtb2RhbC5vcGVuKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29udGFpbmVyLmRlbGVnYXRlKCcuZHotcHJldmlldycsICdkcmFnc3RhcnQnLCAoZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHRhcmdldCA9ICQoZS5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgICAgIGxldCB1cmkgPSBlbmNvZGVVUkkodGFyZ2V0LmZpbmQoJy5kei1maWxlbmFtZScpLnRleHQoKSk7XG4gICAgICAgICAgICBsZXQgc2hvcnRjb2RlID0gVXJpVG9NYXJrZG93bih1cmkpO1xuICAgICAgICAgICAgdGhpcy5kcm9wem9uZS5kaXNhYmxlKCk7XG4gICAgICAgICAgICB0YXJnZXQuYWRkQ2xhc3MoJ2hpZGUtYmFja2ZhY2UnKTtcbiAgICAgICAgICAgIGUub3JpZ2luYWxFdmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICdjb3B5JztcbiAgICAgICAgICAgIGUub3JpZ2luYWxFdmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dCcsIHNob3J0Y29kZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29udGFpbmVyLmRlbGVnYXRlKCcuZHotcHJldmlldycsICdkcmFnZW5kJywgKGUpID0+IHtcbiAgICAgICAgICAgIGxldCB0YXJnZXQgPSAkKGUuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICB0aGlzLmRyb3B6b25lLmVuYWJsZSgpO1xuICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZUNsYXNzKCdoaWRlLWJhY2tmYWNlJyk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZU1lZGlhU2l6ZXMgPSAoaW5wdXQsIHdpZHRoLCBzdG9yZSA9IHRydWUpID0+IHtcbiAgY29uc3Qgc3RhdHVzID0gSlNPTi5wYXJzZShDb29raWVzLmdldCgnZ3Jhdi1hZG1pbi1wYWdlbWVkaWEnKSB8fCAne30nKTtcblxuICBjb25zdCBoZWlnaHQgPSAxNTAgKiB3aWR0aCAvIDIwMDtcbiAgY29uc3QgbWVkaWEgPSBpbnB1dC5jbG9zZXN0KCcucGFnZW1lZGlhLWZpZWxkJykuZmluZCgnLmR6LWRldGFpbHMsIFtkYXRhLWR6LXRodW1ibmFpbF0nKTtcblxuICBtZWRpYS5jc3MoeyB3aWR0aCwgaGVpZ2h0IH0pO1xuXG4gIGlmIChzdG9yZSkge1xuICAgIGNvbnN0IGRhdGEgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0dXMsIHsgd2lkdGggfSk7XG4gICAgQ29va2llcy5zZXQoJ2dyYXYtYWRtaW4tcGFnZW1lZGlhJywgSlNPTi5zdHJpbmdpZnkoZGF0YSksIHsgZXhwaXJlczogSW5maW5pdHkgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVNZWRpYUNvbGxhcHNlU3RhdHVzID0gKGVsZW1lbnQsIHN0b3JlID0gdHJ1ZSkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBKU09OLnBhcnNlKENvb2tpZXMuZ2V0KCdncmF2LWFkbWluLXBhZ2VtZWRpYScpIHx8ICd7fScpO1xuXG4gIGVsZW1lbnQgPSAkKGVsZW1lbnQpO1xuICBjb25zdCBpY29uID0gZWxlbWVudC5maW5kKCdpLmZhJyk7XG4gIGNvbnN0IGNvbnRhaW5lciA9IGVsZW1lbnQuY2xvc2VzdCgnLnBhZ2VtZWRpYS1maWVsZCcpO1xuICBjb25zdCBwYW5lbCA9IGNvbnRhaW5lci5maW5kKCcuZm9ybS1kYXRhJyk7XG4gIGNvbnN0IHNsaWRlciA9IGNvbnRhaW5lci5maW5kKCcubWVkaWEtcmVzaXplcicpLnBhcmVudCgpO1xuXG4gIGNvbnN0IGlzQ29sbGFwc2VkID0gIWljb24uaGFzQ2xhc3MoJ2ZhLWNoZXZyb24tZG93bicpO1xuICBjb25zdCBjb2xsYXBzZWQgPSAhaXNDb2xsYXBzZWQ7XG5cbiAgaWNvbi5yZW1vdmVDbGFzcygnZmEtY2hldnJvbi1kb3duIGZhLWNoZXZyb24tcmlnaHQnKS5hZGRDbGFzcyhpc0NvbGxhcHNlZCA/ICdmYS1jaGV2cm9uLWRvd24nIDogJ2ZhLWNoZXZyb24tcmlnaHQnKTtcbiAgc2xpZGVyW2lzQ29sbGFwc2VkID8gJ3JlbW92ZUNsYXNzJyA6ICdhZGRDbGFzcyddKCdoaWRkZW4nKTtcbiAgcGFuZWxbaXNDb2xsYXBzZWQgPyAnc2xpZGVEb3duJyA6ICdzbGlkZVVwJ10oKTtcblxuICBpZiAoc3RvcmUpIHtcbiAgICBjb25zdCBkYXRhID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdHVzLCB7IGNvbGxhcHNlZCB9KTtcbiAgICBDb29raWVzLnNldCgnZ3Jhdi1hZG1pbi1wYWdlbWVkaWEnLCBKU09OLnN0cmluZ2lmeShkYXRhKSwgeyBleHBpcmVzOiBJbmZpbml0eSB9KTtcbiAgfVxufTtcblxuJChkb2N1bWVudCkub24oJ2lucHV0JywgJy5tZWRpYS1yZXNpemVyJywgKGV2ZW50KSA9PiB7XG4gIGNvbnN0IHRhcmdldCA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gIGNvbnN0IHdpZHRoID0gdGFyZ2V0LnZhbCgpO1xuXG4gIHVwZGF0ZU1lZGlhU2l6ZXModGFyZ2V0LCB3aWR0aCk7XG59KTtcblxuJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5tZWRpYS1jb2xsYXBzZXInLCAoZXZlbnQpID0+IHtcbiAgdXBkYXRlTWVkaWFDb2xsYXBzZVN0YXR1cyhldmVudC5jdXJyZW50VGFyZ2V0KTtcbn0pO1xuXG4kKGRvY3VtZW50KS5yZWFkeSgoKSA9PiB7XG4gIGNvbnN0IHN0YXR1cyA9IEpTT04ucGFyc2UoQ29va2llcy5nZXQoJ2dyYXYtYWRtaW4tcGFnZW1lZGlhJykgfHwgJ3t9Jyk7XG4gIGlmIChzdGF0dXMud2lkdGgpIHtcbiAgICAkKCcubWVkaWEtcmVzaXplcicpLmVhY2goKGluZGV4LCBpbnB1dCkgPT4ge1xuICAgICAgaW5wdXQgPSAkKGlucHV0KTtcbiAgICAgIHVwZGF0ZU1lZGlhU2l6ZXMoaW5wdXQsIHN0YXR1cy53aWR0aCwgZmFsc2UpO1xuICAgIH0pO1xuICB9XG59KTtcblxuZXhwb3J0IGxldCBJbnN0YW5jZSA9IG5ldyBQYWdlTWVkaWEoKTtcbiJdLCJuYW1lcyI6WyIkIiwiQ29va2llcyIsInJlcXVlc3QiLCJGaWxlc0ZpZWxkIiwiVXJpVG9NYXJrZG93biIsImNvbmZpZyIsInRyYW5zbGF0aW9ucyIsIkluc3RhbmNlIiwiRWRpdG9yIiwiU29ydGFibGUiLCJwcmV2aWV3VGVtcGxhdGUiLCJQTFVHSU5fQURNSU4iLCJERUxFVEUiLCJNRVRBREFUQSIsIlZJRVciLCJJTlNFUlQiLCJ0cmltIiwiUGFnZU1lZGlhIiwiY29udGFpbmVyIiwib3B0aW9ucyIsIk9iamVjdCIsImFzc2lnbiIsImxlbmd0aCIsInVybHMiLCJmZXRjaCIsImRhdGEiLCJwYXJhbV9zZXAiLCJhZGQiLCJkcm9wem9uZSIsInVybCIsImZldGNoTWVkaWEiLCJhdHRhY2hEcmFnRHJvcCIsImZpZWxkIiwic29ydGFibGUiLCJnZXQiLCJhbmltYXRpb24iLCJzZXREYXRhIiwiZGF0YVRyYW5zZmVyIiwidGFyZ2V0IiwidXJpIiwiZW5jb2RlVVJJIiwiZmluZCIsInRleHQiLCJzaG9ydGNvZGUiLCJkaXNhYmxlIiwiYWRkQ2xhc3MiLCJlZmZlY3RBbGxvd2VkIiwib25Tb3J0IiwibmFtZXMiLCJlYWNoIiwiaW5kZXgiLCJmaWxlIiwibmFtZSIsInB1c2giLCJ2YWwiLCJqb2luIiwib3JkZXIiLCJjbG9zZXN0IiwiYm9keSIsImdldFVSSSIsIm1ldGhvZCIsInJlc3BvbnNlIiwicmVzdWx0cyIsImtleXMiLCJmb3JFYWNoIiwibW9jayIsInNpemUiLCJhY2NlcHRlZCIsImV4dHJhcyIsImZpbGVzIiwiYWRkZWRmaWxlIiwiY2FsbCIsInRodW1ibmFpbCIsInVwZGF0ZVRodW1ic1NpemUiLCJwcm9wIiwieGhyIiwiZm9ybURhdGEiLCJhcHBlbmQiLCJkb3ROb3RhdGlvbiIsImFkbWluX25vbmNlIiwiZXh0cmEiLCJzdGF0dXMiLCJKU09OIiwicGFyc2UiLCJ3aWR0aCIsImlucHV0IiwidXBkYXRlTWVkaWFTaXplcyIsImRlbGVnYXRlIiwiZSIsImN1cnJlbnRUYXJnZXQiLCJwYXJlbnQiLCJlZGl0b3IiLCJlZGl0b3JzIiwiZmlsdGVyIiwiYXR0ciIsImZvY3VzIiwiZmlsZW5hbWUiLCJkb2MiLCJyZXBsYWNlU2VsZWN0aW9uIiwiVVJMIiwib3JpZ2luYWwiLCJzaGlmdCIsInByZXZlbnREZWZhdWx0IiwiY2xlYW5OYW1lIiwicmVwbGFjZSIsImZpbGVPYmoiLCJnbG9iYWwiLCJkZWNvZGVVUkkiLCJtZXRhZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsIm1vZGFsX2VsZW1lbnQiLCJtb2RhbCIsInJlbW9kYWwiLCJsb29rdXAiLCJodG1sIiwibWV0YSIsImNsZWFuTWV0YSIsIm9wZW4iLCJvcmlnaW5hbEV2ZW50IiwiZW5hYmxlIiwicmVtb3ZlQ2xhc3MiLCJzdG9yZSIsImhlaWdodCIsIm1lZGlhIiwiY3NzIiwic2V0Iiwic3RyaW5naWZ5IiwiZXhwaXJlcyIsIkluZmluaXR5IiwidXBkYXRlTWVkaWFDb2xsYXBzZVN0YXR1cyIsImVsZW1lbnQiLCJpY29uIiwicGFuZWwiLCJzbGlkZXIiLCJpc0NvbGxhcHNlZCIsImhhc0NsYXNzIiwiY29sbGFwc2VkIiwiZG9jdW1lbnQiLCJvbiIsImV2ZW50IiwicmVhZHkiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/pages/page/media.js\n");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PageMedia),\n/* harmony export */ \"updateMediaSizes\": () => (/* binding */ updateMediaSizes),\n/* harmony export */ \"updateMediaCollapseStatus\": () => (/* binding */ updateMediaCollapseStatus),\n/* harmony export */ \"Instance\": () => (/* binding */ Instance)\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/cookies.js */ \"./app/utils/cookies.js\");\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/request */ \"./app/utils/request.js\");\n/* harmony import */ var _forms_fields_files__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../forms/fields/files */ \"./app/forms/fields/files.js\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _forms_fields_editor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../forms/fields/editor */ \"./app/forms/fields/editor.js\");\n/* harmony import */ var sortablejs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! sortablejs */ \"./node_modules/sortablejs/modular/sortable.esm.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n\n\nvar previewTemplate = \"\\n \").trim();\n\nvar PageMedia = /*#__PURE__*/function (_FilesField) {\n _inherits(PageMedia, _FilesField);\n\n var _super = _createSuper(PageMedia);\n\n function PageMedia() {\n var _this;\n\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$container = _ref.container,\n container = _ref$container === void 0 ? '#grav-dropzone' : _ref$container,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options;\n\n _classCallCheck(this, PageMedia);\n\n options = Object.assign(options, {\n previewTemplate: previewTemplate\n });\n _this = _super.call(this, {\n container: container,\n options: options\n });\n\n if (!_this.container.length) {\n return _possibleConstructorReturn(_this);\n }\n\n _this.urls = {\n fetch: \"\".concat(_this.container.data('media-url'), \"/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_4__.config.param_sep, \"listmedia\"),\n add: \"\".concat(_this.container.data('media-url'), \"/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_4__.config.param_sep, \"addmedia\"),\n \"delete\": \"\".concat(_this.container.data('media-url'), \"/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_4__.config.param_sep, \"delmedia\")\n };\n _this.dropzone.options.url = _this.urls.add;\n\n if (typeof _this.options.fetchMedia === 'undefined' || _this.options.fetchMedia) {\n _this.fetchMedia();\n }\n\n if (typeof _this.options.attachDragDrop === 'undefined' || _this.options.attachDragDrop) {\n _this.attachDragDrop();\n }\n\n var field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[name=\\\"\".concat(_this.container.data('dropzone-field'), \"\\\"]\"));\n\n if (field.length) {\n _this.sortable = new sortablejs__WEBPACK_IMPORTED_MODULE_6__[\"default\"](_this.container.get(0), {\n animation: 150,\n // forceFallback: true,\n setData: function setData(dataTransfer, target) {\n target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target);\n var uri = encodeURI(target.find('.dz-filename').text());\n var shortcode = (0,_forms_fields_files__WEBPACK_IMPORTED_MODULE_3__.UriToMarkdown)(uri);\n\n _this.dropzone.disable();\n\n target.addClass('hide-backface');\n dataTransfer.effectAllowed = 'copy';\n dataTransfer.setData('text', shortcode);\n },\n onSort: function onSort() {\n var names = [];\n\n _this.container.find('[data-dz-name]').each(function (index, file) {\n file = jquery__WEBPACK_IMPORTED_MODULE_0___default()(file);\n var name = file.text().trim();\n names.push(name);\n });\n\n field.val(names.join(','));\n }\n });\n }\n\n return _this;\n }\n\n _createClass(PageMedia, [{\n key: \"fetchMedia\",\n value: function fetchMedia() {\n var _this2 = this;\n\n var order = this.container.closest('.form-field').find('[name=\"data[header][media_order]\"]').val();\n var body = {\n uri: this.getURI(),\n order: order\n };\n var url = this.urls.fetch;\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(url, {\n method: 'post',\n body: body\n }, function (response) {\n var results = response.results;\n Object.keys(results).forEach(function (name) {\n var data = results[name];\n var mock = {\n name: name,\n size: data.size,\n accepted: true,\n extras: data\n };\n\n _this2.dropzone.files.push(mock);\n\n _this2.dropzone.options.addedfile.call(_this2.dropzone, mock);\n\n _this2.dropzone.options.thumbnail.call(_this2.dropzone, mock, data.url);\n });\n\n _this2.updateThumbsSize();\n\n _this2.container.find('.dz-preview').prop('draggable', 'true');\n });\n }\n }, {\n key: \"onDropzoneSending\",\n value: function onDropzoneSending(file, xhr, formData) {\n /*\n // Cannot call super because Safari and IE API don't implement `delete`\n super.onDropzoneSending(file, xhr, formData);\n formData.delete('task');\n */\n formData.append('name', this.options.dotNotation || file.name);\n formData.append('admin-nonce', grav_config__WEBPACK_IMPORTED_MODULE_4__.config.admin_nonce);\n formData.append('uri', this.getURI());\n }\n }, {\n key: \"onDropzoneComplete\",\n value: function onDropzoneComplete(file) {\n _get(_getPrototypeOf(PageMedia.prototype), \"onDropzoneComplete\", this).call(this, file);\n\n if (this.sortable) {\n this.sortable.options.onSort();\n } // accepted\n\n\n this.updateThumbsSize();\n this.updateMediaCount();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.dz-preview').prop('draggable', 'true');\n }\n }, {\n key: \"onDropzoneAddedFile\",\n value: function onDropzoneAddedFile(file) {\n for (var _len = arguments.length, extra = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n extra[_key - 1] = arguments[_key];\n }\n\n _get(_getPrototypeOf(PageMedia.prototype), \"onDropzoneAddedFile\", this).call(this, file, extra);\n\n this.updateThumbsSize();\n }\n }, {\n key: \"onDropzoneRemovedFile\",\n value: function onDropzoneRemovedFile(file) {\n var _get2;\n\n for (var _len2 = arguments.length, extra = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n extra[_key2 - 1] = arguments[_key2];\n }\n\n (_get2 = _get(_getPrototypeOf(PageMedia.prototype), \"onDropzoneRemovedFile\", this)).call.apply(_get2, [this, file].concat(extra));\n\n this.updateMediaCount();\n\n if (this.sortable) {\n this.sortable.options.onSort();\n }\n }\n }, {\n key: \"updateThumbsSize\",\n value: function updateThumbsSize() {\n var status = JSON.parse(_utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get('grav-admin-pagemedia') || '{}');\n\n if (status.width) {\n var input = this.container.closest('.pagemedia-field').find('.media-resizer');\n updateMediaSizes(input, status.width, false);\n }\n }\n }, {\n key: \"updateMediaCount\",\n value: function updateMediaCount() {\n var element = this.container.closest('.pagemedia-field').find('[data-pagemedia-count]');\n element.text(\"(\".concat(this.dropzone.files.length, \")\"));\n }\n }, {\n key: \"attachDragDrop\",\n value: function attachDragDrop() {\n var _this3 = this;\n\n this.container.delegate('[data-dz-insert]', 'click', function (e) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget).parent('.dz-preview').find('.dz-filename');\n var editor = _forms_fields_editor__WEBPACK_IMPORTED_MODULE_5__.Instance.editors.filter(function (index, editor) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default()(editor).attr('name') === 'data[content]';\n });\n\n if (editor.length) {\n editor = editor.data('codemirror');\n editor.focus();\n var filename = encodeURI(target.text());\n var shortcode = (0,_forms_fields_files__WEBPACK_IMPORTED_MODULE_3__.UriToMarkdown)(filename);\n editor.doc.replaceSelection(shortcode);\n }\n });\n this.container.delegate('[data-dz-view]', 'mouseenter', function (e) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);\n var file = target.parent('.dz-preview').find('.dz-filename');\n var filename = encodeURI(file.text());\n var URL = target.closest('[data-media-path]').data('media-path');\n\n var original = _this3.dropzone.files.filter(function (file) {\n return encodeURI(file.name) === filename;\n }).shift();\n\n original = original && (original.extras && original.extras.original || encodeURI(original.name));\n target.attr('href', \"\".concat(URL, \"/\").concat(original));\n });\n this.container.delegate('[data-dz-metadata]', 'click', function (e) {\n e.preventDefault();\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);\n var file = target.parent('.dz-preview').find('.dz-filename');\n var filename = encodeURI(file.text());\n var cleanName = file.text().replace('<', '<').replace('>', '>');\n var fileObj = _this3.dropzone.files.filter(function (file) {\n return file.name === __webpack_require__.g.decodeURI(filename);\n }).shift() || {};\n\n if (!fileObj.extras) {\n fileObj.extras = {\n metadata: []\n };\n }\n\n if (Array.isArray(fileObj.extras.metadata) && !fileObj.extras.metadata.length) {\n fileObj.extras.metadata = {\n '': \"\".concat(cleanName, \".meta.yaml doesn't exist\")\n };\n }\n\n fileObj = fileObj.extras;\n var modal_element = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').find('[data-remodal-id=\"metadata\"]');\n var modal = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[modal_element.data('remodal')];\n modal_element.find('h1 strong').html(cleanName);\n\n if (fileObj.url) {\n modal_element.find('.meta-preview').html(\"
\"));\n }\n\n var container = modal_element.find('.meta-content').html('').find('ul');\n Object.keys(fileObj.metadata).forEach(function (meta) {\n var cleanMeta = fileObj.metadata[meta].replace('<', '<').replace('>', '>');\n container.append(\"\".concat(meta ? meta + ':' : '', \" \").concat(cleanMeta, \"\"));\n });\n modal.open();\n });\n this.container.delegate('.dz-preview', 'dragstart', function (e) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);\n var uri = encodeURI(target.find('.dz-filename').text());\n var shortcode = (0,_forms_fields_files__WEBPACK_IMPORTED_MODULE_3__.UriToMarkdown)(uri);\n\n _this3.dropzone.disable();\n\n target.addClass('hide-backface');\n e.originalEvent.dataTransfer.effectAllowed = 'copy';\n e.originalEvent.dataTransfer.setData('text', shortcode);\n });\n this.container.delegate('.dz-preview', 'dragend', function (e) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);\n\n _this3.dropzone.enable();\n\n target.removeClass('hide-backface');\n });\n }\n }]);\n\n return PageMedia;\n}(_forms_fields_files__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n\nvar updateMediaSizes = function updateMediaSizes(input, width) {\n var store = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var status = JSON.parse(_utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get('grav-admin-pagemedia') || '{}');\n var height = 150 * width / 200;\n var media = input.closest('.pagemedia-field').find('.dz-details, [data-dz-thumbnail]');\n media.css({\n width: width,\n height: height\n });\n\n if (store) {\n var data = Object.assign({}, status, {\n width: width\n });\n _utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].set('grav-admin-pagemedia', JSON.stringify(data), {\n expires: Infinity\n });\n }\n};\nvar updateMediaCollapseStatus = function updateMediaCollapseStatus(element) {\n var store = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var status = JSON.parse(_utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get('grav-admin-pagemedia') || '{}');\n element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);\n var icon = element.find('i.fa');\n var container = element.closest('.pagemedia-field');\n var panel = container.find('.form-data');\n var slider = container.find('.media-resizer').parent();\n var isCollapsed = !icon.hasClass('fa-chevron-down');\n var collapsed = !isCollapsed;\n icon.removeClass('fa-chevron-down fa-chevron-right').addClass(isCollapsed ? 'fa-chevron-down' : 'fa-chevron-right');\n slider[isCollapsed ? 'removeClass' : 'addClass']('hidden');\n panel[isCollapsed ? 'slideDown' : 'slideUp']();\n\n if (store) {\n var data = Object.assign({}, status, {\n collapsed: collapsed\n });\n _utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].set('grav-admin-pagemedia', JSON.stringify(data), {\n expires: Infinity\n });\n }\n};\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('input', '.media-resizer', function (event) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var width = target.val();\n updateMediaSizes(target, width);\n});\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '.media-collapser', function (event) {\n updateMediaCollapseStatus(event.currentTarget);\n});\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).ready(function () {\n var status = JSON.parse(_utils_cookies_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get('grav-admin-pagemedia') || '{}');\n\n if (status.width) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.media-resizer').each(function (index, input) {\n input = jquery__WEBPACK_IMPORTED_MODULE_0___default()(input);\n updateMediaSizes(input, status.width, false);\n });\n }\n});\nvar Instance = new PageMedia();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBSUEzRiw2Q0FBQyxDQUFDMkksUUFBRCxDQUFELENBQVlHLEtBQVosQ0FBa0IsWUFBTTtBQUN0QixNQUFNNUQsTUFBTSxHQUFHQyxJQUFJLENBQUNDLEtBQUwsQ0FBV25GLDZEQUFBLENBQVksc0JBQVosS0FBdUMsSUFBbEQsQ0FBZjs7QUFDQSxNQUFJaUYsTUFBTSxDQUFDRyxLQUFYLEVBQWtCO0FBQ2hCckYsSUFBQUEsNkNBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9CaUQsSUFBcEIsQ0FBeUIsVUFBQ0MsS0FBRCxFQUFRb0MsS0FBUixFQUFrQjtBQUN6Q0EsTUFBQUEsS0FBSyxHQUFHdEYsNkNBQUMsQ0FBQ3NGLEtBQUQsQ0FBVDtBQUNBQyxNQUFBQSxnQkFBZ0IsQ0FBQ0QsS0FBRCxFQUFRSixNQUFNLENBQUNHLEtBQWYsRUFBc0IsS0FBdEIsQ0FBaEI7QUFDRCxLQUhEO0FBSUQ7QUFDRixDQVJEO0FBVU8sSUFBSTlFLFFBQVEsR0FBRyxJQUFJVSxTQUFKLEVBQWYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BhZ2VzL3BhZ2UvbWVkaWEuanM/ZTlhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IENvb2tpZXMgZnJvbSAnLi4vLi4vdXRpbHMvY29va2llcy5qcyc7XG5pbXBvcnQgcmVxdWVzdCBmcm9tICcuLi8uLi91dGlscy9yZXF1ZXN0JztcbmltcG9ydCBGaWxlc0ZpZWxkLCB7IFVyaVRvTWFya2Rvd24gfSBmcm9tICcuLi8uLi9mb3Jtcy9maWVsZHMvZmlsZXMnO1xuaW1wb3J0IHsgY29uZmlnLCB0cmFuc2xhdGlvbnMgfSBmcm9tICdncmF2LWNvbmZpZyc7XG5pbXBvcnQgeyBJbnN0YW5jZSBhcyBFZGl0b3IgfSBmcm9tICcuLi8uLi9mb3Jtcy9maWVsZHMvZWRpdG9yJztcbmltcG9ydCBTb3J0YWJsZSBmcm9tICdzb3J0YWJsZWpzJztcblxuY29uc3QgcHJldmlld1RlbXBsYXRlID0gYFxuICAgIDxkaXYgY2xhc3M9XCJkei1wcmV2aWV3IGR6LWZpbGUtcHJldmlld1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImR6LWRldGFpbHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImR6LWZpbGVuYW1lXCI+PHNwYW4gZGF0YS1kei1uYW1lPjwvc3Bhbj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImR6LXNpemVcIiBkYXRhLWR6LXNpemU+PC9kaXY+XG4gICAgICAgIDxpbWcgZGF0YS1kei10aHVtYm5haWwgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImR6LXByb2dyZXNzXCI+PHNwYW4gY2xhc3M9XCJkei11cGxvYWRcIiBkYXRhLWR6LXVwbG9hZHByb2dyZXNzPjwvc3Bhbj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkei1zdWNjZXNzLW1hcmtcIj48c3Bhbj7inJQ8L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHotZXJyb3ItbWFya1wiPjxzcGFuPuKcmDwvc3Bhbj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkei1lcnJvci1tZXNzYWdlXCI+PHNwYW4gZGF0YS1kei1lcnJvcm1lc3NhZ2U+PC9zcGFuPjwvZGl2PlxuICAgICAgPGEgY2xhc3M9XCJkei1yZW1vdmVcIiB0aXRsZT1cIiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5ERUxFVEV9XCIgaHJlZj1cImphdmFzY3JpcHQ6dW5kZWZpbmVkO1wiIGRhdGEtZHotcmVtb3ZlPiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5ERUxFVEV9PC9hPlxuICAgICAgPGEgY2xhc3M9XCJkei1tZXRhZGF0YVwiIHRpdGxlPVwiJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLk1FVEFEQVRBfVwiIGhyZWY9XCIjXCIgdGFyZ2V0PVwiX2JsYW5rXCIgZGF0YS1kei1tZXRhZGF0YT4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uTUVUQURBVEF9PC9hPlxuICAgICAgPGEgY2xhc3M9XCJkei12aWV3XCIgdGl0bGU9XCIke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVklFV31cIiBocmVmPVwiI1wiIHRhcmdldD1cIl9ibGFua1wiIGRhdGEtZHotdmlldz4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVklFV308L2E+XG4gICAgICA8YSBjbGFzcz1cImR6LWluc2VydFwiIHRpdGxlPVwiJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLklOU0VSVH1cIiBocmVmPVwiamF2YXNjcmlwdDp1bmRlZmluZWQ7XCIgZGF0YS1kei1pbnNlcnQ+JHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLklOU0VSVH08L2E+XG4gICAgPC9kaXY+YC50cmltKCk7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhZ2VNZWRpYSBleHRlbmRzIEZpbGVzRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKHsgY29udGFpbmVyID0gJyNncmF2LWRyb3B6b25lJywgb3B0aW9ucyA9IHt9IH0gPSB7fSkge1xuICAgICAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7IHByZXZpZXdUZW1wbGF0ZSB9KTtcbiAgICAgICAgc3VwZXIoeyBjb250YWluZXIsIG9wdGlvbnMgfSk7XG4gICAgICAgIGlmICghdGhpcy5jb250YWluZXIubGVuZ3RoKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHRoaXMudXJscyA9IHtcbiAgICAgICAgICAgIGZldGNoOiBgJHt0aGlzLmNvbnRhaW5lci5kYXRhKCdtZWRpYS11cmwnKX0vdGFzayR7Y29uZmlnLnBhcmFtX3NlcH1saXN0bWVkaWFgLFxuICAgICAgICAgICAgYWRkOiBgJHt0aGlzLmNvbnRhaW5lci5kYXRhKCdtZWRpYS11cmwnKX0vdGFzayR7Y29uZmlnLnBhcmFtX3NlcH1hZGRtZWRpYWAsXG4gICAgICAgICAgICBkZWxldGU6IGAke3RoaXMuY29udGFpbmVyLmRhdGEoJ21lZGlhLXVybCcpfS90YXNrJHtjb25maWcucGFyYW1fc2VwfWRlbG1lZGlhYFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZHJvcHpvbmUub3B0aW9ucy51cmwgPSB0aGlzLnVybHMuYWRkO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLmZldGNoTWVkaWEgPT09ICd1bmRlZmluZWQnIHx8IHRoaXMub3B0aW9ucy5mZXRjaE1lZGlhKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoTWVkaWEoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLmF0dGFjaERyYWdEcm9wID09PSAndW5kZWZpbmVkJyB8fCB0aGlzLm9wdGlvbnMuYXR0YWNoRHJhZ0Ryb3ApIHtcbiAgICAgICAgICAgIHRoaXMuYXR0YWNoRHJhZ0Ryb3AoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpZWxkID0gJChgW25hbWU9XCIke3RoaXMuY29udGFpbmVyLmRhdGEoJ2Ryb3B6b25lLWZpZWxkJyl9XCJdYCk7XG5cbiAgICAgICAgaWYgKGZpZWxkLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zb3J0YWJsZSA9IG5ldyBTb3J0YWJsZSh0aGlzLmNvbnRhaW5lci5nZXQoMCksIHtcbiAgICAgICAgICAgICAgICBhbmltYXRpb246IDE1MCxcbiAgICAgICAgICAgICAgICAvLyBmb3JjZUZhbGxiYWNrOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNldERhdGE6IChkYXRhVHJhbnNmZXIsIHRhcmdldCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSAkKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCB1cmkgPSBlbmNvZGVVUkkodGFyZ2V0LmZpbmQoJy5kei1maWxlbmFtZScpLnRleHQoKSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzaG9ydGNvZGUgPSBVcmlUb01hcmtkb3duKHVyaSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcHpvbmUuZGlzYWJsZSgpO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuYWRkQ2xhc3MoJ2hpZGUtYmFja2ZhY2UnKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAnY29weSc7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFUcmFuc2Zlci5zZXREYXRhKCd0ZXh0Jywgc2hvcnRjb2RlKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uU29ydDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmFtZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIuZmluZCgnW2RhdGEtZHotbmFtZV0nKS5lYWNoKChpbmRleCwgZmlsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9ICQoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gZmlsZS50ZXh0KCkudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMucHVzaChuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgZmllbGQudmFsKG5hbWVzLmpvaW4oJywnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmZXRjaE1lZGlhKCkge1xuICAgICAgICBjb25zdCBvcmRlciA9IHRoaXMuY29udGFpbmVyLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJykuZmluZCgnW25hbWU9XCJkYXRhW2hlYWRlcl1bbWVkaWFfb3JkZXJdXCJdJykudmFsKCk7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB7IHVyaTogdGhpcy5nZXRVUkkoKSwgb3JkZXIgfTtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMudXJscy5mZXRjaDtcblxuICAgICAgICByZXF1ZXN0KHVybCwgeyBtZXRob2Q6ICdwb3N0JywgYm9keSB9LCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHRzID0gcmVzcG9uc2UucmVzdWx0cztcblxuICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzdWx0cykuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gcmVzdWx0c1tuYW1lXTtcbiAgICAgICAgICAgICAgICBsZXQgbW9jayA9IHsgbmFtZSwgc2l6ZTogZGF0YS5zaXplLCBhY2NlcHRlZDogdHJ1ZSwgZXh0cmFzOiBkYXRhIH07XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRyb3B6b25lLmZpbGVzLnB1c2gobW9jayk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wem9uZS5vcHRpb25zLmFkZGVkZmlsZS5jYWxsKHRoaXMuZHJvcHpvbmUsIG1vY2spO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcHpvbmUub3B0aW9ucy50aHVtYm5haWwuY2FsbCh0aGlzLmRyb3B6b25lLCBtb2NrLCBkYXRhLnVybCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVUaHVtYnNTaXplKCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5maW5kKCcuZHotcHJldmlldycpLnByb3AoJ2RyYWdnYWJsZScsICd0cnVlJyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRHJvcHpvbmVTZW5kaW5nKGZpbGUsIHhociwgZm9ybURhdGEpIHtcbiAgICAgICAgLypcbiAgICAgICAgLy8gQ2Fubm90IGNhbGwgc3VwZXIgYmVjYXVzZSBTYWZhcmkgYW5kIElFIEFQSSBkb24ndCBpbXBsZW1lbnQgYGRlbGV0ZWBcbiAgICAgICAgc3VwZXIub25Ecm9wem9uZVNlbmRpbmcoZmlsZSwgeGhyLCBmb3JtRGF0YSk7XG4gICAgICAgIGZvcm1EYXRhLmRlbGV0ZSgndGFzaycpO1xuICAgICAgICAqL1xuXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnbmFtZScsIHRoaXMub3B0aW9ucy5kb3ROb3RhdGlvbiB8fCBmaWxlLm5hbWUpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2FkbWluLW5vbmNlJywgY29uZmlnLmFkbWluX25vbmNlKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCd1cmknLCB0aGlzLmdldFVSSSgpKTtcbiAgICB9XG5cbiAgICBvbkRyb3B6b25lQ29tcGxldGUoZmlsZSkge1xuICAgICAgICBzdXBlci5vbkRyb3B6b25lQ29tcGxldGUoZmlsZSk7XG4gICAgICAgIGlmICh0aGlzLnNvcnRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnNvcnRhYmxlLm9wdGlvbnMub25Tb3J0KCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhY2NlcHRlZFxuICAgICAgICB0aGlzLnVwZGF0ZVRodW1ic1NpemUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVNZWRpYUNvdW50KCk7XG4gICAgICAgICQoJy5kei1wcmV2aWV3JykucHJvcCgnZHJhZ2dhYmxlJywgJ3RydWUnKTtcbiAgICB9XG5cbiAgICBvbkRyb3B6b25lQWRkZWRGaWxlKGZpbGUsIC4uLmV4dHJhKSB7XG4gICAgICBzdXBlci5vbkRyb3B6b25lQWRkZWRGaWxlKGZpbGUsIGV4dHJhKTtcblxuICAgICAgdGhpcy51cGRhdGVUaHVtYnNTaXplKCk7XG4gICAgfVxuXG4gICAgb25Ecm9wem9uZVJlbW92ZWRGaWxlKGZpbGUsIC4uLmV4dHJhKSB7XG4gICAgICAgIHN1cGVyLm9uRHJvcHpvbmVSZW1vdmVkRmlsZShmaWxlLCAuLi5leHRyYSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVNZWRpYUNvdW50KCk7XG4gICAgICAgIGlmICh0aGlzLnNvcnRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnNvcnRhYmxlLm9wdGlvbnMub25Tb3J0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVUaHVtYnNTaXplKCkge1xuICAgICAgY29uc3Qgc3RhdHVzID0gSlNPTi5wYXJzZShDb29raWVzLmdldCgnZ3Jhdi1hZG1pbi1wYWdlbWVkaWEnKSB8fCAne30nKTtcblxuICAgICAgaWYgKHN0YXR1cy53aWR0aCkge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuY29udGFpbmVyLmNsb3Nlc3QoJy5wYWdlbWVkaWEtZmllbGQnKS5maW5kKCcubWVkaWEtcmVzaXplcicpO1xuICAgICAgICB1cGRhdGVNZWRpYVNpemVzKGlucHV0LCBzdGF0dXMud2lkdGgsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVNZWRpYUNvdW50KCkge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuY29udGFpbmVyLmNsb3Nlc3QoJy5wYWdlbWVkaWEtZmllbGQnKS5maW5kKCdbZGF0YS1wYWdlbWVkaWEtY291bnRdJyk7XG4gICAgICBlbGVtZW50LnRleHQoYCgke3RoaXMuZHJvcHpvbmUuZmlsZXMubGVuZ3RofSlgKTtcbiAgICB9XG5cbiAgICBhdHRhY2hEcmFnRHJvcCgpIHtcbiAgICAgICAgdGhpcy5jb250YWluZXIuZGVsZWdhdGUoJ1tkYXRhLWR6LWluc2VydF0nLCAnY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHRhcmdldCA9ICQoZS5jdXJyZW50VGFyZ2V0KS5wYXJlbnQoJy5kei1wcmV2aWV3JykuZmluZCgnLmR6LWZpbGVuYW1lJyk7XG4gICAgICAgICAgICBsZXQgZWRpdG9yID0gRWRpdG9yLmVkaXRvcnMuZmlsdGVyKChpbmRleCwgZWRpdG9yKSA9PiAkKGVkaXRvcikuYXR0cignbmFtZScpID09PSAnZGF0YVtjb250ZW50XScpO1xuXG4gICAgICAgICAgICBpZiAoZWRpdG9yLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGVkaXRvciA9IGVkaXRvci5kYXRhKCdjb2RlbWlycm9yJyk7XG4gICAgICAgICAgICAgICAgZWRpdG9yLmZvY3VzKCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBlbmNvZGVVUkkodGFyZ2V0LnRleHQoKSk7XG4gICAgICAgICAgICAgICAgbGV0IHNob3J0Y29kZSA9IFVyaVRvTWFya2Rvd24oZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAgIGVkaXRvci5kb2MucmVwbGFjZVNlbGVjdGlvbihzaG9ydGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbnRhaW5lci5kZWxlZ2F0ZSgnW2RhdGEtZHotdmlld10nLCAnbW91c2VlbnRlcicsIChlKSA9PiB7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0gJChlLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICAgICAgbGV0IGZpbGUgPSB0YXJnZXQucGFyZW50KCcuZHotcHJldmlldycpLmZpbmQoJy5kei1maWxlbmFtZScpO1xuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gZW5jb2RlVVJJKGZpbGUudGV4dCgpKTtcbiAgICAgICAgICAgIGxldCBVUkwgPSB0YXJnZXQuY2xvc2VzdCgnW2RhdGEtbWVkaWEtcGF0aF0nKS5kYXRhKCdtZWRpYS1wYXRoJyk7XG4gICAgICAgICAgICBsZXQgb3JpZ2luYWwgPSB0aGlzLmRyb3B6b25lLmZpbGVzLmZpbHRlcigoZmlsZSkgPT4gZW5jb2RlVVJJKGZpbGUubmFtZSkgPT09IGZpbGVuYW1lKS5zaGlmdCgpO1xuXG4gICAgICAgICAgICBvcmlnaW5hbCA9IG9yaWdpbmFsICYmICgob3JpZ2luYWwuZXh0cmFzICYmIG9yaWdpbmFsLmV4dHJhcy5vcmlnaW5hbCkgfHwgZW5jb2RlVVJJKG9yaWdpbmFsLm5hbWUpKTtcblxuICAgICAgICAgICAgdGFyZ2V0LmF0dHIoJ2hyZWYnLCBgJHtVUkx9LyR7b3JpZ2luYWx9YCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29udGFpbmVyLmRlbGVnYXRlKCdbZGF0YS1kei1tZXRhZGF0YV0nLCAnY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gJChlLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRhcmdldC5wYXJlbnQoJy5kei1wcmV2aWV3JykuZmluZCgnLmR6LWZpbGVuYW1lJyk7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IGVuY29kZVVSSShmaWxlLnRleHQoKSk7XG4gICAgICAgICAgICBjb25zdCBjbGVhbk5hbWUgPSBmaWxlLnRleHQoKS5yZXBsYWNlKCc8JywgJyZsdDsnKS5yZXBsYWNlKCc+JywgJyZndDsnKTtcblxuICAgICAgICAgICAgbGV0IGZpbGVPYmogPSB0aGlzLmRyb3B6b25lLmZpbGVzLmZpbHRlcigoZmlsZSkgPT4gZmlsZS5uYW1lID09PSBnbG9iYWwuZGVjb2RlVVJJKGZpbGVuYW1lKSkuc2hpZnQoKSB8fCB7fTtcblxuICAgICAgICAgICAgaWYgKCFmaWxlT2JqLmV4dHJhcykge1xuICAgICAgICAgICAgICAgIGZpbGVPYmouZXh0cmFzID0geyBtZXRhZGF0YTogW10gfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsZU9iai5leHRyYXMubWV0YWRhdGEpICYmICFmaWxlT2JqLmV4dHJhcy5tZXRhZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmaWxlT2JqLmV4dHJhcy5tZXRhZGF0YSA9IHsgJyc6IGAke2NsZWFuTmFtZX0ubWV0YS55YW1sIGRvZXNuJ3QgZXhpc3RgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZpbGVPYmogPSBmaWxlT2JqLmV4dHJhcztcblxuICAgICAgICAgICAgY29uc3QgbW9kYWxfZWxlbWVudCA9ICQoJ2JvZHknKS5maW5kKCdbZGF0YS1yZW1vZGFsLWlkPVwibWV0YWRhdGFcIl0nKTtcbiAgICAgICAgICAgIGNvbnN0IG1vZGFsID0gJC5yZW1vZGFsLmxvb2t1cFttb2RhbF9lbGVtZW50LmRhdGEoJ3JlbW9kYWwnKV07XG5cbiAgICAgICAgICAgIG1vZGFsX2VsZW1lbnQuZmluZCgnaDEgc3Ryb25nJykuaHRtbChjbGVhbk5hbWUpO1xuICAgICAgICAgICAgaWYgKGZpbGVPYmoudXJsKSB7XG4gICAgICAgICAgICAgICAgbW9kYWxfZWxlbWVudC5maW5kKCcubWV0YS1wcmV2aWV3JykuaHRtbChgPGltZyBzcmM9XCIke2ZpbGVPYmoudXJsfVwiIC8+YCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG1vZGFsX2VsZW1lbnQuZmluZCgnLm1ldGEtY29udGVudCcpLmh0bWwoJzx1bCAvPicpLmZpbmQoJ3VsJyk7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhmaWxlT2JqLm1ldGFkYXRhKS5mb3JFYWNoKChtZXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xlYW5NZXRhID0gZmlsZU9iai5tZXRhZGF0YVttZXRhXS5yZXBsYWNlKCc8JywgJyZsdDsnKS5yZXBsYWNlKCc+JywgJyZndDsnKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kKGA8bGk+PHN0cm9uZz4ke21ldGEgPyBtZXRhICsgJzonIDogJyd9PC9zdHJvbmc+ICR7Y2xlYW5NZXRhfTwvbGk+YCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbW9kYWwub3BlbigpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbnRhaW5lci5kZWxlZ2F0ZSgnLmR6LXByZXZpZXcnLCAnZHJhZ3N0YXJ0JywgKGUpID0+IHtcbiAgICAgICAgICAgIGxldCB0YXJnZXQgPSAkKGUuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICBsZXQgdXJpID0gZW5jb2RlVVJJKHRhcmdldC5maW5kKCcuZHotZmlsZW5hbWUnKS50ZXh0KCkpO1xuICAgICAgICAgICAgbGV0IHNob3J0Y29kZSA9IFVyaVRvTWFya2Rvd24odXJpKTtcbiAgICAgICAgICAgIHRoaXMuZHJvcHpvbmUuZGlzYWJsZSgpO1xuICAgICAgICAgICAgdGFyZ2V0LmFkZENsYXNzKCdoaWRlLWJhY2tmYWNlJyk7XG4gICAgICAgICAgICBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAnY29weSc7XG4gICAgICAgICAgICBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoJ3RleHQnLCBzaG9ydGNvZGUpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbnRhaW5lci5kZWxlZ2F0ZSgnLmR6LXByZXZpZXcnLCAnZHJhZ2VuZCcsIChlKSA9PiB7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0gJChlLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICAgICAgdGhpcy5kcm9wem9uZS5lbmFibGUoKTtcbiAgICAgICAgICAgIHRhcmdldC5yZW1vdmVDbGFzcygnaGlkZS1iYWNrZmFjZScpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVNZWRpYVNpemVzID0gKGlucHV0LCB3aWR0aCwgc3RvcmUgPSB0cnVlKSA9PiB7XG4gIGNvbnN0IHN0YXR1cyA9IEpTT04ucGFyc2UoQ29va2llcy5nZXQoJ2dyYXYtYWRtaW4tcGFnZW1lZGlhJykgfHwgJ3t9Jyk7XG5cbiAgY29uc3QgaGVpZ2h0ID0gMTUwICogd2lkdGggLyAyMDA7XG4gIGNvbnN0IG1lZGlhID0gaW5wdXQuY2xvc2VzdCgnLnBhZ2VtZWRpYS1maWVsZCcpLmZpbmQoJy5kei1kZXRhaWxzLCBbZGF0YS1kei10aHVtYm5haWxdJyk7XG5cbiAgbWVkaWEuY3NzKHsgd2lkdGgsIGhlaWdodCB9KTtcblxuICBpZiAoc3RvcmUpIHtcbiAgICBjb25zdCBkYXRhID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdHVzLCB7IHdpZHRoIH0pO1xuICAgIENvb2tpZXMuc2V0KCdncmF2LWFkbWluLXBhZ2VtZWRpYScsIEpTT04uc3RyaW5naWZ5KGRhdGEpLCB7IGV4cGlyZXM6IEluZmluaXR5IH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlTWVkaWFDb2xsYXBzZVN0YXR1cyA9IChlbGVtZW50LCBzdG9yZSA9IHRydWUpID0+IHtcbiAgY29uc3Qgc3RhdHVzID0gSlNPTi5wYXJzZShDb29raWVzLmdldCgnZ3Jhdi1hZG1pbi1wYWdlbWVkaWEnKSB8fCAne30nKTtcblxuICBlbGVtZW50ID0gJChlbGVtZW50KTtcbiAgY29uc3QgaWNvbiA9IGVsZW1lbnQuZmluZCgnaS5mYScpO1xuICBjb25zdCBjb250YWluZXIgPSBlbGVtZW50LmNsb3Nlc3QoJy5wYWdlbWVkaWEtZmllbGQnKTtcbiAgY29uc3QgcGFuZWwgPSBjb250YWluZXIuZmluZCgnLmZvcm0tZGF0YScpO1xuICBjb25zdCBzbGlkZXIgPSBjb250YWluZXIuZmluZCgnLm1lZGlhLXJlc2l6ZXInKS5wYXJlbnQoKTtcblxuICBjb25zdCBpc0NvbGxhcHNlZCA9ICFpY29uLmhhc0NsYXNzKCdmYS1jaGV2cm9uLWRvd24nKTtcbiAgY29uc3QgY29sbGFwc2VkID0gIWlzQ29sbGFwc2VkO1xuXG4gIGljb24ucmVtb3ZlQ2xhc3MoJ2ZhLWNoZXZyb24tZG93biBmYS1jaGV2cm9uLXJpZ2h0JykuYWRkQ2xhc3MoaXNDb2xsYXBzZWQgPyAnZmEtY2hldnJvbi1kb3duJyA6ICdmYS1jaGV2cm9uLXJpZ2h0Jyk7XG4gIHNsaWRlcltpc0NvbGxhcHNlZCA/ICdyZW1vdmVDbGFzcycgOiAnYWRkQ2xhc3MnXSgnaGlkZGVuJyk7XG4gIHBhbmVsW2lzQ29sbGFwc2VkID8gJ3NsaWRlRG93bicgOiAnc2xpZGVVcCddKCk7XG5cbiAgaWYgKHN0b3JlKSB7XG4gICAgY29uc3QgZGF0YSA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXR1cywgeyBjb2xsYXBzZWQgfSk7XG4gICAgQ29va2llcy5zZXQoJ2dyYXYtYWRtaW4tcGFnZW1lZGlhJywgSlNPTi5zdHJpbmdpZnkoZGF0YSksIHsgZXhwaXJlczogSW5maW5pdHkgfSk7XG4gIH1cbn07XG5cbiQoZG9jdW1lbnQpLm9uKCdpbnB1dCcsICcubWVkaWEtcmVzaXplcicsIChldmVudCkgPT4ge1xuICBjb25zdCB0YXJnZXQgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICBjb25zdCB3aWR0aCA9IHRhcmdldC52YWwoKTtcblxuICB1cGRhdGVNZWRpYVNpemVzKHRhcmdldCwgd2lkdGgpO1xufSk7XG5cbiQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcubWVkaWEtY29sbGFwc2VyJywgKGV2ZW50KSA9PiB7XG4gIHVwZGF0ZU1lZGlhQ29sbGFwc2VTdGF0dXMoZXZlbnQuY3VycmVudFRhcmdldCk7XG59KTtcblxuJChkb2N1bWVudCkucmVhZHkoKCkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBKU09OLnBhcnNlKENvb2tpZXMuZ2V0KCdncmF2LWFkbWluLXBhZ2VtZWRpYScpIHx8ICd7fScpO1xuICBpZiAoc3RhdHVzLndpZHRoKSB7XG4gICAgJCgnLm1lZGlhLXJlc2l6ZXInKS5lYWNoKChpbmRleCwgaW5wdXQpID0+IHtcbiAgICAgIGlucHV0ID0gJChpbnB1dCk7XG4gICAgICB1cGRhdGVNZWRpYVNpemVzKGlucHV0LCBzdGF0dXMud2lkdGgsIGZhbHNlKTtcbiAgICB9KTtcbiAgfVxufSk7XG5cbmV4cG9ydCBsZXQgSW5zdGFuY2UgPSBuZXcgUGFnZU1lZGlhKCk7XG4iXSwibmFtZXMiOlsiJCIsIkNvb2tpZXMiLCJyZXF1ZXN0IiwiRmlsZXNGaWVsZCIsIlVyaVRvTWFya2Rvd24iLCJjb25maWciLCJ0cmFuc2xhdGlvbnMiLCJJbnN0YW5jZSIsIkVkaXRvciIsIlNvcnRhYmxlIiwicHJldmlld1RlbXBsYXRlIiwiUExVR0lOX0FETUlOIiwiREVMRVRFIiwiTUVUQURBVEEiLCJWSUVXIiwiSU5TRVJUIiwidHJpbSIsIlBhZ2VNZWRpYSIsImNvbnRhaW5lciIsIm9wdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJsZW5ndGgiLCJ1cmxzIiwiZmV0Y2giLCJkYXRhIiwicGFyYW1fc2VwIiwiYWRkIiwiZHJvcHpvbmUiLCJ1cmwiLCJmZXRjaE1lZGlhIiwiYXR0YWNoRHJhZ0Ryb3AiLCJmaWVsZCIsInNvcnRhYmxlIiwiZ2V0IiwiYW5pbWF0aW9uIiwic2V0RGF0YSIsImRhdGFUcmFuc2ZlciIsInRhcmdldCIsInVyaSIsImVuY29kZVVSSSIsImZpbmQiLCJ0ZXh0Iiwic2hvcnRjb2RlIiwiZGlzYWJsZSIsImFkZENsYXNzIiwiZWZmZWN0QWxsb3dlZCIsIm9uU29ydCIsIm5hbWVzIiwiZWFjaCIsImluZGV4IiwiZmlsZSIsIm5hbWUiLCJwdXNoIiwidmFsIiwiam9pbiIsIm9yZGVyIiwiY2xvc2VzdCIsImJvZHkiLCJnZXRVUkkiLCJtZXRob2QiLCJyZXNwb25zZSIsInJlc3VsdHMiLCJrZXlzIiwiZm9yRWFjaCIsIm1vY2siLCJzaXplIiwiYWNjZXB0ZWQiLCJleHRyYXMiLCJmaWxlcyIsImFkZGVkZmlsZSIsImNhbGwiLCJ0aHVtYm5haWwiLCJ1cGRhdGVUaHVtYnNTaXplIiwicHJvcCIsInhociIsImZvcm1EYXRhIiwiYXBwZW5kIiwiZG90Tm90YXRpb24iLCJhZG1pbl9ub25jZSIsInVwZGF0ZU1lZGlhQ291bnQiLCJleHRyYSIsInN0YXR1cyIsIkpTT04iLCJwYXJzZSIsIndpZHRoIiwiaW5wdXQiLCJ1cGRhdGVNZWRpYVNpemVzIiwiZWxlbWVudCIsImRlbGVnYXRlIiwiZSIsImN1cnJlbnRUYXJnZXQiLCJwYXJlbnQiLCJlZGl0b3IiLCJlZGl0b3JzIiwiZmlsdGVyIiwiYXR0ciIsImZvY3VzIiwiZmlsZW5hbWUiLCJkb2MiLCJyZXBsYWNlU2VsZWN0aW9uIiwiVVJMIiwib3JpZ2luYWwiLCJzaGlmdCIsInByZXZlbnREZWZhdWx0IiwiY2xlYW5OYW1lIiwicmVwbGFjZSIsImZpbGVPYmoiLCJnbG9iYWwiLCJkZWNvZGVVUkkiLCJtZXRhZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsIm1vZGFsX2VsZW1lbnQiLCJtb2RhbCIsInJlbW9kYWwiLCJsb29rdXAiLCJodG1sIiwibWV0YSIsImNsZWFuTWV0YSIsIm9wZW4iLCJvcmlnaW5hbEV2ZW50IiwiZW5hYmxlIiwicmVtb3ZlQ2xhc3MiLCJzdG9yZSIsImhlaWdodCIsIm1lZGlhIiwiY3NzIiwic2V0Iiwic3RyaW5naWZ5IiwiZXhwaXJlcyIsIkluZmluaXR5IiwidXBkYXRlTWVkaWFDb2xsYXBzZVN0YXR1cyIsImljb24iLCJwYW5lbCIsInNsaWRlciIsImlzQ29sbGFwc2VkIiwiaGFzQ2xhc3MiLCJjb2xsYXBzZWQiLCJkb2N1bWVudCIsIm9uIiwiZXZlbnQiLCJyZWFkeSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/pages/page/media.js\n");
/***/ }),
diff --git a/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig b/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig
index 5f369d68..3bb700d9 100644
--- a/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig
+++ b/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig
@@ -32,7 +32,7 @@