diff --git a/CHANGELOG.md b/CHANGELOG.md index 70fd358a..d3f5bda5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ 1. [](#bugfix) * Moved preset CSS compile to earlier in the process to ensure compilation happens in time. + * Prevent Save actions from Flex Objects to trigger the unsaved unload notice [#2125](https://github.com/getgrav/grav-plugin-admin/issues/2125) # v1.10.12 ## 04/15/2021 diff --git a/themes/grav/app/forms/state.js b/themes/grav/app/forms/state.js index 13ce8957..01d069f9 100644 --- a/themes/grav/app/forms/state.js +++ b/themes/grav/app/forms/state.js @@ -12,7 +12,7 @@ const DOMBehaviors = { }, preventUnload() { - let selector = '[name="task"][value^="save"], [data-delete-action]'; + let selector = '[name="task"][value^="save"], [data-delete-action], [data-flex-safe-action]'; if ($._data(window, 'events') && ($._data(window, 'events').beforeunload || []).filter((event) => event.namespace === '_grav').length) { return; } diff --git a/themes/grav/js/admin.min.js b/themes/grav/js/admin.min.js index 04a3a8d3..45312e52 100644 --- a/themes/grav/js/admin.min.js +++ b/themes/grav/js/admin.min.js @@ -314,7 +314,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 */ FormState,\n/* harmony export */ \"Instance\": () => /* binding */ Instance,\n/* harmony export */ \"DOMBehaviors\": () => /* binding */ DOMBehaviors\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 immutable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(immutable__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var immutablediff__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! immutablediff */ \"./node_modules/immutablediff/src/diff.js\");\n/* harmony import */ var immutablediff__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(immutablediff__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_jquery_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/jquery-utils */ \"./app/utils/jquery-utils.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\nvar FormLoadState = {};\nvar DOMBehaviors = {\n attach: function attach() {\n this.preventUnload();\n this.preventClickAway();\n },\n preventUnload: function preventUnload() {\n var selector = '[name=\"task\"][value^=\"save\"], [data-delete-action]';\n\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()._data(window, 'events') && (jquery__WEBPACK_IMPORTED_MODULE_0___default()._data(window, 'events').beforeunload || []).filter(function (event) {\n return event.namespace === '_grav';\n }).length) {\n return;\n } // Allow some elements to leave the page without native confirmation\n\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector).on('click._grav', function (event) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).off('beforeunload');\n }); // Catch browser uri change / refresh attempt and stop it if the form state is dirty\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).on('beforeunload._grav', function () {\n if (Instance.equals() === false) {\n return 'You have made changes on this page that you have not yet confirmed. If you navigate away from this page you will lose your unsaved changes.';\n }\n });\n },\n preventClickAway: function preventClickAway() {\n var selector = 'a[href]:not([href^=\"#\"]):not([target=\"_blank\"]):not([href^=\"javascript:\"])';\n\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()._data(jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector).get(0), 'events') && (jquery__WEBPACK_IMPORTED_MODULE_0___default()._data(jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector).get(0), 'events').click || []).filter(function (event) {\n return event.namespace === '_grav';\n })) {\n return;\n } // Prevent clicking away if the form state is dirty\n // instead, display a confirmation before continuing\n\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector).on('click._grav', function (event) {\n var isClean = Instance.equals();\n\n if (isClean === null || isClean) {\n return true;\n }\n\n event.preventDefault();\n var destination = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('href');\n var modal = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-remodal-id=\"changes\"]');\n var lookup = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[modal.data('remodal')];\n var buttons = jquery__WEBPACK_IMPORTED_MODULE_0___default()('a.button', modal);\n\n var handler = function handler(event) {\n event.preventDefault();\n var action = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('leave-action');\n buttons.off('click', handler);\n lookup.close();\n\n if (action === 'continue') {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).off('beforeunload');\n __webpack_require__.g.location.href = destination;\n }\n };\n\n buttons.on('click', handler);\n lookup.open();\n });\n }\n};\n\nvar FormState = /*#__PURE__*/function () {\n function FormState() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n ignore: [],\n form_id: 'blueprints'\n };\n\n _classCallCheck(this, FormState);\n\n this.options = options;\n this.refresh();\n\n if (!this.form || !this.fields.length) {\n return;\n }\n\n FormLoadState = this.collect();\n this.loadState = FormLoadState;\n DOMBehaviors.attach();\n }\n\n _createClass(FormState, [{\n key: \"refresh\",\n value: function refresh() {\n this.form = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"form#\".concat(this.options.form_id)).filter(':noparents(.remodal)');\n this.fields = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"form#\".concat(this.options.form_id, \" *, [form=\\\"\").concat(this.options.form_id, \"\\\"]\")).filter(':input:not(.no-form)').filter(':noparents(.remodal)');\n return this;\n }\n }, {\n key: \"collect\",\n value: function collect() {\n var _this = this;\n\n if (!this.form || !this.fields.length) {\n return;\n }\n\n var values = {};\n this.refresh().fields.each(function (index, field) {\n field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(field);\n var name = field.prop('name');\n var type = field.prop('type');\n var tag = field.prop('tagName').toLowerCase();\n var value;\n\n if (name.startsWith('toggleable_') || name === 'data[lang]' || name === 'data[redirect]') {\n return;\n }\n\n switch (type) {\n case 'checkbox':\n value = field.is(':checked');\n break;\n\n case 'radio':\n if (!field.is(':checked')) {\n return;\n }\n\n value = field.val();\n break;\n\n default:\n value = field.val();\n }\n\n if (tag === 'select' && value === null) {\n value = '';\n }\n\n if (Array.isArray(value)) {\n value = value.join('|');\n }\n\n if (name && !~_this.options.ignore.indexOf(name)) {\n values[name] = value;\n }\n });\n return immutable__WEBPACK_IMPORTED_MODULE_1___default().OrderedMap(values);\n }\n }, {\n key: \"diff\",\n value: function diff() {\n return immutablediff__WEBPACK_IMPORTED_MODULE_2___default()(FormLoadState, this.collect());\n } // When the form doesn't exist or there are no fields, `equals` returns `null`\n // for this reason, _NEVER_ check with !Instance.equals(), use Instance.equals() === false\n\n }, {\n key: \"equals\",\n value: function equals() {\n if (!this.form || !this.fields.length) {\n return null;\n }\n\n return immutable__WEBPACK_IMPORTED_MODULE_1___default().is(FormLoadState, this.collect());\n }\n }]);\n\n return FormState;\n}();\n\n\n;\nvar Instance = new FormState();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL3N0YXRlLmpzPzY3ZTMiXSwibmFtZXMiOlsiRm9ybUxvYWRTdGF0ZSIsIkRPTUJlaGF2aW9ycyIsImF0dGFjaCIsInByZXZlbnRVbmxvYWQiLCJwcmV2ZW50Q2xpY2tBd2F5Iiwic2VsZWN0b3IiLCIkIiwid2luZG93IiwiYmVmb3JldW5sb2FkIiwiZmlsdGVyIiwiZXZlbnQiLCJuYW1lc3BhY2UiLCJsZW5ndGgiLCJvbiIsImdsb2JhbCIsIm9mZiIsIkluc3RhbmNlIiwiZXF1YWxzIiwiZ2V0IiwiY2xpY2siLCJpc0NsZWFuIiwicHJldmVudERlZmF1bHQiLCJkZXN0aW5hdGlvbiIsImF0dHIiLCJtb2RhbCIsImxvb2t1cCIsImRhdGEiLCJidXR0b25zIiwiaGFuZGxlciIsImFjdGlvbiIsImNsb3NlIiwibG9jYXRpb24iLCJocmVmIiwib3BlbiIsIkZvcm1TdGF0ZSIsIm9wdGlvbnMiLCJpZ25vcmUiLCJmb3JtX2lkIiwicmVmcmVzaCIsImZvcm0iLCJmaWVsZHMiLCJjb2xsZWN0IiwibG9hZFN0YXRlIiwidmFsdWVzIiwiZWFjaCIsImluZGV4IiwiZmllbGQiLCJuYW1lIiwicHJvcCIsInR5cGUiLCJ0YWciLCJ0b0xvd2VyQ2FzZSIsInZhbHVlIiwic3RhcnRzV2l0aCIsImlzIiwidmFsIiwiQXJyYXkiLCJpc0FycmF5Iiwiam9pbiIsImluZGV4T2YiLCJJbW11dGFibGUiLCJpbW11dGFibGVkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxhQUFhLEdBQUcsRUFBcEI7QUFFQSxJQUFNQyxZQUFZLEdBQUc7QUFDakJDLFFBRGlCLG9CQUNSO0FBQ0wsU0FBS0MsYUFBTDtBQUNBLFNBQUtDLGdCQUFMO0FBQ0gsR0FKZ0I7QUFNakJELGVBTmlCLDJCQU1EO0FBQ1osUUFBSUUsUUFBUSxHQUFHLG9EQUFmOztBQUNBLFFBQUlDLG1EQUFBLENBQVFDLE1BQVIsRUFBZ0IsUUFBaEIsS0FBNkIsQ0FBQ0QsbURBQUEsQ0FBUUMsTUFBUixFQUFnQixRQUFoQixFQUEwQkMsWUFBMUIsSUFBMEMsRUFBM0MsRUFBK0NDLE1BQS9DLENBQXNELFVBQUNDLEtBQUQ7QUFBQSxhQUFXQSxLQUFLLENBQUNDLFNBQU4sS0FBb0IsT0FBL0I7QUFBQSxLQUF0RCxFQUE4RkMsTUFBL0gsRUFBdUk7QUFDbkk7QUFDSCxLQUpXLENBTVo7OztBQUNBTixpREFBQyxDQUFDRCxRQUFELENBQUQsQ0FBWVEsRUFBWixDQUFlLGFBQWYsRUFBOEIsVUFBU0gsS0FBVCxFQUFnQjtBQUMxQ0osbURBQUMsQ0FBQ1EscUJBQUQsQ0FBRCxDQUFVQyxHQUFWLENBQWMsY0FBZDtBQUNILEtBRkQsRUFQWSxDQVdaOztBQUNBVCxpREFBQyxDQUFDUSxxQkFBRCxDQUFELENBQVVELEVBQVYsQ0FBYSxvQkFBYixFQUFtQyxZQUFNO0FBQ3JDLFVBQUlHLFFBQVEsQ0FBQ0MsTUFBVCxPQUFzQixLQUExQixFQUFpQztBQUM3QixlQUFPLDZJQUFQO0FBQ0g7QUFDSixLQUpEO0FBS0gsR0F2QmdCO0FBeUJqQmIsa0JBekJpQiw4QkF5QkU7QUFDZixRQUFJQyxRQUFRLEdBQUcsNEVBQWY7O0FBRUEsUUFBSUMsbURBQUEsQ0FBUUEsNkNBQUMsQ0FBQ0QsUUFBRCxDQUFELENBQVlhLEdBQVosQ0FBZ0IsQ0FBaEIsQ0FBUixFQUE0QixRQUE1QixLQUF5QyxDQUFDWixtREFBQSxDQUFRQSw2Q0FBQyxDQUFDRCxRQUFELENBQUQsQ0FBWWEsR0FBWixDQUFnQixDQUFoQixDQUFSLEVBQTRCLFFBQTVCLEVBQXNDQyxLQUF0QyxJQUErQyxFQUFoRCxFQUFvRFYsTUFBcEQsQ0FBMkQsVUFBQ0MsS0FBRDtBQUFBLGFBQVdBLEtBQUssQ0FBQ0MsU0FBTixLQUFvQixPQUEvQjtBQUFBLEtBQTNELENBQTdDLEVBQWlKO0FBQzdJO0FBQ0gsS0FMYyxDQU9mO0FBQ0E7OztBQUNBTCxpREFBQyxDQUFDRCxRQUFELENBQUQsQ0FBWVEsRUFBWixDQUFlLGFBQWYsRUFBOEIsVUFBU0gsS0FBVCxFQUFnQjtBQUMxQyxVQUFJVSxPQUFPLEdBQUdKLFFBQVEsQ0FBQ0MsTUFBVCxFQUFkOztBQUNBLFVBQUlHLE9BQU8sS0FBSyxJQUFaLElBQW9CQSxPQUF4QixFQUFpQztBQUFFLGVBQU8sSUFBUDtBQUFjOztBQUVqRFYsV0FBSyxDQUFDVyxjQUFOO0FBRUEsVUFBSUMsV0FBVyxHQUFHaEIsNkNBQUMsQ0FBQyxJQUFELENBQUQsQ0FBUWlCLElBQVIsQ0FBYSxNQUFiLENBQWxCO0FBQ0EsVUFBSUMsS0FBSyxHQUFHbEIsNkNBQUMsQ0FBQyw2QkFBRCxDQUFiO0FBQ0EsVUFBSW1CLE1BQU0sR0FBR25CLDhEQUFBLENBQWlCa0IsS0FBSyxDQUFDRSxJQUFOLENBQVcsU0FBWCxDQUFqQixDQUFiO0FBQ0EsVUFBSUMsT0FBTyxHQUFHckIsNkNBQUMsQ0FBQyxVQUFELEVBQWFrQixLQUFiLENBQWY7O0FBRUEsVUFBSUksT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBU2xCLEtBQVQsRUFBZ0I7QUFDMUJBLGFBQUssQ0FBQ1csY0FBTjtBQUNBLFlBQUlRLE1BQU0sR0FBR3ZCLDZDQUFDLENBQUMsSUFBRCxDQUFELENBQVFvQixJQUFSLENBQWEsY0FBYixDQUFiO0FBRUFDLGVBQU8sQ0FBQ1osR0FBUixDQUFZLE9BQVosRUFBcUJhLE9BQXJCO0FBQ0FILGNBQU0sQ0FBQ0ssS0FBUDs7QUFFQSxZQUFJRCxNQUFNLEtBQUssVUFBZixFQUEyQjtBQUN2QnZCLHVEQUFDLENBQUNRLHFCQUFELENBQUQsQ0FBVUMsR0FBVixDQUFjLGNBQWQ7QUFDQUQsK0JBQU0sQ0FBQ2lCLFFBQVAsQ0FBZ0JDLElBQWhCLEdBQXVCVixXQUF2QjtBQUNIO0FBQ0osT0FYRDs7QUFhQUssYUFBTyxDQUFDZCxFQUFSLENBQVcsT0FBWCxFQUFvQmUsT0FBcEI7QUFDQUgsWUFBTSxDQUFDUSxJQUFQO0FBQ0gsS0ExQkQ7QUEyQkg7QUE3RGdCLENBQXJCOztJQWdFcUJDLFM7QUFDakIsdUJBR0c7QUFBQSxRQUhTQyxPQUdULHVFQUhtQjtBQUNsQkMsWUFBTSxFQUFFLEVBRFU7QUFFbEJDLGFBQU8sRUFBRTtBQUZTLEtBR25COztBQUFBOztBQUNDLFNBQUtGLE9BQUwsR0FBZUEsT0FBZjtBQUNBLFNBQUtHLE9BQUw7O0FBRUEsUUFBSSxDQUFDLEtBQUtDLElBQU4sSUFBYyxDQUFDLEtBQUtDLE1BQUwsQ0FBWTVCLE1BQS9CLEVBQXVDO0FBQUU7QUFBUzs7QUFDbERaLGlCQUFhLEdBQUcsS0FBS3lDLE9BQUwsRUFBaEI7QUFDQSxTQUFLQyxTQUFMLEdBQWlCMUMsYUFBakI7QUFDQUMsZ0JBQVksQ0FBQ0MsTUFBYjtBQUNIOzs7OzhCQUVTO0FBQ04sV0FBS3FDLElBQUwsR0FBWWpDLDZDQUFDLGdCQUFTLEtBQUs2QixPQUFMLENBQWFFLE9BQXRCLEVBQUQsQ0FBa0M1QixNQUFsQyxDQUF5QyxzQkFBekMsQ0FBWjtBQUNBLFdBQUsrQixNQUFMLEdBQWNsQyw2Q0FBQyxnQkFBUyxLQUFLNkIsT0FBTCxDQUFhRSxPQUF0Qix5QkFBMkMsS0FBS0YsT0FBTCxDQUFhRSxPQUF4RCxTQUFELENBQXNFNUIsTUFBdEUsQ0FBNkUsc0JBQTdFLEVBQXFHQSxNQUFyRyxDQUE0RyxzQkFBNUcsQ0FBZDtBQUVBLGFBQU8sSUFBUDtBQUNIOzs7OEJBRVM7QUFBQTs7QUFDTixVQUFJLENBQUMsS0FBSzhCLElBQU4sSUFBYyxDQUFDLEtBQUtDLE1BQUwsQ0FBWTVCLE1BQS9CLEVBQXVDO0FBQUU7QUFBUzs7QUFFbEQsVUFBSStCLE1BQU0sR0FBRyxFQUFiO0FBQ0EsV0FBS0wsT0FBTCxHQUFlRSxNQUFmLENBQXNCSSxJQUF0QixDQUEyQixVQUFDQyxLQUFELEVBQVFDLEtBQVIsRUFBa0I7QUFDekNBLGFBQUssR0FBR3hDLDZDQUFDLENBQUN3QyxLQUFELENBQVQ7QUFDQSxZQUFJQyxJQUFJLEdBQUdELEtBQUssQ0FBQ0UsSUFBTixDQUFXLE1BQVgsQ0FBWDtBQUNBLFlBQUlDLElBQUksR0FBR0gsS0FBSyxDQUFDRSxJQUFOLENBQVcsTUFBWCxDQUFYO0FBQ0EsWUFBSUUsR0FBRyxHQUFHSixLQUFLLENBQUNFLElBQU4sQ0FBVyxTQUFYLEVBQXNCRyxXQUF0QixFQUFWO0FBQ0EsWUFBSUMsS0FBSjs7QUFFQSxZQUFJTCxJQUFJLENBQUNNLFVBQUwsQ0FBZ0IsYUFBaEIsS0FBa0NOLElBQUksS0FBSyxZQUEzQyxJQUEyREEsSUFBSSxLQUFLLGdCQUF4RSxFQUEwRjtBQUN0RjtBQUNIOztBQUVELGdCQUFRRSxJQUFSO0FBQ0ksZUFBSyxVQUFMO0FBQ0lHLGlCQUFLLEdBQUdOLEtBQUssQ0FBQ1EsRUFBTixDQUFTLFVBQVQsQ0FBUjtBQUNBOztBQUNKLGVBQUssT0FBTDtBQUNJLGdCQUFJLENBQUNSLEtBQUssQ0FBQ1EsRUFBTixDQUFTLFVBQVQsQ0FBTCxFQUEyQjtBQUFFO0FBQVM7O0FBQ3RDRixpQkFBSyxHQUFHTixLQUFLLENBQUNTLEdBQU4sRUFBUjtBQUNBOztBQUNKO0FBQ0lILGlCQUFLLEdBQUdOLEtBQUssQ0FBQ1MsR0FBTixFQUFSO0FBVFI7O0FBWUEsWUFBSUwsR0FBRyxLQUFLLFFBQVIsSUFBb0JFLEtBQUssS0FBSyxJQUFsQyxFQUF3QztBQUNwQ0EsZUFBSyxHQUFHLEVBQVI7QUFDSDs7QUFFRCxZQUFJSSxLQUFLLENBQUNDLE9BQU4sQ0FBY0wsS0FBZCxDQUFKLEVBQTBCO0FBQ3RCQSxlQUFLLEdBQUdBLEtBQUssQ0FBQ00sSUFBTixDQUFXLEdBQVgsQ0FBUjtBQUNIOztBQUVELFlBQUlYLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSSxDQUFDWixPQUFMLENBQWFDLE1BQWIsQ0FBb0J1QixPQUFwQixDQUE0QlosSUFBNUIsQ0FBZCxFQUFpRDtBQUM3Q0osZ0JBQU0sQ0FBQ0ksSUFBRCxDQUFOLEdBQWVLLEtBQWY7QUFDSDtBQUNKLE9BbENEO0FBb0NBLGFBQU9RLDJEQUFBLENBQXFCakIsTUFBckIsQ0FBUDtBQUNIOzs7MkJBRU07QUFDSCxhQUFPa0Isb0RBQWEsQ0FBQzdELGFBQUQsRUFBZ0IsS0FBS3lDLE9BQUwsRUFBaEIsQ0FBcEI7QUFDSCxLLENBRUQ7QUFDQTs7Ozs2QkFDUztBQUNMLFVBQUksQ0FBQyxLQUFLRixJQUFOLElBQWMsQ0FBQyxLQUFLQyxNQUFMLENBQVk1QixNQUEvQixFQUF1QztBQUFFLGVBQU8sSUFBUDtBQUFjOztBQUN2RCxhQUFPZ0QsbURBQUEsQ0FBYTVELGFBQWIsRUFBNEIsS0FBS3lDLE9BQUwsRUFBNUIsQ0FBUDtBQUNIOzs7Ozs7O0FBQ0o7QUFFTSxJQUFJekIsUUFBUSxHQUFHLElBQUlrQixTQUFKLEVBQWYiLCJmaWxlIjoiLi9hcHAvZm9ybXMvc3RhdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IEltbXV0YWJsZSBmcm9tICdpbW11dGFibGUnO1xuaW1wb3J0IGltbXV0YWJsZWRpZmYgZnJvbSAnaW1tdXRhYmxlZGlmZic7XG5pbXBvcnQgJy4uL3V0aWxzL2pxdWVyeS11dGlscyc7XG5cbmxldCBGb3JtTG9hZFN0YXRlID0ge307XG5cbmNvbnN0IERPTUJlaGF2aW9ycyA9IHtcbiAgICBhdHRhY2goKSB7XG4gICAgICAgIHRoaXMucHJldmVudFVubG9hZCgpO1xuICAgICAgICB0aGlzLnByZXZlbnRDbGlja0F3YXkoKTtcbiAgICB9LFxuXG4gICAgcHJldmVudFVubG9hZCgpIHtcbiAgICAgICAgbGV0IHNlbGVjdG9yID0gJ1tuYW1lPVwidGFza1wiXVt2YWx1ZV49XCJzYXZlXCJdLCBbZGF0YS1kZWxldGUtYWN0aW9uXSc7XG4gICAgICAgIGlmICgkLl9kYXRhKHdpbmRvdywgJ2V2ZW50cycpICYmICgkLl9kYXRhKHdpbmRvdywgJ2V2ZW50cycpLmJlZm9yZXVubG9hZCB8fCBbXSkuZmlsdGVyKChldmVudCkgPT4gZXZlbnQubmFtZXNwYWNlID09PSAnX2dyYXYnKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFsbG93IHNvbWUgZWxlbWVudHMgdG8gbGVhdmUgdGhlIHBhZ2Ugd2l0aG91dCBuYXRpdmUgY29uZmlybWF0aW9uXG4gICAgICAgICQoc2VsZWN0b3IpLm9uKCdjbGljay5fZ3JhdicsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICAkKGdsb2JhbCkub2ZmKCdiZWZvcmV1bmxvYWQnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ2F0Y2ggYnJvd3NlciB1cmkgY2hhbmdlIC8gcmVmcmVzaCBhdHRlbXB0IGFuZCBzdG9wIGl0IGlmIHRoZSBmb3JtIHN0YXRlIGlzIGRpcnR5XG4gICAgICAgICQoZ2xvYmFsKS5vbignYmVmb3JldW5sb2FkLl9ncmF2JywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKEluc3RhbmNlLmVxdWFscygpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnWW91IGhhdmUgbWFkZSBjaGFuZ2VzIG9uIHRoaXMgcGFnZSB0aGF0IHlvdSBoYXZlIG5vdCB5ZXQgY29uZmlybWVkLiBJZiB5b3UgbmF2aWdhdGUgYXdheSBmcm9tIHRoaXMgcGFnZSB5b3Ugd2lsbCBsb3NlIHlvdXIgdW5zYXZlZCBjaGFuZ2VzLic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBwcmV2ZW50Q2xpY2tBd2F5KCkge1xuICAgICAgICBsZXQgc2VsZWN0b3IgPSAnYVtocmVmXTpub3QoW2hyZWZePVwiI1wiXSk6bm90KFt0YXJnZXQ9XCJfYmxhbmtcIl0pOm5vdChbaHJlZl49XCJqYXZhc2NyaXB0OlwiXSknO1xuXG4gICAgICAgIGlmICgkLl9kYXRhKCQoc2VsZWN0b3IpLmdldCgwKSwgJ2V2ZW50cycpICYmICgkLl9kYXRhKCQoc2VsZWN0b3IpLmdldCgwKSwgJ2V2ZW50cycpLmNsaWNrIHx8IFtdKS5maWx0ZXIoKGV2ZW50KSA9PiBldmVudC5uYW1lc3BhY2UgPT09ICdfZ3JhdicpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmV2ZW50IGNsaWNraW5nIGF3YXkgaWYgdGhlIGZvcm0gc3RhdGUgaXMgZGlydHlcbiAgICAgICAgLy8gaW5zdGVhZCwgZGlzcGxheSBhIGNvbmZpcm1hdGlvbiBiZWZvcmUgY29udGludWluZ1xuICAgICAgICAkKHNlbGVjdG9yKS5vbignY2xpY2suX2dyYXYnLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgbGV0IGlzQ2xlYW4gPSBJbnN0YW5jZS5lcXVhbHMoKTtcbiAgICAgICAgICAgIGlmIChpc0NsZWFuID09PSBudWxsIHx8IGlzQ2xlYW4pIHsgcmV0dXJuIHRydWU7IH1cblxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgbGV0IGRlc3RpbmF0aW9uID0gJCh0aGlzKS5hdHRyKCdocmVmJyk7XG4gICAgICAgICAgICBsZXQgbW9kYWwgPSAkKCdbZGF0YS1yZW1vZGFsLWlkPVwiY2hhbmdlc1wiXScpO1xuICAgICAgICAgICAgbGV0IGxvb2t1cCA9ICQucmVtb2RhbC5sb29rdXBbbW9kYWwuZGF0YSgncmVtb2RhbCcpXTtcbiAgICAgICAgICAgIGxldCBidXR0b25zID0gJCgnYS5idXR0b24nLCBtb2RhbCk7XG5cbiAgICAgICAgICAgIGxldCBoYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGxldCBhY3Rpb24gPSAkKHRoaXMpLmRhdGEoJ2xlYXZlLWFjdGlvbicpO1xuXG4gICAgICAgICAgICAgICAgYnV0dG9ucy5vZmYoJ2NsaWNrJywgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgbG9va3VwLmNsb3NlKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09PSAnY29udGludWUnKSB7XG4gICAgICAgICAgICAgICAgICAgICQoZ2xvYmFsKS5vZmYoJ2JlZm9yZXVubG9hZCcpO1xuICAgICAgICAgICAgICAgICAgICBnbG9iYWwubG9jYXRpb24uaHJlZiA9IGRlc3RpbmF0aW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGJ1dHRvbnMub24oJ2NsaWNrJywgaGFuZGxlcik7XG4gICAgICAgICAgICBsb29rdXAub3BlbigpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb3JtU3RhdGUge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7XG4gICAgICAgIGlnbm9yZTogW10sXG4gICAgICAgIGZvcm1faWQ6ICdibHVlcHJpbnRzJ1xuICAgIH0pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmZvcm0gfHwgIXRoaXMuZmllbGRzLmxlbmd0aCkgeyByZXR1cm47IH1cbiAgICAgICAgRm9ybUxvYWRTdGF0ZSA9IHRoaXMuY29sbGVjdCgpO1xuICAgICAgICB0aGlzLmxvYWRTdGF0ZSA9IEZvcm1Mb2FkU3RhdGU7XG4gICAgICAgIERPTUJlaGF2aW9ycy5hdHRhY2goKTtcbiAgICB9XG5cbiAgICByZWZyZXNoKCkge1xuICAgICAgICB0aGlzLmZvcm0gPSAkKGBmb3JtIyR7dGhpcy5vcHRpb25zLmZvcm1faWR9YCkuZmlsdGVyKCc6bm9wYXJlbnRzKC5yZW1vZGFsKScpO1xuICAgICAgICB0aGlzLmZpZWxkcyA9ICQoYGZvcm0jJHt0aGlzLm9wdGlvbnMuZm9ybV9pZH0gKiwgW2Zvcm09XCIke3RoaXMub3B0aW9ucy5mb3JtX2lkfVwiXWApLmZpbHRlcignOmlucHV0Om5vdCgubm8tZm9ybSknKS5maWx0ZXIoJzpub3BhcmVudHMoLnJlbW9kYWwpJyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgY29sbGVjdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0gfHwgIXRoaXMuZmllbGRzLmxlbmd0aCkgeyByZXR1cm47IH1cblxuICAgICAgICBsZXQgdmFsdWVzID0ge307XG4gICAgICAgIHRoaXMucmVmcmVzaCgpLmZpZWxkcy5lYWNoKChpbmRleCwgZmllbGQpID0+IHtcbiAgICAgICAgICAgIGZpZWxkID0gJChmaWVsZCk7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IGZpZWxkLnByb3AoJ25hbWUnKTtcbiAgICAgICAgICAgIGxldCB0eXBlID0gZmllbGQucHJvcCgndHlwZScpO1xuICAgICAgICAgICAgbGV0IHRhZyA9IGZpZWxkLnByb3AoJ3RhZ05hbWUnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IHZhbHVlO1xuXG4gICAgICAgICAgICBpZiAobmFtZS5zdGFydHNXaXRoKCd0b2dnbGVhYmxlXycpIHx8IG5hbWUgPT09ICdkYXRhW2xhbmddJyB8fCBuYW1lID09PSAnZGF0YVtyZWRpcmVjdF0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2JveCc6XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmllbGQuaXMoJzpjaGVja2VkJyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3JhZGlvJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWVsZC5pcygnOmNoZWNrZWQnKSkgeyByZXR1cm47IH1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBmaWVsZC52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBmaWVsZC52YWwoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRhZyA9PT0gJ3NlbGVjdCcgJiYgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmpvaW4oJ3wnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5hbWUgJiYgIX50aGlzLm9wdGlvbnMuaWdub3JlLmluZGV4T2YobmFtZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIEltbXV0YWJsZS5PcmRlcmVkTWFwKHZhbHVlcyk7XG4gICAgfVxuXG4gICAgZGlmZigpIHtcbiAgICAgICAgcmV0dXJuIGltbXV0YWJsZWRpZmYoRm9ybUxvYWRTdGF0ZSwgdGhpcy5jb2xsZWN0KCkpO1xuICAgIH1cblxuICAgIC8vIFdoZW4gdGhlIGZvcm0gZG9lc24ndCBleGlzdCBvciB0aGVyZSBhcmUgbm8gZmllbGRzLCBgZXF1YWxzYCByZXR1cm5zIGBudWxsYFxuICAgIC8vIGZvciB0aGlzIHJlYXNvbiwgX05FVkVSXyBjaGVjayB3aXRoICFJbnN0YW5jZS5lcXVhbHMoKSwgdXNlIEluc3RhbmNlLmVxdWFscygpID09PSBmYWxzZVxuICAgIGVxdWFscygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0gfHwgIXRoaXMuZmllbGRzLmxlbmd0aCkgeyByZXR1cm4gbnVsbDsgfVxuICAgICAgICByZXR1cm4gSW1tdXRhYmxlLmlzKEZvcm1Mb2FkU3RhdGUsIHRoaXMuY29sbGVjdCgpKTtcbiAgICB9XG59O1xuXG5leHBvcnQgbGV0IEluc3RhbmNlID0gbmV3IEZvcm1TdGF0ZSgpO1xuXG5leHBvcnQgeyBET01CZWhhdmlvcnMgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/forms/state.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ FormState,\n/* harmony export */ \"Instance\": () => /* binding */ Instance,\n/* harmony export */ \"DOMBehaviors\": () => /* binding */ DOMBehaviors\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 immutable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(immutable__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var immutablediff__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! immutablediff */ \"./node_modules/immutablediff/src/diff.js\");\n/* harmony import */ var immutablediff__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(immutablediff__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_jquery_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/jquery-utils */ \"./app/utils/jquery-utils.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\nvar FormLoadState = {};\nvar DOMBehaviors = {\n attach: function attach() {\n this.preventUnload();\n this.preventClickAway();\n },\n preventUnload: function preventUnload() {\n var selector = '[name=\"task\"][value^=\"save\"], [data-delete-action], [data-flex-safe-action]';\n\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()._data(window, 'events') && (jquery__WEBPACK_IMPORTED_MODULE_0___default()._data(window, 'events').beforeunload || []).filter(function (event) {\n return event.namespace === '_grav';\n }).length) {\n return;\n } // Allow some elements to leave the page without native confirmation\n\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector).on('click._grav', function (event) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).off('beforeunload');\n }); // Catch browser uri change / refresh attempt and stop it if the form state is dirty\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).on('beforeunload._grav', function () {\n if (Instance.equals() === false) {\n return 'You have made changes on this page that you have not yet confirmed. If you navigate away from this page you will lose your unsaved changes.';\n }\n });\n },\n preventClickAway: function preventClickAway() {\n var selector = 'a[href]:not([href^=\"#\"]):not([target=\"_blank\"]):not([href^=\"javascript:\"])';\n\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()._data(jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector).get(0), 'events') && (jquery__WEBPACK_IMPORTED_MODULE_0___default()._data(jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector).get(0), 'events').click || []).filter(function (event) {\n return event.namespace === '_grav';\n })) {\n return;\n } // Prevent clicking away if the form state is dirty\n // instead, display a confirmation before continuing\n\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector).on('click._grav', function (event) {\n var isClean = Instance.equals();\n\n if (isClean === null || isClean) {\n return true;\n }\n\n event.preventDefault();\n var destination = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('href');\n var modal = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-remodal-id=\"changes\"]');\n var lookup = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[modal.data('remodal')];\n var buttons = jquery__WEBPACK_IMPORTED_MODULE_0___default()('a.button', modal);\n\n var handler = function handler(event) {\n event.preventDefault();\n var action = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('leave-action');\n buttons.off('click', handler);\n lookup.close();\n\n if (action === 'continue') {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).off('beforeunload');\n __webpack_require__.g.location.href = destination;\n }\n };\n\n buttons.on('click', handler);\n lookup.open();\n });\n }\n};\n\nvar FormState = /*#__PURE__*/function () {\n function FormState() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n ignore: [],\n form_id: 'blueprints'\n };\n\n _classCallCheck(this, FormState);\n\n this.options = options;\n this.refresh();\n\n if (!this.form || !this.fields.length) {\n return;\n }\n\n FormLoadState = this.collect();\n this.loadState = FormLoadState;\n DOMBehaviors.attach();\n }\n\n _createClass(FormState, [{\n key: \"refresh\",\n value: function refresh() {\n this.form = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"form#\".concat(this.options.form_id)).filter(':noparents(.remodal)');\n this.fields = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"form#\".concat(this.options.form_id, \" *, [form=\\\"\").concat(this.options.form_id, \"\\\"]\")).filter(':input:not(.no-form)').filter(':noparents(.remodal)');\n return this;\n }\n }, {\n key: \"collect\",\n value: function collect() {\n var _this = this;\n\n if (!this.form || !this.fields.length) {\n return;\n }\n\n var values = {};\n this.refresh().fields.each(function (index, field) {\n field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(field);\n var name = field.prop('name');\n var type = field.prop('type');\n var tag = field.prop('tagName').toLowerCase();\n var value;\n\n if (name.startsWith('toggleable_') || name === 'data[lang]' || name === 'data[redirect]') {\n return;\n }\n\n switch (type) {\n case 'checkbox':\n value = field.is(':checked');\n break;\n\n case 'radio':\n if (!field.is(':checked')) {\n return;\n }\n\n value = field.val();\n break;\n\n default:\n value = field.val();\n }\n\n if (tag === 'select' && value === null) {\n value = '';\n }\n\n if (Array.isArray(value)) {\n value = value.join('|');\n }\n\n if (name && !~_this.options.ignore.indexOf(name)) {\n values[name] = value;\n }\n });\n return immutable__WEBPACK_IMPORTED_MODULE_1___default().OrderedMap(values);\n }\n }, {\n key: \"diff\",\n value: function diff() {\n return immutablediff__WEBPACK_IMPORTED_MODULE_2___default()(FormLoadState, this.collect());\n } // When the form doesn't exist or there are no fields, `equals` returns `null`\n // for this reason, _NEVER_ check with !Instance.equals(), use Instance.equals() === false\n\n }, {\n key: \"equals\",\n value: function equals() {\n if (!this.form || !this.fields.length) {\n return null;\n }\n\n return immutable__WEBPACK_IMPORTED_MODULE_1___default().is(FormLoadState, this.collect());\n }\n }]);\n\n return FormState;\n}();\n\n\n;\nvar Instance = new FormState();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL3N0YXRlLmpzPzY3ZTMiXSwibmFtZXMiOlsiRm9ybUxvYWRTdGF0ZSIsIkRPTUJlaGF2aW9ycyIsImF0dGFjaCIsInByZXZlbnRVbmxvYWQiLCJwcmV2ZW50Q2xpY2tBd2F5Iiwic2VsZWN0b3IiLCIkIiwid2luZG93IiwiYmVmb3JldW5sb2FkIiwiZmlsdGVyIiwiZXZlbnQiLCJuYW1lc3BhY2UiLCJsZW5ndGgiLCJvbiIsImdsb2JhbCIsIm9mZiIsIkluc3RhbmNlIiwiZXF1YWxzIiwiZ2V0IiwiY2xpY2siLCJpc0NsZWFuIiwicHJldmVudERlZmF1bHQiLCJkZXN0aW5hdGlvbiIsImF0dHIiLCJtb2RhbCIsImxvb2t1cCIsImRhdGEiLCJidXR0b25zIiwiaGFuZGxlciIsImFjdGlvbiIsImNsb3NlIiwibG9jYXRpb24iLCJocmVmIiwib3BlbiIsIkZvcm1TdGF0ZSIsIm9wdGlvbnMiLCJpZ25vcmUiLCJmb3JtX2lkIiwicmVmcmVzaCIsImZvcm0iLCJmaWVsZHMiLCJjb2xsZWN0IiwibG9hZFN0YXRlIiwidmFsdWVzIiwiZWFjaCIsImluZGV4IiwiZmllbGQiLCJuYW1lIiwicHJvcCIsInR5cGUiLCJ0YWciLCJ0b0xvd2VyQ2FzZSIsInZhbHVlIiwic3RhcnRzV2l0aCIsImlzIiwidmFsIiwiQXJyYXkiLCJpc0FycmF5Iiwiam9pbiIsImluZGV4T2YiLCJJbW11dGFibGUiLCJpbW11dGFibGVkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxhQUFhLEdBQUcsRUFBcEI7QUFFQSxJQUFNQyxZQUFZLEdBQUc7QUFDakJDLFFBRGlCLG9CQUNSO0FBQ0wsU0FBS0MsYUFBTDtBQUNBLFNBQUtDLGdCQUFMO0FBQ0gsR0FKZ0I7QUFNakJELGVBTmlCLDJCQU1EO0FBQ1osUUFBSUUsUUFBUSxHQUFHLDZFQUFmOztBQUNBLFFBQUlDLG1EQUFB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Z0IsS0FBS3lDLE9BQUwsRUFBaEIsQ0FBcEI7QUFDSCxLLENBRUQ7QUFDQTs7Ozs2QkFDUztBQUNMLFVBQUksQ0FBQyxLQUFLRixJQUFOLElBQWMsQ0FBQyxLQUFLQyxNQUFMLENBQVk1QixNQUEvQixFQUF1QztBQUFFLGVBQU8sSUFBUDtBQUFjOztBQUN2RCxhQUFPZ0QsbURBQUEsQ0FBYTVELGFBQWIsRUFBNEIsS0FBS3lDLE9BQUwsRUFBNUIsQ0FBUDtBQUNIOzs7Ozs7O0FBQ0o7QUFFTSxJQUFJekIsUUFBUSxHQUFHLElBQUlrQixTQUFKLEVBQWYiLCJmaWxlIjoiLi9hcHAvZm9ybXMvc3RhdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IEltbXV0YWJsZSBmcm9tICdpbW11dGFibGUnO1xuaW1wb3J0IGltbXV0YWJsZWRpZmYgZnJvbSAnaW1tdXRhYmxlZGlmZic7XG5pbXBvcnQgJy4uL3V0aWxzL2pxdWVyeS11dGlscyc7XG5cbmxldCBGb3JtTG9hZFN0YXRlID0ge307XG5cbmNvbnN0IERPTUJlaGF2aW9ycyA9IHtcbiAgICBhdHRhY2goKSB7XG4gICAgICAgIHRoaXMucHJldmVudFVubG9hZCgpO1xuICAgICAgICB0aGlzLnByZXZlbnRDbGlja0F3YXkoKTtcbiAgICB9LFxuXG4gICAgcHJldmVudFVubG9hZCgpIHtcbiAgICAgICAgbGV0IHNlbGVjdG9yID0gJ1tuYW1lPVwidGFza1wiXVt2YWx1ZV49XCJzYXZlXCJdLCBbZGF0YS1kZWxldGUtYWN0aW9uXSwgW2RhdGEtZmxleC1zYWZlLWFjdGlvbl0nO1xuICAgICAgICBpZiAoJC5fZGF0YSh3aW5kb3csICdldmVudHMnKSAmJiAoJC5fZGF0YSh3aW5kb3csICdldmVudHMnKS5iZWZvcmV1bmxvYWQgfHwgW10pLmZpbHRlcigoZXZlbnQpID0+IGV2ZW50Lm5hbWVzcGFjZSA9PT0gJ19ncmF2JykubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBbGxvdyBzb21lIGVsZW1lbnRzIHRvIGxlYXZlIHRoZSBwYWdlIHdpdGhvdXQgbmF0aXZlIGNvbmZpcm1hdGlvblxuICAgICAgICAkKHNlbGVjdG9yKS5vbignY2xpY2suX2dyYXYnLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgJChnbG9iYWwpLm9mZignYmVmb3JldW5sb2FkJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENhdGNoIGJyb3dzZXIgdXJpIGNoYW5nZSAvIHJlZnJlc2ggYXR0ZW1wdCBhbmQgc3RvcCBpdCBpZiB0aGUgZm9ybSBzdGF0ZSBpcyBkaXJ0eVxuICAgICAgICAkKGdsb2JhbCkub24oJ2JlZm9yZXVubG9hZC5fZ3JhdicsICgpID0+IHtcbiAgICAgICAgICAgIGlmIChJbnN0YW5jZS5lcXVhbHMoKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1lvdSBoYXZlIG1hZGUgY2hhbmdlcyBvbiB0aGlzIHBhZ2UgdGhhdCB5b3UgaGF2ZSBub3QgeWV0IGNvbmZpcm1lZC4gSWYgeW91IG5hdmlnYXRlIGF3YXkgZnJvbSB0aGlzIHBhZ2UgeW91IHdpbGwgbG9zZSB5b3VyIHVuc2F2ZWQgY2hhbmdlcy4nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgcHJldmVudENsaWNrQXdheSgpIHtcbiAgICAgICAgbGV0IHNlbGVjdG9yID0gJ2FbaHJlZl06bm90KFtocmVmXj1cIiNcIl0pOm5vdChbdGFyZ2V0PVwiX2JsYW5rXCJdKTpub3QoW2hyZWZePVwiamF2YXNjcmlwdDpcIl0pJztcblxuICAgICAgICBpZiAoJC5fZGF0YSgkKHNlbGVjdG9yKS5nZXQoMCksICdldmVudHMnKSAmJiAoJC5fZGF0YSgkKHNlbGVjdG9yKS5nZXQoMCksICdldmVudHMnKS5jbGljayB8fCBbXSkuZmlsdGVyKChldmVudCkgPT4gZXZlbnQubmFtZXNwYWNlID09PSAnX2dyYXYnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJldmVudCBjbGlja2luZyBhd2F5IGlmIHRoZSBmb3JtIHN0YXRlIGlzIGRpcnR5XG4gICAgICAgIC8vIGluc3RlYWQsIGRpc3BsYXkgYSBjb25maXJtYXRpb24gYmVmb3JlIGNvbnRpbnVpbmdcbiAgICAgICAgJChzZWxlY3Rvcikub24oJ2NsaWNrLl9ncmF2JywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgIGxldCBpc0NsZWFuID0gSW5zdGFuY2UuZXF1YWxzKCk7XG4gICAgICAgICAgICBpZiAoaXNDbGVhbiA9PT0gbnVsbCB8fCBpc0NsZWFuKSB7IHJldHVybiB0cnVlOyB9XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGxldCBkZXN0aW5hdGlvbiA9ICQodGhpcykuYXR0cignaHJlZicpO1xuICAgICAgICAgICAgbGV0IG1vZGFsID0gJCgnW2RhdGEtcmVtb2RhbC1pZD1cImNoYW5nZXNcIl0nKTtcbiAgICAgICAgICAgIGxldCBsb29rdXAgPSAkLnJlbW9kYWwubG9va3VwW21vZGFsLmRhdGEoJ3JlbW9kYWwnKV07XG4gICAgICAgICAgICBsZXQgYnV0dG9ucyA9ICQoJ2EuYnV0dG9uJywgbW9kYWwpO1xuXG4gICAgICAgICAgICBsZXQgaGFuZGxlciA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBsZXQgYWN0aW9uID0gJCh0aGlzKS5kYXRhKCdsZWF2ZS1hY3Rpb24nKTtcblxuICAgICAgICAgICAgICAgIGJ1dHRvbnMub2ZmKCdjbGljaycsIGhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIGxvb2t1cC5jbG9zZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gJ2NvbnRpbnVlJykge1xuICAgICAgICAgICAgICAgICAgICAkKGdsb2JhbCkub2ZmKCdiZWZvcmV1bmxvYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLmxvY2F0aW9uLmhyZWYgPSBkZXN0aW5hdGlvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBidXR0b25zLm9uKCdjbGljaycsIGhhbmRsZXIpO1xuICAgICAgICAgICAgbG9va3VwLm9wZW4oKTtcbiAgICAgICAgfSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9ybVN0YXRlIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge1xuICAgICAgICBpZ25vcmU6IFtdLFxuICAgICAgICBmb3JtX2lkOiAnYmx1ZXByaW50cydcbiAgICB9KSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5mb3JtIHx8ICF0aGlzLmZpZWxkcy5sZW5ndGgpIHsgcmV0dXJuOyB9XG4gICAgICAgIEZvcm1Mb2FkU3RhdGUgPSB0aGlzLmNvbGxlY3QoKTtcbiAgICAgICAgdGhpcy5sb2FkU3RhdGUgPSBGb3JtTG9hZFN0YXRlO1xuICAgICAgICBET01CZWhhdmlvcnMuYXR0YWNoKCk7XG4gICAgfVxuXG4gICAgcmVmcmVzaCgpIHtcbiAgICAgICAgdGhpcy5mb3JtID0gJChgZm9ybSMke3RoaXMub3B0aW9ucy5mb3JtX2lkfWApLmZpbHRlcignOm5vcGFyZW50cygucmVtb2RhbCknKTtcbiAgICAgICAgdGhpcy5maWVsZHMgPSAkKGBmb3JtIyR7dGhpcy5vcHRpb25zLmZvcm1faWR9ICosIFtmb3JtPVwiJHt0aGlzLm9wdGlvbnMuZm9ybV9pZH1cIl1gKS5maWx0ZXIoJzppbnB1dDpub3QoLm5vLWZvcm0pJykuZmlsdGVyKCc6bm9wYXJlbnRzKC5yZW1vZGFsKScpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbGxlY3QoKSB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtIHx8ICF0aGlzLmZpZWxkcy5sZW5ndGgpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgbGV0IHZhbHVlcyA9IHt9O1xuICAgICAgICB0aGlzLnJlZnJlc2goKS5maWVsZHMuZWFjaCgoaW5kZXgsIGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBmaWVsZCA9ICQoZmllbGQpO1xuICAgICAgICAgICAgbGV0IG5hbWUgPSBmaWVsZC5wcm9wKCduYW1lJyk7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IGZpZWxkLnByb3AoJ3R5cGUnKTtcbiAgICAgICAgICAgIGxldCB0YWcgPSBmaWVsZC5wcm9wKCd0YWdOYW1lJykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGxldCB2YWx1ZTtcblxuICAgICAgICAgICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgndG9nZ2xlYWJsZV8nKSB8fCBuYW1lID09PSAnZGF0YVtsYW5nXScgfHwgbmFtZSA9PT0gJ2RhdGFbcmVkaXJlY3RdJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tib3gnOlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGZpZWxkLmlzKCc6Y2hlY2tlZCcpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyYWRpbyc6XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmllbGQuaXMoJzpjaGVja2VkJykpIHsgcmV0dXJuOyB9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmllbGQudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmllbGQudmFsKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0YWcgPT09ICdzZWxlY3QnICYmIHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSAnJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5qb2luKCd8Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuYW1lICYmICF+dGhpcy5vcHRpb25zLmlnbm9yZS5pbmRleE9mKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzW25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBJbW11dGFibGUuT3JkZXJlZE1hcCh2YWx1ZXMpO1xuICAgIH1cblxuICAgIGRpZmYoKSB7XG4gICAgICAgIHJldHVybiBpbW11dGFibGVkaWZmKEZvcm1Mb2FkU3RhdGUsIHRoaXMuY29sbGVjdCgpKTtcbiAgICB9XG5cbiAgICAvLyBXaGVuIHRoZSBmb3JtIGRvZXNuJ3QgZXhpc3Qgb3IgdGhlcmUgYXJlIG5vIGZpZWxkcywgYGVxdWFsc2AgcmV0dXJucyBgbnVsbGBcbiAgICAvLyBmb3IgdGhpcyByZWFzb24sIF9ORVZFUl8gY2hlY2sgd2l0aCAhSW5zdGFuY2UuZXF1YWxzKCksIHVzZSBJbnN0YW5jZS5lcXVhbHMoKSA9PT0gZmFsc2VcbiAgICBlcXVhbHMoKSB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtIHx8ICF0aGlzLmZpZWxkcy5sZW5ndGgpIHsgcmV0dXJuIG51bGw7IH1cbiAgICAgICAgcmV0dXJuIEltbXV0YWJsZS5pcyhGb3JtTG9hZFN0YXRlLCB0aGlzLmNvbGxlY3QoKSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGxldCBJbnN0YW5jZSA9IG5ldyBGb3JtU3RhdGUoKTtcblxuZXhwb3J0IHsgRE9NQmVoYXZpb3JzIH07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/forms/state.js\n"); /***/ }),