sdc_client 0.58.1 → 0.58.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -24,7 +24,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
24
24
|
\*********************************************/
|
|
25
25
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
26
26
|
|
|
27
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbstractSDC: () => (/* binding */ AbstractSDC)\n/* harmony export */ });\n/* harmony import */ var _sdc_events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n/* harmony import */ var _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_main.js */ \"./src/simpleDomControl/sdc_main.js\");\n/* harmony import */ var _sdc_socket_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sdc_socket.js */ \"./src/simpleDomControl/sdc_socket.js\");\n/* harmony import */ var _sdc_server_call_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_server_call.js */ \"./src/simpleDomControl/sdc_server_call.js\");\n/* harmony import */ var _sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n\n\n\n\n\nclass AbstractSDC {\n constructor() {\n this._uuid = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.uuidv4)();\n this.contentUrl = '';\n this.contentReload = false;\n this.parsedContentUrl = null;\n this.events = [];\n this.load_async = false;\n this._isEventsSet = false;\n this._allEvents = null;\n this._urlParams = [];\n this._models = [];\n\n // ------------------ Old deprecated properties ----------------------\n this._cssUrls = [];\n this.afterShow = () => {\n console.warn('afterShow is deprecated!!');\n };\n // -------------- End old deprecated properties ----------------------\n\n /**\n *\n * @type {{string: AbstractSDC}}\n */\n this._mixins = {};\n\n /**\n * @type {string}\n */\n this._tagName = Object.getPrototypeOf(this)._tagName ?? '';\n\n /**\n * @type {{string:AbstractSDC}}\n */\n this._childController = {};\n\n /**\n * @type {AbstractSDC}\n */\n this._parentController = null;\n\n /**\n * @type {boolean}\n */\n this._onLoadDone = false;\n\n /**\n * @type {jquery}\n */\n this.$container = null;\n\n /**\n *\n * @type {boolean}\n */\n this._isMixin = false;\n }\n\n /**\n *\n * @param {string} method must be in {}\n * @param {Array} args in arguments of\n *\n */\n _runLifecycle(method, args) {\n if (_sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.DEBUG && !this._isMixin) {\n console.debug(method, this._tagName);\n }\n let returnPromisses = [];\n if (this._isMixin) {\n return;\n }\n this._isMixin = true;\n for (let mixinKey in this._mixins) {\n let mixin = this._mixins[mixinKey];\n if (typeof mixin[method] === 'function') {\n returnPromisses.push(mixin[method].apply(this, args));\n }\n }\n return Promise.all(returnPromisses).then(() => {\n this._isMixin = false;\n });\n }\n onInit() {\n if (_sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.DEBUG && !this._isMixin) {\n console.DEBUG(Array.apply(null, arguments), this._tagName);\n }\n }\n get parentController() {\n return this._parentController;\n }\n get childController() {\n return this._childController;\n }\n onLoad() {\n return this._runLifecycle('onLoad', arguments);\n }\n willShow() {\n return this._runLifecycle('willShow', arguments);\n }\n onRefresh() {\n return this._runLifecycle('onRefresh', arguments);\n }\n onRemove() {\n this._runLifecycle('onRemove', arguments);\n return true;\n }\n noOpenModelRequests() {\n return Promise.all(this._models.map(x => x.noOpenRequests()));\n }\n remove() {\n for (const model of this._models) {\n model.close();\n }\n let _childController = this._childController;\n for (let i in _childController) {\n if (_childController.hasOwnProperty(i)) {\n for (let cc of _childController[i]) {\n if (!cc.remove()) {\n return false;\n }\n }\n }\n }\n if (!this.onRemove || this.onRemove()) {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_0__.allOff)(this);\n const c_name = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.tagNameToCamelCase)(this._tagName);\n if (this._parentController._childController[c_name]) {\n let arr = this._parentController._childController[c_name];\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === this) {\n arr.splice(i, 1);\n }\n }\n }\n this.$container.remove();\n delete this;\n return true;\n }\n return false;\n }\n controller_name() {\n return (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.tagNameToReadableName)(this._tagName);\n }\n addEvent(event, selector, handler) {\n this.getEvents();\n this._allEvents[event] = this._allEvents[event] || {};\n this._allEvents[event][selector] = handler;\n }\n getEvents() {\n if (this._allEvents) return this._allEvents;\n let allEvents = [];\n allEvents = allEvents.concat(this.events);\n for (let mixinKey in this._mixins) {\n let mixin = this._mixins[mixinKey];\n if (Array.isArray(mixin.events)) {\n allEvents = allEvents.concat(mixin.events);\n }\n }\n return this._allEvents = _.merge(...allEvents);\n }\n post(url, args) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.post(this, url, args);\n }\n get(url, args) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.get(this, url, args);\n }\n submitForm(form, url, method) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.submitFormAndUpdateView(this, form, url, method);\n }\n serverCall(methode, args) {\n let re = /sdc_view\\/([^/]+)/i;\n let app = this.contentUrl.match(re);\n if (!app || app.length < 2) {\n console.error('To use the serverCall function the contentUrl must be set: ' + this.name);\n return;\n }\n return (0,_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_3__.callServer)(app[1], this._tagName, this.parsedContentUrl ?? this.contentUrl, methode, args);\n }\n\n /**\n *\n * @param model_name {string | Number}\n * @param model_query {Object}\n * @constructor\n */\n newModel(model_name, model_query = {}) {\n if (model_name instanceof Number && model_name.hasOwnProperty('load')) {\n return model_name.load(this);\n }\n const model = new _sdc_socket_js__WEBPACK_IMPORTED_MODULE_2__.Model(model_name, model_query);\n this._models.push(model);\n return model;\n }\n\n /**\n *\n * @param model_name {string}\n * @param model_query {Object}\n * @param values {Object}\n * @constructor\n */\n updateModel(model_name, model_query = {}, values) {\n let model = new _sdc_socket_js__WEBPACK_IMPORTED_MODULE_2__.Model(model_name, model_query);\n return model.load().then(() => {\n model.values |= values;\n model.save().then(() => {\n model.close();\n return model.values;\n });\n });\n }\n\n /**\n * Adapter to this.$container.find\n * @param {string} domSelector\n */\n find(domSelector) {\n return this.$container.find(domSelector);\n }\n refresh() {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.refresh(this.$container, this);\n }\n reload() {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.reloadController(this);\n }\n reconcile($virtualNode, $realNode = null) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.reconcile(this, $virtualNode, $realNode);\n }\n submitModelFormDistributor($form, e) {\n if (typeof this._submitModelForm === 'function') {\n return this._submitModelForm($form, e);\n }\n if (typeof this.submitModelForm === 'function') {\n return this.submitModelForm($form, e);\n }\n return this.defaultSubmitModelForm($form, e);\n }\n iterateAllChildren() {\n let _childController = this._childController;\n let res = [];\n for (let i in _childController) {\n if (_childController.hasOwnProperty(i)) {\n for (let cc of _childController[i]) {\n res.push(cc);\n res.push(...cc.iterateAllChildren());\n }\n }\n }\n return res;\n }\n\n /**\n * Model Form Events\n */\n defaultSubmitModelForm($form, e) {\n let p_list = [];\n if (!this._isMixin) {\n e.stopPropagation();\n e.preventDefault();\n let {\n model,\n form_name\n } = $form.data();\n const values = model.syncForm($form);\n for (let instance_value of values) {\n p_list.push(new Promise((resolve, reject) => {\n let prom;\n if (instance_value.pk !== null && instance_value.pk >= 0) {\n prom = model.save(instance_value.pk, form_name);\n } else {\n prom = model.create(instance_value);\n }\n prom.then(res => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.clearErrorsInForm)($form);\n this.submit_model_form_success && this.submit_model_form_success(res[0]);\n for (const controller of this.iterateAllChildren()) {\n controller.submit_model_form_success && controller.submit_model_form_success(res[0]);\n }\n resolve(res);\n }).catch(data => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.setErrorsInForm)($form, $(data.html));\n this.submit_model_form_error && this.submit_model_form_error(data);\n for (const controller of this.iterateAllChildren()) {\n controller.submit_model_form_error && controller.submit_model_form_error(data);\n }\n reject(data);\n });\n }));\n }\n }\n return Promise.all(p_list).then(res => {\n return Object.assign({}, ...res.flat());\n });\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc2ltcGxlRG9tQ29udHJvbC9BYnN0cmFjdFNEQy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBdUM7QUFDTDtBQUNJO0FBQ1U7QUFDcUU7QUFFOUcsTUFBTVMsV0FBVyxDQUFDO0VBQ3JCQyxXQUFXQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLEtBQUssR0FBR1AscURBQU0sQ0FBQyxDQUFDO0lBQ3JCLElBQUksQ0FBQ1EsVUFBVSxHQUFHLEVBQUU7SUFDcEIsSUFBSSxDQUFDQyxhQUFhLEdBQUcsS0FBSztJQUMxQixJQUFJLENBQUNDLGdCQUFnQixHQUFHLElBQUk7SUFDNUIsSUFBSSxDQUFDQyxNQUFNLEdBQUcsRUFBRTtJQUNoQixJQUFJLENBQUNDLFVBQVUsR0FBRyxLQUFLO0lBQ3ZCLElBQUksQ0FBQ0MsWUFBWSxHQUFHLEtBQUs7SUFDekIsSUFBSSxDQUFDQyxVQUFVLEdBQUcsSUFBSTtJQUV0QixJQUFJLENBQUNDLFVBQVUsR0FBRyxFQUFFO0lBQ3BCLElBQUksQ0FBQ0MsT0FBTyxHQUFHLEVBQUU7O0lBRWpCO0lBQ0EsSUFBSSxDQUFDQyxRQUFRLEdBQUcsRUFBRTtJQUNsQixJQUFJLENBQUNDLFNBQVMsR0FBRyxNQUFNO01BQ25CQyxPQUFPLENBQUNDLElBQUksQ0FBQywyQkFBMkIsQ0FBQztJQUM3QyxDQUFDO0lBQ0Q7O0lBR0E7QUFDUjtBQUNBO0FBQ0E7SUFDUSxJQUFJLENBQUNDLE9BQU8sR0FBRyxDQUFDLENBQUM7O0lBRWpCO0FBQ1I7QUFDQTtJQUNRLElBQUksQ0FBQ0MsUUFBUSxHQUFHQyxNQUFNLENBQUNDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQ0YsUUFBUSxJQUFJLEVBQUU7O0lBRTFEO0FBQ1I7QUFDQTtJQUNRLElBQUksQ0FBQ0csZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDOztJQUUxQjtBQUNSO0FBQ0E7SUFDUSxJQUFJLENBQUNDLGlCQUFpQixHQUFHLElBQUk7O0lBRTdCO0FBQ1I7QUFDQTtJQUNRLElBQUksQ0FBQ0MsV0FBVyxHQUFHLEtBQUs7O0lBRXhCO0FBQ1I7QUFDQTtJQUNRLElBQUksQ0FBQ0MsVUFBVSxHQUFHLElBQUk7O0lBRXRCO0FBQ1I7QUFDQTtBQUNBO0lBQ1EsSUFBSSxDQUFDQyxRQUFRLEdBQUcsS0FBSztFQUN6Qjs7RUFFQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDSUMsYUFBYUEsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLEVBQUU7SUFDeEIsSUFBSW5DLDZDQUFHLENBQUNvQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUNKLFFBQVEsRUFBRTtNQUM3QlYsT0FBTyxDQUFDZSxLQUFLLENBQUNILE1BQU0sRUFBRSxJQUFJLENBQUNULFFBQVEsQ0FBQztJQUN4QztJQUVBLElBQUlhLGVBQWUsR0FBRyxFQUFFO0lBQ3hCLElBQUksSUFBSSxDQUFDTixRQUFRLEVBQUU7TUFDZjtJQUNKO0lBQ0EsSUFBSSxDQUFDQSxRQUFRLEdBQUcsSUFBSTtJQUNwQixLQUFLLElBQUlPLFFBQVEsSUFBSSxJQUFJLENBQUNmLE9BQU8sRUFBRTtNQUMvQixJQUFJZ0IsS0FBSyxHQUFHLElBQUksQ0FBQ2hCLE9BQU8sQ0FBQ2UsUUFBUSxDQUFDO01BQ2xDLElBQUksT0FBT0MsS0FBSyxDQUFDTixNQUFNLENBQUMsS0FBSyxVQUFVLEVBQUU7UUFFckNJLGVBQWUsQ0FBQ0csSUFBSSxDQUFDRCxLQUFLLENBQUNOLE1BQU0sQ0FBQyxDQUFDUSxLQUFLLENBQUMsSUFBSSxFQUFFUCxJQUFJLENBQUMsQ0FBQztNQUN6RDtJQUNKO0lBRUEsT0FBT1EsT0FBTyxDQUFDQyxHQUFHLENBQUNOLGVBQWUsQ0FBQyxDQUFDTyxJQUFJLENBQUMsTUFBTTtNQUMzQyxJQUFJLENBQUNiLFFBQVEsR0FBRyxLQUFLO0lBQ3pCLENBQUMsQ0FBQztFQUNOO0VBRUFjLE1BQU1BLENBQUEsRUFBRztJQUNMLElBQUk5Qyw2Q0FBRyxDQUFDb0MsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDSixRQUFRLEVBQUU7TUFDN0JWLE9BQU8sQ0FBQ2MsS0FBSyxDQUFDVyxLQUFLLENBQUNMLEtBQUssQ0FBQyxJQUFJLEVBQUVNLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQ3ZCLFFBQVEsQ0FBQztJQUM5RDtFQUNKO0VBRUEsSUFBSXdCLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ25CLE9BQU8sSUFBSSxDQUFDcEIsaUJBQWlCO0VBQ2pDO0VBRUEsSUFBSXFCLGVBQWVBLENBQUEsRUFBRztJQUNsQixPQUFPLElBQUksQ0FBQ3RCLGdCQUFnQjtFQUNoQztFQUVBdUIsTUFBTUEsQ0FBQSxFQUFHO0lBQ0wsT0FBTyxJQUFJLENBQUNsQixhQUFhLENBQUMsUUFBUSxFQUFFZSxTQUFTLENBQUM7RUFDbEQ7RUFFQUksUUFBUUEsQ0FBQSxFQUFHO0lBQ1AsT0FBTyxJQUFJLENBQUNuQixhQUFhLENBQUMsVUFBVSxFQUFFZSxTQUFTLENBQUM7RUFDcEQ7RUFFQUssU0FBU0EsQ0FBQSxFQUFHO0lBQ1IsT0FBTyxJQUFJLENBQUNwQixhQUFhLENBQUMsV0FBVyxFQUFFZSxTQUFTLENBQUM7RUFDckQ7RUFFQU0sUUFBUUEsQ0FBQSxFQUFHO0lBQ1AsSUFBSSxDQUFDckIsYUFBYSxDQUFDLFVBQVUsRUFBRWUsU0FBUyxDQUFDO0lBQ3pDLE9BQU8sSUFBSTtFQUNmO0VBRUFPLG1CQUFtQkEsQ0FBQSxFQUFJO0lBQ25CLE9BQU9aLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLElBQUksQ0FBQ3pCLE9BQU8sQ0FBQ3FDLEdBQUcsQ0FBQ0MsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNqRTtFQUVBQyxNQUFNQSxDQUFBLEVBQUc7SUFDTCxLQUFLLE1BQU1DLEtBQUssSUFBSSxJQUFJLENBQUN6QyxPQUFPLEVBQUU7TUFDOUJ5QyxLQUFLLENBQUNDLEtBQUssQ0FBQyxDQUFDO0lBQ2pCO0lBQ0EsSUFBSWpDLGdCQUFnQixHQUFHLElBQUksQ0FBQ0EsZ0JBQWdCO0lBQzVDLEtBQUssSUFBSWtDLENBQUMsSUFBSWxDLGdCQUFnQixFQUFFO01BQzVCLElBQUlBLGdCQUFnQixDQUFDbUMsY0FBYyxDQUFDRCxDQUFDLENBQUMsRUFBRTtRQUNwQyxLQUFLLElBQUlFLEVBQUUsSUFBSXBDLGdCQUFnQixDQUFDa0MsQ0FBQyxDQUFDLEVBQUU7VUFDaEMsSUFBSSxDQUFDRSxFQUFFLENBQUNMLE1BQU0sQ0FBQyxDQUFDLEVBQUU7WUFDZCxPQUFPLEtBQUs7VUFDaEI7UUFDSjtNQUNKO0lBQ0o7SUFFQSxJQUFJLENBQUMsSUFBSSxDQUFDTCxRQUFRLElBQUksSUFBSSxDQUFDQSxRQUFRLENBQUMsQ0FBQyxFQUFFO01BQ25DdkQsc0RBQU0sQ0FBQyxJQUFJLENBQUM7TUFDWixNQUFNa0UsTUFBTSxHQUFHM0QsaUVBQWtCLENBQUMsSUFBSSxDQUFDbUIsUUFBUSxDQUFDO01BQ2hELElBQUksSUFBSSxDQUFDSSxpQkFBaUIsQ0FBQ0QsZ0JBQWdCLENBQUNxQyxNQUFNLENBQUMsRUFBRTtRQUNqRCxJQUFJQyxHQUFHLEdBQUcsSUFBSSxDQUFDckMsaUJBQWlCLENBQUNELGdCQUFnQixDQUFDcUMsTUFBTSxDQUFDO1FBQ3pELEtBQUssSUFBSUgsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHSSxHQUFHLENBQUNDLE1BQU0sRUFBRUwsQ0FBQyxFQUFFLEVBQUU7VUFDakMsSUFBSUksR0FBRyxDQUFDSixDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDakJJLEdBQUcsQ0FBQ0UsTUFBTSxDQUFDTixDQUFDLEVBQUUsQ0FBQyxDQUFDO1VBQ3BCO1FBQ0o7TUFDSjtNQUVBLElBQUksQ0FBQy9CLFVBQVUsQ0FBQzRCLE1BQU0sQ0FBQyxDQUFDO01BQ3hCLE9BQU8sSUFBSTtNQUNYLE9BQU8sSUFBSTtJQUNmO0lBRUEsT0FBTyxLQUFLO0VBQ2hCO0VBRUFVLGVBQWVBLENBQUEsRUFBRztJQUNkLE9BQU85RCxvRUFBcUIsQ0FBQyxJQUFJLENBQUNrQixRQUFRLENBQUM7RUFDL0M7RUFFQTZDLFFBQVFBLENBQUNDLEtBQUssRUFBRUMsUUFBUSxFQUFFQyxPQUFPLEVBQUU7SUFDL0IsSUFBSSxDQUFDQyxTQUFTLENBQUMsQ0FBQztJQUNoQixJQUFJLENBQUN6RCxVQUFVLENBQUNzRCxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUN0RCxVQUFVLENBQUNzRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckQsSUFBSSxDQUFDdEQsVUFBVSxDQUFDc0QsS0FBSyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxHQUFHQyxPQUFPO0VBQzlDO0VBRUFDLFNBQVNBLENBQUEsRUFBRztJQUNSLElBQUksSUFBSSxDQUFDekQsVUFBVSxFQUFFLE9BQU8sSUFBSSxDQUFDQSxVQUFVO0lBQzNDLElBQUkwRCxTQUFTLEdBQUcsRUFBRTtJQUNsQkEsU0FBUyxHQUFHQSxTQUFTLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUM5RCxNQUFNLENBQUM7SUFDekMsS0FBSyxJQUFJeUIsUUFBUSxJQUFJLElBQUksQ0FBQ2YsT0FBTyxFQUFFO01BQy9CLElBQUlnQixLQUFLLEdBQUcsSUFBSSxDQUFDaEIsT0FBTyxDQUFDZSxRQUFRLENBQUM7TUFDbEMsSUFBSVEsS0FBSyxDQUFDOEIsT0FBTyxDQUFDckMsS0FBSyxDQUFDMUIsTUFBTSxDQUFDLEVBQUU7UUFDN0I2RCxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0MsTUFBTSxDQUFDcEMsS0FBSyxDQUFDMUIsTUFBTSxDQUFDO01BQzlDO0lBQ0o7SUFHQSxPQUFRLElBQUksQ0FBQ0csVUFBVSxHQUFHNkQsQ0FBQyxDQUFDQyxLQUFLLENBQUMsR0FBR0osU0FBUyxDQUFDO0VBQ25EO0VBRUFLLElBQUlBLENBQUNDLEdBQUcsRUFBRTlDLElBQUksRUFBRTtJQUNaLE9BQU9uQyw2Q0FBRyxDQUFDZ0YsSUFBSSxDQUFDLElBQUksRUFBRUMsR0FBRyxFQUFFOUMsSUFBSSxDQUFDO0VBQ3BDO0VBRUErQyxHQUFHQSxDQUFDRCxHQUFHLEVBQUU5QyxJQUFJLEVBQUU7SUFDWCxPQUFPbkMsNkNBQUcsQ0FBQ2tGLEdBQUcsQ0FBQyxJQUFJLEVBQUVELEdBQUcsRUFBRTlDLElBQUksQ0FBQztFQUNuQztFQUVBZ0QsVUFBVUEsQ0FBQ0MsSUFBSSxFQUFFSCxHQUFHLEVBQUUvQyxNQUFNLEVBQUU7SUFDMUIsT0FBT2xDLDZDQUFHLENBQUNxRix1QkFBdUIsQ0FBQyxJQUFJLEVBQUVELElBQUksRUFBRUgsR0FBRyxFQUFFL0MsTUFBTSxDQUFDO0VBQy9EO0VBRUFvRCxVQUFVQSxDQUFDQyxPQUFPLEVBQUVwRCxJQUFJLEVBQUU7SUFDdEIsSUFBSXFELEVBQUUsR0FBRyxvQkFBb0I7SUFDN0IsSUFBSXhGLEdBQUcsR0FBRyxJQUFJLENBQUNXLFVBQVUsQ0FBQzhFLEtBQUssQ0FBQ0QsRUFBRSxDQUFDO0lBQ25DLElBQUksQ0FBQ3hGLEdBQUcsSUFBSUEsR0FBRyxDQUFDbUUsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUN4QjdDLE9BQU8sQ0FBQ29FLEtBQUssQ0FBQyw2REFBNkQsR0FBRyxJQUFJLENBQUNDLElBQUksQ0FBQztNQUN4RjtJQUNKO0lBRUEsT0FBT3pGLCtEQUFVLENBQUNGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUN5QixRQUFRLEVBQUUsSUFBSSxDQUFDWixnQkFBZ0IsSUFBSSxJQUFJLENBQUNGLFVBQVUsRUFBRTRFLE9BQU8sRUFBRXBELElBQUksQ0FBQztFQUNyRzs7RUFFQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDSXlELFFBQVFBLENBQUNDLFVBQVUsRUFBRUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ25DLElBQUdELFVBQVUsWUFBWUUsTUFBTSxJQUFJRixVQUFVLENBQUM5QixjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7TUFDbEUsT0FBTzhCLFVBQVUsQ0FBQ0csSUFBSSxDQUFDLElBQUksQ0FBQztJQUNoQztJQUVBLE1BQU1wQyxLQUFLLEdBQUcsSUFBSTNELGlEQUFLLENBQUM0RixVQUFVLEVBQUVDLFdBQVcsQ0FBQztJQUNoRCxJQUFJLENBQUMzRSxPQUFPLENBQUNzQixJQUFJLENBQUNtQixLQUFLLENBQUM7SUFDeEIsT0FBT0EsS0FBSztFQUNoQjs7RUFFQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNJcUMsV0FBV0EsQ0FBQ0osVUFBVSxFQUFFQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUVJLE1BQU0sRUFBRTtJQUM5QyxJQUFJdEMsS0FBSyxHQUFHLElBQUkzRCxpREFBSyxDQUFDNEYsVUFBVSxFQUFFQyxXQUFXLENBQUM7SUFDOUMsT0FBT2xDLEtBQUssQ0FBQ29DLElBQUksQ0FBQyxDQUFDLENBQUNuRCxJQUFJLENBQUMsTUFBSTtNQUN6QmUsS0FBSyxDQUFDc0MsTUFBTSxJQUFJQSxNQUFNO01BQ3RCdEMsS0FBSyxDQUFDdUMsSUFBSSxDQUFDLENBQUMsQ0FBQ3RELElBQUksQ0FBQyxNQUFLO1FBQ25CZSxLQUFLLENBQUNDLEtBQUssQ0FBQyxDQUFDO1FBQ2IsT0FBT0QsS0FBSyxDQUFDc0MsTUFBTTtNQUN2QixDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7RUFDTjs7RUFFQTtBQUNKO0FBQ0E7QUFDQTtFQUNJRSxJQUFJQSxDQUFDQyxXQUFXLEVBQUU7SUFDZCxPQUFPLElBQUksQ0FBQ3RFLFVBQVUsQ0FBQ3FFLElBQUksQ0FBQ0MsV0FBVyxDQUFDO0VBQzVDO0VBRUFDLE9BQU9BLENBQUEsRUFBRztJQUNOLE9BQU90Ryw2Q0FBRyxDQUFDc0csT0FBTyxDQUFDLElBQUksQ0FBQ3ZFLFVBQVUsRUFBRSxJQUFJLENBQUM7RUFDN0M7RUFFQXdFLE1BQU1BLENBQUEsRUFBRztJQUNMLE9BQU92Ryw2Q0FBRyxDQUFDd0csZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0VBQ3JDO0VBRUFDLFNBQVNBLENBQUNDLFlBQVksRUFBRUMsU0FBUyxHQUFHLElBQUksRUFBRTtJQUN0QyxPQUFPM0csNkNBQUcsQ0FBQ3lHLFNBQVMsQ0FBQyxJQUFJLEVBQUVDLFlBQVksRUFBRUMsU0FBUyxDQUFDO0VBQ3ZEO0VBRUFDLDBCQUEwQkEsQ0FBQ0MsS0FBSyxFQUFFQyxDQUFDLEVBQUU7SUFDakMsSUFBSSxPQUFPLElBQUksQ0FBQ0MsZ0JBQWdCLEtBQUssVUFBVSxFQUFFO01BQzdDLE9BQU8sSUFBSSxDQUFDQSxnQkFBZ0IsQ0FBQ0YsS0FBSyxFQUFFQyxDQUFDLENBQUM7SUFDMUM7SUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDRSxlQUFlLEtBQUssVUFBVSxFQUFFO01BQzVDLE9BQU8sSUFBSSxDQUFDQSxlQUFlLENBQUNILEtBQUssRUFBRUMsQ0FBQyxDQUFDO0lBQ3pDO0lBQ0EsT0FBTyxJQUFJLENBQUNHLHNCQUFzQixDQUFDSixLQUFLLEVBQUVDLENBQUMsQ0FBQztFQUNoRDtFQUVBSSxrQkFBa0JBLENBQUEsRUFBRztJQUNqQixJQUFJdEYsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDQSxnQkFBZ0I7SUFDNUMsSUFBSXVGLEdBQUcsR0FBRyxFQUFFO0lBQ1osS0FBSyxJQUFJckQsQ0FBQyxJQUFJbEMsZ0JBQWdCLEVBQUU7TUFDNUIsSUFBSUEsZ0JBQWdCLENBQUNtQyxjQUFjLENBQUNELENBQUMsQ0FBQyxFQUFFO1FBQ3BDLEtBQUssSUFBSUUsRUFBRSxJQUFJcEMsZ0JBQWdCLENBQUNrQyxDQUFDLENBQUMsRUFBRTtVQUNoQ3FELEdBQUcsQ0FBQzFFLElBQUksQ0FBQ3VCLEVBQUUsQ0FBQztVQUNabUQsR0FBRyxDQUFDMUUsSUFBSSxDQUFDLEdBQUd1QixFQUFFLENBQUNrRCxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDeEM7TUFDSjtJQUNKO0lBQ0EsT0FBT0MsR0FBRztFQUNkOztFQUVBO0FBQ0o7QUFDQTtFQUNJRixzQkFBc0JBLENBQUNKLEtBQUssRUFBRUMsQ0FBQyxFQUFFO0lBQzdCLElBQUlNLE1BQU0sR0FBRyxFQUFFO0lBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQ3BGLFFBQVEsRUFBRTtNQUNoQjhFLENBQUMsQ0FBQ08sZUFBZSxDQUFDLENBQUM7TUFDbkJQLENBQUMsQ0FBQ1EsY0FBYyxDQUFDLENBQUM7TUFDbEIsSUFBSTtRQUFDMUQsS0FBSztRQUFFMkQ7TUFBUyxDQUFDLEdBQUdWLEtBQUssQ0FBQ1csSUFBSSxDQUFDLENBQUM7TUFDckMsTUFBTXRCLE1BQU0sR0FBR3RDLEtBQUssQ0FBQzZELFFBQVEsQ0FBQ1osS0FBSyxDQUFDO01BQ3BDLEtBQUssSUFBSWEsY0FBYyxJQUFJeEIsTUFBTSxFQUFFO1FBQy9Ca0IsTUFBTSxDQUFDM0UsSUFBSSxDQUFDLElBQUlFLE9BQU8sQ0FBQyxDQUFDZ0YsT0FBTyxFQUFFQyxNQUFNLEtBQUs7VUFDekMsSUFBSUMsSUFBSTtVQUNSLElBQUlILGNBQWMsQ0FBQ0ksRUFBRSxLQUFLLElBQUksSUFBSUosY0FBYyxDQUFDSSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3RERCxJQUFJLEdBQUdqRSxLQUFLLENBQUN1QyxJQUFJLENBQUN1QixjQUFjLENBQUNJLEVBQUUsRUFBRVAsU0FBUyxDQUFDO1VBQ25ELENBQUMsTUFBTTtZQUNITSxJQUFJLEdBQUdqRSxLQUFLLENBQUNtRSxNQUFNLENBQUNMLGNBQWMsQ0FBQztVQUN2QztVQUVBRyxJQUFJLENBQUNoRixJQUFJLENBQUVzRSxHQUFHLElBQUs7WUFDZjlHLGdFQUFpQixDQUFDd0csS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQ21CLHlCQUF5QixJQUFJLElBQUksQ0FBQ0EseUJBQXlCLENBQUNiLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RSxLQUFJLE1BQU1jLFVBQVUsSUFBSSxJQUFJLENBQUNmLGtCQUFrQixDQUFDLENBQUMsRUFBRTtjQUMvQ2UsVUFBVSxDQUFDRCx5QkFBeUIsSUFBSUMsVUFBVSxDQUFDRCx5QkFBeUIsQ0FBQ2IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hGO1lBQ0FRLE9BQU8sQ0FBQ1IsR0FBRyxDQUFDO1VBQ2hCLENBQUMsQ0FBQyxDQUFDZSxLQUFLLENBQUVWLElBQUksSUFBSztZQUNmcEgsOERBQWUsQ0FBQ3lHLEtBQUssRUFBRXNCLENBQUMsQ0FBQ1gsSUFBSSxDQUFDWSxJQUFJLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUNDLHVCQUF1QixJQUFJLElBQUksQ0FBQ0EsdUJBQXVCLENBQUNiLElBQUksQ0FBQztZQUNsRSxLQUFJLE1BQU1TLFVBQVUsSUFBSSxJQUFJLENBQUNmLGtCQUFrQixDQUFDLENBQUMsRUFBRTtjQUMvQ2UsVUFBVSxDQUFDSSx1QkFBdUIsSUFBSUosVUFBVSxDQUFDSSx1QkFBdUIsQ0FBQ2IsSUFBSSxDQUFDO1lBQ2xGO1lBQ0FJLE1BQU0sQ0FBQ0osSUFBSSxDQUFDO1VBQ2hCLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO01BQ1A7SUFDSjtJQUVBLE9BQU83RSxPQUFPLENBQUNDLEdBQUcsQ0FBQ3dFLE1BQU0sQ0FBQyxDQUFDdkUsSUFBSSxDQUFFc0UsR0FBRyxJQUFLO01BQ3JDLE9BQU96RixNQUFNLENBQUM0RyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBR25CLEdBQUcsQ0FBQ29CLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQyxDQUFDO0VBQ047QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovL3NkY19jbGllbnQvLi9zcmMvc2ltcGxlRG9tQ29udHJvbC9BYnN0cmFjdFNEQy5qcz9kN2Y3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YWxsT2ZmfSBmcm9tIFwiLi9zZGNfZXZlbnRzLmpzXCI7XG5pbXBvcnQge2FwcH0gZnJvbSBcIi4vc2RjX21haW4uanNcIjtcbmltcG9ydCB7TW9kZWx9IGZyb20gXCIuL3NkY19zb2NrZXQuanNcIjtcbmltcG9ydCB7Y2FsbFNlcnZlcn0gZnJvbSBcIi4vc2RjX3NlcnZlcl9jYWxsLmpzXCI7XG5pbXBvcnQge3V1aWR2NCwgc2V0RXJyb3JzSW5Gb3JtLCBjbGVhckVycm9yc0luRm9ybSwgdGFnTmFtZVRvQ2FtZWxDYXNlLCB0YWdOYW1lVG9SZWFkYWJsZU5hbWV9IGZyb20gXCIuL3NkY191dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RTREMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl91dWlkID0gdXVpZHY0KCk7XG4gICAgICAgIHRoaXMuY29udGVudFVybCA9ICcnO1xuICAgICAgICB0aGlzLmNvbnRlbnRSZWxvYWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wYXJzZWRDb250ZW50VXJsID0gbnVsbDtcbiAgICAgICAgdGhpcy5ldmVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5sb2FkX2FzeW5jID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2lzRXZlbnRzU2V0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2FsbEV2ZW50cyA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5fdXJsUGFyYW1zID0gW107XG4gICAgICAgIHRoaXMuX21vZGVscyA9IFtdO1xuXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLSBPbGQgZGVwcmVjYXRlZCBwcm9wZXJ0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgdGhpcy5fY3NzVXJscyA9IFtdO1xuICAgICAgICB0aGlzLmFmdGVyU2hvdyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignYWZ0ZXJTaG93IGlzIGRlcHJlY2F0ZWQhIScpXG4gICAgICAgIH07XG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tIEVuZCBvbGQgZGVwcmVjYXRlZCBwcm9wZXJ0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKlxuICAgICAgICAgKiBAdHlwZSB7e3N0cmluZzogQWJzdHJhY3RTREN9fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fbWl4aW5zID0ge307XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl90YWdOYW1lID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl90YWdOYW1lID8/ICcnO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7e3N0cmluZzpBYnN0cmFjdFNEQ319XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9jaGlsZENvbnRyb2xsZXIgPSB7fTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQHR5cGUge0Fic3RyYWN0U0RDfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fcGFyZW50Q29udHJvbGxlciA9IG51bGw7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fb25Mb2FkRG9uZSA9IGZhbHNlO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7anF1ZXJ5fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy4kY29udGFpbmVyID0gbnVsbDtcblxuICAgICAgICAvKipcbiAgICAgICAgICpcbiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9pc01peGluID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIG11c3QgYmUgaW4ge31cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIGluIGFyZ3VtZW50cyBvZlxuICAgICAqXG4gICAgICovXG4gICAgX3J1bkxpZmVjeWNsZShtZXRob2QsIGFyZ3MpIHtcbiAgICAgICAgaWYgKGFwcC5ERUJVRyAmJiAhdGhpcy5faXNNaXhpbikge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhtZXRob2QsIHRoaXMuX3RhZ05hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJldHVyblByb21pc3NlcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5faXNNaXhpbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzTWl4aW4gPSB0cnVlO1xuICAgICAgICBmb3IgKGxldCBtaXhpbktleSBpbiB0aGlzLl9taXhpbnMpIHtcbiAgICAgICAgICAgIGxldCBtaXhpbiA9IHRoaXMuX21peGluc1ttaXhpbktleV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIG1peGluW21ldGhvZF0gPT09ICdmdW5jdGlvbicpIHtcblxuICAgICAgICAgICAgICAgIHJldHVyblByb21pc3Nlcy5wdXNoKG1peGluW21ldGhvZF0uYXBwbHkodGhpcywgYXJncykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHJldHVyblByb21pc3NlcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pc01peGluID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uSW5pdCgpIHtcbiAgICAgICAgaWYgKGFwcC5ERUJVRyAmJiAhdGhpcy5faXNNaXhpbikge1xuICAgICAgICAgICAgY29uc29sZS5ERUJVRyhBcnJheS5hcHBseShudWxsLCBhcmd1bWVudHMpLCB0aGlzLl90YWdOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBwYXJlbnRDb250cm9sbGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50Q29udHJvbGxlcjtcbiAgICB9XG5cbiAgICBnZXQgY2hpbGRDb250cm9sbGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hpbGRDb250cm9sbGVyO1xuICAgIH1cblxuICAgIG9uTG9hZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkxpZmVjeWNsZSgnb25Mb2FkJywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICB3aWxsU2hvdygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkxpZmVjeWNsZSgnd2lsbFNob3cnLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIG9uUmVmcmVzaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkxpZmVjeWNsZSgnb25SZWZyZXNoJywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBvblJlbW92ZSgpIHtcbiAgICAgICAgdGhpcy5fcnVuTGlmZWN5Y2xlKCdvblJlbW92ZScsIGFyZ3VtZW50cylcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgbm9PcGVuTW9kZWxSZXF1ZXN0cyggKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbCh0aGlzLl9tb2RlbHMubWFwKHggPT4geC5ub09wZW5SZXF1ZXN0cygpKSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlKCkge1xuICAgICAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMuX21vZGVscykge1xuICAgICAgICAgICAgbW9kZWwuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgX2NoaWxkQ29udHJvbGxlciA9IHRoaXMuX2NoaWxkQ29udHJvbGxlcjtcbiAgICAgICAgZm9yIChsZXQgaSBpbiBfY2hpbGRDb250cm9sbGVyKSB7XG4gICAgICAgICAgICBpZiAoX2NoaWxkQ29udHJvbGxlci5oYXNPd25Qcm9wZXJ0eShpKSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNjIG9mIF9jaGlsZENvbnRyb2xsZXJbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjYy5yZW1vdmUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm9uUmVtb3ZlIHx8IHRoaXMub25SZW1vdmUoKSkge1xuICAgICAgICAgICAgYWxsT2ZmKHRoaXMpO1xuICAgICAgICAgICAgY29uc3QgY19uYW1lID0gdGFnTmFtZVRvQ2FtZWxDYXNlKHRoaXMuX3RhZ05hbWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3BhcmVudENvbnRyb2xsZXIuX2NoaWxkQ29udHJvbGxlcltjX25hbWVdKSB7XG4gICAgICAgICAgICAgICAgbGV0IGFyciA9IHRoaXMuX3BhcmVudENvbnRyb2xsZXIuX2NoaWxkQ29udHJvbGxlcltjX25hbWVdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcnJbaV0gPT09IHRoaXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyci5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuJGNvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29udHJvbGxlcl9uYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFnTmFtZVRvUmVhZGFibGVOYW1lKHRoaXMuX3RhZ05hbWUpO1xuICAgIH1cblxuICAgIGFkZEV2ZW50KGV2ZW50LCBzZWxlY3RvciwgaGFuZGxlcikge1xuICAgICAgICB0aGlzLmdldEV2ZW50cygpO1xuICAgICAgICB0aGlzLl9hbGxFdmVudHNbZXZlbnRdID0gdGhpcy5fYWxsRXZlbnRzW2V2ZW50XSB8fCB7fTtcbiAgICAgICAgdGhpcy5fYWxsRXZlbnRzW2V2ZW50XVtzZWxlY3Rvcl0gPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGdldEV2ZW50cygpIHtcbiAgICAgICAgaWYgKHRoaXMuX2FsbEV2ZW50cykgcmV0dXJuIHRoaXMuX2FsbEV2ZW50cztcbiAgICAgICAgbGV0IGFsbEV2ZW50cyA9IFtdO1xuICAgICAgICBhbGxFdmVudHMgPSBhbGxFdmVudHMuY29uY2F0KHRoaXMuZXZlbnRzKTtcbiAgICAgICAgZm9yIChsZXQgbWl4aW5LZXkgaW4gdGhpcy5fbWl4aW5zKSB7XG4gICAgICAgICAgICBsZXQgbWl4aW4gPSB0aGlzLl9taXhpbnNbbWl4aW5LZXldO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWl4aW4uZXZlbnRzKSkge1xuICAgICAgICAgICAgICAgIGFsbEV2ZW50cyA9IGFsbEV2ZW50cy5jb25jYXQobWl4aW4uZXZlbnRzKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gKHRoaXMuX2FsbEV2ZW50cyA9IF8ubWVyZ2UoLi4uYWxsRXZlbnRzKSk7XG4gICAgfVxuXG4gICAgcG9zdCh1cmwsIGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIGFwcC5wb3N0KHRoaXMsIHVybCwgYXJncyk7XG4gICAgfVxuXG4gICAgZ2V0KHVybCwgYXJncykge1xuICAgICAgICByZXR1cm4gYXBwLmdldCh0aGlzLCB1cmwsIGFyZ3MpO1xuICAgIH1cblxuICAgIHN1Ym1pdEZvcm0oZm9ybSwgdXJsLCBtZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGFwcC5zdWJtaXRGb3JtQW5kVXBkYXRlVmlldyh0aGlzLCBmb3JtLCB1cmwsIG1ldGhvZCk7XG4gICAgfVxuXG4gICAgc2VydmVyQ2FsbChtZXRob2RlLCBhcmdzKSB7XG4gICAgICAgIGxldCByZSA9IC9zZGNfdmlld1xcLyhbXi9dKykvaTtcbiAgICAgICAgbGV0IGFwcCA9IHRoaXMuY29udGVudFVybC5tYXRjaChyZSk7XG4gICAgICAgIGlmICghYXBwIHx8IGFwcC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdUbyB1c2UgdGhlIHNlcnZlckNhbGwgZnVuY3Rpb24gdGhlIGNvbnRlbnRVcmwgbXVzdCBiZSBzZXQ6ICcgKyB0aGlzLm5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhbGxTZXJ2ZXIoYXBwWzFdLCB0aGlzLl90YWdOYW1lLCB0aGlzLnBhcnNlZENvbnRlbnRVcmwgPz8gdGhpcy5jb250ZW50VXJsLCBtZXRob2RlLCBhcmdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtb2RlbF9uYW1lIHtzdHJpbmcgfCBOdW1iZXJ9XG4gICAgICogQHBhcmFtIG1vZGVsX3F1ZXJ5IHtPYmplY3R9XG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgbmV3TW9kZWwobW9kZWxfbmFtZSwgbW9kZWxfcXVlcnkgPSB7fSkge1xuICAgICAgICBpZihtb2RlbF9uYW1lIGluc3RhbmNlb2YgTnVtYmVyICYmIG1vZGVsX25hbWUuaGFzT3duUHJvcGVydHkoJ2xvYWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuIG1vZGVsX25hbWUubG9hZCh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1vZGVsID0gbmV3IE1vZGVsKG1vZGVsX25hbWUsIG1vZGVsX3F1ZXJ5KTtcbiAgICAgICAgdGhpcy5fbW9kZWxzLnB1c2gobW9kZWwpO1xuICAgICAgICByZXR1cm4gbW9kZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbW9kZWxfbmFtZSB7c3RyaW5nfVxuICAgICAqIEBwYXJhbSBtb2RlbF9xdWVyeSB7T2JqZWN0fVxuICAgICAqIEBwYXJhbSB2YWx1ZXMge09iamVjdH1cbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKi9cbiAgICB1cGRhdGVNb2RlbChtb2RlbF9uYW1lLCBtb2RlbF9xdWVyeSA9IHt9LCB2YWx1ZXMpIHtcbiAgICAgICAgbGV0IG1vZGVsID0gbmV3IE1vZGVsKG1vZGVsX25hbWUsIG1vZGVsX3F1ZXJ5KTtcbiAgICAgICAgcmV0dXJuIG1vZGVsLmxvYWQoKS50aGVuKCgpPT57XG4gICAgICAgICAgICBtb2RlbC52YWx1ZXMgfD0gdmFsdWVzO1xuICAgICAgICAgICAgbW9kZWwuc2F2ZSgpLnRoZW4oKCk9PiB7XG4gICAgICAgICAgICAgICAgbW9kZWwuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9kZWwudmFsdWVzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRhcHRlciB0byB0aGlzLiRjb250YWluZXIuZmluZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkb21TZWxlY3RvclxuICAgICAqL1xuICAgIGZpbmQoZG9tU2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGNvbnRhaW5lci5maW5kKGRvbVNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICByZWZyZXNoKCkge1xuICAgICAgICByZXR1cm4gYXBwLnJlZnJlc2godGhpcy4kY29udGFpbmVyLCB0aGlzKTtcbiAgICB9XG5cbiAgICByZWxvYWQoKSB7XG4gICAgICAgIHJldHVybiBhcHAucmVsb2FkQ29udHJvbGxlcih0aGlzKTtcbiAgICB9XG5cbiAgICByZWNvbmNpbGUoJHZpcnR1YWxOb2RlLCAkcmVhbE5vZGUgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBhcHAucmVjb25jaWxlKHRoaXMsICR2aXJ0dWFsTm9kZSwgJHJlYWxOb2RlKTtcbiAgICB9XG5cbiAgICBzdWJtaXRNb2RlbEZvcm1EaXN0cmlidXRvcigkZm9ybSwgZSkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3N1Ym1pdE1vZGVsRm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1Ym1pdE1vZGVsRm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VibWl0TW9kZWxGb3JtKCRmb3JtLCBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0U3VibWl0TW9kZWxGb3JtKCRmb3JtLCBlKTtcbiAgICB9XG5cbiAgICBpdGVyYXRlQWxsQ2hpbGRyZW4oKSB7XG4gICAgICAgIGxldCBfY2hpbGRDb250cm9sbGVyID0gdGhpcy5fY2hpbGRDb250cm9sbGVyO1xuICAgICAgICBsZXQgcmVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgaW4gX2NoaWxkQ29udHJvbGxlcikge1xuICAgICAgICAgICAgaWYgKF9jaGlsZENvbnRyb2xsZXIuaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjYyBvZiBfY2hpbGRDb250cm9sbGVyW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKGNjKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goLi4uY2MuaXRlcmF0ZUFsbENoaWxkcmVuKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vZGVsIEZvcm0gRXZlbnRzXG4gICAgICovXG4gICAgZGVmYXVsdFN1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSkge1xuICAgICAgICBsZXQgcF9saXN0ID0gW107XG4gICAgICAgIGlmICghdGhpcy5faXNNaXhpbikge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGxldCB7bW9kZWwsIGZvcm1fbmFtZX0gPSAkZm9ybS5kYXRhKCk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBtb2RlbC5zeW5jRm9ybSgkZm9ybSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpbnN0YW5jZV92YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBwX2xpc3QucHVzaChuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9tO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2VfdmFsdWUucGsgIT09IG51bGwgJiYgaW5zdGFuY2VfdmFsdWUucGsgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvbSA9IG1vZGVsLnNhdmUoaW5zdGFuY2VfdmFsdWUucGssIGZvcm1fbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9tID0gbW9kZWwuY3JlYXRlKGluc3RhbmNlX3ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHByb20udGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckVycm9yc0luRm9ybSgkZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MgJiYgdGhpcy5zdWJtaXRfbW9kZWxfZm9ybV9zdWNjZXNzKHJlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IoY29uc3QgY29udHJvbGxlciBvZiB0aGlzLml0ZXJhdGVBbGxDaGlsZHJlbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5zdWJtaXRfbW9kZWxfZm9ybV9zdWNjZXNzICYmIGNvbnRyb2xsZXIuc3VibWl0X21vZGVsX2Zvcm1fc3VjY2VzcyhyZXNbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JzSW5Gb3JtKCRmb3JtLCAkKGRhdGEuaHRtbCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXRfbW9kZWxfZm9ybV9lcnJvciAmJiB0aGlzLnN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IGNvbnRyb2xsZXIgb2YgdGhpcy5pdGVyYXRlQWxsQ2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuc3VibWl0X21vZGVsX2Zvcm1fZXJyb3IgJiYgY29udHJvbGxlci5zdWJtaXRfbW9kZWxfZm9ybV9lcnJvcihkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBfbGlzdCkudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgLi4ucmVzLmZsYXQoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn0iXSwibmFtZXMiOlsiYWxsT2ZmIiwiYXBwIiwiTW9kZWwiLCJjYWxsU2VydmVyIiwidXVpZHY0Iiwic2V0RXJyb3JzSW5Gb3JtIiwiY2xlYXJFcnJvcnNJbkZvcm0iLCJ0YWdOYW1lVG9DYW1lbENhc2UiLCJ0YWdOYW1lVG9SZWFkYWJsZU5hbWUiLCJBYnN0cmFjdFNEQyIsImNvbnN0cnVjdG9yIiwiX3V1aWQiLCJjb250ZW50VXJsIiwiY29udGVudFJlbG9hZCIsInBhcnNlZENvbnRlbnRVcmwiLCJldmVudHMiLCJsb2FkX2FzeW5jIiwiX2lzRXZlbnRzU2V0IiwiX2FsbEV2ZW50cyIsIl91cmxQYXJhbXMiLCJfbW9kZWxzIiwiX2Nzc1VybHMiLCJhZnRlclNob3ciLCJjb25zb2xlIiwid2FybiIsIl9taXhpbnMiLCJfdGFnTmFtZSIsIk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwiX2NoaWxkQ29udHJvbGxlciIsIl9wYXJlbnRDb250cm9sbGVyIiwiX29uTG9hZERvbmUiLCIkY29udGFpbmVyIiwiX2lzTWl4aW4iLCJfcnVuTGlmZWN5Y2xlIiwibWV0aG9kIiwiYXJncyIsIkRFQlVHIiwiZGVidWciLCJyZXR1cm5Qcm9taXNzZXMiLCJtaXhpbktleSIsIm1peGluIiwicHVzaCIsImFwcGx5IiwiUHJvbWlzZSIsImFsbCIsInRoZW4iLCJvbkluaXQiLCJBcnJheSIsImFyZ3VtZW50cyIsInBhcmVudENvbnRyb2xsZXIiLCJjaGlsZENvbnRyb2xsZXIiLCJvbkxvYWQiLCJ3aWxsU2hvdyIsIm9uUmVmcmVzaCIsIm9uUmVtb3ZlIiwibm9PcGVuTW9kZWxSZXF1ZXN0cyIsIm1hcCIsIngiLCJub09wZW5SZXF1ZXN0cyIsInJlbW92ZSIsIm1vZGVsIiwiY2xvc2UiLCJpIiwiaGFzT3duUHJvcGVydHkiLCJjYyIsImNfbmFtZSIsImFyciIsImxlbmd0aCIsInNwbGljZSIsImNvbnRyb2xsZXJfbmFtZSIsImFkZEV2ZW50IiwiZXZlbnQiLCJzZWxlY3RvciIsImhhbmRsZXIiLCJnZXRFdmVudHMiLCJhbGxFdmVudHMiLCJjb25jYXQiLCJpc0FycmF5IiwiXyIsIm1lcmdlIiwicG9zdCIsInVybCIsImdldCIsInN1Ym1pdEZvcm0iLCJmb3JtIiwic3VibWl0Rm9ybUFuZFVwZGF0ZVZpZXciLCJzZXJ2ZXJDYWxsIiwibWV0aG9kZSIsInJlIiwibWF0Y2giLCJlcnJvciIsIm5hbWUiLCJuZXdNb2RlbCIsIm1vZGVsX25hbWUiLCJtb2RlbF9xdWVyeSIsIk51bWJlciIsImxvYWQiLCJ1cGRhdGVNb2RlbCIsInZhbHVlcyIsInNhdmUiLCJmaW5kIiwiZG9tU2VsZWN0b3IiLCJyZWZyZXNoIiwicmVsb2FkIiwicmVsb2FkQ29udHJvbGxlciIsInJlY29uY2lsZSIsIiR2aXJ0dWFsTm9kZSIsIiRyZWFsTm9kZSIsInN1Ym1pdE1vZGVsRm9ybURpc3RyaWJ1dG9yIiwiJGZvcm0iLCJlIiwiX3N1Ym1pdE1vZGVsRm9ybSIsInN1Ym1pdE1vZGVsRm9ybSIsImRlZmF1bHRTdWJtaXRNb2RlbEZvcm0iLCJpdGVyYXRlQWxsQ2hpbGRyZW4iLCJyZXMiLCJwX2xpc3QiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImZvcm1fbmFtZSIsImRhdGEiLCJzeW5jRm9ybSIsImluc3RhbmNlX3ZhbHVlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb20iLCJwayIsImNyZWF0ZSIsInN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MiLCJjb250cm9sbGVyIiwiY2F0Y2giLCIkIiwiaHRtbCIsInN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yIiwiYXNzaWduIiwiZmxhdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/simpleDomControl/AbstractSDC.js\n\n}");
|
|
27
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbstractSDC: () => (/* binding */ AbstractSDC)\n/* harmony export */ });\n/* harmony import */ var _sdc_events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n/* harmony import */ var _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_main.js */ \"./src/simpleDomControl/sdc_main.js\");\n/* harmony import */ var _sdc_socket_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sdc_socket.js */ \"./src/simpleDomControl/sdc_socket.js\");\n/* harmony import */ var _sdc_server_call_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_server_call.js */ \"./src/simpleDomControl/sdc_server_call.js\");\n/* harmony import */ var _sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n\n\n\n\n\nclass AbstractSDC {\n constructor() {\n this._uuid = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.uuidv4)();\n this.contentUrl = '';\n this.contentReload = false;\n this.parsedContentUrl = null;\n this.events = [];\n this.load_async = false;\n this._isEventsSet = false;\n this._allEvents = null;\n this._urlParams = [];\n this._models = [];\n\n // ------------------ Old deprecated properties ----------------------\n this._cssUrls = [];\n this.afterShow = () => {\n console.warn('afterShow is deprecated!!');\n };\n // -------------- End old deprecated properties ----------------------\n\n /**\n *\n * @type {{string: AbstractSDC}}\n */\n this._mixins = {};\n\n /**\n * @type {string}\n */\n this._tagName = Object.getPrototypeOf(this)._tagName ?? '';\n\n /**\n * @type {{string:AbstractSDC}}\n */\n this._childController = {};\n\n /**\n * @type {AbstractSDC}\n */\n this._parentController = null;\n\n /**\n * @type {boolean}\n */\n this._onLoadDone = false;\n\n /**\n * @type {jquery}\n */\n this.$container = null;\n\n /**\n *\n * @type {boolean}\n */\n this._isMixin = false;\n }\n\n /**\n *\n * @param {string} method must be in {}\n * @param {Array} args in arguments of\n *\n */\n _runLifecycle(method, args) {\n if (_sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.DEBUG && !this._isMixin) {\n console.debug(method, this._tagName);\n }\n let returnPromisses = [];\n if (this._isMixin) {\n return;\n }\n this._isMixin = true;\n for (let mixinKey in this._mixins) {\n let mixin = this._mixins[mixinKey];\n if (typeof mixin[method] === 'function') {\n returnPromisses.push(mixin[method].apply(this, args));\n }\n }\n return Promise.all(returnPromisses).then(() => {\n this._isMixin = false;\n });\n }\n onInit() {\n if (_sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.DEBUG && !this._isMixin) {\n console.DEBUG(Array.apply(null, arguments), this._tagName);\n }\n }\n get parentController() {\n return this._parentController;\n }\n get childController() {\n return this._childController;\n }\n onLoad() {\n return this._runLifecycle('onLoad', arguments);\n }\n willShow() {\n return this._runLifecycle('willShow', arguments);\n }\n onRefresh() {\n return this._runLifecycle('onRefresh', arguments);\n }\n onRemove() {\n this._runLifecycle('onRemove', arguments);\n return true;\n }\n noOpenModelRequests() {\n return Promise.all(this._models.map(x => x.noOpenRequests()));\n }\n remove() {\n for (const model of this._models) {\n model.close();\n }\n let _childController = this._childController;\n for (let i in _childController) {\n if (_childController.hasOwnProperty(i)) {\n for (let cc of _childController[i]) {\n if (!cc.remove()) {\n return false;\n }\n }\n }\n }\n if (!this.onRemove || this.onRemove()) {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_0__.allOff)(this);\n const c_name = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.tagNameToCamelCase)(this._tagName);\n if (this._parentController._childController[c_name]) {\n let arr = this._parentController._childController[c_name];\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === this) {\n arr.splice(i, 1);\n }\n }\n }\n this.$container.remove();\n delete this;\n return true;\n }\n return false;\n }\n controller_name() {\n return (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.tagNameToReadableName)(this._tagName);\n }\n addEvent(event, selector, handler) {\n this.getEvents();\n this._allEvents[event] = this._allEvents[event] || {};\n this._allEvents[event][selector] = handler;\n }\n getEvents() {\n if (this._allEvents) return this._allEvents;\n let allEvents = [];\n allEvents = allEvents.concat(this.events);\n for (let mixinKey in this._mixins) {\n let mixin = this._mixins[mixinKey];\n if (Array.isArray(mixin.events)) {\n allEvents = allEvents.concat(mixin.events);\n }\n }\n return this._allEvents = _.merge(...allEvents);\n }\n post(url, args) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.post(this, url, args);\n }\n get(url, args) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.get(this, url, args);\n }\n submitForm(form, url, method) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.submitFormAndUpdateView(this, form, url, method);\n }\n serverCall(methode, args) {\n let re = /sdc_view\\/([^/]+)/i;\n let app = this.contentUrl.match(re);\n if (!app || app.length < 2) {\n console.error('To use the serverCall function the contentUrl must be set: ' + this.name);\n return;\n }\n return (0,_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_3__.callServer)(app[1], this._tagName, this.parsedContentUrl ?? this.contentUrl, methode, args);\n }\n\n /**\n *\n * @param model_name {string | Number}\n * @param model_query {Object}\n * @constructor\n */\n newModel(model_name, model_query = {}) {\n if (model_name instanceof Number && model_name.hasOwnProperty('load')) {\n return model_name.load(this);\n }\n const model = new _sdc_socket_js__WEBPACK_IMPORTED_MODULE_2__.Model(model_name, model_query);\n this._models.push(model);\n return model;\n }\n\n /**\n *\n * @param model_name {string}\n * @param model_query {Object}\n * @param values {Object}\n * @constructor\n */\n updateModel(model_name, model_query = {}, values) {\n let model = new _sdc_socket_js__WEBPACK_IMPORTED_MODULE_2__.Model(model_name, model_query);\n return model.load().then(() => {\n model.values |= values;\n model.save().then(() => {\n model.close();\n return model.values;\n });\n });\n }\n\n /**\n * Adapter to this.$container.find\n * @param {string} domSelector\n */\n find(domSelector) {\n return this.$container.find(domSelector);\n }\n refresh() {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.refresh(this.$container, this);\n }\n reload() {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.reloadController(this);\n }\n reconcile($virtualNode, $realNode = null) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.reconcile(this, $virtualNode, $realNode);\n }\n submitModelFormDistributor($form, e) {\n if (typeof this._submitModelForm === 'function') {\n return this._submitModelForm($form, e);\n }\n if (typeof this.submitModelForm === 'function') {\n return this.submitModelForm($form, e);\n }\n return this.defaultSubmitModelForm($form, e);\n }\n iterateAllChildren() {\n let _childController = this._childController;\n let res = [];\n for (let i in _childController) {\n if (_childController.hasOwnProperty(i)) {\n for (let cc of _childController[i]) {\n res.push(cc);\n res.push(...cc.iterateAllChildren());\n }\n }\n }\n return res;\n }\n\n /**\n * Model Form Events\n */\n defaultSubmitModelForm($form, e) {\n let p_list = [];\n if (!this._isMixin) {\n e.stopPropagation();\n e.preventDefault();\n let {\n model,\n form_name\n } = $form.data();\n const values = model.syncForm($form);\n for (let instance_value of values) {\n p_list.push(new Promise((resolve, reject) => {\n let prom;\n if (instance_value.pk !== null && instance_value.pk >= 0) {\n prom = model.save(instance_value.pk, form_name);\n } else {\n prom = model.create(instance_value);\n }\n prom.then(res => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.clearErrorsInForm)($form);\n this.submit_model_form_success && this.submit_model_form_success(res[0]);\n for (const controller of this.iterateAllChildren()) {\n controller.submit_model_form_success && controller.submit_model_form_success(res[0]);\n }\n resolve(res);\n }).catch(data => {\n this.reconcile($(`<div class=\"container-fluid\">${data.html}</div>`), $form.find('.container-fluid').first());\n this.submit_model_form_error && this.submit_model_form_error(data);\n for (const controller of this.iterateAllChildren()) {\n controller.submit_model_form_error && controller.submit_model_form_error(data);\n }\n reject(data);\n });\n }));\n }\n }\n return Promise.all(p_list).then(res => {\n return Object.assign({}, ...res.flat());\n });\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBQ2lDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUcsSUFBSSxDQUFDQyx1QkFBdUIsSUFBSSxJQUFJLENBQUNBLHVCQUF1QixDQUFDZCxJQUFJLENBQUM7WUFDbEUsS0FBSSxNQUFNUyxVQUFVLElBQUksSUFBSSxDQUFDZixrQkFBa0IsQ0FBQyxDQUFDLEVBQUU7Y0FDL0NlLFVBQVUsQ0FBQ0ssdUJBQXVCLElBQUlMLFVBQVUsQ0FBQ0ssdUJBQXVCLENBQUNkLElBQUksQ0FBQztZQUNsRjtZQUNBSSxNQUFNLENBQUNKLElBQUksQ0FBQztVQUNoQixDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztNQUNQO0lBQ0o7SUFFQSxPQUFPN0UsT0FBTyxDQUFDQyxHQUFHLENBQUN3RSxNQUFNLENBQUMsQ0FBQ3ZFLElBQUksQ0FBRXNFLEdBQUcsSUFBSztNQUNyQyxPQUFPekYsTUFBTSxDQUFDNkcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUdwQixHQUFHLENBQUNxQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQztFQUNOO0FBQ0oiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zZGNfY2xpZW50Ly4vc3JjL3NpbXBsZURvbUNvbnRyb2wvQWJzdHJhY3RTREMuanM/ZDdmNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FsbE9mZn0gZnJvbSBcIi4vc2RjX2V2ZW50cy5qc1wiO1xuaW1wb3J0IHthcHB9IGZyb20gXCIuL3NkY19tYWluLmpzXCI7XG5pbXBvcnQge01vZGVsfSBmcm9tIFwiLi9zZGNfc29ja2V0LmpzXCI7XG5pbXBvcnQge2NhbGxTZXJ2ZXJ9IGZyb20gXCIuL3NkY19zZXJ2ZXJfY2FsbC5qc1wiO1xuaW1wb3J0IHt1dWlkdjQsIHNldEVycm9yc0luRm9ybSwgY2xlYXJFcnJvcnNJbkZvcm0sIHRhZ05hbWVUb0NhbWVsQ2FzZSwgdGFnTmFtZVRvUmVhZGFibGVOYW1lfSBmcm9tIFwiLi9zZGNfdXRpbHMuanNcIjtcblxuZXhwb3J0IGNsYXNzIEFic3RyYWN0U0RDIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5fdXVpZCA9IHV1aWR2NCgpO1xuICAgICAgICB0aGlzLmNvbnRlbnRVcmwgPSAnJztcbiAgICAgICAgdGhpcy5jb250ZW50UmVsb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucGFyc2VkQ29udGVudFVybCA9IG51bGw7XG4gICAgICAgIHRoaXMuZXZlbnRzID0gW107XG4gICAgICAgIHRoaXMubG9hZF9hc3luYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pc0V2ZW50c1NldCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9hbGxFdmVudHMgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuX3VybFBhcmFtcyA9IFtdO1xuICAgICAgICB0aGlzLl9tb2RlbHMgPSBbXTtcblxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0gT2xkIGRlcHJlY2F0ZWQgcHJvcGVydGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIHRoaXMuX2Nzc1VybHMgPSBbXTtcbiAgICAgICAgdGhpcy5hZnRlclNob3cgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2FmdGVyU2hvdyBpcyBkZXByZWNhdGVkISEnKVxuICAgICAgICB9O1xuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLSBFbmQgb2xkIGRlcHJlY2F0ZWQgcHJvcGVydGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICpcbiAgICAgICAgICogQHR5cGUge3tzdHJpbmc6IEFic3RyYWN0U0RDfX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX21peGlucyA9IHt9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fdGFnTmFtZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5fdGFnTmFtZSA/PyAnJztcblxuICAgICAgICAvKipcbiAgICAgICAgICogQHR5cGUge3tzdHJpbmc6QWJzdHJhY3RTREN9fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fY2hpbGRDb250cm9sbGVyID0ge307XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlIHtBYnN0cmFjdFNEQ31cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX3BhcmVudENvbnRyb2xsZXIgPSBudWxsO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX29uTG9hZERvbmUgPSBmYWxzZTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQHR5cGUge2pxdWVyeX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuJGNvbnRhaW5lciA9IG51bGw7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqXG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5faXNNaXhpbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCBtdXN0IGJlIGluIHt9XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBpbiBhcmd1bWVudHMgb2ZcbiAgICAgKlxuICAgICAqL1xuICAgIF9ydW5MaWZlY3ljbGUobWV0aG9kLCBhcmdzKSB7XG4gICAgICAgIGlmIChhcHAuREVCVUcgJiYgIXRoaXMuX2lzTWl4aW4pIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcobWV0aG9kLCB0aGlzLl90YWdOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXR1cm5Qcm9taXNzZXMgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuX2lzTWl4aW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pc01peGluID0gdHJ1ZTtcbiAgICAgICAgZm9yIChsZXQgbWl4aW5LZXkgaW4gdGhpcy5fbWl4aW5zKSB7XG4gICAgICAgICAgICBsZXQgbWl4aW4gPSB0aGlzLl9taXhpbnNbbWl4aW5LZXldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBtaXhpblttZXRob2RdID09PSAnZnVuY3Rpb24nKSB7XG5cbiAgICAgICAgICAgICAgICByZXR1cm5Qcm9taXNzZXMucHVzaChtaXhpblttZXRob2RdLmFwcGx5KHRoaXMsIGFyZ3MpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChyZXR1cm5Qcm9taXNzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5faXNNaXhpbiA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkluaXQoKSB7XG4gICAgICAgIGlmIChhcHAuREVCVUcgJiYgIXRoaXMuX2lzTWl4aW4pIHtcbiAgICAgICAgICAgIGNvbnNvbGUuREVCVUcoQXJyYXkuYXBwbHkobnVsbCwgYXJndW1lbnRzKSwgdGhpcy5fdGFnTmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgcGFyZW50Q29udHJvbGxlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudENvbnRyb2xsZXI7XG4gICAgfVxuXG4gICAgZ2V0IGNoaWxkQ29udHJvbGxlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkQ29udHJvbGxlcjtcbiAgICB9XG5cbiAgICBvbkxvYWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5MaWZlY3ljbGUoJ29uTG9hZCcsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgd2lsbFNob3coKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5MaWZlY3ljbGUoJ3dpbGxTaG93JywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBvblJlZnJlc2goKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5MaWZlY3ljbGUoJ29uUmVmcmVzaCcsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgb25SZW1vdmUoKSB7XG4gICAgICAgIHRoaXMuX3J1bkxpZmVjeWNsZSgnb25SZW1vdmUnLCBhcmd1bWVudHMpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIG5vT3Blbk1vZGVsUmVxdWVzdHMoICkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwodGhpcy5fbW9kZWxzLm1hcCh4ID0+IHgubm9PcGVuUmVxdWVzdHMoKSkpO1xuICAgIH1cblxuICAgIHJlbW92ZSgpIHtcbiAgICAgICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLl9tb2RlbHMpIHtcbiAgICAgICAgICAgIG1vZGVsLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IF9jaGlsZENvbnRyb2xsZXIgPSB0aGlzLl9jaGlsZENvbnRyb2xsZXI7XG4gICAgICAgIGZvciAobGV0IGkgaW4gX2NoaWxkQ29udHJvbGxlcikge1xuICAgICAgICAgICAgaWYgKF9jaGlsZENvbnRyb2xsZXIuaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjYyBvZiBfY2hpbGRDb250cm9sbGVyW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2MucmVtb3ZlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5vblJlbW92ZSB8fCB0aGlzLm9uUmVtb3ZlKCkpIHtcbiAgICAgICAgICAgIGFsbE9mZih0aGlzKTtcbiAgICAgICAgICAgIGNvbnN0IGNfbmFtZSA9IHRhZ05hbWVUb0NhbWVsQ2FzZSh0aGlzLl90YWdOYW1lKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9wYXJlbnRDb250cm9sbGVyLl9jaGlsZENvbnRyb2xsZXJbY19uYW1lXSkge1xuICAgICAgICAgICAgICAgIGxldCBhcnIgPSB0aGlzLl9wYXJlbnRDb250cm9sbGVyLl9jaGlsZENvbnRyb2xsZXJbY19uYW1lXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXJyW2ldID09PSB0aGlzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnIuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLiRjb250YWluZXIucmVtb3ZlKCk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcztcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnRyb2xsZXJfbmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRhZ05hbWVUb1JlYWRhYmxlTmFtZSh0aGlzLl90YWdOYW1lKTtcbiAgICB9XG5cbiAgICBhZGRFdmVudChldmVudCwgc2VsZWN0b3IsIGhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy5nZXRFdmVudHMoKTtcbiAgICAgICAgdGhpcy5fYWxsRXZlbnRzW2V2ZW50XSA9IHRoaXMuX2FsbEV2ZW50c1tldmVudF0gfHwge307XG4gICAgICAgIHRoaXMuX2FsbEV2ZW50c1tldmVudF1bc2VsZWN0b3JdID0gaGFuZGxlcjtcbiAgICB9XG5cbiAgICBnZXRFdmVudHMoKSB7XG4gICAgICAgIGlmICh0aGlzLl9hbGxFdmVudHMpIHJldHVybiB0aGlzLl9hbGxFdmVudHM7XG4gICAgICAgIGxldCBhbGxFdmVudHMgPSBbXTtcbiAgICAgICAgYWxsRXZlbnRzID0gYWxsRXZlbnRzLmNvbmNhdCh0aGlzLmV2ZW50cyk7XG4gICAgICAgIGZvciAobGV0IG1peGluS2V5IGluIHRoaXMuX21peGlucykge1xuICAgICAgICAgICAgbGV0IG1peGluID0gdGhpcy5fbWl4aW5zW21peGluS2V5XTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1peGluLmV2ZW50cykpIHtcbiAgICAgICAgICAgICAgICBhbGxFdmVudHMgPSBhbGxFdmVudHMuY29uY2F0KG1peGluLmV2ZW50cylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuICh0aGlzLl9hbGxFdmVudHMgPSBfLm1lcmdlKC4uLmFsbEV2ZW50cykpO1xuICAgIH1cblxuICAgIHBvc3QodXJsLCBhcmdzKSB7XG4gICAgICAgIHJldHVybiBhcHAucG9zdCh0aGlzLCB1cmwsIGFyZ3MpO1xuICAgIH1cblxuICAgIGdldCh1cmwsIGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIGFwcC5nZXQodGhpcywgdXJsLCBhcmdzKTtcbiAgICB9XG5cbiAgICBzdWJtaXRGb3JtKGZvcm0sIHVybCwgbWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBhcHAuc3VibWl0Rm9ybUFuZFVwZGF0ZVZpZXcodGhpcywgZm9ybSwgdXJsLCBtZXRob2QpO1xuICAgIH1cblxuICAgIHNlcnZlckNhbGwobWV0aG9kZSwgYXJncykge1xuICAgICAgICBsZXQgcmUgPSAvc2RjX3ZpZXdcXC8oW14vXSspL2k7XG4gICAgICAgIGxldCBhcHAgPSB0aGlzLmNvbnRlbnRVcmwubWF0Y2gocmUpO1xuICAgICAgICBpZiAoIWFwcCB8fCBhcHAubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignVG8gdXNlIHRoZSBzZXJ2ZXJDYWxsIGZ1bmN0aW9uIHRoZSBjb250ZW50VXJsIG11c3QgYmUgc2V0OiAnICsgdGhpcy5uYW1lKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWxsU2VydmVyKGFwcFsxXSwgdGhpcy5fdGFnTmFtZSwgdGhpcy5wYXJzZWRDb250ZW50VXJsID8/IHRoaXMuY29udGVudFVybCwgbWV0aG9kZSwgYXJncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbW9kZWxfbmFtZSB7c3RyaW5nIHwgTnVtYmVyfVxuICAgICAqIEBwYXJhbSBtb2RlbF9xdWVyeSB7T2JqZWN0fVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIG5ld01vZGVsKG1vZGVsX25hbWUsIG1vZGVsX3F1ZXJ5ID0ge30pIHtcbiAgICAgICAgaWYobW9kZWxfbmFtZSBpbnN0YW5jZW9mIE51bWJlciAmJiBtb2RlbF9uYW1lLmhhc093blByb3BlcnR5KCdsb2FkJykpIHtcbiAgICAgICAgICAgIHJldHVybiBtb2RlbF9uYW1lLmxvYWQodGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBNb2RlbChtb2RlbF9uYW1lLCBtb2RlbF9xdWVyeSk7XG4gICAgICAgIHRoaXMuX21vZGVscy5wdXNoKG1vZGVsKTtcbiAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIG1vZGVsX25hbWUge3N0cmluZ31cbiAgICAgKiBAcGFyYW0gbW9kZWxfcXVlcnkge09iamVjdH1cbiAgICAgKiBAcGFyYW0gdmFsdWVzIHtPYmplY3R9XG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgdXBkYXRlTW9kZWwobW9kZWxfbmFtZSwgbW9kZWxfcXVlcnkgPSB7fSwgdmFsdWVzKSB7XG4gICAgICAgIGxldCBtb2RlbCA9IG5ldyBNb2RlbChtb2RlbF9uYW1lLCBtb2RlbF9xdWVyeSk7XG4gICAgICAgIHJldHVybiBtb2RlbC5sb2FkKCkudGhlbigoKT0+e1xuICAgICAgICAgICAgbW9kZWwudmFsdWVzIHw9IHZhbHVlcztcbiAgICAgICAgICAgIG1vZGVsLnNhdmUoKS50aGVuKCgpPT4ge1xuICAgICAgICAgICAgICAgIG1vZGVsLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGVsLnZhbHVlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkYXB0ZXIgdG8gdGhpcy4kY29udGFpbmVyLmZpbmRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZG9tU2VsZWN0b3JcbiAgICAgKi9cbiAgICBmaW5kKGRvbVNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRjb250YWluZXIuZmluZChkb21TZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgcmVmcmVzaCgpIHtcbiAgICAgICAgcmV0dXJuIGFwcC5yZWZyZXNoKHRoaXMuJGNvbnRhaW5lciwgdGhpcyk7XG4gICAgfVxuXG4gICAgcmVsb2FkKCkge1xuICAgICAgICByZXR1cm4gYXBwLnJlbG9hZENvbnRyb2xsZXIodGhpcyk7XG4gICAgfVxuXG4gICAgcmVjb25jaWxlKCR2aXJ0dWFsTm9kZSwgJHJlYWxOb2RlID0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYXBwLnJlY29uY2lsZSh0aGlzLCAkdmlydHVhbE5vZGUsICRyZWFsTm9kZSk7XG4gICAgfVxuXG4gICAgc3VibWl0TW9kZWxGb3JtRGlzdHJpYnV0b3IoJGZvcm0sIGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zdWJtaXRNb2RlbEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdWJtaXRNb2RlbEZvcm0oJGZvcm0sIGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJtaXRNb2RlbEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFN1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSk7XG4gICAgfVxuXG4gICAgaXRlcmF0ZUFsbENoaWxkcmVuKCkge1xuICAgICAgICBsZXQgX2NoaWxkQ29udHJvbGxlciA9IHRoaXMuX2NoaWxkQ29udHJvbGxlcjtcbiAgICAgICAgbGV0IHJlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpIGluIF9jaGlsZENvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGlmIChfY2hpbGRDb250cm9sbGVyLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2Mgb2YgX2NoaWxkQ29udHJvbGxlcltpXSkge1xuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChjYyk7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKC4uLmNjLml0ZXJhdGVBbGxDaGlsZHJlbigpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNb2RlbCBGb3JtIEV2ZW50c1xuICAgICAqL1xuICAgIGRlZmF1bHRTdWJtaXRNb2RlbEZvcm0oJGZvcm0sIGUpIHtcbiAgICAgICAgbGV0IHBfbGlzdCA9IFtdO1xuICAgICAgICBpZiAoIXRoaXMuX2lzTWl4aW4pIHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBsZXQge21vZGVsLCBmb3JtX25hbWV9ID0gJGZvcm0uZGF0YSgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gbW9kZWwuc3luY0Zvcm0oJGZvcm0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5zdGFuY2VfdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgcF9saXN0LnB1c2gobmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvbTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlX3ZhbHVlLnBrICE9PSBudWxsICYmIGluc3RhbmNlX3ZhbHVlLnBrID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb20gPSBtb2RlbC5zYXZlKGluc3RhbmNlX3ZhbHVlLnBrLCBmb3JtX25hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvbSA9IG1vZGVsLmNyZWF0ZShpbnN0YW5jZV92YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwcm9tLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJFcnJvcnNJbkZvcm0oJGZvcm0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXRfbW9kZWxfZm9ybV9zdWNjZXNzICYmIHRoaXMuc3VibWl0X21vZGVsX2Zvcm1fc3VjY2VzcyhyZXNbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IGNvbnRyb2xsZXIgb2YgdGhpcy5pdGVyYXRlQWxsQ2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuc3VibWl0X21vZGVsX2Zvcm1fc3VjY2VzcyAmJiBjb250cm9sbGVyLnN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MocmVzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25jaWxlKCQoYDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj4ke2RhdGEuaHRtbH08L2Rpdj5gKSwgJGZvcm0uZmluZCgnLmNvbnRhaW5lci1mbHVpZCcpLmZpcnN0KCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXRfbW9kZWxfZm9ybV9lcnJvciAmJiB0aGlzLnN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IGNvbnRyb2xsZXIgb2YgdGhpcy5pdGVyYXRlQWxsQ2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuc3VibWl0X21vZGVsX2Zvcm1fZXJyb3IgJiYgY29udHJvbGxlci5zdWJtaXRfbW9kZWxfZm9ybV9lcnJvcihkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBfbGlzdCkudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgLi4ucmVzLmZsYXQoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn0iXSwibmFtZXMiOlsiYWxsT2ZmIiwiYXBwIiwiTW9kZWwiLCJjYWxsU2VydmVyIiwidXVpZHY0Iiwic2V0RXJyb3JzSW5Gb3JtIiwiY2xlYXJFcnJvcnNJbkZvcm0iLCJ0YWdOYW1lVG9DYW1lbENhc2UiLCJ0YWdOYW1lVG9SZWFkYWJsZU5hbWUiLCJBYnN0cmFjdFNEQyIsImNvbnN0cnVjdG9yIiwiX3V1aWQiLCJjb250ZW50VXJsIiwiY29udGVudFJlbG9hZCIsInBhcnNlZENvbnRlbnRVcmwiLCJldmVudHMiLCJsb2FkX2FzeW5jIiwiX2lzRXZlbnRzU2V0IiwiX2FsbEV2ZW50cyIsIl91cmxQYXJhbXMiLCJfbW9kZWxzIiwiX2Nzc1VybHMiLCJhZnRlclNob3ciLCJjb25zb2xlIiwid2FybiIsIl9taXhpbnMiLCJfdGFnTmFtZSIsIk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwiX2NoaWxkQ29udHJvbGxlciIsIl9wYXJlbnRDb250cm9sbGVyIiwiX29uTG9hZERvbmUiLCIkY29udGFpbmVyIiwiX2lzTWl4aW4iLCJfcnVuTGlmZWN5Y2xlIiwibWV0aG9kIiwiYXJncyIsIkRFQlVHIiwiZGVidWciLCJyZXR1cm5Qcm9taXNzZXMiLCJtaXhpbktleSIsIm1peGluIiwicHVzaCIsImFwcGx5IiwiUHJvbWlzZSIsImFsbCIsInRoZW4iLCJvbkluaXQiLCJBcnJheSIsImFyZ3VtZW50cyIsInBhcmVudENvbnRyb2xsZXIiLCJjaGlsZENvbnRyb2xsZXIiLCJvbkxvYWQiLCJ3aWxsU2hvdyIsIm9uUmVmcmVzaCIsIm9uUmVtb3ZlIiwibm9PcGVuTW9kZWxSZXF1ZXN0cyIsIm1hcCIsIngiLCJub09wZW5SZXF1ZXN0cyIsInJlbW92ZSIsIm1vZGVsIiwiY2xvc2UiLCJpIiwiaGFzT3duUHJvcGVydHkiLCJjYyIsImNfbmFtZSIsImFyciIsImxlbmd0aCIsInNwbGljZSIsImNvbnRyb2xsZXJfbmFtZSIsImFkZEV2ZW50IiwiZXZlbnQiLCJzZWxlY3RvciIsImhhbmRsZXIiLCJnZXRFdmVudHMiLCJhbGxFdmVudHMiLCJjb25jYXQiLCJpc0FycmF5IiwiXyIsIm1lcmdlIiwicG9zdCIsInVybCIsImdldCIsInN1Ym1pdEZvcm0iLCJmb3JtIiwic3VibWl0Rm9ybUFuZFVwZGF0ZVZpZXciLCJzZXJ2ZXJDYWxsIiwibWV0aG9kZSIsInJlIiwibWF0Y2giLCJlcnJvciIsIm5hbWUiLCJuZXdNb2RlbCIsIm1vZGVsX25hbWUiLCJtb2RlbF9xdWVyeSIsIk51bWJlciIsImxvYWQiLCJ1cGRhdGVNb2RlbCIsInZhbHVlcyIsInNhdmUiLCJmaW5kIiwiZG9tU2VsZWN0b3IiLCJyZWZyZXNoIiwicmVsb2FkIiwicmVsb2FkQ29udHJvbGxlciIsInJlY29uY2lsZSIsIiR2aXJ0dWFsTm9kZSIsIiRyZWFsTm9kZSIsInN1Ym1pdE1vZGVsRm9ybURpc3RyaWJ1dG9yIiwiJGZvcm0iLCJlIiwiX3N1Ym1pdE1vZGVsRm9ybSIsInN1Ym1pdE1vZGVsRm9ybSIsImRlZmF1bHRTdWJtaXRNb2RlbEZvcm0iLCJpdGVyYXRlQWxsQ2hpbGRyZW4iLCJyZXMiLCJwX2xpc3QiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImZvcm1fbmFtZSIsImRhdGEiLCJzeW5jRm9ybSIsImluc3RhbmNlX3ZhbHVlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb20iLCJwayIsImNyZWF0ZSIsInN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MiLCJjb250cm9sbGVyIiwiY2F0Y2giLCIkIiwiaHRtbCIsImZpcnN0Iiwic3VibWl0X21vZGVsX2Zvcm1fZXJyb3IiLCJhc3NpZ24iLCJmbGF0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/simpleDomControl/AbstractSDC.js\n\n}");
|
|
28
28
|
|
|
29
29
|
/***/ }),
|
|
30
30
|
|
package/dist/ugly.index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={};let t;e.d=(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const n=/(?<=^|,\s?)[^=\s,]+/g,r=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;function o(){return new Promise(function(e){e()})}function s(e){return(e=(e=e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)).replace(/[0-9]+/g,e=>`-${e}`)).replace(/^[-]/g,"")}function i(e){return e.replace(/-./g,e=>`${e[1].toUpperCase()}`)}const l=(e,t)=>{let n=t,r=Object.getOwnPropertyNames(e.prototype).concat(Object.getOwnPropertySymbols(e.prototype));for(;""!==n.name;)Object.getOwnPropertyNames(n.prototype).concat(Object.getOwnPropertySymbols(n.prototype)).forEach(t=>{t.match(/^(?:constructor|prototype|arguments|caller|name|bind|call|apply|toString|length)$/)||r.includes(t)||(r.push(t),Object.defineProperty(e.prototype,t,Object.getOwnPropertyDescriptor(n.prototype,t)))}),n=Object.getPrototypeOf(n)};function a(e,t,n){return $.ajax({url:t,type:n||"POST",xhr:function(){var e=$.ajaxSettings.xhr();return e.upload&&e.upload.addEventListener("progress",c,!1),e},data:e,cache:!1,contentType:!1,processData:!1,beforeSend:function(e,t){(function(e){return/^(GET|HEAD|OPTIONS|TRACE)$/.test(e)})(t.type)||this.crossDomain||e.setRequestHeader("X-CSRFToken",window.CSRF_TOKEN)}})}function c(e){if(e.lengthComputable){var t=Math.round(e.loaded/e.total*100),n=$(".progress-container");100===t?n.hide():n.show(),t+="%",n.find(".progress-bar").css({width:t}).text(t)}}function u(e,t=null){return"string"!=typeof e?e:t&&void 0!==t[e]?"function"==typeof t[e]?t[e].bind(t):t[e]:e.match(/^(true|false)$/)?"true"===e:"undefined"!==e?"none"===e.toLowerCase()?null:e.match(/^-?\d+$/)?parseInt(e):e.match(/^-?\d+\.?\d+$/)?parseFloat(e):e.match(/^(['][^']*['])|(["][^"]*["])$/)?e.substr(1,e.length-2):e:void 0}function d(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}function h(e){e.find(".has-error").removeClass("has-error").find(".alert-danger").remove(),e.find(".non-field-errors").remove()}function p(e,t){t=$("<div>").append(t),e.find(".has-error").removeClass("has-error").find(".alert-danger").safeRemove(),e.find(".non-field-errors").safeRemove();let n=t.find("input[type=file]").parent();e.find("input[type=file]").parent().each(function(e){$(this).replaceWith(n[e])});let r=0===t.find(".non-field-errors").insertAfter(e.find(".hidden-form-fields")).length;return t.find(".has-error").each(function(){r=!1;let t=$(this),n=t.data("auto-id"),o=e.find(".form-group."+n);o.addClass("has-error"),o.find(".form-input-container").append(t.find(".alert-danger"))}),r}function f(e,t=[]){return Object.fromEntries(Object.entries(e).filter(([e,n])=>e!==L&&!t.includes(e)).map(([e,t])=>{if("string"==typeof t&&t.startsWith("SDC_JSON_MODEL=["))try{const{pk:n,fields:r}=JSON.parse(t.slice(16,-1));return[e,{...r,id:n,pk:n}]}catch{}return[e,t]}))}function m(e,t,n=null){let r=function(e,t){let n;e||(e=[]);let r=t.data(),o=f(r,e);n=[];for(let t=0;t<e.length;t++){let o=e[t];r.hasOwnProperty(o)?n.push(r[o]):n.push("undefined")}return n.push(o),n}(e,t);return function(e,t=null){let n=[];for(let r=0;r<e.length;r++){let o=u(e[r],t);n.push(o)}return n}(r,n)}function g(e,t,o){if(!e)return!1;if("function"!=typeof e.onInit)return!1;let s;var i;"function"==typeof e._on_init_params?s=e._on_init_params():s=(i=e.onInit.toString().replace(r,"")).slice(i.indexOf("(")+1,i.indexOf(")")).match(n)||[];let l=m(s,t,o._parentController);if(e.onInit.apply(o,l),o===e)for(let n in e._mixins)g(e._mixins[n],t,o)}const y=["onbeforeunload","onunload"],v=Object.keys(window).filter(e=>/^on/.test(e)&&!y.includes(e)).map(e=>e.slice(2));function w(e,t,n){let r;switch(e){case"mouseleave":case"mouseout":case"mouseenter":case"mousein":return r=document.elementFromPoint(t.clientX,t.clientY),n!==r&&!n.contains(r);default:return!0}}function O(e){let t=e.type;e.hasOwnProperty("namespace")&&e.namespace&&e.namespace.length&&(t+=`.${e.namespace}`);let n=$(e.target),r=null,o=!1,s=!1;for(e.stopImmediatePropagation=()=>s=!0,e.stopPropagation=()=>s=o=!0;n.length;){let i=n.attr(`sdc_${t}`);if(i&&w(t,e,n[0])){if(!r&&(r=W(n),!r))return;for(;r;){if(i.split(" ").forEach(s=>{if(o)return;let i=null;if("function"==typeof s)i=s;else if("function"==typeof r[s])i=r[s];else if("string"==typeof s&&s.startsWith("this.event_")){if(i=r.getEvents()[t],!i)return;if(i=i[s.slice(11)],!i)return}i&&i.call(r,n,e)}),s)return;r=r._parentController}}if(o)return;n=n.parent()}return{res:!0}}function C(e){if(e._isEventsSet)return;const t=e.getEvents();for(let n in t)if(t.hasOwnProperty(n)){let r=t[n];for(let t in r)r.hasOwnProperty(t)&&e.find(t).each(function(){let e=$(this),r=e.attr(`sdc_${n}`)||null;r=r?r.split(" "):[];const o=`this.event_${t}`;-1===r.indexOf(o)&&(r.push(o),e.attr(`sdc_${n}`,r.join(" ")))})}}let b=[],k={};function N(e,t){if(e){let n=i(t._tagName);e._childController[n]||(e._childController[n]=[]),e._childController[n].push(t)}return t._parentController=e}function P(e,t,n,r){let o=[];r=function(e,t){e=(e=e.concat(k[t][1])).filter((e,t,n)=>n.indexOf(e)===t);let n=!0;for(;n;){n=!1;for(let t of e)for(let r of k[t][1])e.includes(r)||(e.push(r),n=!0)}return e}(r,n);for(let e of r)o.push(k[e][0]);let s=new(function(e,...t){let n={[e.name]:class{constructor(...n){let r={};t.forEach(e=>{let t;Object.assign(this,t=new e),t._tagName=e.prototype._tagName,t._isMixin=!0,r[e.name]=t}),Object.assign(this,new e),this._mixins=r}static get name(){return e.name}static className(){return this.name}get mixins(){return this._mixins}}}[e.name];return l(n,e),t.forEach(e=>{l(n,e)}),n}(k[n][0],...o));return s._tagName=n,N(e,s),s.$container=t,function(e,t){g(t,e,t)}(t,s),s}function S(e,t,n,r){if(b.includes(n)){let o=i(n);return window[o]||(window[o]=P(e,t,n,r)),window[o].$container=t,window[o]}return P(e,t,n,r)}function E(e,t){const n=function(e){return function(e){let t={args:{}};return e.contentUrl&&(t=B(e),e.contentUrl=t.url),Promise.all([D(e,t.args)]).then(function(e){let t=e[0];if(t)try{return $(t)}catch{return $("<div></div>").append(t)}return null})}(e).then(t=>!e.onLoad||e._onLoadDone?t:(e._onLoadDone=!0,(e.onLoad(t)||o()).then(()=>t)))}(e).then(function(t){return function(e,t){return K(e,t).then(function(t){if(t=t||!0,e.willShow){let n=e.willShow();if(n instanceof Promise)return n.then(function(){return t})}return t})}(e,t)}).then(()=>function(e,t){return Z(null,e,t)}(e,t)).catch(function(t){return K(e,t)});return e.load_async?Promise.resolve():n}function R(e){const t=function(e){let t=[];for(;e;)e._isEventsSet=!1,t.unshift(e),e=e._parentController;return t}(e.controller[0]),n=t.concat(e.controller.slice(1));for(let t of n)C(t),t.onRefresh(e.controller[0])}function x(e,t){let n=Boolean(e);return n?e.uuids.has(t._uuid)||(e.uuids.add(t._uuid),e.controller.push(t)):e={uuids:new Set([t._uuid]),controller:[t]},{isRunningProcess:n,refreshProcess:e}}let q={},F={};function j(e,t){return T(e),F.hasOwnProperty(e)?t[F[e]]?void q[e].push(t):console.log("No event handler: "+e,t):console.log("No event: "+e,t)}function T(e,t){t||(t=e),F[e]||(F[e]=t,q[e]=[])}function M(e){for(let t in q)if(q.hasOwnProperty(t))for(let n=q[t].length;n>=0;n--)e===q[t][n]&&q[t].splice(n,1)}function A(e){let t=Array.apply(null,arguments);if(e=t.shift(),!q.hasOwnProperty(e)||!F.hasOwnProperty(e))return o();let n=q[e],r=F[e],s=[];for(let e=0;e<n.length;e++){let o=n[e][r].apply(n[e],t);void 0!==o&&s.push(o)}return Promise.all(s)}let I={};const L="_controller_",J="_sdc_controller_";function U(e,t,n){if(!e)return[];let r=e.children(),o=[];return r.each(function(e,r){let s=$(r),i=s.prop("tagName").toLowerCase().split("_");$.inArray(i[0],t)>=0?o.push({tag:i[0],super:i.splice(1)||[],dom:s}):i[0].startsWith("this.")?s.addClass(`_bind_to_update_handler sdc_uuid_${n._uuid}`):o=o.concat(U(s,t,n))}),o}function D(e,t){const{contentUrl:n,_tagName:r,contentReload:o}=e;return n?I[r]?Promise.resolve(I[r]):(t.VERSION=_e.VERSION,t._method="content",$.get(n,t).then(function(e){return o||(I[r]=e),e}).catch(function(t){throw 301===t.status&&A("_RedirectOnView",t.responseJSON["url-link"]),"function"==typeof e.confirmPageLoaded&&A("navLoaded",{controller_name:()=>t.status}),`<sdc-error data-code="${t.status}">${t.responseText}</sdc-error>`})):Promise.resolve(!1)}function V(e,t,n=null){return t=t||e.data(L),H(_e.tagNames,e,t,n)}function B(e){let t=e.contentUrl;if(e&&0===e._urlParams.length){let n,r=/%\(([^)]+)\)\w/gm;for(e._urlParams=[];n=r.exec(t);)e._urlParams.push(n[1]),e.contentReload=!0}let n=function(e,t){return m(e._urlParams,t)}(e,e.$container);return e._urlParams.length&&(t=function(e,t,n){for(let r in e._urlParams)if(e._urlParams.hasOwnProperty(r)){let o=e._urlParams[r],s=RegExp("%\\("+o+"\\)\\w","gm");t=t.replace(s,""+n.shift())}return t}(e,t,n)),e.parsedContentUrl=t,{url:t,args:n[n.length-1]}}function W(e){return e.hasClass(J)?e.data(`${L}`):e.closest(`.${J}`).data(`${L}`)}function G(e,t,n,r,o){let s=e.data(L);return s?V(e,s,o):(s=S(r,e,t,n),e.data(L,s),e.addClass(J),E(s,o))}function K(e,t,n=null){if(t&&t.length>0){e.$container.empty(),e.$container.attr(e._tagName,"");for(let t in e._mixins)e.$container.attr(e._mixins[t]._tagName,"");e.$container.append(t)}return V(e.$container,e,n)}function H(e,t,n,r){return new Promise(o=>{let s=U(t,e,n),i=s.length;if(0===i)return o();for(let e=0;e<s.length;e++)G(s[e].dom,s[e].tag,s[e].super,n,r).then(()=>{if(i--,0===i)return o()})})}function X({$element:e,id:t=[],parent:n=null}){t.push(function(e){if(3===e[0].nodeType)return`TEXT__${e[0].nodeValue}`;const t=[e[0].tagName];return"INPUT"===e[0].nodeName&&[["name",""],["type","text"],["id",""]].forEach(([n,r])=>{const o=e.attr(n)??r;o&&t.push(o)}),t.join("__")}(e));const r={$element:e,id:t.join("::"),depth:t.length,idx:0,getRealParent:()=>n,getIdx:function(){return this.idx=Math.max(0,(this.getRealParent()?.getIdx()??-1)+e.index()+1),this.idx},op:null,parent:n};return r.getIdx.bind(r),[r].concat(e.contents().toArray().map(e=>X({$element:$(e),id:t.slice(),parent:r})).flat())}function z(e,t){const n=X({$element:t}),r=X({$element:e});n.map((e,t)=>e.idx=t),r.map((e,t)=>e.idx=t);const o=Math.max(...r.concat(n).map(e=>e.depth)),s=Y(n,r,o);let i=[];window.MAIN=t,window.OPS=s,s.forEach((e,t)=>{const{op:n,$element:r,idx:o}=e;if("keep_counterpart"===n.type){if(n.counterpart.getIdx()!==o){const t=e.getBefore();t?n.counterpart.$element.insertAfter(t.$element):e.getRealParent().$element.prepend(n.counterpart.$element)}!function(e,t){const n=e[0].attributes??[],r=t[0].attributes??[];[...n].forEach(n=>{t.is(`[${n.name}]`)||e.removeAttr(n.name)}),[...r].forEach(t=>{t.name.startsWith("data")||e.attr(t.name)===t.value||e.attr(t.name,t.value)}),e.removeData(),Object.entries(t.data()).forEach(([t,n])=>{e.data(t,n)})}(n.counterpart.$element,r),r.hasClass(J)&&(r.data(L).$container=n.counterpart.$element,r.data(L,null)),i.push(r)}else if("delete"===n.type)r.safeRemove();else if("insert"===n.type){const{after:t,target:n}=e.op;t?r.insertAfter(t.$element):n&&n.$element.prepend(r)}}),i.forEach(e=>e.safeRemove())}function Y(e,t,n){return t.filter(e=>e.depth===n&&!e.op).forEach(t=>{const n=e.find(e=>!e.op&&e.id===t.id);if(n){const e=(t,n)=>{t.op={type:"keep",idx:n.idx},n.op={type:"keep_counterpart",counterpart:t},t=t.parent,n=n.parent,!t||t.op||n?.op||e(t,n)};e(n,t)}}),n>1?Y(e,t,n-1):(e.forEach((t,n)=>{if(!t.op){const r=(e[n-1]?.op.idx??-1)+1;t.op={type:"delete",idx:r}}}),t.forEach((e,n)=>{if(e.getBefore=()=>function(e,n){const r=e.depth;for(;n>=1&&e.depth>=r;)if((e=t[n-=1]).depth===r)return"keep_counterpart"===e.op.type?e.op.counterpart:e;return null}(e,n),e.getRealParent=()=>{return(t=e).parent?"keep_counterpart"===t.parent.op.type?t.parent.op.counterpart:t.parent:null;var t},!e.op){const t=e.getRealParent(),n="insert"===t?.op.type?"insert_ignore":"insert";e.op={type:n,target:t,after:e.getBefore()}}}),[...e,...t].sort((e,t)=>(e.op?.idx??e.idx)-(t.op?.idx??t.idx)))}function Z(e,t,n=null){if(t||(t=W(e)),!t)return Promise.resolve();const{refreshProcess:r,isRunningProcess:o}=x(n,t);return e??=t.$container,H(_e.tagNames,e,t,n).then(()=>function(e,t,n){return function(e,t,n){const r=[];return t.find(`._bind_to_update_handler.sdc_uuid_${e._uuid}`).each(function(){const t=$(this);let o;if(t.hasClass("_with_handler"))o=t.data("handler");else{let t=this.tagName.toLowerCase().replace(/^this./,"");e[t]&&(o=e[t])}if("function"==typeof o){const n=f(t.data());o=o.bind(e)(n)}o&&r.push(Promise.resolve(o).then(r=>{let o=$("<div></div>");return o.append(r),""===t.html()&&t.append("<div></div>"),_e.reconcile(e,o,t.children(),n)}))}),Promise.all(r)}(e,t??e.$container,n)}(t,e,r).then(()=>{o||R(r)}))}const Q=25e3;class ee{constructor(e,t){this.pk=e,this._model=t}set model(e){this._model=e}get model(){return this._model}load(e){if(!this._model)throw new TypeError("Model is not set!!");return this.pk instanceof Array?e.newModel(this._model,{pk__in:this.pk}):e.newModel(this._model,{pk:this.pk})}}const te={get(e,t){const n=e[t]??void 0;if(n instanceof ee){if(!n.pk&&0!==n.pk)return null;let e;return e=n.pk instanceof Array?n.pk.slice():new Number(n.pk),e.load=n.load.bind(n),e}return n},set(e,t,n){if(t in e){const r=e[t];if(r instanceof ee)if(n.hasOwnProperty("pk"))r.pk=n.pk;else try{r.pk=JSON.parse(n)}catch{r.pk=n}else e[t]=n}else e[t]=n;return!0}};function ne(e){return e.toLowerCase().match(/^(true|false)$/)?"true"===e.toLowerCase():"undefined"!==e?"none"===e.toLowerCase()?null:e.match(/^-?\d+$/)?parseInt(e):e.match(/^-?\d+\.?\d+$/)?parseFloat(e):e.match(/^(['][^']*['])|(["][^"]*["])$/)?e.substring(1,e.length-1):e:void 0}class re{constructor(e,t={}){this._onNoOpenRequests=[],this.values_list=[],this.values={},this.model_name=e,this.model_query=t,this._is_connected=!1,this._is_conneting_process=!1,this._auto_reconnect=!0,this.socket=null,this.open_request={},this.on_update=()=>{},this.on_create=()=>{},this.form_id=d()}[Symbol.iterator](){let e=-1;return{next:()=>(++e,e<this.values_list.length?{value:this.values_list[e],done:!1}:{value:null,done:!0})}}length(){return this.values_list.length}byPk(e){if(null!==e){e=parseInt(e),isNaN(e)&&(e=-1);let t=this.values_list.find(t=>t.pk===e);return t||(t=new Proxy({pk:e},te),this.values_list.push(t)),t}return{pk:e}}filter(e){return this.model_query=Object.assign({},this.model_query,e),this}load(){return this.isConnected().then(()=>{const e=d();return new Promise((t,n)=>{this.socket.send(JSON.stringify({event:"model",event_type:"load",event_id:e,args:{model_name:this.model_name,model_query:this.model_query}})),this.open_request[e]=[t,n]})})}listView(e={},t=null,n=null,r={}){return this.view({filter:e,cbResolve:t,cbReject:n,templateContext:r,event_type:"list_view"})}view({viewName:e="html_list_template",filter:t={},cbResolve:n=null,cbReject:r=null,templateContext:o={},event_type:s="named_view"}){let i=$('<div class="container-fluid">');return this.isConnected().then(()=>{const l=d();this.socket.send(JSON.stringify({event:"model",event_type:s,event_id:l,args:{view_name:e,model_name:this.model_name,model_query:this.model_query,filter:t,template_context:o}})),this.open_request[l]=[e=>{i.append(e.html),_e.refresh(i),n&&n(e)},e=>{r&&r(e)}]}),i}detailView(e=null,t=null,n=null,r={}){e=e??-1,e=parseInt(e),isNaN(e)&&(e=-1);let o,s=$('<div class="container-fluid">');return o=0!==this.values_list.length?this.isConnected():this.load(),o.then(()=>{-1===e&&(e=this.values_list[0].pk);const o=d();this.socket.send(JSON.stringify({event:"model",event_type:"detail_view",event_id:o,args:{model_name:this.model_name,model_query:this.model_query,pk:e,template_context:r}})),this.open_request[o]=[e=>{s.append(e.html),_e.refresh(s),t&&t(e)},e=>{n&&n(e)}]}),s}syncFormToModel(e){return this.syncForm(e)}syncModelToForm(e){e&&e.hasClass(this.form_id)||(e=$(`.${this.form_id}`));let t=this;e.each(function(){if(!this.hasAttribute("data-model_pk"))return;let e=$(this).data("model_pk"),n=t.byPk(e);for(let e of this.elements){let t=e.name;if(t&&""!==t)if("checkbox"===e.type)e.checked=n[t];else if("file"===e.type&&n[t]instanceof File){let r=new DataTransfer;r.items.add(n[t]),e.files=r}else $(e).val(n[t])}})}syncForm(e){e&&e.hasClass(this.form_id)||(e=$(`.${this.form_id}`));const t=this;let n=[];return e.each(function(){let e=$(this).data("model_pk"),r=t.byPk(e);for(let e of this.elements){let t=e.name;t&&""!==t&&("hidden"===e.type?r[t]=ne($(e).val()):"checkbox"===e.type?r[t]=e.checked:"file"===e.type?r[t]=e.files[0]:r[t]=$(e).val())}return n.push(r),r}),this.values_list.length<=1&&n.length>0&&(this.values=n.at(-1)),n}createForm(e=null,t=null){let n=$("<div>");return this.isConnected().then(()=>{this._getForm(null,"create_form",null,n,e,t)}),n}editForm(e=-1,t=null,n=null){let r;e=parseInt(e),isNaN(e)&&(e=-1),r=0!==this.values_list.length?this.isConnected():this.load();let o=$("<div>");return r.then(()=>{e<=-1&&(e=this.values_list.at(e).pk),this._getForm(e,"edit_form",null,o,t,n)}),o}namedForm(e=-1,t,n=null,r=null){let o;e=parseInt(e),isNaN(e)&&(e=-1),o=0!==this.values_list.length?this.isConnected():this.load();let s=$('<div class="container-fluid">');return o.then(()=>{e<=-1&&(e=this.values_list.at(e).pk),this._getForm(e,"named_form",t,s,n,r)}),s}_getForm(e,t,n,r,o,s){e=parseInt(e),isNaN(e)&&(e=-1);const i=d();this.socket.send(JSON.stringify({event:"model",event_type:t,event_id:i,args:{model_name:this.model_name,model_query:this.model_query,pk:e,form_name:n}}));const l=null===e||-1===e?"create":"edit";this.open_request[i]=[t=>{r.append(t.html);let s=r.closest("form").addClass(`sdc-model-${l}-form sdc-model-form ${this.form_id}`).data("model",this).data("model_pk",e).data("form_name",n);s.length>0&&!s[0].hasAttribute("sdc_submit")&&s.attr("sdc_submit","submitModelFormDistributor"),_e.refresh(r),o&&o(t)},e=>{s&&s(e)}]}new(){return new Promise((e,t)=>{const n=$("<form>").append(this.createForm(()=>{this.syncFormToModel(n),e()},t))})}save(e=-1,t="edit_form"){return e=parseInt(e),isNaN(e)&&(e=-1),this.isConnected().then(()=>{let n;n=e>-1?[this.byPk(e)]:this.values_list;let r=[];return n.forEach(e=>{const n=d();r.push(new Promise((r,o)=>{this._readFiles(e).then(s=>{this.socket.send(JSON.stringify({event:"model",event_type:"save",event_id:n,args:{form_name:t,model_name:this.model_name,model_query:this.model_query,data:e,files:s}})),this.open_request[n]=[e=>{let t="string"==typeof e.data.instance?JSON.parse(e.data.instance):e.data.instance;e.data.instance=this._parseServerRes(t),r(e)},o]})}))}),Promise.all(r)})}create(e=this.values){const t=d();return this.isConnected().then(()=>new Promise((n,r)=>{this._readFiles(e).then(o=>{this.socket.send(JSON.stringify({event:"model",event_type:"create",event_id:t,args:{model_name:this.model_name,model_query:this.model_query,data:e,files:o}})),this.open_request[t]=[e=>{let t="string"==typeof e.data.instance?JSON.parse(e.data.instance):e.data.instance;-1===this.values?.pk&&(this.values_list=[],this.values=null),e.data.instance=this._parseServerRes(t)[0],n(e)},r]})}))}delete(e=-1){e=parseInt(e),isNaN(e)&&(e=-1),-1===e&&(e=this.values?.pk);const t=d();return this.isConnected().then(()=>new Promise((n,r)=>{this.socket.send(JSON.stringify({event:"model",event_type:"delete",event_id:t,args:{model_name:this.model_name,model_query:this.model_query,pk:e}})),this.open_request[t]=[n,r]}))}isConnected(){return new Promise((e,t)=>{if(this._is_connected)e();else if(this._is_conneting_process&&this.open_request._connecting_process){const[n,r]=this.open_request._connecting_process;this.open_request._connecting_process=[()=>{n(),e()},()=>{r(),t()}]}else this._is_conneting_process=!0,this.open_request._connecting_process=[()=>{},()=>{}],this._connectToServer().then(()=>{e(this._checkConnection())})})}close(){this.socket&&(this._auto_reconnect=!1,this.socket.onclose=()=>{},this.socket.close(),delete this.socket)}clean(){return this.values_list=[],this.values={},this}_readFiles(e){let t=[],n={};for(const[r,o]of Object.entries(e))o instanceof File&&t.push(new Promise((e,t)=>{((r,o)=>{let s=new FileReader;s.onload=s=>{const i=d();this.open_request[i]=[e,t];let l=s.target.result,a=parseInt(Math.ceil(l.length/Q));n[r]={id:i,file_name:o.name,field_name:r,content_length:o.size};for(let e=0;e<a;++e)this.socket.send(JSON.stringify({event:"model",event_type:"upload",event_id:i,args:{chunk:l.slice(Q*e,Q*(e+1)),idx:e,number_of_chunks:a,file_name:o.name,field_name:r,content_length:o.size,content_type:o.type,model_name:this.model_name,model_query:this.model_query}}))},s.onerror=()=>{t()},s.readAsBinaryString(o)})(r,o)}));return Promise.all(t).then(()=>n)}_onMessage(e){let t=JSON.parse(e.data);if(t.is_error)this.open_request.hasOwnProperty(t.event_id)&&(this.open_request[t.event_id][1](t),this._closeOpenRequest(t.event_id)),(t.msg||t.header)&&A("pushErrorMsg",t.header||"",t.msg||""),"connect"===t.type&&(this.open_request._connecting_process[1](t),this._closeOpenRequest("_connecting_process"),this._auto_reconnect=!1,this.socket.close());else{if((t.msg||t.header)&&A("pushMsg",t.header||"",t.msg||""),"connect"===t.type)this._is_connected=!0,this._is_conneting_process=!1,this.open_request._connecting_process[0](t),this._closeOpenRequest("_connecting_process");else if(["load","named_view","detail_view"].includes(t.type)){const e=JSON.parse(t.args.data);this.values_list=[],t.args.data=this._parseServerRes(e)}else if("on_update"===t.type||"on_create"===t.type){const e=JSON.parse(t.args.data);let n,r=this._parseServerRes(e);n="on_create"===t.type?this.on_create:this.on_update,n(r),t.args.data=r}let e=t.data?.instance;e&&(t.data.instance=JSON.parse(t.data.instance)),this.open_request.hasOwnProperty(t.event_id)&&(this.open_request[t.event_id][0](t),this._closeOpenRequest(t.event_id))}}noOpenRequests(){return new Promise(e=>{if(0===Object.keys(this.open_request).length)return e();this._onNoOpenRequests.push(e)})}_closeOpenRequest(e){delete this.open_request[e],0===Object.keys(this.open_request).length&&(this._onNoOpenRequests.forEach(e=>e()),this._onNoOpenRequests=[])}_connectToServer(){return new Promise(e=>{const t=`${this.model_name}`+(this.model_id>0?`/${this.model_id}`:"");"https:"===window.location.protocol?this.socket=new WebSocket(`wss://${window.location.host}/sdc_ws/model/${t}`):this.socket=new WebSocket(`ws://${window.location.host}/sdc_ws/model/${t}`),this.socket.onmessage=this._onMessage.bind(this),this.socket.onclose=e=>{console.error(`SDC Model (${this.model_name}, ${this.model_id}) Socket closed unexpectedly`),this._is_connected=!1;for(const[t,n]of Object.entries(this.open_request))n[1](e);this.open_request={},setTimeout(()=>{this._auto_reconnect&&this._connectToServer().then(()=>{})},1e3)},this.socket.onerror=e=>{if(console.error(`Model Socket encountered error: ${e} Closing socket`),this._is_connected)try{this.socket.close()}catch(e){}},this.socket.onopen=()=>{e()}})}_checkConnection(){const e=d();return new Promise((t,n)=>{this.socket.send(JSON.stringify({event:"model",event_type:"connect",event_id:e,args:{model_name:this.model_name,model_query:this.model_query}})),this.open_request[e]=[t,n]})}_parseServerRes(e){let t=[];for(let n of e){const e=n.pk,r=this.byPk(e);for(const[e,t]of Object.entries(n.fields))t&&"object"==typeof t&&t.__is_sdc_model__?r[e]=new ee(t.pk,t.model):r[e]=t;t.push(r)}return 1===this.values_list.length?this.values=this.values_list.at(-1):this.values={},t}}let oe=!1,se=!1,ie=null,le={};function ae(){return window.SERVER_CALL_VIA_WEB_SOCKET?new Promise(e=>oe?e():se?void setTimeout(()=>{ae().then(()=>{e()})},200):e(ue())):Promise.resolve(!0)}function ce(){window.SERVER_CALL_VIA_WEB_SOCKET&&function(){if(oe){oe=!1;try{ie.close()}catch(e){}}}()}function ue(){return se=!0,new Promise(e=>{ie="https:"===window.location.protocol?new WebSocket(`wss://${window.location.host}/sdc_ws/ws/`):new WebSocket(`ws://${window.location.host}/sdc_ws/ws/`),ie.onmessage=function(e){de(JSON.parse(e.data))},ie.onclose=function(){oe&&console.error("SDC Socket closed unexpectedly"),oe=!1;for(const[e,t]of Object.entries(le))t[1]({}),delete le[e];setTimeout(()=>{ue()},1e3)},ie.onerror=function(e){if(console.error("Socket encountered error: ",e.message,"Closing socket"),oe)try{ie.close()}catch(e){}},ie.onopen=function(){oe=!0,se=!1,e()}})}function de(e){if(e||(e={}),e.is_error)(e.msg||e.header)&&A("pushErrorMsg",e.header||"",e.msg||""),e.id&&le[e.id]&&(le[e.id][1](e.data||null),delete le[e.id]);else if((e.msg||e.header)&&A("pushMsg",e.header||"",e.msg||""),e.type&&"sdc_recall"===e.type)e.id&&le[e.id]&&(le[e.id][0](e.data),delete le[e.id]);else if(e.type&&"sdc_event"===e.type){let t=e.event;t&&A(t,e.payload)}else e.type&&"sdc_redirect"===e.type&&A("onNavLink",e.link)}class he{constructor(){this._uuid=d(),this.contentUrl="",this.contentReload=!1,this.parsedContentUrl=null,this.events=[],this.load_async=!1,this._isEventsSet=!1,this._allEvents=null,this._urlParams=[],this._models=[],this._cssUrls=[],this.afterShow=()=>{console.warn("afterShow is deprecated!!")},this._mixins={},this._tagName=Object.getPrototypeOf(this)._tagName??"",this._childController={},this._parentController=null,this._onLoadDone=!1,this.$container=null,this._isMixin=!1}_runLifecycle(e,t){_e.DEBUG&&!this._isMixin&&console.debug(e,this._tagName);let n=[];if(!this._isMixin){this._isMixin=!0;for(let r in this._mixins){let o=this._mixins[r];"function"==typeof o[e]&&n.push(o[e].apply(this,t))}return Promise.all(n).then(()=>{this._isMixin=!1})}}onInit(){_e.DEBUG&&!this._isMixin&&console.DEBUG(Array.apply(null,arguments),this._tagName)}get parentController(){return this._parentController}get childController(){return this._childController}onLoad(){return this._runLifecycle("onLoad",arguments)}willShow(){return this._runLifecycle("willShow",arguments)}onRefresh(){return this._runLifecycle("onRefresh",arguments)}onRemove(){return this._runLifecycle("onRemove",arguments),!0}noOpenModelRequests(){return Promise.all(this._models.map(e=>e.noOpenRequests()))}remove(){for(const e of this._models)e.close();let e=this._childController;for(let t in e)if(e.hasOwnProperty(t))for(let n of e[t])if(!n.remove())return!1;if(!this.onRemove||this.onRemove()){M(this);const e=i(this._tagName);if(this._parentController._childController[e]){let t=this._parentController._childController[e];for(let e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)}return this.$container.remove(),!0}return!1}controller_name(){return this._tagName.replace(/-./g,e=>` ${e[1].toUpperCase()}`).replace(/^./g,e=>`${e.toUpperCase()}`)}addEvent(e,t,n){this.getEvents(),this._allEvents[e]=this._allEvents[e]||{},this._allEvents[e][t]=n}getEvents(){if(this._allEvents)return this._allEvents;let e=[];e=e.concat(this.events);for(let t in this._mixins){let n=this._mixins[t];Array.isArray(n.events)&&(e=e.concat(n.events))}return this._allEvents=_.merge(...e)}post(e,t){return _e.post(this,e,t)}get(e,t){return _e.get(this,e,t)}submitForm(e,t,n){return _e.submitFormAndUpdateView(this,e,t,n)}serverCall(e,t){let n=this.contentUrl.match(/sdc_view\/([^/]+)/i);if(n&&!(n.length<2))return function(e,t,n,r,o){return window.SERVER_CALL_VIA_WEB_SOCKET?function(e,t,n,r){let o=d();return ae().then(()=>{ie.send(JSON.stringify({event:"sdc_call",id:o,controller:t,app:e,function:n,args:r}))}),new Promise((e,t)=>{le[o]=[e,t]})}(e,t,r,o):function(e,t,n){return"object"!=typeof n&&Array.isArray(n)&&null===n&&(n={arg0:n}),n={data:JSON.stringify(n),_sdc_func_name:t,_method:"sdc_server_call"},$.post({url:e,data:n,beforeSend:function(e,t){e.setRequestHeader("X-CSRFToken",window.CSRF_TOKEN)}}).then(e=>{const t=e._return_data;return de(t),t}).catch(e=>{const t=e.responseJSON;throw t.is_error=!0,de(t),e})}(n,r,o)}(n[1],this._tagName,this.parsedContentUrl??this.contentUrl,e,t);console.error("To use the serverCall function the contentUrl must be set: "+this.name)}newModel(e,t={}){if(e instanceof Number&&e.hasOwnProperty("load"))return e.load(this);const n=new re(e,t);return this._models.push(n),n}updateModel(e,t={},n){let r=new re(e,t);return r.load().then(()=>{r.values|=n,r.save().then(()=>(r.close(),r.values))})}find(e){return this.$container.find(e)}refresh(){return _e.refresh(this.$container,this)}reload(){return _e.reloadController(this)}reconcile(e,t=null){return _e.reconcile(this,e,t)}submitModelFormDistributor(e,t){return"function"==typeof this._submitModelForm?this._submitModelForm(e,t):"function"==typeof this.submitModelForm?this.submitModelForm(e,t):this.defaultSubmitModelForm(e,t)}iterateAllChildren(){let e=this._childController,t=[];for(let n in e)if(e.hasOwnProperty(n))for(let r of e[n])t.push(r),t.push(...r.iterateAllChildren());return t}defaultSubmitModelForm(e,t){let n=[];if(!this._isMixin){t.stopPropagation(),t.preventDefault();let{model:r,form_name:o}=e.data();const s=r.syncForm(e);for(let t of s)n.push(new Promise((n,s)=>{let i;i=null!==t.pk&&t.pk>=0?r.save(t.pk,o):r.create(t),i.then(t=>{h(e),this.submit_model_form_success&&this.submit_model_form_success(t[0]);for(const e of this.iterateAllChildren())e.submit_model_form_success&&e.submit_model_form_success(t[0]);n(t)}).catch(t=>{p(e,$(t.html)),this.submit_model_form_error&&this.submit_model_form_error(t);for(const e of this.iterateAllChildren())e.submit_model_form_error&&e.submit_model_form_error(t);s(t)})}))}return Promise.all(n).then(e=>Object.assign({},...e.flat()))}}const pe={classname:"class"};window.sdcDom=function(e,t,...n){if(!e)return"";const r=function(e,t){let n,r=!1;if("string"==typeof e)n=$(document.createElement(e));else{const t=`this.${e.name}`;n=$(document.createElement(t)),n.data("handler",e),r=!0}return t&&Object.entries(t).forEach(([e,t])=>{e.startsWith("on")?n[0].addEventListener(e.substring(2).toLowerCase(),t):(pe[e.toLowerCase()]&&(e=pe[e.toLowerCase()]),n[0].setAttribute(e,t))}),r&&n.addClass("_bind_to_update_handler _with_handler"),n}(e,t);for(const e of n)r.append(e);return r};let fe,_e={CSRF_TOKEN:window.CSRF_TOKEN||"",LANGUAGE_CODE:window.LANGUAGE_CODE||"en",DEBUG:window.DEBUG||!1,VERSION:window.VERSION||"0.0",tagNames:[],Global:b,rootController:null,globalRootController:null,_isInit:!1,_origin_trigger:null,_globalControllerClasses:[],init_sdc:()=>{_e._isInit||(_e._isInit=!0,_e._origin_trigger?ce():(_e._origin_trigger=$.fn.trigger,$.fn.trigger=function(e){const t={}.hasOwnProperty.call(e,"type")?e.type:e;return v.includes(t)||(v.push(t),$(window).on(t,O)),_e._origin_trigger.call(this,e)},_e.updateJquery()),ae(),function(){const e=$(window);v.forEach(t=>{e.off(t).on(t,O)})}(),_e.rootController=_e.rootController||new he,_e.globalRootController=_e.globalRootController||new he),_e.tagNames=Object.keys(k);const e=$("<div></div>");b.forEach(t=>{const n=k[t][0];e.append(`<${n.prototype._tagName}></${n.prototype._tagName}>`)});const{refreshProcess:n}=x(null,_e.rootController);return H(_e.tagNames,e,_e.globalRootController,n).then(()=>H(_e.tagNames,(t||(t=$("body")),t),_e.rootController,n).then(e=>(R(n),e)))},updateJquery:()=>{$.fn.safeReplace=function(e){return _e.safeReplace($(this),e)},$.fn.safeEmpty=function(){return _e.safeEmpty($(this))},$.fn.safeRemove=function(){return _e.safeRemove($(this))}},controllerToTag:e=>s(e.name).replace(/-controller$/,""),registerGlobal:e=>{_e.register(e);let t=e.prototype._tagName;b.push(t)},cleanCache:()=>{I={}},register:(e,t=!1)=>{let n=_e.controllerToTag(e);return!k[n]||t?(k[n]=[e,[]],e.prototype._tagName=n,{addMixin:(...e)=>{for(let t of e){let e;"string"==typeof t?e=s(t):t&&(e=_e.controllerToTag(t)),k[n][1].push(e)}}}):{addMixin:(...e)=>{}}},post:(e,t,n)=>(n||(n={}),n.CSRF_TOKEN=_e.CSRF_TOKEN,_e.ajax(e,t,params,$.post)),get:(e,t,n)=>_e.ajax(e,t,n,$.get),ajax:(e,t,n,r)=>{n||(n={}),n.VERSION=_e.VERSION,n._method=n._method||"api";const o=new Promise((s,i)=>r(t,n).then((t,n,r)=>{s(t,n,r),"redirect"===t.status?A("onNavLink",t["url-link"]):o.then(()=>{_e.refresh(e.$container)})}).catch(i));return o},submitFormAndUpdateView:(e,t,n,r)=>{let o=new FormData(t);const s=e=>{e["url-link"]?A("onNavLink",e["url-link"]):window.location.href=e.url},i=new Promise((l,c)=>{a(o,n||t.action,r||t.method).then((t,n,r)=>{l(t,n,r),"redirect"===t.status?s(t):i.then(()=>{_e.refresh(e.$container,e)})}).catch((e,t,n)=>{301===e.status?(e=e.responseJSON,s(e),l(e,t,n)):c(e,t,n)})});return i},submitForm:(e,t,n)=>{let r=new FormData(e);return new Promise((o,s)=>{a(r,t||e.action,n||e.method).then(o).catch(s)})},getController:e=>W(e),safeEmpty:e=>(e.children().each(function(e,t){let n=$(t);_e.safeRemove(n)}),e),safeReplace:(e,t)=>(t.insertBefore(e),_e.safeRemove(e)),safeRemove:e=>(e.each(function(){let e=$(this);e.data(`${L}`)&&e.data(`${L}`).remove()}),e.find(`.${J}`).each(function(){const e=$(this).data(`${L}`);e&&e.remove()}),e.remove()),reloadController:e=>function(e){if(e.contentUrl){let t=B(e);return e.contentUrl=t.url,D(e,t.args)}return new Promise(e=>{e($())})}(e).then(t=>{let n=$(t);return _e.reconcile(e,n)}),reconcile:(e,t,n=null,r=null)=>{if(!n){let n=e.$container.clone().empty();n.data(L,null),n.removeClass(J),n.append(t),t=n}n=n??e.$container;const{refreshProcess:o,isRunningProcess:s}=x(r,e);return Z(t,e,o).then(()=>{var r;return z(t,n),(r=e)._childController={},r.find(`.${J}`).each(function(){const e=W($(this));e===r&&N(r,e)}),s||R(o),e})},refresh:(e,t)=>Z(e,t)},me=[];function ge(){if(!jest)throw new Error("JEST is not defined");0===me.length&&(fe=$.ajax.bind($),me.push(jest.spyOn($,"ajax")),me[0].mockImplementation(function(e){return fe(e).then(e=>e).catch(e=>e)}))}const ye=ce,ve={get_controller:async function(e,t={},n=""){ge();const r=$("body");_e.updateJquery(),r.safeEmpty();const o=$(`<${e}>${n}</${e}>`);for(const[e,n]of Object.entries(t))o.data(e,n);const s=$("<div></div>").append(o);return r.append(s),_e._isInit=!1,_e.cleanCache(),await _e.init_sdc(),_e.getController(o)},getCsrfToken:function(){return function(e){if(document.cookie&&""!==document.cookie){const t=document.cookie.split(";");for(let n=0;n<t.length;n++){const r=t[n].trim();if(r.substring(0,10)===e+"=")return decodeURIComponent(r.substring(10))}}return""}("csrftoken")},controllerFromTestHtml:async function(e,t=null){ge();const n=$("body");_e.updateJquery(),n.safeEmpty().append(e),_e._isInit=!1,_e.cleanCache(),await _e.init_sdc();let r=_e.rootController.iterateAllChildren();if(!t)return r;const o=r[0].onRefresh,s=jest.spyOn(r[0],"onRefresh");return new Promise(e=>{s.mockImplementation(function(){s.mockRestore();const t=o.apply(r[0],arguments);return e(r),t})})}};export{he as AbstractSDC,M as allOff,_e as app,u as checkIfParamNumberBoolOrString,h as clearErrorsInForm,S as controllerFactory,j as on,E as runControlFlowFunctions,p as setErrorsInForm,T as setEvent,ye as socketReconnect,ve as test_utils,A as trigger};
|
|
1
|
+
var e={};let t;e.d=(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const n=/(?<=^|,\s?)[^=\s,]+/g,r=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;function o(){return new Promise(function(e){e()})}function s(e){return(e=(e=e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)).replace(/[0-9]+/g,e=>`-${e}`)).replace(/^[-]/g,"")}function i(e){return e.replace(/-./g,e=>`${e[1].toUpperCase()}`)}const l=(e,t)=>{let n=t,r=Object.getOwnPropertyNames(e.prototype).concat(Object.getOwnPropertySymbols(e.prototype));for(;""!==n.name;)Object.getOwnPropertyNames(n.prototype).concat(Object.getOwnPropertySymbols(n.prototype)).forEach(t=>{t.match(/^(?:constructor|prototype|arguments|caller|name|bind|call|apply|toString|length)$/)||r.includes(t)||(r.push(t),Object.defineProperty(e.prototype,t,Object.getOwnPropertyDescriptor(n.prototype,t)))}),n=Object.getPrototypeOf(n)};function a(e,t,n){return $.ajax({url:t,type:n||"POST",xhr:function(){var e=$.ajaxSettings.xhr();return e.upload&&e.upload.addEventListener("progress",c,!1),e},data:e,cache:!1,contentType:!1,processData:!1,beforeSend:function(e,t){(function(e){return/^(GET|HEAD|OPTIONS|TRACE)$/.test(e)})(t.type)||this.crossDomain||e.setRequestHeader("X-CSRFToken",window.CSRF_TOKEN)}})}function c(e){if(e.lengthComputable){var t=Math.round(e.loaded/e.total*100),n=$(".progress-container");100===t?n.hide():n.show(),t+="%",n.find(".progress-bar").css({width:t}).text(t)}}function u(e,t=null){return"string"!=typeof e?e:t&&void 0!==t[e]?"function"==typeof t[e]?t[e].bind(t):t[e]:e.match(/^(true|false)$/)?"true"===e:"undefined"!==e?"none"===e.toLowerCase()?null:e.match(/^-?\d+$/)?parseInt(e):e.match(/^-?\d+\.?\d+$/)?parseFloat(e):e.match(/^(['][^']*['])|(["][^"]*["])$/)?e.substr(1,e.length-2):e:void 0}function d(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}function h(e){e.find(".has-error").removeClass("has-error").find(".alert-danger").remove(),e.find(".non-field-errors").remove()}function p(e,t){t=$("<div>").append(t),e.find(".has-error").removeClass("has-error").find(".alert-danger").safeRemove(),e.find(".non-field-errors").safeRemove();let n=t.find("input[type=file]").parent();e.find("input[type=file]").parent().each(function(e){$(this).replaceWith(n[e])});let r=0===t.find(".non-field-errors").insertAfter(e.find(".hidden-form-fields")).length;return t.find(".has-error").each(function(){r=!1;let t=$(this),n=t.data("auto-id"),o=e.find(".form-group."+n);o.addClass("has-error"),o.find(".form-input-container").append(t.find(".alert-danger"))}),r}function f(e,t=[]){return Object.fromEntries(Object.entries(e).filter(([e,n])=>e!==L&&!t.includes(e)).map(([e,t])=>{if("string"==typeof t&&t.startsWith("SDC_JSON_MODEL=["))try{const{pk:n,fields:r}=JSON.parse(t.slice(16,-1));return[e,{...r,id:n,pk:n}]}catch{}return[e,t]}))}function m(e,t,n=null){let r=function(e,t){let n;e||(e=[]);let r=t.data(),o=f(r,e);n=[];for(let t=0;t<e.length;t++){let o=e[t];r.hasOwnProperty(o)?n.push(r[o]):n.push("undefined")}return n.push(o),n}(e,t);return function(e,t=null){let n=[];for(let r=0;r<e.length;r++){let o=u(e[r],t);n.push(o)}return n}(r,n)}function g(e,t,o){if(!e)return!1;if("function"!=typeof e.onInit)return!1;let s;var i;"function"==typeof e._on_init_params?s=e._on_init_params():s=(i=e.onInit.toString().replace(r,"")).slice(i.indexOf("(")+1,i.indexOf(")")).match(n)||[];let l=m(s,t,o._parentController);if(e.onInit.apply(o,l),o===e)for(let n in e._mixins)g(e._mixins[n],t,o)}const y=["onbeforeunload","onunload"],v=Object.keys(window).filter(e=>/^on/.test(e)&&!y.includes(e)).map(e=>e.slice(2));function w(e,t,n){let r;switch(e){case"mouseleave":case"mouseout":case"mouseenter":case"mousein":return r=document.elementFromPoint(t.clientX,t.clientY),n!==r&&!n.contains(r);default:return!0}}function O(e){let t=e.type;e.hasOwnProperty("namespace")&&e.namespace&&e.namespace.length&&(t+=`.${e.namespace}`);let n=$(e.target),r=null,o=!1,s=!1;for(e.stopImmediatePropagation=()=>s=!0,e.stopPropagation=()=>s=o=!0;n.length;){let i=n.attr(`sdc_${t}`);if(i&&w(t,e,n[0])){if(!r&&(r=W(n),!r))return;for(;r;){if(i.split(" ").forEach(s=>{if(o)return;let i=null;if("function"==typeof s)i=s;else if("function"==typeof r[s])i=r[s];else if("string"==typeof s&&s.startsWith("this.event_")){if(i=r.getEvents()[t],!i)return;if(i=i[s.slice(11)],!i)return}i&&i.call(r,n,e)}),s)return;r=r._parentController}}if(o)return;n=n.parent()}return{res:!0}}function C(e){if(e._isEventsSet)return;const t=e.getEvents();for(let n in t)if(t.hasOwnProperty(n)){let r=t[n];for(let t in r)r.hasOwnProperty(t)&&e.find(t).each(function(){let e=$(this),r=e.attr(`sdc_${n}`)||null;r=r?r.split(" "):[];const o=`this.event_${t}`;-1===r.indexOf(o)&&(r.push(o),e.attr(`sdc_${n}`,r.join(" ")))})}}let b=[],k={};function N(e,t){if(e){let n=i(t._tagName);e._childController[n]||(e._childController[n]=[]),e._childController[n].push(t)}return t._parentController=e}function P(e,t,n,r){let o=[];r=function(e,t){e=(e=e.concat(k[t][1])).filter((e,t,n)=>n.indexOf(e)===t);let n=!0;for(;n;){n=!1;for(let t of e)for(let r of k[t][1])e.includes(r)||(e.push(r),n=!0)}return e}(r,n);for(let e of r)o.push(k[e][0]);let s=new(function(e,...t){let n={[e.name]:class{constructor(...n){let r={};t.forEach(e=>{let t;Object.assign(this,t=new e),t._tagName=e.prototype._tagName,t._isMixin=!0,r[e.name]=t}),Object.assign(this,new e),this._mixins=r}static get name(){return e.name}static className(){return this.name}get mixins(){return this._mixins}}}[e.name];return l(n,e),t.forEach(e=>{l(n,e)}),n}(k[n][0],...o));return s._tagName=n,N(e,s),s.$container=t,function(e,t){g(t,e,t)}(t,s),s}function S(e,t,n,r){if(b.includes(n)){let o=i(n);return window[o]||(window[o]=P(e,t,n,r)),window[o].$container=t,window[o]}return P(e,t,n,r)}function E(e,t){const n=function(e){return function(e){let t={args:{}};return e.contentUrl&&(t=B(e),e.contentUrl=t.url),Promise.all([D(e,t.args)]).then(function(e){let t=e[0];if(t)try{return $(t)}catch{return $("<div></div>").append(t)}return null})}(e).then(t=>!e.onLoad||e._onLoadDone?t:(e._onLoadDone=!0,(e.onLoad(t)||o()).then(()=>t)))}(e).then(function(t){return function(e,t){return K(e,t).then(function(t){if(t=t||!0,e.willShow){let n=e.willShow();if(n instanceof Promise)return n.then(function(){return t})}return t})}(e,t)}).then(()=>function(e,t){return Z(null,e,t)}(e,t)).catch(function(t){return K(e,t)});return e.load_async?Promise.resolve():n}function R(e){const t=function(e){let t=[];for(;e;)e._isEventsSet=!1,t.unshift(e),e=e._parentController;return t}(e.controller[0]),n=t.concat(e.controller.slice(1));for(let t of n)C(t),t.onRefresh(e.controller[0])}function x(e,t){let n=Boolean(e);return n?e.uuids.has(t._uuid)||(e.uuids.add(t._uuid),e.controller.push(t)):e={uuids:new Set([t._uuid]),controller:[t]},{isRunningProcess:n,refreshProcess:e}}let q={},F={};function j(e,t){return T(e),F.hasOwnProperty(e)?t[F[e]]?void q[e].push(t):console.log("No event handler: "+e,t):console.log("No event: "+e,t)}function T(e,t){t||(t=e),F[e]||(F[e]=t,q[e]=[])}function M(e){for(let t in q)if(q.hasOwnProperty(t))for(let n=q[t].length;n>=0;n--)e===q[t][n]&&q[t].splice(n,1)}function A(e){let t=Array.apply(null,arguments);if(e=t.shift(),!q.hasOwnProperty(e)||!F.hasOwnProperty(e))return o();let n=q[e],r=F[e],s=[];for(let e=0;e<n.length;e++){let o=n[e][r].apply(n[e],t);void 0!==o&&s.push(o)}return Promise.all(s)}let I={};const L="_controller_",J="_sdc_controller_";function U(e,t,n){if(!e)return[];let r=e.children(),o=[];return r.each(function(e,r){let s=$(r),i=s.prop("tagName").toLowerCase().split("_");$.inArray(i[0],t)>=0?o.push({tag:i[0],super:i.splice(1)||[],dom:s}):i[0].startsWith("this.")?s.addClass(`_bind_to_update_handler sdc_uuid_${n._uuid}`):o=o.concat(U(s,t,n))}),o}function D(e,t){const{contentUrl:n,_tagName:r,contentReload:o}=e;return n?I[r]?Promise.resolve(I[r]):(t.VERSION=_e.VERSION,t._method="content",$.get(n,t).then(function(e){return o||(I[r]=e),e}).catch(function(t){throw 301===t.status&&A("_RedirectOnView",t.responseJSON["url-link"]),"function"==typeof e.confirmPageLoaded&&A("navLoaded",{controller_name:()=>t.status}),`<sdc-error data-code="${t.status}">${t.responseText}</sdc-error>`})):Promise.resolve(!1)}function V(e,t,n=null){return t=t||e.data(L),H(_e.tagNames,e,t,n)}function B(e){let t=e.contentUrl;if(e&&0===e._urlParams.length){let n,r=/%\(([^)]+)\)\w/gm;for(e._urlParams=[];n=r.exec(t);)e._urlParams.push(n[1]),e.contentReload=!0}let n=function(e,t){return m(e._urlParams,t)}(e,e.$container);return e._urlParams.length&&(t=function(e,t,n){for(let r in e._urlParams)if(e._urlParams.hasOwnProperty(r)){let o=e._urlParams[r],s=RegExp("%\\("+o+"\\)\\w","gm");t=t.replace(s,""+n.shift())}return t}(e,t,n)),e.parsedContentUrl=t,{url:t,args:n[n.length-1]}}function W(e){return e.hasClass(J)?e.data(`${L}`):e.closest(`.${J}`).data(`${L}`)}function G(e,t,n,r,o){let s=e.data(L);return s?V(e,s,o):(s=S(r,e,t,n),e.data(L,s),e.addClass(J),E(s,o))}function K(e,t,n=null){if(t&&t.length>0){e.$container.empty(),e.$container.attr(e._tagName,"");for(let t in e._mixins)e.$container.attr(e._mixins[t]._tagName,"");e.$container.append(t)}return V(e.$container,e,n)}function H(e,t,n,r){return new Promise(o=>{let s=U(t,e,n),i=s.length;if(0===i)return o();for(let e=0;e<s.length;e++)G(s[e].dom,s[e].tag,s[e].super,n,r).then(()=>{if(i--,0===i)return o()})})}function X({$element:e,id:t=[],parent:n=null}){t.push(function(e){if(3===e[0].nodeType)return`TEXT__${e[0].nodeValue}`;const t=[e[0].tagName];return"INPUT"===e[0].nodeName&&[["name",""],["type","text"],["id",""]].forEach(([n,r])=>{const o=e.attr(n)??r;o&&t.push(o)}),t.join("__")}(e));const r={$element:e,id:t.join("::"),depth:t.length,idx:0,getRealParent:()=>n,getIdx:function(){return this.idx=Math.max(0,(this.getRealParent()?.getIdx()??-1)+e.index()+1),this.idx},op:null,parent:n};return r.getIdx.bind(r),[r].concat(e.contents().toArray().map(e=>X({$element:$(e),id:t.slice(),parent:r})).flat())}function z(e,t){const n=X({$element:t}),r=X({$element:e});n.map((e,t)=>e.idx=t),r.map((e,t)=>e.idx=t);const o=Math.max(...r.concat(n).map(e=>e.depth)),s=Y(n,r,o);let i=[];window.MAIN=t,window.OPS=s,s.forEach((e,t)=>{const{op:n,$element:r,idx:o}=e;if("keep_counterpart"===n.type){if(n.counterpart.getIdx()!==o){const t=e.getBefore();t?n.counterpart.$element.insertAfter(t.$element):e.getRealParent().$element.prepend(n.counterpart.$element)}!function(e,t){const n=e[0].attributes??[],r=t[0].attributes??[];[...n].forEach(n=>{t.is(`[${n.name}]`)||e.removeAttr(n.name)}),[...r].forEach(t=>{t.name.startsWith("data")||e.attr(t.name)===t.value||e.attr(t.name,t.value)}),e.removeData(),Object.entries(t.data()).forEach(([t,n])=>{e.data(t,n)})}(n.counterpart.$element,r),r.hasClass(J)&&(r.data(L).$container=n.counterpart.$element,r.data(L,null)),i.push(r)}else if("delete"===n.type)r.safeRemove();else if("insert"===n.type){const{after:t,target:n}=e.op;t?r.insertAfter(t.$element):n&&n.$element.prepend(r)}}),i.forEach(e=>e.safeRemove())}function Y(e,t,n){return t.filter(e=>e.depth===n&&!e.op).forEach(t=>{const n=e.find(e=>!e.op&&e.id===t.id);if(n){const e=(t,n)=>{t.op={type:"keep",idx:n.idx},n.op={type:"keep_counterpart",counterpart:t},t=t.parent,n=n.parent,!t||t.op||n?.op||e(t,n)};e(n,t)}}),n>1?Y(e,t,n-1):(e.forEach((t,n)=>{if(!t.op){const r=(e[n-1]?.op.idx??-1)+1;t.op={type:"delete",idx:r}}}),t.forEach((e,n)=>{if(e.getBefore=()=>function(e,n){const r=e.depth;for(;n>=1&&e.depth>=r;)if((e=t[n-=1]).depth===r)return"keep_counterpart"===e.op.type?e.op.counterpart:e;return null}(e,n),e.getRealParent=()=>{return(t=e).parent?"keep_counterpart"===t.parent.op.type?t.parent.op.counterpart:t.parent:null;var t},!e.op){const t=e.getRealParent(),n="insert"===t?.op.type?"insert_ignore":"insert";e.op={type:n,target:t,after:e.getBefore()}}}),[...e,...t].sort((e,t)=>(e.op?.idx??e.idx)-(t.op?.idx??t.idx)))}function Z(e,t,n=null){if(t||(t=W(e)),!t)return Promise.resolve();const{refreshProcess:r,isRunningProcess:o}=x(n,t);return e??=t.$container,H(_e.tagNames,e,t,n).then(()=>function(e,t,n){return function(e,t,n){const r=[];return t.find(`._bind_to_update_handler.sdc_uuid_${e._uuid}`).each(function(){const t=$(this);let o;if(t.hasClass("_with_handler"))o=t.data("handler");else{let t=this.tagName.toLowerCase().replace(/^this./,"");e[t]&&(o=e[t])}if("function"==typeof o){const n=f(t.data());o=o.bind(e)(n)}o&&r.push(Promise.resolve(o).then(r=>{let o=$("<div></div>");return o.append(r),""===t.html()&&t.append("<div></div>"),_e.reconcile(e,o,t.children(),n)}))}),Promise.all(r)}(e,t??e.$container,n)}(t,e,r).then(()=>{o||R(r)}))}const Q=25e3;class ee{constructor(e,t){this.pk=e,this._model=t}set model(e){this._model=e}get model(){return this._model}load(e){if(!this._model)throw new TypeError("Model is not set!!");return this.pk instanceof Array?e.newModel(this._model,{pk__in:this.pk}):e.newModel(this._model,{pk:this.pk})}}const te={get(e,t){const n=e[t]??void 0;if(n instanceof ee){if(!n.pk&&0!==n.pk)return null;let e;return e=n.pk instanceof Array?n.pk.slice():new Number(n.pk),e.load=n.load.bind(n),e}return n},set(e,t,n){if(t in e){const r=e[t];if(r instanceof ee)if(n.hasOwnProperty("pk"))r.pk=n.pk;else try{r.pk=JSON.parse(n)}catch{r.pk=n}else e[t]=n}else e[t]=n;return!0}};function ne(e){return e.toLowerCase().match(/^(true|false)$/)?"true"===e.toLowerCase():"undefined"!==e?"none"===e.toLowerCase()?null:e.match(/^-?\d+$/)?parseInt(e):e.match(/^-?\d+\.?\d+$/)?parseFloat(e):e.match(/^(['][^']*['])|(["][^"]*["])$/)?e.substring(1,e.length-1):e:void 0}class re{constructor(e,t={}){this._onNoOpenRequests=[],this.values_list=[],this.values={},this.model_name=e,this.model_query=t,this._is_connected=!1,this._is_conneting_process=!1,this._auto_reconnect=!0,this.socket=null,this.open_request={},this.on_update=()=>{},this.on_create=()=>{},this.form_id=d()}[Symbol.iterator](){let e=-1;return{next:()=>(++e,e<this.values_list.length?{value:this.values_list[e],done:!1}:{value:null,done:!0})}}length(){return this.values_list.length}byPk(e){if(null!==e){e=parseInt(e),isNaN(e)&&(e=-1);let t=this.values_list.find(t=>t.pk===e);return t||(t=new Proxy({pk:e},te),this.values_list.push(t)),t}return{pk:e}}filter(e){return this.model_query=Object.assign({},this.model_query,e),this}load(){return this.isConnected().then(()=>{const e=d();return new Promise((t,n)=>{this.socket.send(JSON.stringify({event:"model",event_type:"load",event_id:e,args:{model_name:this.model_name,model_query:this.model_query}})),this.open_request[e]=[t,n]})})}listView(e={},t=null,n=null,r={}){return this.view({filter:e,cbResolve:t,cbReject:n,templateContext:r,event_type:"list_view"})}view({viewName:e="html_list_template",filter:t={},cbResolve:n=null,cbReject:r=null,templateContext:o={},event_type:s="named_view"}){let i=$('<div class="container-fluid">');return this.isConnected().then(()=>{const l=d();this.socket.send(JSON.stringify({event:"model",event_type:s,event_id:l,args:{view_name:e,model_name:this.model_name,model_query:this.model_query,filter:t,template_context:o}})),this.open_request[l]=[e=>{i.append(e.html),_e.refresh(i),n&&n(e)},e=>{r&&r(e)}]}),i}detailView(e=null,t=null,n=null,r={}){e=e??-1,e=parseInt(e),isNaN(e)&&(e=-1);let o,s=$('<div class="container-fluid">');return o=0!==this.values_list.length?this.isConnected():this.load(),o.then(()=>{-1===e&&(e=this.values_list[0].pk);const o=d();this.socket.send(JSON.stringify({event:"model",event_type:"detail_view",event_id:o,args:{model_name:this.model_name,model_query:this.model_query,pk:e,template_context:r}})),this.open_request[o]=[e=>{s.append(e.html),_e.refresh(s),t&&t(e)},e=>{n&&n(e)}]}),s}syncFormToModel(e){return this.syncForm(e)}syncModelToForm(e){e&&e.hasClass(this.form_id)||(e=$(`.${this.form_id}`));let t=this;e.each(function(){if(!this.hasAttribute("data-model_pk"))return;let e=$(this).data("model_pk"),n=t.byPk(e);for(let e of this.elements){let t=e.name;if(t&&""!==t)if("checkbox"===e.type)e.checked=n[t];else if("file"===e.type&&n[t]instanceof File){let r=new DataTransfer;r.items.add(n[t]),e.files=r}else $(e).val(n[t])}})}syncForm(e){e&&e.hasClass(this.form_id)||(e=$(`.${this.form_id}`));const t=this;let n=[];return e.each(function(){let e=$(this).data("model_pk"),r=t.byPk(e);for(let e of this.elements){let t=e.name;t&&""!==t&&("hidden"===e.type?r[t]=ne($(e).val()):"checkbox"===e.type?r[t]=e.checked:"file"===e.type?r[t]=e.files[0]:r[t]=$(e).val())}return n.push(r),r}),this.values_list.length<=1&&n.length>0&&(this.values=n.at(-1)),n}createForm(e=null,t=null){let n=$("<div>");return this.isConnected().then(()=>{this._getForm(null,"create_form",null,n,e,t)}),n}editForm(e=-1,t=null,n=null){let r;e=parseInt(e),isNaN(e)&&(e=-1),r=0!==this.values_list.length?this.isConnected():this.load();let o=$("<div>");return r.then(()=>{e<=-1&&(e=this.values_list.at(e).pk),this._getForm(e,"edit_form",null,o,t,n)}),o}namedForm(e=-1,t,n=null,r=null){let o;e=parseInt(e),isNaN(e)&&(e=-1),o=0!==this.values_list.length?this.isConnected():this.load();let s=$('<div class="container-fluid">');return o.then(()=>{e<=-1&&(e=this.values_list.at(e).pk),this._getForm(e,"named_form",t,s,n,r)}),s}_getForm(e,t,n,r,o,s){e=parseInt(e),isNaN(e)&&(e=-1);const i=d();this.socket.send(JSON.stringify({event:"model",event_type:t,event_id:i,args:{model_name:this.model_name,model_query:this.model_query,pk:e,form_name:n}}));const l=null===e||-1===e?"create":"edit";this.open_request[i]=[t=>{r.append(t.html);let s=r.closest("form").addClass(`sdc-model-${l}-form sdc-model-form ${this.form_id}`).data("model",this).data("model_pk",e).data("form_name",n);s.length>0&&!s[0].hasAttribute("sdc_submit")&&s.attr("sdc_submit","submitModelFormDistributor"),_e.refresh(r),o&&o(t)},e=>{s&&s(e)}]}new(){return new Promise((e,t)=>{const n=$("<form>").append(this.createForm(()=>{this.syncFormToModel(n),e()},t))})}save(e=-1,t="edit_form"){return e=parseInt(e),isNaN(e)&&(e=-1),this.isConnected().then(()=>{let n;n=e>-1?[this.byPk(e)]:this.values_list;let r=[];return n.forEach(e=>{const n=d();r.push(new Promise((r,o)=>{this._readFiles(e).then(s=>{this.socket.send(JSON.stringify({event:"model",event_type:"save",event_id:n,args:{form_name:t,model_name:this.model_name,model_query:this.model_query,data:e,files:s}})),this.open_request[n]=[e=>{let t="string"==typeof e.data.instance?JSON.parse(e.data.instance):e.data.instance;e.data.instance=this._parseServerRes(t),r(e)},o]})}))}),Promise.all(r)})}create(e=this.values){const t=d();return this.isConnected().then(()=>new Promise((n,r)=>{this._readFiles(e).then(o=>{this.socket.send(JSON.stringify({event:"model",event_type:"create",event_id:t,args:{model_name:this.model_name,model_query:this.model_query,data:e,files:o}})),this.open_request[t]=[e=>{let t="string"==typeof e.data.instance?JSON.parse(e.data.instance):e.data.instance;-1===this.values?.pk&&(this.values_list=[],this.values=null),e.data.instance=this._parseServerRes(t)[0],n(e)},r]})}))}delete(e=-1){e=parseInt(e),isNaN(e)&&(e=-1),-1===e&&(e=this.values?.pk);const t=d();return this.isConnected().then(()=>new Promise((n,r)=>{this.socket.send(JSON.stringify({event:"model",event_type:"delete",event_id:t,args:{model_name:this.model_name,model_query:this.model_query,pk:e}})),this.open_request[t]=[n,r]}))}isConnected(){return new Promise((e,t)=>{if(this._is_connected)e();else if(this._is_conneting_process&&this.open_request._connecting_process){const[n,r]=this.open_request._connecting_process;this.open_request._connecting_process=[()=>{n(),e()},()=>{r(),t()}]}else this._is_conneting_process=!0,this.open_request._connecting_process=[()=>{},()=>{}],this._connectToServer().then(()=>{e(this._checkConnection())})})}close(){this.socket&&(this._auto_reconnect=!1,this.socket.onclose=()=>{},this.socket.close(),delete this.socket)}clean(){return this.values_list=[],this.values={},this}_readFiles(e){let t=[],n={};for(const[r,o]of Object.entries(e))o instanceof File&&t.push(new Promise((e,t)=>{((r,o)=>{let s=new FileReader;s.onload=s=>{const i=d();this.open_request[i]=[e,t];let l=s.target.result,a=parseInt(Math.ceil(l.length/Q));n[r]={id:i,file_name:o.name,field_name:r,content_length:o.size};for(let e=0;e<a;++e)this.socket.send(JSON.stringify({event:"model",event_type:"upload",event_id:i,args:{chunk:l.slice(Q*e,Q*(e+1)),idx:e,number_of_chunks:a,file_name:o.name,field_name:r,content_length:o.size,content_type:o.type,model_name:this.model_name,model_query:this.model_query}}))},s.onerror=()=>{t()},s.readAsBinaryString(o)})(r,o)}));return Promise.all(t).then(()=>n)}_onMessage(e){let t=JSON.parse(e.data);if(t.is_error)this.open_request.hasOwnProperty(t.event_id)&&(this.open_request[t.event_id][1](t),this._closeOpenRequest(t.event_id)),(t.msg||t.header)&&A("pushErrorMsg",t.header||"",t.msg||""),"connect"===t.type&&(this.open_request._connecting_process[1](t),this._closeOpenRequest("_connecting_process"),this._auto_reconnect=!1,this.socket.close());else{if((t.msg||t.header)&&A("pushMsg",t.header||"",t.msg||""),"connect"===t.type)this._is_connected=!0,this._is_conneting_process=!1,this.open_request._connecting_process[0](t),this._closeOpenRequest("_connecting_process");else if(["load","named_view","detail_view"].includes(t.type)){const e=JSON.parse(t.args.data);this.values_list=[],t.args.data=this._parseServerRes(e)}else if("on_update"===t.type||"on_create"===t.type){const e=JSON.parse(t.args.data);let n,r=this._parseServerRes(e);n="on_create"===t.type?this.on_create:this.on_update,n(r),t.args.data=r}let e=t.data?.instance;e&&(t.data.instance=JSON.parse(t.data.instance)),this.open_request.hasOwnProperty(t.event_id)&&(this.open_request[t.event_id][0](t),this._closeOpenRequest(t.event_id))}}noOpenRequests(){return new Promise(e=>{if(0===Object.keys(this.open_request).length)return e();this._onNoOpenRequests.push(e)})}_closeOpenRequest(e){delete this.open_request[e],0===Object.keys(this.open_request).length&&(this._onNoOpenRequests.forEach(e=>e()),this._onNoOpenRequests=[])}_connectToServer(){return new Promise(e=>{const t=`${this.model_name}`+(this.model_id>0?`/${this.model_id}`:"");"https:"===window.location.protocol?this.socket=new WebSocket(`wss://${window.location.host}/sdc_ws/model/${t}`):this.socket=new WebSocket(`ws://${window.location.host}/sdc_ws/model/${t}`),this.socket.onmessage=this._onMessage.bind(this),this.socket.onclose=e=>{console.error(`SDC Model (${this.model_name}, ${this.model_id}) Socket closed unexpectedly`),this._is_connected=!1;for(const[t,n]of Object.entries(this.open_request))n[1](e);this.open_request={},setTimeout(()=>{this._auto_reconnect&&this._connectToServer().then(()=>{})},1e3)},this.socket.onerror=e=>{if(console.error(`Model Socket encountered error: ${e} Closing socket`),this._is_connected)try{this.socket.close()}catch(e){}},this.socket.onopen=()=>{e()}})}_checkConnection(){const e=d();return new Promise((t,n)=>{this.socket.send(JSON.stringify({event:"model",event_type:"connect",event_id:e,args:{model_name:this.model_name,model_query:this.model_query}})),this.open_request[e]=[t,n]})}_parseServerRes(e){let t=[];for(let n of e){const e=n.pk,r=this.byPk(e);for(const[e,t]of Object.entries(n.fields))t&&"object"==typeof t&&t.__is_sdc_model__?r[e]=new ee(t.pk,t.model):r[e]=t;t.push(r)}return 1===this.values_list.length?this.values=this.values_list.at(-1):this.values={},t}}let oe=!1,se=!1,ie=null,le={};function ae(){return window.SERVER_CALL_VIA_WEB_SOCKET?new Promise(e=>oe?e():se?void setTimeout(()=>{ae().then(()=>{e()})},200):e(ue())):Promise.resolve(!0)}function ce(){window.SERVER_CALL_VIA_WEB_SOCKET&&function(){if(oe){oe=!1;try{ie.close()}catch(e){}}}()}function ue(){return se=!0,new Promise(e=>{ie="https:"===window.location.protocol?new WebSocket(`wss://${window.location.host}/sdc_ws/ws/`):new WebSocket(`ws://${window.location.host}/sdc_ws/ws/`),ie.onmessage=function(e){de(JSON.parse(e.data))},ie.onclose=function(){oe&&console.error("SDC Socket closed unexpectedly"),oe=!1;for(const[e,t]of Object.entries(le))t[1]({}),delete le[e];setTimeout(()=>{ue()},1e3)},ie.onerror=function(e){if(console.error("Socket encountered error: ",e.message,"Closing socket"),oe)try{ie.close()}catch(e){}},ie.onopen=function(){oe=!0,se=!1,e()}})}function de(e){if(e||(e={}),e.is_error)(e.msg||e.header)&&A("pushErrorMsg",e.header||"",e.msg||""),e.id&&le[e.id]&&(le[e.id][1](e.data||null),delete le[e.id]);else if((e.msg||e.header)&&A("pushMsg",e.header||"",e.msg||""),e.type&&"sdc_recall"===e.type)e.id&&le[e.id]&&(le[e.id][0](e.data),delete le[e.id]);else if(e.type&&"sdc_event"===e.type){let t=e.event;t&&A(t,e.payload)}else e.type&&"sdc_redirect"===e.type&&A("onNavLink",e.link)}class he{constructor(){this._uuid=d(),this.contentUrl="",this.contentReload=!1,this.parsedContentUrl=null,this.events=[],this.load_async=!1,this._isEventsSet=!1,this._allEvents=null,this._urlParams=[],this._models=[],this._cssUrls=[],this.afterShow=()=>{console.warn("afterShow is deprecated!!")},this._mixins={},this._tagName=Object.getPrototypeOf(this)._tagName??"",this._childController={},this._parentController=null,this._onLoadDone=!1,this.$container=null,this._isMixin=!1}_runLifecycle(e,t){_e.DEBUG&&!this._isMixin&&console.debug(e,this._tagName);let n=[];if(!this._isMixin){this._isMixin=!0;for(let r in this._mixins){let o=this._mixins[r];"function"==typeof o[e]&&n.push(o[e].apply(this,t))}return Promise.all(n).then(()=>{this._isMixin=!1})}}onInit(){_e.DEBUG&&!this._isMixin&&console.DEBUG(Array.apply(null,arguments),this._tagName)}get parentController(){return this._parentController}get childController(){return this._childController}onLoad(){return this._runLifecycle("onLoad",arguments)}willShow(){return this._runLifecycle("willShow",arguments)}onRefresh(){return this._runLifecycle("onRefresh",arguments)}onRemove(){return this._runLifecycle("onRemove",arguments),!0}noOpenModelRequests(){return Promise.all(this._models.map(e=>e.noOpenRequests()))}remove(){for(const e of this._models)e.close();let e=this._childController;for(let t in e)if(e.hasOwnProperty(t))for(let n of e[t])if(!n.remove())return!1;if(!this.onRemove||this.onRemove()){M(this);const e=i(this._tagName);if(this._parentController._childController[e]){let t=this._parentController._childController[e];for(let e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)}return this.$container.remove(),!0}return!1}controller_name(){return this._tagName.replace(/-./g,e=>` ${e[1].toUpperCase()}`).replace(/^./g,e=>`${e.toUpperCase()}`)}addEvent(e,t,n){this.getEvents(),this._allEvents[e]=this._allEvents[e]||{},this._allEvents[e][t]=n}getEvents(){if(this._allEvents)return this._allEvents;let e=[];e=e.concat(this.events);for(let t in this._mixins){let n=this._mixins[t];Array.isArray(n.events)&&(e=e.concat(n.events))}return this._allEvents=_.merge(...e)}post(e,t){return _e.post(this,e,t)}get(e,t){return _e.get(this,e,t)}submitForm(e,t,n){return _e.submitFormAndUpdateView(this,e,t,n)}serverCall(e,t){let n=this.contentUrl.match(/sdc_view\/([^/]+)/i);if(n&&!(n.length<2))return function(e,t,n,r,o){return window.SERVER_CALL_VIA_WEB_SOCKET?function(e,t,n,r){let o=d();return ae().then(()=>{ie.send(JSON.stringify({event:"sdc_call",id:o,controller:t,app:e,function:n,args:r}))}),new Promise((e,t)=>{le[o]=[e,t]})}(e,t,r,o):function(e,t,n){return"object"!=typeof n&&Array.isArray(n)&&null===n&&(n={arg0:n}),n={data:JSON.stringify(n),_sdc_func_name:t,_method:"sdc_server_call"},$.post({url:e,data:n,beforeSend:function(e,t){e.setRequestHeader("X-CSRFToken",window.CSRF_TOKEN)}}).then(e=>{const t=e._return_data;return de(t),t}).catch(e=>{const t=e.responseJSON;throw t.is_error=!0,de(t),e})}(n,r,o)}(n[1],this._tagName,this.parsedContentUrl??this.contentUrl,e,t);console.error("To use the serverCall function the contentUrl must be set: "+this.name)}newModel(e,t={}){if(e instanceof Number&&e.hasOwnProperty("load"))return e.load(this);const n=new re(e,t);return this._models.push(n),n}updateModel(e,t={},n){let r=new re(e,t);return r.load().then(()=>{r.values|=n,r.save().then(()=>(r.close(),r.values))})}find(e){return this.$container.find(e)}refresh(){return _e.refresh(this.$container,this)}reload(){return _e.reloadController(this)}reconcile(e,t=null){return _e.reconcile(this,e,t)}submitModelFormDistributor(e,t){return"function"==typeof this._submitModelForm?this._submitModelForm(e,t):"function"==typeof this.submitModelForm?this.submitModelForm(e,t):this.defaultSubmitModelForm(e,t)}iterateAllChildren(){let e=this._childController,t=[];for(let n in e)if(e.hasOwnProperty(n))for(let r of e[n])t.push(r),t.push(...r.iterateAllChildren());return t}defaultSubmitModelForm(e,t){let n=[];if(!this._isMixin){t.stopPropagation(),t.preventDefault();let{model:r,form_name:o}=e.data();const s=r.syncForm(e);for(let t of s)n.push(new Promise((n,s)=>{let i;i=null!==t.pk&&t.pk>=0?r.save(t.pk,o):r.create(t),i.then(t=>{h(e),this.submit_model_form_success&&this.submit_model_form_success(t[0]);for(const e of this.iterateAllChildren())e.submit_model_form_success&&e.submit_model_form_success(t[0]);n(t)}).catch(t=>{this.reconcile($(`<div class="container-fluid">${t.html}</div>`),e.find(".container-fluid").first()),this.submit_model_form_error&&this.submit_model_form_error(t);for(const e of this.iterateAllChildren())e.submit_model_form_error&&e.submit_model_form_error(t);s(t)})}))}return Promise.all(n).then(e=>Object.assign({},...e.flat()))}}const pe={classname:"class"};window.sdcDom=function(e,t,...n){if(!e)return"";const r=function(e,t){let n,r=!1;if("string"==typeof e)n=$(document.createElement(e));else{const t=`this.${e.name}`;n=$(document.createElement(t)),n.data("handler",e),r=!0}return t&&Object.entries(t).forEach(([e,t])=>{e.startsWith("on")?n[0].addEventListener(e.substring(2).toLowerCase(),t):(pe[e.toLowerCase()]&&(e=pe[e.toLowerCase()]),n[0].setAttribute(e,t))}),r&&n.addClass("_bind_to_update_handler _with_handler"),n}(e,t);for(const e of n)r.append(e);return r};let fe,_e={CSRF_TOKEN:window.CSRF_TOKEN||"",LANGUAGE_CODE:window.LANGUAGE_CODE||"en",DEBUG:window.DEBUG||!1,VERSION:window.VERSION||"0.0",tagNames:[],Global:b,rootController:null,globalRootController:null,_isInit:!1,_origin_trigger:null,_globalControllerClasses:[],init_sdc:()=>{_e._isInit||(_e._isInit=!0,_e._origin_trigger?ce():(_e._origin_trigger=$.fn.trigger,$.fn.trigger=function(e){const t={}.hasOwnProperty.call(e,"type")?e.type:e;return v.includes(t)||(v.push(t),$(window).on(t,O)),_e._origin_trigger.call(this,e)},_e.updateJquery()),ae(),function(){const e=$(window);v.forEach(t=>{e.off(t).on(t,O)})}(),_e.rootController=_e.rootController||new he,_e.globalRootController=_e.globalRootController||new he),_e.tagNames=Object.keys(k);const e=$("<div></div>");b.forEach(t=>{const n=k[t][0];e.append(`<${n.prototype._tagName}></${n.prototype._tagName}>`)});const{refreshProcess:n}=x(null,_e.rootController);return H(_e.tagNames,e,_e.globalRootController,n).then(()=>H(_e.tagNames,(t||(t=$("body")),t),_e.rootController,n).then(e=>(R(n),e)))},updateJquery:()=>{$.fn.safeReplace=function(e){return _e.safeReplace($(this),e)},$.fn.safeEmpty=function(){return _e.safeEmpty($(this))},$.fn.safeRemove=function(){return _e.safeRemove($(this))}},controllerToTag:e=>s(e.name).replace(/-controller$/,""),registerGlobal:e=>{_e.register(e);let t=e.prototype._tagName;b.push(t)},cleanCache:()=>{I={}},register:(e,t=!1)=>{let n=_e.controllerToTag(e);return!k[n]||t?(k[n]=[e,[]],e.prototype._tagName=n,{addMixin:(...e)=>{for(let t of e){let e;"string"==typeof t?e=s(t):t&&(e=_e.controllerToTag(t)),k[n][1].push(e)}}}):{addMixin:(...e)=>{}}},post:(e,t,n)=>(n||(n={}),n.CSRF_TOKEN=_e.CSRF_TOKEN,_e.ajax(e,t,params,$.post)),get:(e,t,n)=>_e.ajax(e,t,n,$.get),ajax:(e,t,n,r)=>{n||(n={}),n.VERSION=_e.VERSION,n._method=n._method||"api";const o=new Promise((s,i)=>r(t,n).then((t,n,r)=>{s(t,n,r),"redirect"===t.status?A("onNavLink",t["url-link"]):o.then(()=>{_e.refresh(e.$container)})}).catch(i));return o},submitFormAndUpdateView:(e,t,n,r)=>{let o=new FormData(t);const s=e=>{e["url-link"]?A("onNavLink",e["url-link"]):window.location.href=e.url},i=new Promise((l,c)=>{a(o,n||t.action,r||t.method).then((t,n,r)=>{l(t,n,r),"redirect"===t.status?s(t):i.then(()=>{_e.refresh(e.$container,e)})}).catch((e,t,n)=>{301===e.status?(e=e.responseJSON,s(e),l(e,t,n)):c(e,t,n)})});return i},submitForm:(e,t,n)=>{let r=new FormData(e);return new Promise((o,s)=>{a(r,t||e.action,n||e.method).then(o).catch(s)})},getController:e=>W(e),safeEmpty:e=>(e.children().each(function(e,t){let n=$(t);_e.safeRemove(n)}),e),safeReplace:(e,t)=>(t.insertBefore(e),_e.safeRemove(e)),safeRemove:e=>(e.each(function(){let e=$(this);e.data(`${L}`)&&e.data(`${L}`).remove()}),e.find(`.${J}`).each(function(){const e=$(this).data(`${L}`);e&&e.remove()}),e.remove()),reloadController:e=>function(e){if(e.contentUrl){let t=B(e);return e.contentUrl=t.url,D(e,t.args)}return new Promise(e=>{e($())})}(e).then(t=>{let n=$(t);return _e.reconcile(e,n)}),reconcile:(e,t,n=null,r=null)=>{if(!n){let n=e.$container.clone().empty();n.data(L,null),n.removeClass(J),n.append(t),t=n}n=n??e.$container;const{refreshProcess:o,isRunningProcess:s}=x(r,e);return Z(t,e,o).then(()=>{var r;return z(t,n),(r=e)._childController={},r.find(`.${J}`).each(function(){const e=W($(this));e===r&&N(r,e)}),s||R(o),e})},refresh:(e,t)=>Z(e,t)},me=[];function ge(){if(!jest)throw new Error("JEST is not defined");0===me.length&&(fe=$.ajax.bind($),me.push(jest.spyOn($,"ajax")),me[0].mockImplementation(function(e){return fe(e).then(e=>e).catch(e=>e)}))}const ye=ce,ve={get_controller:async function(e,t={},n=""){ge();const r=$("body");_e.updateJquery(),r.safeEmpty();const o=$(`<${e}>${n}</${e}>`);for(const[e,n]of Object.entries(t))o.data(e,n);const s=$("<div></div>").append(o);return r.append(s),_e._isInit=!1,_e.cleanCache(),await _e.init_sdc(),_e.getController(o)},getCsrfToken:function(){return function(e){if(document.cookie&&""!==document.cookie){const t=document.cookie.split(";");for(let n=0;n<t.length;n++){const r=t[n].trim();if(r.substring(0,10)===e+"=")return decodeURIComponent(r.substring(10))}}return""}("csrftoken")},controllerFromTestHtml:async function(e,t=null){ge();const n=$("body");_e.updateJquery(),n.safeEmpty().append(e),_e._isInit=!1,_e.cleanCache(),await _e.init_sdc();let r=_e.rootController.iterateAllChildren();if(!t)return r;const o=r[0].onRefresh,s=jest.spyOn(r[0],"onRefresh");return new Promise(e=>{s.mockImplementation(function(){s.mockRestore();const t=o.apply(r[0],arguments);return e(r),t})})}};export{he as AbstractSDC,M as allOff,_e as app,u as checkIfParamNumberBoolOrString,h as clearErrorsInForm,S as controllerFactory,j as on,E as runControlFlowFunctions,p as setErrorsInForm,T as setEvent,ye as socketReconnect,ve as test_utils,A as trigger};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sdc_client",
|
|
3
|
-
"version": "0.58.
|
|
3
|
+
"version": "0.58.3",
|
|
4
4
|
"description": "Simple Dom Control",
|
|
5
5
|
"main": "dist/ugly.index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"sass": "^1.85.1",
|
|
43
43
|
"through2": "^4.0.2",
|
|
44
44
|
"vinyl-named": "^1.1.0",
|
|
45
|
-
"webpack": "^5.
|
|
45
|
+
"webpack": "^5.104.1",
|
|
46
46
|
"webpack-stream": "^7.0.0"
|
|
47
47
|
},
|
|
48
48
|
"overrides": {
|
|
@@ -316,7 +316,7 @@ export class AbstractSDC {
|
|
|
316
316
|
}
|
|
317
317
|
resolve(res);
|
|
318
318
|
}).catch((data) => {
|
|
319
|
-
|
|
319
|
+
this.reconcile($(`<div class="container-fluid">${data.html}</div>`), $form.find('.container-fluid').first());
|
|
320
320
|
this.submit_model_form_error && this.submit_model_form_error(data);
|
|
321
321
|
for(const controller of this.iterateAllChildren()) {
|
|
322
322
|
controller.submit_model_form_error && controller.submit_model_form_error(data);
|