/* * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). * This devtool is neither made for production nor for readable output files. * It uses "eval()" calls to create a separate source file in the browser devtools. * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) * or disable the default devtool with "devtool: false". * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). */ (function webpackUniversalModuleDefinition(root, factory) { //X-Editable Bootstrap 5 - CommonJS2 if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("jquery"), require("bootstrap")); //X-Editable Bootstrap 5 - AMD else if(typeof define === 'function' && define.amd) define(["jquery", "bootstrap"], factory); //X-Editable Bootstrap 5 - CommonJS else if(typeof exports === 'object') exports["EditableForm"] = factory(require("jquery"), require("bootstrap")); //X-Editable Bootstrap 5 - Auto-initializing UMD Bundle else root["EditableForm"] = factory(root["jQuery"], root["bootstrap"]); })(this, (__WEBPACK_EXTERNAL_MODULE_jquery__, __WEBPACK_EXTERNAL_MODULE_bootstrap__) => { return /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/select2/dist/css/select2.min.css": /*!*********************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/select2/dist/css/select2.min.css ***! \*********************************************************************************************/ /***/ ((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\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{background-color:transparent;border:none;font-size:1em}.select2-container[dir=\"rtl\"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline;list-style:none;padding:0}.select2-container .select2-selection--multiple .select2-selection__clear{background-color:transparent;border:none;font-size:1em}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;margin-left:5px;padding:0;max-width:100%;resize:none;height:18px;vertical-align:bottom;font-family:sans-serif;overflow:hidden;word-break:keep-all}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option--selectable{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;height:26px;margin-right:20px;padding-right:0px}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=\"rtl\"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;padding-bottom:5px;padding-right:5px;position:relative}.select2-container--default .select2-selection--multiple.select2-selection--clearable{padding-right:25px}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;font-weight:bold;height:20px;margin-right:10px;margin-top:5px;position:absolute;right:0;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:inline-block;margin-left:5px;margin-top:5px;padding:0;padding-left:20px;position:relative;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}.select2-container--default .select2-selection--multiple .select2-selection__choice__display{cursor:default;padding-left:2px;padding-right:5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{background-color:transparent;border:none;border-right:1px solid #aaa;border-top-left-radius:4px;border-bottom-left-radius:4px;color:#999;cursor:pointer;font-size:1em;font-weight:bold;padding:0 4px;position:absolute;left:0;top:0}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:focus{background-color:#f1f1f1;color:#333;outline:none}.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__display{padding-left:5px;padding-right:2px}.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove{border-left:1px solid #aaa;border-right:none;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:4px;border-bottom-right-radius:4px}.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__clear{float:left;margin-left:10px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--group{padding:0}.select2-container--default .select2-results__option--disabled{color:#999}.select2-container--default .select2-results__option--selected{background-color:#ddd}.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;height:26px;margin-right:20px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=\"rtl\"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0;padding-bottom:5px;padding-right:5px}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;display:inline-block;margin-left:5px;margin-top:5px;padding:0}.select2-container--classic .select2-selection--multiple .select2-selection__choice__display{cursor:default;padding-left:2px;padding-right:5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{background-color:transparent;border:none;border-top-left-radius:4px;border-bottom-left-radius:4px;color:#888;cursor:pointer;font-size:1em;font-weight:bold;padding:0 4px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555;outline:none}.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__display{padding-left:5px;padding-right:2px}.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:4px;border-bottom-right-radius:4px}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option--group{padding:0}.select2-container--classic .select2-results__option--disabled{color:grey}.select2-container--classic .select2-results__option--highlighted.select2-results__option--selectable{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://EditableForm/./node_modules/select2/dist/css/select2.min.css?./node_modules/css-loader/dist/cjs.js\n}"); /***/ }), /***/ "./node_modules/css-loader/dist/runtime/api.js": /*!*****************************************************!*\ !*** ./node_modules/css-loader/dist/runtime/api.js ***! \*****************************************************/ /***/ ((module) => { "use strict"; eval("{\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};\n\n//# sourceURL=webpack://EditableForm/./node_modules/css-loader/dist/runtime/api.js?\n}"); /***/ }), /***/ "./node_modules/css-loader/dist/runtime/noSourceMaps.js": /*!**************************************************************!*\ !*** ./node_modules/css-loader/dist/runtime/noSourceMaps.js ***! \**************************************************************/ /***/ ((module) => { "use strict"; eval("{\n\nmodule.exports = function (i) {\n return i[1];\n};\n\n//# sourceURL=webpack://EditableForm/./node_modules/css-loader/dist/runtime/noSourceMaps.js?\n}"); /***/ }), /***/ "./node_modules/select2/dist/css/select2.min.css": /*!*******************************************************!*\ !*** ./node_modules/select2/dist/css/select2.min.css ***! \*******************************************************/ /***/ ((__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\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/styleDomAPI.js */ \"./node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/insertBySelector.js */ \"./node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/insertStyleElement.js */ \"./node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/styleTagTransform.js */ \"./node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _css_loader_dist_cjs_js_select2_min_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../css-loader/dist/cjs.js!./select2.min.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/select2/dist/css/select2.min.css\");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\noptions.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\noptions.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_select2_min_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"], options);\n\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_select2_min_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"] && _css_loader_dist_cjs_js_select2_min_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals ? _css_loader_dist_cjs_js_select2_min_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals : undefined);\n\n\n//# sourceURL=webpack://EditableForm/./node_modules/select2/dist/css/select2.min.css?\n}"); /***/ }), /***/ "./node_modules/select2/dist/js/select2.js": /*!*************************************************!*\ !*** ./node_modules/select2/dist/js/select2.js ***! \*************************************************/ /***/ ((module, exports, __webpack_require__) => { eval("{var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n if (true) {\n // AMD. Register as an anonymous module.\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else // removed by dead control flow\n{}\n} (function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 =(function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error(\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n 'found. Make sure that you are including jQuery before Select2 on your ' +\n 'web page.'\n );\n }\n\n return _$;\n});\n\nS2.define('select2/utils',[\n 'jquery'\n], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor () {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n\n return ChildClass;\n };\n\n function getMethods (theClass) {\n var proto = theClass.prototype;\n\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass () {\n var unshift = Array.prototype.unshift;\n\n var argCount = DecoratorClass.prototype.constructor.length;\n\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr () {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n\n DecoratedClass.prototype[superMethod] =\n SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function (methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function () {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n\n return function () {\n var unshift = Array.prototype.unshift;\n\n unshift.call(arguments, originalMethod);\n\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function () {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n\n this.listeners = this.listeners || {};\n\n // Params should always come in as an array\n if (params == null) {\n params = [];\n }\n\n // If there are no arguments to the event, use a temporary object\n if (params.length === 0) {\n params.push({});\n }\n\n // Set the `_type` of the first object to the event\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY;\n\n //Check both x and y declarations\n if (overflowX === overflowY &&\n (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return ($el.innerHeight() < el.scrollHeight ||\n $el.innerWidth() < el.scrollWidth);\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n };\n\n // Do not try to escape the markup if it's not a string\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // Cache objects in Utils.__cache instead of $.data (see #4346)\n Utils.__cache = {};\n\n var id = 0;\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id with a prefix.\n // If an id already exists, it simply returns it with a prefix.\n\n var select2Id = element.getAttribute('data-select2-id');\n\n if (select2Id != null) {\n return select2Id;\n }\n\n // If element has id, use it.\n if (element.id) {\n select2Id = 'select2-data-' + element.id;\n } else {\n select2Id = 'select2-data-' + (++id).toString() +\n '-' + Utils.generateChars(4);\n }\n\n element.setAttribute('data-select2-id', select2Id);\n\n return select2Id;\n };\n\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n\n Utils.__cache[id][name] = value;\n };\n\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n\n element.removeAttribute('data-select2-id');\n };\n\n Utils.copyNonInternalCssClasses = function (dest, src) {\n var classes;\n\n var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n destinationClasses = destinationClasses.filter(function (clazz) {\n // Save all Select2 classes\n return clazz.indexOf('select2-') === 0;\n });\n\n var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n sourceClasses = sourceClasses.filter(function (clazz) {\n // Only copy non-Select2 classes\n return clazz.indexOf('select2-') !== 0;\n });\n\n var replacements = destinationClasses.concat(sourceClasses);\n\n dest.setAttribute('class', replacements.join(' '));\n };\n\n return Utils;\n});\n\nS2.define('select2/results',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Results ($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $(\n '
'\n );\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n\n this.clear();\n this.hideLoading();\n\n var $message = $(\n ''\n );\n\n var message = this.options.get('translations').get(params.message);\n\n $message.append(\n escapeMarkup(\n message(params.args)\n )\n );\n\n $message[0].className += ' select2-results__message';\n\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n\n var $option = this.option(item);\n\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results\n .find('.select2-results__option--selectable');\n\n var $selected = $options.filter('.select2-results__option--selected');\n\n // Check if there are any selected options\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n\n this.data.current(function (selected) {\n var selectedIds = selected.map(function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option--selectable');\n\n $options.each(function () {\n var $option = $(this);\n\n var item = Utils.GetData(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n\n if ((item.element != null && item.element.selected) ||\n (item.element == null && selectedIds.indexOf(id) > -1)) {\n this.classList.add('select2-results__option--selected');\n $option.attr('aria-selected', 'true');\n } else {\n this.classList.remove('select2-results__option--selected');\n $option.attr('aria-selected', 'false');\n }\n });\n\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n\n var loadingMore = this.options.get('translations').get('searching');\n\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.classList.add('select2-results__option');\n option.classList.add('select2-results__option--selectable');\n\n var attrs = {\n 'role': 'option'\n };\n\n var matches = window.Element.prototype.matches ||\n window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector;\n\n if ((data.element != null && matches.call(data.element, ':disabled')) ||\n (data.element == null && data.disabled)) {\n attrs['aria-disabled'] = 'true';\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--disabled');\n }\n\n if (data.id == null) {\n option.classList.remove('select2-results__option--selectable');\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--group');\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n\n this.template(data, label);\n\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n\n var $child = this.option(child);\n\n $children.push($child);\n }\n\n var $childrenContainer = $('$().editable()
. You should subscribe on it's events (save / cancel) to get profit of it.save|cancel|onblur|nochange|undefined (=manual)
\n **/\n hide: function(reason) {\n if(!this.tip() || !this.tip().is(':visible') || !this.$element.hasClass('editable-open')) {\n return;\n }\n\n //if form is saving value, schedule hide\n if(this.$form.data('editableform').isSaving) {\n this.delayedHide = {reason: reason};\n return;\n } else {\n this.delayedHide = false;\n }\n\n this.$element.removeClass('editable-open');\n this.innerHide();\n\n /**\n Fired when container was hidden. It occurs on both save or cancel.\n **Note:** Bootstrap popover has own `hidden` event that now cannot be separated from x-editable's one.\n The workaround is to check `arguments.length` that is always `2` for x-editable.\n\n @event hidden\n @param {object} event event object\n @param {string} reason Reason caused hiding. Can be save|cancel|onblur|nochange|manual
\n @example\n $('#username').on('hidden', function(e, reason) {\n if(reason === 'save' || reason === 'cancel') {\n //auto-open next editable\n $(this).closest('tr').next().find('.editable').editable('show');\n }\n });\n **/\n this.$element.triggerHandler('hidden', reason || 'manual');\n },\n\n /* internal show method. To be overwritten in child classes */\n innerShow: function () {\n\n },\n\n /* internal hide method. To be overwritten in child classes */\n innerHide: function () {\n\n },\n\n /**\n Toggles container visibility (show / hide)\n @method toggle()\n @param {boolean} closeAll Whether to close all other editable containers when showing this one. Default true.\n **/\n toggle: function(closeAll) {\n if(this.container() && this.tip() && this.tip().is(':visible')) {\n this.hide();\n } else {\n this.show(closeAll);\n }\n },\n\n /*\n Updates the position of container when content changed.\n @method setPosition()\n */\n setPosition: function() {\n //tbd in child class\n },\n\n save: function(e, params) {\n /**\n Fired when new value was submitted. You can use $(this).data('editableContainer')
inside handler to access to editableContainer instance\n\n @event save\n @param {Object} event event object\n @param {Object} params additional params\n @param {mixed} params.newValue submitted value\n @param {Object} params.response ajax response\n @example\n $('#username').on('save', function(e, params) {\n //assuming server response: '{success: true}'\n var pk = $(this).data('editableContainer').options.pk;\n if(params.response && params.response.success) {\n alert('value: ' + params.newValue + ' with pk: ' + pk + ' saved!');\n } else {\n alert('error!');\n }\n });\n **/\n this.$element.triggerHandler('save', params);\n\n //hide must be after trigger, as saving value may require methods of plugin, applied to input\n this.hide('save');\n },\n\n /**\n Sets new option\n\n @method option(key, value)\n @param {string} key\n @param {mixed} value\n **/\n option: function(key, value) {\n this.options[key] = value;\n if(key in this.containerOptions) {\n this.containerOptions[key] = value;\n this.setContainerOption(key, value);\n } else {\n this.formOptions[key] = value;\n if(this.$form) {\n this.$form.editableform('option', key, value);\n }\n }\n },\n\n setContainerOption: function(key, value) {\n this.call('option', key, value);\n },\n\n /**\n Destroys the container instance\n @method destroy()\n **/\n destroy: function() {\n this.hide();\n this.innerDestroy();\n this.$element.off('destroyed');\n this.$element.removeData('editableContainer');\n },\n\n /* to be overwritten in child classes */\n innerDestroy: function() {\n\n },\n\n /*\n Closes other containers except one related to passed element.\n Other containers can be cancelled or submitted (depends on onblur option)\n */\n closeOthers: function(element) {\n $('.editable-open').each(function(i, el){\n //do nothing with passed element and it's children\n if(el === element || $(el).find(element).length) {\n return;\n }\n\n //otherwise cancel or submit all open containers\n var $el = $(el),\n ec = $el.data('editableContainer');\n\n if(!ec) {\n return;\n }\n\n if(ec.options.onblur === 'cancel') {\n $el.data('editableContainer').hide('onblur');\n } else if(ec.options.onblur === 'submit') {\n $el.data('editableContainer').tip().find('form').submit();\n }\n });\n\n },\n\n /**\n Activates input of visible container (e.g. set focus)\n @method activate()\n **/\n activate: function() {\n if(this.tip && this.tip().is(':visible') && this.$form) {\n this.$form.data('editableform').input.activate();\n }\n }\n\n };\n\n /**\n jQuery method to initialize editableContainer.\n\n @method $().editableContainer(options)\n @params {Object} options\n @example\n $('#edit').editableContainer({\n type: 'text',\n url: '/post',\n pk: 1,\n value: 'hello'\n });\n **/\n $.fn.editableContainer = function (option) {\n var args = arguments;\n return this.each(function () {\n var $this = $(this),\n dataKey = 'editableContainer',\n data = $this.data(dataKey),\n options = typeof option === 'object' && option,\n Constructor = (options.mode === 'inline') ? Inline : Popup;\n\n if (!data) {\n $this.data(dataKey, (data = new Constructor(this, options)));\n }\n\n if (typeof option === 'string') { //call method\n data[option].apply(data, Array.prototype.slice.call(args, 1));\n }\n });\n };\n\n //store constructors\n $.fn.editableContainer.Popup = Popup;\n $.fn.editableContainer.Inline = Inline;\n\n //defaults\n $.fn.editableContainer.defaults = {\n /**\n Initial value of form input\n\n @property value\n @type mixed\n @default null\n @private\n **/\n value: null,\n /**\n Placement of container relative to element. Can be top|right|bottom|left
. Not used for inline container.\n\n @property placement\n @type string\n @default 'top'\n **/\n placement: 'top',\n /**\n Whether to hide container on save/cancel.\n\n @property autohide\n @type boolean\n @default true\n @private\n **/\n autohide: true,\n /**\n Action when user clicks outside the container. Can be cancel|submit|ignore
.\n Setting ignore
allows to have several containers open.\n\n @property onblur\n @type string\n @default 'cancel'\n @since 1.1.1\n **/\n onblur: 'cancel',\n\n /**\n Animation speed (inline mode only)\n @property anim\n @type string\n @default false\n **/\n anim: false,\n\n /**\n Mode of editable, can be `popup` or `inline`\n\n @property mode\n @type string\n @default 'popup'\n @since 1.4.0\n **/\n mode: 'popup'\n };\n\n /*\n * workaround to have 'destroyed' event to destroy popover when element is destroyed\n * see http://stackoverflow.com/questions/2200494/jquery-trigger-event-when-an-element-is-removed-from-the-dom\n */\n jQuery.event.special.destroyed = {\n remove: function(o) {\n if (o.handler) {\n o.handler();\n }\n }\n };\n\n return $;\n}\n\n//# sourceURL=webpack://EditableForm/./src/containers/editable-container.js?\n}");
/***/ }),
/***/ "./src/containers/editable-inline.js":
/*!*******************************************!*\
!*** ./src/containers/editable-inline.js ***!
\*******************************************/
/***/ (() => {
eval("{/**\n* Editable Inline \n* ---------------------\n*/\nfunction attachEditableInline($) {\n \"use strict\";\n \n //copy prototype from EditableContainer\n //extend methods\n $.extend($.fn.editableContainer.Inline.prototype, $.fn.editableContainer.Popup.prototype, {\n containerName: 'editableform',\n innerCss: '.editable-inline',\n containerClass: 'editable-container editable-inline', //css class applied to container element\n \n initContainer: function(){\n //container is element\n this.$tip = $('');\n \n //convert anim to miliseconds (int)\n if(!this.options.anim) {\n this.options.anim = 0;\n } \n },\n \n splitOptions: function() {\n //all options are passed to form\n this.containerOptions = {};\n this.formOptions = this.options;\n },\n \n tip: function() {\n return this.$tip; \n },\n \n innerShow: function () {\n this.$element.hide();\n this.tip().insertAfter(this.$element).show();\n }, \n \n innerHide: function () {\n this.$tip.hide(this.options.anim, $.proxy(function() {\n this.$element.show();\n this.innerDestroy();\n }, this)); \n },\n \n innerDestroy: function() {\n if(this.tip()) {\n this.tip().empty().remove();\n }\n } \n });\n\n return $;\n}\n\n//# sourceURL=webpack://EditableForm/./src/containers/editable-inline.js?\n}");
/***/ }),
/***/ "./src/containers/editable-popover5.js":
/*!*********************************************!*\
!*** ./src/containers/editable-popover5.js ***!
\*********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! bootstrap */ \"bootstrap\");\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(bootstrap__WEBPACK_IMPORTED_MODULE_0__);\n/**\n * Editable Popover for Bootstrap 5 based on Popper.js\n * ---------------------\n * requires bootstrap-popover.js\n */\n\n\nfunction attachEditablePopover($) {\n \"use strict\";\n\n //extend methods\n $.extend($.fn.editableContainer.Popup.prototype, {\n containerName: 'popover',\n containerDataName: 'bs.popover',\n innerCss: '.popover-body',\n defaults: bootstrap__WEBPACK_IMPORTED_MODULE_0__.Popover.Default,\n\n initContainer: function(){\n $.extend(this.containerOptions, {\n trigger: 'manual',\n selector: false,\n content: ' ',\n template: this.defaults.template\n });\n\n //as template property is used in inputs, hide it from popover\n var t;\n if(this.$element.data('template')) {\n t = this.$element.data('template');\n this.$element.removeData('template');\n }\n\n this.call(this.containerOptions);\n\n if(t) {\n //restore data('template')\n this.$element.data('template', t);\n }\n },\n\n /* show */\n innerShow: function () {\n this.call('show');\n },\n\n /* hide */\n innerHide: function () {\n this.call('hide');\n },\n\n /* destroy */\n innerDestroy: function() {\n this.call('dispose');\n },\n\n setContainerOption: function(key, value) {\n this.container().options[key] = value;\n },\n\n setPosition: function () {\n (function() {}).call(this.container());\n },\n\n call: function() {\n if ( ! $(this.$element).data(this.containerDataName)) {\n $(this.$element).data(this.containerDataName,\n bootstrap__WEBPACK_IMPORTED_MODULE_0__.Popover.getOrCreateInstance(this.$element, this.containerOptions)\n );\n }\n\n return this.$element[this.containerName].apply(this.$element, arguments);\n },\n\n tip: function() {\n return this.container() ? $(this.container().tip) : null;\n }\n });\n \n return $;\n}\n\n//# sourceURL=webpack://EditableForm/./src/containers/editable-popover5.js?\n}");
/***/ }),
/***/ "./src/editable-form/editable-form-bootstrap5.js":
/*!*******************************************************!*\
!*** ./src/editable-form/editable-form-bootstrap5.js ***!
\*******************************************************/
/***/ (() => {
eval("{/*\nEditableform based on Twitter Bootstrap 5\n*/\nfunction attachEditableFormBootstrap5($) {\n \"use strict\";\n\n //store parent methods\n const pInitInput = $.fn.editableform.Constructor.prototype.initInput;\n\n $.extend($.fn.editableform.Constructor.prototype, {\n initTemplate: function() {\n this.$form = $($.fn.editableform.template);\n this.$form.find('.control-group').removeClass('control-group');\n this.$form.find('.editable-error-block').removeClass('help-block').addClass('invalid-feedback');\n },\n initInput: function() {\n pInitInput.apply(this);\n\n //for bs5 set default class `form-select-sm` to standard inputs\n var emptyInputClass = this.input.options.inputclass === null || this.input.options.inputclass === false;\n var defaultClass = 'form-select-sm';\n\n //bs5 add `form-select` class to standard inputs\n var stdtypes = 'text,select,textarea,password,email,url,tel,number,range,time,typeaheadjs'.split(',');\n if(~$.inArray(this.input.type, stdtypes)) {\n this.input.$input.addClass('form-select');\n if(emptyInputClass) {\n this.input.options.inputclass = defaultClass;\n this.input.$input.addClass(defaultClass);\n }\n }\n\n //apply bs3 size class also to buttons (to fit size of control)\n var $btn = this.$form.find('.editable-buttons');\n var classes = emptyInputClass ? [defaultClass] : this.input.options.inputclass.split(' ');\n for(var i=0; itext|textarea|select|date|checklist
\n\n @property type \n @type string\n @default 'text'\n **/\n type: 'text',\n /**\n Url for submit, e.g. '/post'
\n If function - it will be called instead of ajax. Function should return deferred object to run fail/done callbacks.\n\n @property url \n @type string|function\n @default null\n @example\n url: function(params) {\n var d = new $.Deferred;\n if(params.value === 'abc') {\n return d.reject('error message'); //returning error via deferred object\n } else {\n //async saving data in js model\n someModel.asyncSaveMethod({\n ..., \n success: function(){\n d.resolve();\n }\n }); \n return d.promise();\n }\n } \n **/ \n url:null,\n /**\n Additional params for submit. If defined as object
- it is **appended** to original ajax data (pk, name and value). \n If defined as function
- returned object **overwrites** original ajax data.\n @example\n params: function(params) {\n //originally params contain pk, name and value\n params.a = 1;\n return params;\n }\n\n @property params \n @type object|function\n @default null\n **/ \n params:null,\n /**\n Name of field. Will be submitted on server. Can be taken from id
attribute\n\n @property name \n @type string\n @default null\n **/ \n name: null,\n /**\n Primary key of editable object (e.g. record id in database). For composite keys use object, e.g. {id: 1, lang: 'en'}
.\n Can be calculated dynamically via function.\n\n @property pk \n @type string|object|function\n @default null\n **/ \n pk: null,\n /**\n Initial value. If not defined - will be taken from element's content.\n For __select__ type should be defined (as it is ID of shown text).\n\n @property value \n @type string|object\n @default null\n **/ \n value: null,\n /**\n Value that will be displayed in input if original field value is empty (`null|undefined|''`).\n\n @property defaultValue \n @type string|object\n @default null\n @since 1.4.6\n **/ \n defaultValue: null,\n /**\n Strategy for sending data on server. Can be `auto|always|never`.\n When 'auto' data will be sent on server **only if pk and url defined**, otherwise new value will be stored locally.\n\n @property send \n @type string\n @default 'auto'\n **/ \n send: 'auto', \n /**\n Function for client-side validation. If returns string - means validation not passed and string showed as error.\n Since 1.5.1 you can modify submitted value by returning object from `validate`: \n `{newValue: '...'}` or `{newValue: '...', msg: '...'}`\n\n @property validate \n @type function\n @default null\n @example\n validate: function(value) {\n if(value.trim() == '') {\n return 'This field is required';\n }\n }\n **/ \n validate: null,\n /**\n Success callback. Called when value successfully sent on server and **response status = 200**. \n Usefull to work with json response. For example, if your backend response can be {success: true}
\n or {success: false, msg: \"server error\"}
you can check it inside this callback. \n If it returns **string** - means error occured and string is shown as error message. \n If it returns **object like** {newValue: <something>}
- it overwrites value, submitted by user. \n Otherwise newValue simply rendered into element.\n \n @property success \n @type function\n @default null\n @example\n success: function(response, newValue) {\n if(!response.success) return response.msg;\n }\n **/ \n success: null,\n /**\n Error callback. Called when request failed (response status != 200). \n Usefull when you want to parse error response and display a custom message.\n Must return **string** - the message to be displayed in the error block.\n \n @property error \n @type function\n @default null\n @since 1.4.4\n @example\n error: function(response, newValue) {\n if(response.status === 500) {\n return 'Service unavailable. Please try later.';\n } else {\n return response.responseText;\n }\n }\n **/ \n error: null,\n /**\n Additional options for submit ajax request.\n List of values: http://api.jquery.com/jQuery.ajax\n \n @property ajaxOptions \n @type object\n @default null\n @since 1.1.1 \n @example \n ajaxOptions: {\n type: 'put',\n dataType: 'json'\n } \n **/ \n ajaxOptions: null,\n /**\n Where to show buttons: left(true)|bottom|false \n Form without buttons is auto-submitted.\n\n @property showbuttons \n @type boolean|string\n @default true\n @since 1.1.1\n **/ \n showbuttons: true,\n /**\n Scope for callback methods (success, validate). \n If null
means editableform instance itself. \n\n @property scope \n @type DOMElement|object\n @default null\n @since 1.2.0\n @private\n **/ \n scope: null,\n /**\n Whether to save or cancel value when it was not changed but form was submitted\n\n @property savenochange \n @type boolean\n @default false\n @since 1.2.0\n **/\n savenochange: false\n }; \n\n /*\n Note: following params could redefined in engine: bootstrap or jqueryui:\n Classes 'control-group' and 'editable-error-block' must always present!\n */ \n $.fn.editableform.template = '';\n\n //loading div\n $.fn.editableform.loading = '';\n\n //buttons\n $.fn.editableform.buttons = ''+\n ''; \n\n //error class attached to control-group\n $.fn.editableform.errorGroupClass = null; \n\n //error class attached to editable-error-block\n $.fn.editableform.errorBlockClass = 'editable-error';\n \n //engine\n $.fn.editableform.engine = 'jquery';\n \n return $;\n}\n\n\n//# sourceURL=webpack://EditableForm/./src/editable-form/editable-form.js?\n}");
/***/ }),
/***/ "./src/element/editable-element.js":
/*!*****************************************!*\
!*** ./src/element/editable-element.js ***!
\*****************************************/
/***/ (() => {
eval("{/**\nMakes editable any HTML element on the page. Applied as jQuery method.\n\n@class editable\n@uses editableContainer\n**/\n\nfunction attachEditable($) {\n \"use strict\";\n\n var Editable = function (element, options) {\n this.$element = $(element);\n //data-* has more priority over js options: because dynamically created elements may change data-* \n this.options = $.extend({}, $.fn.editable.defaults, options, $.fn.editableutils.getConfigData(this.$element)); \n if(this.options.selector) {\n this.initLive();\n } else {\n this.init();\n }\n \n //check for transition support\n if(this.options.highlight && !$.fn.editableutils.supportsTransitions()) {\n this.options.highlight = false;\n }\n };\n\n Editable.prototype = {\n constructor: Editable, \n init: function () {\n var isValueByText = false, \n doAutotext, finalize;\n\n //name\n this.options.name = this.options.name || this.$element.attr('id');\n \n //create input of specified type. Input needed already here to convert value for initial display (e.g. show text by id for select)\n //also we set scope option to have access to element inside input specific callbacks (e. g. source as function)\n this.options.scope = this.$element[0]; \n this.input = $.fn.editableutils.createInput(this.options);\n if(!this.input) {\n return; \n }\n \n // Set the editable's type from the input's type\n this.type = this.input.type; \n\n //set value from settings or by element's text\n if (this.options.value === undefined || this.options.value === null) {\n this.value = this.input.html2value(this.$element.html().trim());\n isValueByText = true;\n } else {\n /*\n value can be string when received from 'data-value' attribute\n for complext objects value can be set as json string in data-value attribute, \n e.g. data-value=\"{city: 'Moscow', street: 'Lenina'}\"\n */\n this.options.value = $.fn.editableutils.tryParseJson(this.options.value, true); \n if(typeof this.options.value === 'string') {\n this.value = this.input.str2value(this.options.value);\n } else {\n this.value = this.options.value;\n }\n }\n \n //add 'editable' class to every editable element\n this.$element.addClass('editable');\n \n //specifically for \"textarea\" add class .editable-pre-wrapped to keep linebreaks\n if(this.input.type === 'textarea') {\n this.$element.addClass('editable-pre-wrapped');\n }\n \n //attach handler activating editable. In disabled mode it just prevent default action (useful for links)\n if(this.options.toggle !== 'manual') {\n this.$element.addClass('editable-click');\n // Debug: ensure toggle is set\n if (!this.options.toggle) {\n console.warn('Toggle option is undefined, defaulting to click');\n this.options.toggle = 'click';\n }\n this.$element.on(this.options.toggle + '.editable', $.proxy(function(e){\n //prevent following link if editable enabled\n if(!this.options.disabled) {\n e.preventDefault();\n }\n \n //stop propagation not required because in document click handler it checks event target\n //e.stopPropagation();\n \n if(this.options.toggle === 'mouseenter') {\n //for hover only show container\n this.show();\n } else {\n //when toggle='click' we should not close all other containers as they will be closed automatically in document click listener\n var closeAll = (this.options.toggle !== 'click');\n this.toggle(closeAll);\n }\n }, this));\n } else {\n this.$element.attr('tabindex', -1); //do not stop focus on element when toggled manually\n }\n \n //if display is function it's far more convinient to have autotext = always to render correctly on init\n //see https://github.com/vitalets/x-editable-yii/issues/34\n if(typeof this.options.display === 'function') {\n this.options.autotext = 'always';\n }\n \n //check conditions for autotext:\n switch(this.options.autotext) {\n case 'always':\n doAutotext = true;\n break;\n case 'auto':\n //if element text is empty and value is defined and value not generated by text --> run autotext\n doAutotext = !(this.$element.text().trim()).length && this.value !== null && this.value !== undefined && !isValueByText;\n break;\n default:\n doAutotext = false;\n }\n\n //depending on autotext run render() or just finilize init\n $.when(doAutotext ? this.render() : true).then($.proxy(function() {\n if(this.options.disabled) {\n this.disable();\n } else {\n this.enable(); \n }\n /** \n Fired when element was initialized by `$().editable()` method. \n Please note that you should setup `init` handler **before** applying `editable`. \n \n @event init \n @param {Object} event event object\n @param {Object} editable editable instance (as here it cannot accessed via data('editable'))\n @since 1.2.0\n @example\n $('#username').on('init', function(e, editable) {\n alert('initialized ' + editable.options.name);\n });\n $('#username').editable();\n **/ \n this.$element.triggerHandler('init', this);\n }, this));\n },\n\n /*\n Initializes parent element for live editables \n */\n initLive: function() {\n //store selector \n var selector = this.options.selector;\n //modify options for child elements\n this.options.selector = false; \n this.options.autotext = 'never';\n //listen toggle events\n this.$element.on(this.options.toggle + '.editable', selector, $.proxy(function(e){\n var $target = $(e.target);\n if(!$target.data('editable')) {\n //if delegated element initially empty, we need to clear it's text (that was manually set to `empty` by user)\n //see https://github.com/vitalets/x-editable/issues/137 \n if($target.hasClass(this.options.emptyclass)) {\n $target.empty();\n }\n $target.editable(this.options).trigger(e);\n }\n }, this)); \n },\n \n /*\n Renders value into element's text.\n Can call custom display method from options.\n Can return deferred object.\n @method render()\n @param {mixed} response server response (if exist) to pass into display function\n */ \n render: function(response) {\n //do not display anything\n if(this.options.display === false) {\n return;\n }\n\n //if input has `value2htmlFinal` method, we pass callback in third param to be called when source is loaded\n if(this.input.value2htmlFinal) {\n return this.input.value2html(this.value, this.$element[0], this.options.display, response);\n //if display method defined --> use it\n } else if(typeof this.options.display === 'function') {\n return this.options.display.call(this.$element[0], this.value, response);\n //else use input's original value2html() method\n } else {\n return this.input.value2html(this.value, this.$element[0]);\n }\n },\n \n /**\n Enables editable\n @method enable()\n **/ \n enable: function() {\n this.options.disabled = false;\n this.$element.removeClass('editable-disabled');\n this.handleEmpty(this.isEmpty);\n if(this.options.toggle !== 'manual') {\n if(this.$element.attr('tabindex') === '-1') { \n this.$element.removeAttr('tabindex'); \n }\n }\n },\n \n /**\n Disables editable\n @method disable()\n **/ \n disable: function() {\n this.options.disabled = true; \n this.hide(); \n this.$element.addClass('editable-disabled');\n this.handleEmpty(this.isEmpty);\n //do not stop focus on this element\n this.$element.attr('tabindex', -1); \n },\n \n /**\n Toggles enabled / disabled state of editable element\n @method toggleDisabled()\n **/ \n toggleDisabled: function() {\n if(this.options.disabled) {\n this.enable();\n } else { \n this.disable(); \n }\n }, \n \n /**\n Sets new option\n \n @method option(key, value)\n @param {string|object} key option name or object with several options\n @param {mixed} value option new value\n @example\n $('.editable').editable('option', 'pk', 2);\n **/ \n option: function(key, value) {\n //set option(s) by object\n if(key && typeof key === 'object') {\n $.each(key, $.proxy(function(k, v){\n this.option(k.triim(), v);\n }, this)); \n return;\n }\n\n //set option by string \n this.options[key] = value; \n \n //disabled\n if(key === 'disabled') {\n return value ? this.disable() : this.enable();\n } \n \n //value\n if(key === 'value') {\n this.setValue(value);\n }\n \n //transfer new option to container! \n if(this.container) {\n this.container.option(key, value); \n }\n \n //pass option to input directly (as it points to the same in form)\n if(this.input.option) {\n this.input.option(key, value);\n }\n \n }, \n \n /*\n * set emptytext if element is empty\n */\n handleEmpty: function (isEmpty) {\n //do not handle empty if we do not display anything\n if(this.options.display === false) {\n return;\n }\n\n /* \n isEmpty may be set directly as param of method.\n It is required when we enable/disable field and can't rely on content \n as node content is text: \"Empty\" that is not empty %)\n */\n if(isEmpty !== undefined) { \n this.isEmpty = isEmpty;\n } else {\n //detect empty\n //for some inputs we need more smart check\n //e.g. wysihtml5 may have $(this).data('editable')
to access to editable instance\n \n @event save \n @param {Object} event event object\n @param {Object} params additional params\n @param {mixed} params.newValue submitted value\n @param {Object} params.response ajax response\n @example\n $('#username').on('save', function(e, params) {\n alert('Saved value: ' + params.newValue);\n });\n **/\n //event itself is triggered by editableContainer. Description here is only for documentation \n },\n\n validate: function () {\n if (typeof this.options.validate === 'function') {\n return this.options.validate.call(this, this.value);\n }\n },\n \n /**\n Sets new value of editable\n @method setValue(value, convertStr)\n @param {mixed} value new value \n @param {boolean} convertStr whether to convert value from string to internal format\n **/ \n setValue: function(value, convertStr, response) {\n if(convertStr) {\n this.value = this.input.str2value(value);\n } else {\n this.value = value;\n }\n if(this.container) {\n this.container.option('value', this.value);\n }\n $.when(this.render(response))\n .then($.proxy(function() {\n this.handleEmpty();\n }, this));\n },\n \n /**\n Activates input of visible container (e.g. set focus)\n @method activate()\n **/ \n activate: function() {\n if(this.container) {\n this.container.activate(); \n }\n },\n \n /**\n Removes editable feature from element\n @method destroy()\n **/ \n destroy: function() {\n this.disable();\n \n if(this.container) {\n this.container.destroy(); \n }\n \n this.input.destroy();\n\n if(this.options.toggle !== 'manual') {\n this.$element.removeClass('editable-click');\n this.$element.off(this.options.toggle + '.editable');\n } \n \n this.$element.off(\"save.internal\");\n \n this.$element.removeClass('editable editable-open editable-disabled');\n this.$element.removeData('editable');\n } \n };\n\n /* EDITABLE PLUGIN DEFINITION\n * ======================= */\n\n /**\n jQuery method to initialize editable element.\n \n @method $().editable(options)\n @params {Object} options\n @example\n $('#username').editable({\n type: 'text',\n url: '/post',\n pk: 1\n });\n **/\n $.fn.editable = function (option) {\n //special API methods returning non-jquery object\n var result = {}, args = arguments, datakey = 'editable';\n switch (option) {\n /**\n Runs client-side validation for all matched editables\n \n @method validate()\n @returns {Object} validation errors map\n @example\n $('#username, #fullname').editable('validate');\n // possible result:\n {\n username: \"username is required\",\n fullname: \"fullname should be minimum 3 letters length\"\n }\n **/\n case 'validate':\n this.each(function () {\n var $this = $(this), data = $this.data(datakey), error;\n if (data && (error = data.validate())) {\n result[data.options.name] = error;\n }\n });\n return result;\n\n /**\n Returns current values of editable elements. \n Note that it returns an **object** with name-value pairs, not a value itself. It allows to get data from several elements. \n If value of some editable is `null` or `undefined` it is excluded from result object.\n When param `isSingle` is set to **true** - it is supposed you have single element and will return value of editable instead of object. \n \n @method getValue()\n @param {bool} isSingle whether to return just value of single element\n @returns {Object} object of element names and values\n @example\n $('#username, #fullname').editable('getValue');\n //result:\n {\n username: \"superuser\",\n fullname: \"John\"\n }\n //isSingle = true\n $('#username').editable('getValue', true);\n //result \"superuser\" \n **/\n case 'getValue':\n if(arguments.length === 2 && arguments[1] === true) { //isSingle = true\n result = this.eq(0).data(datakey).value;\n } else {\n this.each(function () {\n var $this = $(this), data = $this.data(datakey);\n if (data && data.value !== undefined && data.value !== null) {\n result[data.options.name] = data.input.value2submit(data.value);\n }\n });\n }\n return result;\n\n /**\n This method collects values from several editable elements and submit them all to server. \n Internally it runs client-side validation for all fields and submits only in case of success. \n See creating new records for details. \n Since 1.5.1 `submit` can be applied to single element to send data programmatically. In that case\n `url`, `success` and `error` is taken from initial options and you can just call `$('#username').editable('submit')`. \n \n @method submit(options)\n @param {object} options \n @param {object} options.url url to submit data \n @param {object} options.data additional data to submit\n @param {object} options.ajaxOptions additional ajax options\n @param {function} options.error(obj) error handler \n @param {function} options.success(obj,config) success handler\n @returns {Object} jQuery object\n **/\n case 'submit': //collects value, validate and submit to server for creating new record\n var config = arguments[1] || {},\n $elems = this,\n errors = this.editable('validate');\n\n // validation ok\n if($.isEmptyObject(errors)) {\n var ajaxOptions = {};\n \n // for single element use url, success etc from options\n if($elems.length === 1) {\n var editable = $elems.data('editable');\n //standard params\n var params = {\n name: editable.options.name || '',\n value: editable.input.value2submit(editable.value),\n pk: (typeof editable.options.pk === 'function') ? \n editable.options.pk.call(editable.options.scope) : \n editable.options.pk \n };\n\n //additional params\n if(typeof editable.options.params === 'function') {\n params = editable.options.params.call(editable.options.scope, params); \n } else {\n //try parse json in single quotes (from data-params attribute)\n editable.options.params = $.fn.editableutils.tryParseJson(editable.options.params, true); \n $.extend(params, editable.options.params);\n }\n\n ajaxOptions = {\n url: editable.options.url,\n data: params,\n type: 'POST' \n };\n \n // use success / error from options \n config.success = config.success || editable.options.success;\n config.error = config.error || editable.options.error;\n \n // multiple elements\n } else {\n var values = this.editable('getValue'); \n \n ajaxOptions = {\n url: config.url,\n data: values, \n type: 'POST'\n }; \n } \n\n // ajax success callabck (response 200 OK)\n ajaxOptions.success = typeof config.success === 'function' ? function(response) {\n config.success.call($elems, response, config);\n } : $.noop;\n \n // ajax error callabck\n ajaxOptions.error = typeof config.error === 'function' ? function() {\n config.error.apply($elems, arguments);\n } : $.noop;\n \n // extend ajaxOptions \n if(config.ajaxOptions) { \n $.extend(ajaxOptions, config.ajaxOptions);\n }\n \n // extra data \n if(config.data) {\n $.extend(ajaxOptions.data, config.data);\n } \n \n // perform ajax request\n $.ajax(ajaxOptions);\n } else { //client-side validation error\n if(typeof config.error === 'function') {\n config.error.call($elems, errors);\n }\n }\n return this;\n }\n\n //return jquery object\n return this.each(function () {\n var $this = $(this), \n data = $this.data(datakey), \n options = typeof option === 'object' && option;\n\n //for delegated targets do not store `editable` object for element\n //it's allows several different selectors.\n //see: https://github.com/vitalets/x-editable/issues/312 \n if(options && options.selector) {\n data = new Editable(this, options);\n return; \n } \n \n if (!data) {\n $this.data(datakey, (data = new Editable(this, options)));\n }\n\n if (typeof option === 'string') { //call method \n data[option].apply(data, Array.prototype.slice.call(args, 1));\n } \n });\n }; \n \n\n $.fn.editable.defaults = {\n /**\n Type of input. Can be text|textarea|select|date|checklist
and more\n\n @property type \n @type string\n @default 'text'\n **/\n type: 'text', \n /**\n Sets disabled state of editable\n\n @property disabled \n @type boolean\n @default false\n **/ \n disabled: false,\n /**\n How to toggle editable. Can be click|dblclick|mouseenter|manual
. \n When set to manual
you should manually call show/hide
methods of editable. \n **Note**: if you call show
or toggle
inside **click** handler of some DOM element, \n you need to apply e.stopPropagation()
because containers are being closed on any click on document.\n \n @example\n $('#edit-button').click(function(e) {\n e.stopPropagation();\n $('#username').editable('toggle');\n });\n\n @property toggle \n @type string\n @default 'click'\n **/ \n toggle: 'click',\n /**\n Text shown when element is empty.\n\n @property emptytext \n @type string\n @default 'Empty'\n **/ \n emptytext: 'Empty',\n /**\n Allows to automatically set element's text based on it's value. Can be auto|always|never
. Useful for select and date.\n For example, if dropdown list is {1: 'a', 2: 'b'}
and element's value set to 1
, it's html will be automatically set to 'a'
. \n auto
- text will be automatically set only if element is empty. \n always|never
- always(never) try to set element's text.\n\n @property autotext \n @type string\n @default 'auto'\n **/ \n autotext: 'auto', \n /**\n Initial value of input. If not set, taken from element's text. \n Note, that if element's text is empty - text is automatically generated from value and can be customized (see `autotext` option). \n For example, to display currency sign:\n @example\n \n \n \n @property value \n @type mixed\n @default element's text\n **/\n value: null,\n /**\n Callback to perform custom displaying of value in element's text. \n If `null`, default input's display used. \n If `false`, no displaying methods will be called, element's text will never change. \n Runs under element's scope. \n _**Parameters:**_ \n \n * `value` current value to be displayed\n * `response` server response (if display called after ajax submit), since 1.4.0\n \n For _inputs with source_ (select, checklist) parameters are different: \n \n * `value` current value to be displayed\n * `sourceData` array of items for current input (e.g. dropdown items) \n * `response` server response (if display called after ajax submit), since 1.4.0\n \n To get currently selected items use `$.fn.editableutils.itemsByValue(value, sourceData)`.\n \n @property display \n @type function|boolean\n @default null\n @since 1.2.0\n @example\n display: function(value, sourceData) {\n //display checklist as comma-separated values\n var html = [],\n checked = $.fn.editableutils.itemsByValue(value, sourceData);\n \n if(checked.length) {\n $.each(checked, function(i, v) { html.push($.fn.editableutils.escape(v.text)); });\n $(this).html(html.join(', '));\n } else {\n $(this).empty(); \n }\n }\n **/ \n display: null,\n /**\n Css class applied when editable text is empty.\n\n @property emptyclass \n @type string\n @since 1.4.1 \n @default editable-empty\n **/ \n emptyclass: 'editable-empty',\n /**\n Css class applied when value was stored but not sent to server (`pk` is empty or `send = 'never'`). \n You may set it to `null` if you work with editables locally and submit them together. \n\n @property unsavedclass \n @type string\n @since 1.4.1 \n @default editable-unsaved\n **/ \n unsavedclass: 'editable-unsaved',\n /**\n If selector is provided, editable will be delegated to the specified targets. \n Usefull for dynamically generated DOM elements. \n **Please note**, that delegated targets can't be initialized with `emptytext` and `autotext` options, \n as they actually become editable only after first click. \n You should manually set class `editable-click` to these elements. \n Also, if element originally empty you should add class `editable-empty`, set `data-value=\"\"` and write emptytext into element:\n\n @property selector \n @type string\n @since 1.4.1 \n @default null\n @example\n \n \n \n **/ \n selector: null,\n /**\n Color used to highlight element after update. Implemented via CSS3 transition, works in modern browsers.\n \n @property highlight \n @type string|boolean\n @since 1.4.5 \n @default #FFFF80 \n **/\n highlight: '#FFFF80'\n };\n \n // Return the jQuery object with attached editable functionality\n return $;\n}\n\n\n//# sourceURL=webpack://EditableForm/./src/element/editable-element.js?\n}");
/***/ }),
/***/ "./src/inputs/abstract.js":
/*!********************************!*\
!*** ./src/inputs/abstract.js ***!
\********************************/
/***/ (() => {
eval("{/**\nAbstractInput - base class for all editable inputs.\nIt defines interface to be implemented by any input type.\nTo create your own input you can inherit from this class.\n\n@class abstractinput\n**/\n\nfunction attachAbstractInput($) {\n \"use strict\";\n\n //types\n $.fn.editabletypes = {};\n\n var AbstractInput = function () { };\n\n AbstractInput.prototype = {\n /**\n Initializes input\n\n @method init() \n **/\n init: function(type, options, defaults) {\n this.type = type;\n this.options = $.extend({}, defaults, options);\n },\n\n /*\n this method called before render to init $tpl that is inserted in DOM\n */\n prerender: function() {\n this.$tpl = $(this.options.tpl); //whole tpl as jquery object \n this.$input = this.$tpl; //control itself, can be changed in render method\n this.$clear = null; //clear button\n this.error = null; //error message, if input cannot be rendered \n },\n \n /**\n Renders input from tpl. Can return jQuery deferred object.\n Can be overwritten in child objects\n\n @method render()\n **/\n render: function() {\n\n }, \n\n /**\n Sets element's html by value. \n\n @method value2html(value, element)\n @param {mixed} value\n @param {DOMElement} element\n **/\n value2html: function(value, element) {\n $(element)[this.options.escape ? 'text' : 'html'](value.trim());\n },\n\n /**\n Converts element's html to value\n\n @method html2value(html)\n @param {string} html\n @returns {mixed}\n **/\n html2value: function(html) {\n return $('data-value
attribute.d, dd, m, mm, yy, yyyy
\n\n @property format \n @type string\n @default yyyy-mm-dd\n **/\n format:'yyyy-mm-dd',\n /**\n Format used for displaying date. Also applied when converting date from element's text on init. \n If not specified equals to format
\n\n @property viewformat \n @type string\n @default null\n **/\n viewformat: null,\n /**\n Configuration of datepicker.\n Full list of options: http://bootstrap-datepicker.readthedocs.org/en/latest/options.html\n\n @property datepicker \n @type object\n @default {\n weekStart: 0,\n startView: 0,\n minViewMode: 0,\n autoclose: false\n }\n **/\n datepicker:{\n weekStart: 0,\n startView: 0,\n minViewMode: 0,\n autoclose: false\n },\n /**\n Text shown as clear date button. \n If false
clear button will not be rendered.\n\n @property clear \n @type boolean|string\n @default 'x clear'\n **/\n clear: '× clear'\n });\n\n $.fn.editabletypes.date = Date;\n\n return $;\n}\n\n\n//# sourceURL=webpack://EditableForm/./src/inputs/date/date.js?\n}");
/***/ }),
/***/ "./src/inputs/date/datefield.js":
/*!**************************************!*\
!*** ./src/inputs/date/datefield.js ***!
\**************************************/
/***/ (() => {
eval("{/**\nBootstrap datefield input - modification for inline mode.\nShows normal and binds popup datepicker. \nAutomatically shown in inline mode.\n\n@class datefield\n@extends date\n\n@since 1.4.0\n**/\nfunction attachDateField($) {\n \"use strict\";\n \n var DateField = function (options) {\n this.init('datefield', options, DateField.defaults);\n this.initPicker(options, DateField.defaults);\n \n // Ensure type is set correctly\n this.type = 'datefield';\n };\n\n $.fn.editableutils.inherit(DateField, $.fn.editabletypes.date); \n \n $.extend(DateField.prototype, {\n render: function () {\n this.$input = this.$tpl.find('input');\n this.setClass();\n this.setAttr('placeholder');\n \n //use datepicker instead of bdatepicker \n this.$tpl.datepicker(this.options.datepicker);\n \n //need to disable original event handlers\n this.$input.off('focus keydown');\n \n // Hide buttons initially for datepicker workflow\n var self = this;\n setTimeout(function() {\n if (!self.$form) {\n // Find buttons in the broader DOM and hide them directly\n var $allButtons = $('.editable-buttons:visible');\n if ($allButtons.length > 0) {\n $allButtons.each(function(i, btn) {\n // Directly hide this button for datepicker\n var $btn = $(btn);\n $btn.hide();\n $btn.css('display', 'none !important');\n $btn.addClass('datepicker-hidden');\n \n // Store reference for later showing\n self.$dateButtons = $btn;\n });\n }\n }\n }, 500);\n \n //update value of datepicker\n this.$input.keyup($.proxy(function(){\n this.$tpl.removeData('date');\n this.$tpl.datepicker('update');\n }, this));\n \n // Manually call autosubmit to set up our event handlers\n this.autosubmit();\n \n }, \n \n value2input: function(value) {\n var formattedValue = value ? this.dpg.formatDate(value, this.parsedViewFormat, this.options.datepicker.language) : '';\n this.$input.val(formattedValue);\n this.$tpl.datepicker('update');\n },\n \n input2value: function() { \n // First try the container datepicker (ideal case)\n var containerDatepicker = this.$tpl.data('datepicker');\n \n if (containerDatepicker && containerDatepicker.dates && containerDatepicker.dates.length > 0) {\n return containerDatepicker.dates[0];\n }\n \n // Fallback: try the input datepicker (in case manual init worked)\n var inputDatepicker = this.$input.data('datepicker');\n \n if (inputDatepicker && inputDatepicker.dates && inputDatepicker.dates.length > 0) {\n return inputDatepicker.dates[0];\n }\n \n // Try getDate methods\n if (containerDatepicker && typeof containerDatepicker.getDate === 'function') {\n var containerDate = containerDatepicker.getDate();\n if (containerDate) {\n return containerDate;\n }\n }\n \n if (inputDatepicker && typeof inputDatepicker.getDate === 'function') {\n var inputDate = inputDatepicker.getDate();\n if (inputDate) {\n return inputDate;\n }\n }\n \n // Final fallback to text parsing\n return this.html2value(this.$input.val());\n }, \n \n activate: function() {\n $.fn.editabletypes.text.prototype.activate.call(this);\n },\n \n autosubmit: function() {\n // Override default autosubmit behavior for datepicker workflow\n // We handle this manually with changeDate event\n \n // Setup the manual workflow: show buttons only after date selection\n this.$tpl.on('changeDate', $.proxy(function(e) {\n // Hide the datepicker using multiple methods to ensure it closes\n setTimeout($.proxy(function() {\n // Try datepicker hide methods\n try {\n this.$tpl.datepicker('hide');\n } catch(err) {\n // Fallback to input method\n }\n \n try {\n this.$input.datepicker('hide');\n } catch(err) {\n // Continue to force methods\n }\n \n // Force hide all datepicker elements\n $('.datepicker').hide();\n $('.datepicker-dropdown').hide();\n \n // Ensure any remaining visible datepickers are hidden\n var $visiblePicker = $('.datepicker:visible, .datepicker-dropdown:visible');\n if ($visiblePicker.length > 0) {\n $visiblePicker.css('display', 'none !important');\n $visiblePicker.css('visibility', 'hidden');\n }\n }, this), 10);\n \n // Show save/cancel buttons after date selection\n setTimeout($.proxy(function() {\n if (this.options.showbuttons !== false) {\n var $buttons = this.$dateButtons || $('.editable-buttons.datepicker-hidden');\n if ($buttons.length === 0) {\n $buttons = this.$form ? this.$form.find('.editable-buttons') : $();\n }\n if ($buttons.length === 0) {\n $buttons = this.$tpl.closest('.editableform').find('.editable-buttons');\n }\n if ($buttons.length === 0) {\n $buttons = this.$tpl.closest('.editable-container').find('.editable-buttons');\n }\n \n $buttons.show();\n $buttons.css('display', 'inline-flex');\n $buttons.addClass('show-buttons');\n $buttons.removeClass('datepicker-hidden');\n }\n }, this), 100);\n }, this));\n \n // Do NOT call parent autosubmit to prevent immediate form submission\n }\n });\n \n DateField.defaults = $.extend({}, $.fn.editabletypes.date.defaults, {\n /**\n @property tpl \n **/ \n tpl:'true
and source is **string url** - results will be cached for fields with the same source. \n Usefull for editable column in grid to prevent extra requests.\n \n @property sourceCache \n @type boolean\n @default true\n @since 1.2.0\n **/ \n sourceCache: true,\n /**\n Additional ajax options to be used in $.ajax() when loading list from server.\n Useful to send extra parameters (`data` key) or change request method (`type` key).\n \n @property sourceOptions \n @type object|function\n @default null\n @since 1.5.0\n **/ \n sourceOptions: null\n });\n\n $.fn.editabletypes.list = List;\n \n return $;\n}\n\n\n//# sourceURL=webpack://EditableForm/./src/inputs/list.js?\n}");
/***/ }),
/***/ "./src/inputs/select.js":
/*!******************************!*\
!*** ./src/inputs/select.js ***!
\******************************/
/***/ (() => {
eval("{/**\nSelect (dropdown)\n\n@class select\n@extends list\n@final\n@example\n\n\n**/\nfunction attachSelect($) {\n \"use strict\";\n \n var Select = function (options) {\n this.init('select', options, Select.defaults);\n };\n\n $.fn.editableutils.inherit(Select, $.fn.editabletypes.list);\n\n $.extend(Select.prototype, {\n renderList: function() {\n this.$input.empty();\n\n var fillItems = function($el, data) {\n var attr;\n if(Array.isArray(data)) {\n for(var i=0; i