sdc_client 0.55.3 → 0.56.0

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/README.md CHANGED
@@ -1,3 +1,7 @@
1
1
  # Simple Dom Control (Client)
2
2
 
3
- This JS package only works with the Python Django extension Simple Dom Control ([SDC](https://pypi.org/project/simpledomcontrol/)). Therefore, all documentation is available in the python SDC package.
3
+ This JS package only works with the Python Django extension Simple Dom Control ([SDC](https://pypi.org/project/simpledomcontrol/)).
4
+
5
+ SDC is a framework that combines elements of both the MVC (Model-View-Controller) and MVT (Model-View-Template) patterns. Its main goal is to provide a tool for simple and efficient web development. The name ‘SDC’ is an abbreviation for ‘Simple DOM Control,’ indicating its focus on controlling and manipulating the Document Object Model (DOM), which is crucial for web development, particularly in dynamic web pages.
6
+
7
+ For detailed docs go to [rtd](https://simpledomcontrol.readthedocs.io/en/latest/)
package/dist/index.js CHANGED
@@ -24,7 +24,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
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_utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n\n\n\n\nclass AbstractSDC {\n constructor() {\n this._uuid = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_3__.uuidv4)();\n this.contentUrl = '';\n this.contentReload = false;\n this.hasSubnavView = false;\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 = '';\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) {\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) {\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 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_3__.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_3__.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 = Object.assign({}, ...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_socket_js__WEBPACK_IMPORTED_MODULE_2__.callServer)(app[1], this._tagName, 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 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 model = $form.data('model');\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);\n } else {\n prom = model.create(instance_value);\n }\n prom.then(res => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_3__.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_3__.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,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Y2xpZW50Ly4vc3JjL3NpbXBsZURvbUNvbnRyb2wvQWJzdHJhY3RTREMuanM/ZDdmNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FsbE9mZn0gZnJvbSBcIi4vc2RjX2V2ZW50cy5qc1wiO1xuaW1wb3J0IHthcHB9IGZyb20gXCIuL3NkY19tYWluLmpzXCI7XG5pbXBvcnQge2NhbGxTZXJ2ZXIsIE1vZGVsfSBmcm9tIFwiLi9zZGNfc29ja2V0LmpzXCI7XG5pbXBvcnQge3V1aWR2NCwgc2V0RXJyb3JzSW5Gb3JtLCBjbGVhckVycm9yc0luRm9ybSwgdGFnTmFtZVRvQ2FtZWxDYXNlLCB0YWdOYW1lVG9SZWFkYWJsZU5hbWV9IGZyb20gXCIuL3NkY191dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RTREMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl91dWlkID0gdXVpZHY0KCk7XG4gICAgICAgIHRoaXMuY29udGVudFVybCA9ICcnO1xuICAgICAgICB0aGlzLmNvbnRlbnRSZWxvYWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oYXNTdWJuYXZWaWV3ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXZlbnRzID0gW107XG4gICAgICAgIHRoaXMubG9hZF9hc3luYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRXZlbnRzU2V0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2FsbEV2ZW50cyA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5fdXJsUGFyYW1zID0gW107XG4gICAgICAgIHRoaXMuX21vZGVscyA9IFtdO1xuXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLSBPbGQgZGVwcmVjYXRlZCBwcm9wZXJ0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgdGhpcy5fY3NzVXJscyA9IFtdO1xuICAgICAgICB0aGlzLmFmdGVyU2hvdyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignYWZ0ZXJTaG93IGlzIGRlcHJlY2F0ZWQhIScpXG4gICAgICAgIH07XG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tIEVuZCBvbGQgZGVwcmVjYXRlZCBwcm9wZXJ0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKlxuICAgICAgICAgKiBAdHlwZSB7e3N0cmluZzogQWJzdHJhY3RTREN9fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fbWl4aW5zID0ge307XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl90YWdOYW1lID0gJyc7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlIHt7c3RyaW5nOkFic3RyYWN0U0RDfX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2NoaWxkQ29udHJvbGxlciA9IHt9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7QWJzdHJhY3RTREN9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9wYXJlbnRDb250cm9sbGVyID0gbnVsbDtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9vbkxvYWREb25lID0gZmFsc2U7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlIHtqcXVlcnl9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLiRjb250YWluZXIgPSBudWxsO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKlxuICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2lzTWl4aW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgbXVzdCBiZSBpbiB7fVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgaW4gYXJndW1lbnRzIG9mXG4gICAgICpcbiAgICAgKi9cbiAgICBfcnVuTGlmZWN5Y2xlKG1ldGhvZCwgYXJncykge1xuICAgICAgICBpZiAoYXBwLkRFQlVHKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKG1ldGhvZCwgdGhpcy5fdGFnTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmV0dXJuUHJvbWlzc2VzID0gW107XG4gICAgICAgIGlmICh0aGlzLl9pc01peGluKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNNaXhpbiA9IHRydWU7XG4gICAgICAgIGZvciAobGV0IG1peGluS2V5IGluIHRoaXMuX21peGlucykge1xuICAgICAgICAgICAgbGV0IG1peGluID0gdGhpcy5fbWl4aW5zW21peGluS2V5XTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWl4aW5bbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuUHJvbWlzc2VzLnB1c2gobWl4aW5bbWV0aG9kXS5hcHBseSh0aGlzLCBhcmdzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocmV0dXJuUHJvbWlzc2VzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2lzTWl4aW4gPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Jbml0KCkge1xuICAgICAgICBpZiAoYXBwLkRFQlVHKSB7XG4gICAgICAgICAgICBjb25zb2xlLkRFQlVHKEFycmF5LmFwcGx5KG51bGwsIGFyZ3VtZW50cyksIHRoaXMuX3RhZ05hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHBhcmVudENvbnRyb2xsZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRDb250cm9sbGVyO1xuICAgIH1cblxuICAgIGdldCBjaGlsZENvbnRyb2xsZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGlsZENvbnRyb2xsZXI7XG4gICAgfVxuXG4gICAgb25Mb2FkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTGlmZWN5Y2xlKCdvbkxvYWQnLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHdpbGxTaG93KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTGlmZWN5Y2xlKCd3aWxsU2hvdycsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgb25SZWZyZXNoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTGlmZWN5Y2xlKCdvblJlZnJlc2gnLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIG9uUmVtb3ZlKCkge1xuICAgICAgICB0aGlzLl9ydW5MaWZlY3ljbGUoJ29uUmVtb3ZlJywgYXJndW1lbnRzKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZW1vdmUoKSB7XG4gICAgICAgIGZvciAoY29uc3QgbW9kZWwgb2YgdGhpcy5fbW9kZWxzKSB7XG4gICAgICAgICAgICBtb2RlbC5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBfY2hpbGRDb250cm9sbGVyID0gdGhpcy5fY2hpbGRDb250cm9sbGVyO1xuICAgICAgICBmb3IgKGxldCBpIGluIF9jaGlsZENvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGlmIChfY2hpbGRDb250cm9sbGVyLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2Mgb2YgX2NoaWxkQ29udHJvbGxlcltpXSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNjLnJlbW92ZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMub25SZW1vdmUgfHwgdGhpcy5vblJlbW92ZSgpKSB7XG4gICAgICAgICAgICBhbGxPZmYodGhpcyk7XG4gICAgICAgICAgICBjb25zdCBjX25hbWUgPSB0YWdOYW1lVG9DYW1lbENhc2UodGhpcy5fdGFnTmFtZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5fcGFyZW50Q29udHJvbGxlci5fY2hpbGRDb250cm9sbGVyW2NfbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBsZXQgYXJyID0gdGhpcy5fcGFyZW50Q29udHJvbGxlci5fY2hpbGRDb250cm9sbGVyW2NfbmFtZV07XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFycltpXSA9PT0gdGhpcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy4kY29udGFpbmVyLnJlbW92ZSgpO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb250cm9sbGVyX25hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWdOYW1lVG9SZWFkYWJsZU5hbWUodGhpcy5fdGFnTmFtZSk7XG4gICAgfVxuXG4gICAgYWRkRXZlbnQoZXZlbnQsIHNlbGVjdG9yLCBoYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuZ2V0RXZlbnRzKCk7XG4gICAgICAgIHRoaXMuX2FsbEV2ZW50c1tldmVudF0gPSB0aGlzLl9hbGxFdmVudHNbZXZlbnRdIHx8IHt9O1xuICAgICAgICB0aGlzLl9hbGxFdmVudHNbZXZlbnRdW3NlbGVjdG9yXSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgZ2V0RXZlbnRzKCkge1xuICAgICAgICBpZiAodGhpcy5fYWxsRXZlbnRzKSByZXR1cm4gdGhpcy5fYWxsRXZlbnRzO1xuICAgICAgICBsZXQgYWxsRXZlbnRzID0gW107XG4gICAgICAgIGFsbEV2ZW50cyA9IGFsbEV2ZW50cy5jb25jYXQodGhpcy5ldmVudHMpO1xuICAgICAgICBmb3IgKGxldCBtaXhpbktleSBpbiB0aGlzLl9taXhpbnMpIHtcbiAgICAgICAgICAgIGxldCBtaXhpbiA9IHRoaXMuX21peGluc1ttaXhpbktleV07XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtaXhpbi5ldmVudHMpKSB7XG4gICAgICAgICAgICAgICAgYWxsRXZlbnRzID0gYWxsRXZlbnRzLmNvbmNhdChtaXhpbi5ldmVudHMpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiAodGhpcy5fYWxsRXZlbnRzID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uYWxsRXZlbnRzKSk7XG4gICAgfVxuXG4gICAgcG9zdCh1cmwsIGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIGFwcC5wb3N0KHRoaXMsIHVybCwgYXJncyk7XG4gICAgfVxuXG4gICAgZ2V0KHVybCwgYXJncykge1xuICAgICAgICByZXR1cm4gYXBwLmdldCh0aGlzLCB1cmwsIGFyZ3MpO1xuICAgIH1cblxuICAgIHN1Ym1pdEZvcm0oZm9ybSwgdXJsLCBtZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGFwcC5zdWJtaXRGb3JtQW5kVXBkYXRlVmlldyh0aGlzLCBmb3JtLCB1cmwsIG1ldGhvZCk7XG4gICAgfVxuXG4gICAgc2VydmVyQ2FsbChtZXRob2RlLCBhcmdzKSB7XG4gICAgICAgIGxldCByZSA9IC9zZGNfdmlld1xcLyhbXi9dKykvaTtcbiAgICAgICAgbGV0IGFwcCA9IHRoaXMuY29udGVudFVybC5tYXRjaChyZSk7XG4gICAgICAgIGlmICghYXBwIHx8IGFwcC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdUbyB1c2UgdGhlIHNlcnZlckNhbGwgZnVuY3Rpb24gdGhlIGNvbnRlbnRVcmwgbXVzdCBiZSBzZXQ6ICcgKyB0aGlzLm5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhbGxTZXJ2ZXIoYXBwWzFdLCB0aGlzLl90YWdOYW1lLCBtZXRob2RlLCBhcmdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtb2RlbF9uYW1lIHtzdHJpbmcgfCBOdW1iZXJ9XG4gICAgICogQHBhcmFtIG1vZGVsX3F1ZXJ5IHtPYmplY3R9XG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgbmV3TW9kZWwobW9kZWxfbmFtZSwgbW9kZWxfcXVlcnkgPSB7fSkge1xuICAgICAgICBpZihtb2RlbF9uYW1lIGluc3RhbmNlb2YgTnVtYmVyICYmIG1vZGVsX25hbWUuaGFzT3duUHJvcGVydHkoJ2xvYWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuIG1vZGVsX25hbWUubG9hZCh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1vZGVsID0gbmV3IE1vZGVsKG1vZGVsX25hbWUsIG1vZGVsX3F1ZXJ5KTtcbiAgICAgICAgdGhpcy5fbW9kZWxzLnB1c2gobW9kZWwpO1xuICAgICAgICByZXR1cm4gbW9kZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbW9kZWxfbmFtZSB7c3RyaW5nfVxuICAgICAqIEBwYXJhbSBtb2RlbF9xdWVyeSB7T2JqZWN0fVxuICAgICAqIEBwYXJhbSB2YWx1ZXMge09iamVjdH1cbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKi9cbiAgICB1cGRhdGVNb2RlbChtb2RlbF9uYW1lLCBtb2RlbF9xdWVyeSA9IHt9LCB2YWx1ZXMpIHtcbiAgICAgICAgbGV0IG1vZGVsID0gbmV3IE1vZGVsKG1vZGVsX25hbWUsIG1vZGVsX3F1ZXJ5KTtcbiAgICAgICAgcmV0dXJuIG1vZGVsLmxvYWQoKS50aGVuKCgpPT57XG4gICAgICAgICAgICBtb2RlbC52YWx1ZXMgfD0gdmFsdWVzO1xuICAgICAgICAgICAgbW9kZWwuc2F2ZSgpLnRoZW4oKCk9PiB7XG4gICAgICAgICAgICAgICAgbW9kZWwuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9kZWwudmFsdWVzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRhcHRlciB0byB0aGlzLiRjb250YWluZXIuZmluZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkb21TZWxlY3RvclxuICAgICAqL1xuICAgIGZpbmQoZG9tU2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGNvbnRhaW5lci5maW5kKGRvbVNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICByZWZyZXNoKCkge1xuICAgICAgICByZXR1cm4gYXBwLnJlZnJlc2godGhpcy4kY29udGFpbmVyLCB0aGlzKTtcbiAgICB9XG5cbiAgICByZWxvYWQoKSB7XG4gICAgICAgIHJldHVybiBhcHAucmVsb2FkQ29udHJvbGxlcih0aGlzKTtcbiAgICB9XG5cbiAgICBzdWJtaXRNb2RlbEZvcm1EaXN0cmlidXRvcigkZm9ybSwgZSkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3N1Ym1pdE1vZGVsRm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1Ym1pdE1vZGVsRm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VibWl0TW9kZWxGb3JtKCRmb3JtLCBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0U3VibWl0TW9kZWxGb3JtKCRmb3JtLCBlKTtcbiAgICB9XG5cbiAgICBpdGVyYXRlQWxsQ2hpbGRyZW4oKSB7XG4gICAgICAgIGxldCBfY2hpbGRDb250cm9sbGVyID0gdGhpcy5fY2hpbGRDb250cm9sbGVyO1xuICAgICAgICBsZXQgcmVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgaW4gX2NoaWxkQ29udHJvbGxlcikge1xuICAgICAgICAgICAgaWYgKF9jaGlsZENvbnRyb2xsZXIuaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjYyBvZiBfY2hpbGRDb250cm9sbGVyW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKGNjKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goLi4uY2MuaXRlcmF0ZUFsbENoaWxkcmVuKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vZGVsIEZvcm0gRXZlbnRzXG4gICAgICovXG4gICAgZGVmYXVsdFN1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSkge1xuICAgICAgICBsZXQgcF9saXN0ID0gW107XG4gICAgICAgIGlmICghdGhpcy5faXNNaXhpbikge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGxldCBtb2RlbCA9ICRmb3JtLmRhdGEoJ21vZGVsJyk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBtb2RlbC5zeW5jRm9ybSgkZm9ybSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpbnN0YW5jZV92YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBwX2xpc3QucHVzaChuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9tO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2VfdmFsdWUucGsgIT09IG51bGwgJiYgaW5zdGFuY2VfdmFsdWUucGsgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvbSA9IG1vZGVsLnNhdmUoaW5zdGFuY2VfdmFsdWUucGspO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvbSA9IG1vZGVsLmNyZWF0ZShpbnN0YW5jZV92YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwcm9tLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJFcnJvcnNJbkZvcm0oJGZvcm0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXRfbW9kZWxfZm9ybV9zdWNjZXNzICYmIHRoaXMuc3VibWl0X21vZGVsX2Zvcm1fc3VjY2VzcyhyZXNbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IGNvbnRyb2xsZXIgb2YgdGhpcy5pdGVyYXRlQWxsQ2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuc3VibWl0X21vZGVsX2Zvcm1fc3VjY2VzcyAmJiBjb250cm9sbGVyLnN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MocmVzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEVycm9yc0luRm9ybSgkZm9ybSwgJChkYXRhLmh0bWwpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0X21vZGVsX2Zvcm1fZXJyb3IgJiYgdGhpcy5zdWJtaXRfbW9kZWxfZm9ybV9lcnJvcihkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihjb25zdCBjb250cm9sbGVyIG9mIHRoaXMuaXRlcmF0ZUFsbENoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLnN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yICYmIGNvbnRyb2xsZXIuc3VibWl0X21vZGVsX2Zvcm1fZXJyb3IoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwX2xpc3QpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIC4uLnJlcy5mbGF0KCkpO1xuICAgICAgICB9KTtcbiAgICB9XG59Il0sIm5hbWVzIjpbImFsbE9mZiIsImFwcCIsImNhbGxTZXJ2ZXIiLCJNb2RlbCIsInV1aWR2NCIsInNldEVycm9yc0luRm9ybSIsImNsZWFyRXJyb3JzSW5Gb3JtIiwidGFnTmFtZVRvQ2FtZWxDYXNlIiwidGFnTmFtZVRvUmVhZGFibGVOYW1lIiwiQWJzdHJhY3RTREMiLCJjb25zdHJ1Y3RvciIsIl91dWlkIiwiY29udGVudFVybCIsImNvbnRlbnRSZWxvYWQiLCJoYXNTdWJuYXZWaWV3IiwiZXZlbnRzIiwibG9hZF9hc3luYyIsImlzRXZlbnRzU2V0IiwiX2FsbEV2ZW50cyIsIl91cmxQYXJhbXMiLCJfbW9kZWxzIiwiX2Nzc1VybHMiLCJhZnRlclNob3ciLCJjb25zb2xlIiwid2FybiIsIl9taXhpbnMiLCJfdGFnTmFtZSIsIl9jaGlsZENvbnRyb2xsZXIiLCJfcGFyZW50Q29udHJvbGxlciIsIl9vbkxvYWREb25lIiwiJGNvbnRhaW5lciIsIl9pc01peGluIiwiX3J1bkxpZmVjeWNsZSIsIm1ldGhvZCIsImFyZ3MiLCJERUJVRyIsImRlYnVnIiwicmV0dXJuUHJvbWlzc2VzIiwibWl4aW5LZXkiLCJtaXhpbiIsInB1c2giLCJhcHBseSIsIlByb21pc2UiLCJhbGwiLCJ0aGVuIiwib25Jbml0IiwiQXJyYXkiLCJhcmd1bWVudHMiLCJwYXJlbnRDb250cm9sbGVyIiwiY2hpbGRDb250cm9sbGVyIiwib25Mb2FkIiwid2lsbFNob3ciLCJvblJlZnJlc2giLCJvblJlbW92ZSIsInJlbW92ZSIsIm1vZGVsIiwiY2xvc2UiLCJpIiwiaGFzT3duUHJvcGVydHkiLCJjYyIsImNfbmFtZSIsImFyciIsImxlbmd0aCIsInNwbGljZSIsImNvbnRyb2xsZXJfbmFtZSIsImFkZEV2ZW50IiwiZXZlbnQiLCJzZWxlY3RvciIsImhhbmRsZXIiLCJnZXRFdmVudHMiLCJhbGxFdmVudHMiLCJjb25jYXQiLCJpc0FycmF5IiwiT2JqZWN0IiwiYXNzaWduIiwicG9zdCIsInVybCIsImdldCIsInN1Ym1pdEZvcm0iLCJmb3JtIiwic3VibWl0Rm9ybUFuZFVwZGF0ZVZpZXciLCJzZXJ2ZXJDYWxsIiwibWV0aG9kZSIsInJlIiwibWF0Y2giLCJlcnJvciIsIm5hbWUiLCJuZXdNb2RlbCIsIm1vZGVsX25hbWUiLCJtb2RlbF9xdWVyeSIsIk51bWJlciIsImxvYWQiLCJ1cGRhdGVNb2RlbCIsInZhbHVlcyIsInNhdmUiLCJmaW5kIiwiZG9tU2VsZWN0b3IiLCJyZWZyZXNoIiwicmVsb2FkIiwicmVsb2FkQ29udHJvbGxlciIsInN1Ym1pdE1vZGVsRm9ybURpc3RyaWJ1dG9yIiwiJGZvcm0iLCJlIiwiX3N1Ym1pdE1vZGVsRm9ybSIsInN1Ym1pdE1vZGVsRm9ybSIsImRlZmF1bHRTdWJtaXRNb2RlbEZvcm0iLCJpdGVyYXRlQWxsQ2hpbGRyZW4iLCJyZXMiLCJwX2xpc3QiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImRhdGEiLCJzeW5jRm9ybSIsImluc3RhbmNlX3ZhbHVlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb20iLCJwayIsImNyZWF0ZSIsInN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MiLCJjb250cm9sbGVyIiwiY2F0Y2giLCIkIiwiaHRtbCIsInN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yIiwiZmxhdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/simpleDomControl/AbstractSDC.js\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_utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n\n\n\n\nclass AbstractSDC {\n constructor() {\n this._uuid = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_3__.uuidv4)();\n this.contentUrl = '';\n this.contentReload = false;\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 = '';\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) {\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) {\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 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_3__.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_3__.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 = Object.assign({}, ...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_socket_js__WEBPACK_IMPORTED_MODULE_2__.callServer)(app[1], this._tagName, 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 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 model = $form.data('model');\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);\n } else {\n prom = model.create(instance_value);\n }\n prom.then(res => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_3__.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_3__.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,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c3RyYWN0U0RDLmpzP2Q3ZjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthbGxPZmZ9IGZyb20gXCIuL3NkY19ldmVudHMuanNcIjtcbmltcG9ydCB7YXBwfSBmcm9tIFwiLi9zZGNfbWFpbi5qc1wiO1xuaW1wb3J0IHtjYWxsU2VydmVyLCBNb2RlbH0gZnJvbSBcIi4vc2RjX3NvY2tldC5qc1wiO1xuaW1wb3J0IHt1dWlkdjQsIHNldEVycm9yc0luRm9ybSwgY2xlYXJFcnJvcnNJbkZvcm0sIHRhZ05hbWVUb0NhbWVsQ2FzZSwgdGFnTmFtZVRvUmVhZGFibGVOYW1lfSBmcm9tIFwiLi9zZGNfdXRpbHMuanNcIjtcblxuZXhwb3J0IGNsYXNzIEFic3RyYWN0U0RDIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5fdXVpZCA9IHV1aWR2NCgpO1xuICAgICAgICB0aGlzLmNvbnRlbnRVcmwgPSAnJztcbiAgICAgICAgdGhpcy5jb250ZW50UmVsb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXZlbnRzID0gW107XG4gICAgICAgIHRoaXMubG9hZF9hc3luYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pc0V2ZW50c1NldCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9hbGxFdmVudHMgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuX3VybFBhcmFtcyA9IFtdO1xuICAgICAgICB0aGlzLl9tb2RlbHMgPSBbXTtcblxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0gT2xkIGRlcHJlY2F0ZWQgcHJvcGVydGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIHRoaXMuX2Nzc1VybHMgPSBbXTtcbiAgICAgICAgdGhpcy5hZnRlclNob3cgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2FmdGVyU2hvdyBpcyBkZXByZWNhdGVkISEnKVxuICAgICAgICB9O1xuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLSBFbmQgb2xkIGRlcHJlY2F0ZWQgcHJvcGVydGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICpcbiAgICAgICAgICogQHR5cGUge3tzdHJpbmc6IEFic3RyYWN0U0RDfX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX21peGlucyA9IHt9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fdGFnTmFtZSA9ICcnO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7e3N0cmluZzpBYnN0cmFjdFNEQ319XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9jaGlsZENvbnRyb2xsZXIgPSB7fTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQHR5cGUge0Fic3RyYWN0U0RDfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fcGFyZW50Q29udHJvbGxlciA9IG51bGw7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fb25Mb2FkRG9uZSA9IGZhbHNlO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7anF1ZXJ5fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy4kY29udGFpbmVyID0gbnVsbDtcblxuICAgICAgICAvKipcbiAgICAgICAgICpcbiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9pc01peGluID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIG11c3QgYmUgaW4ge31cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIGluIGFyZ3VtZW50cyBvZlxuICAgICAqXG4gICAgICovXG4gICAgX3J1bkxpZmVjeWNsZShtZXRob2QsIGFyZ3MpIHtcbiAgICAgICAgaWYgKGFwcC5ERUJVRykge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhtZXRob2QsIHRoaXMuX3RhZ05hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJldHVyblByb21pc3NlcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5faXNNaXhpbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzTWl4aW4gPSB0cnVlO1xuICAgICAgICBmb3IgKGxldCBtaXhpbktleSBpbiB0aGlzLl9taXhpbnMpIHtcbiAgICAgICAgICAgIGxldCBtaXhpbiA9IHRoaXMuX21peGluc1ttaXhpbktleV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIG1peGluW21ldGhvZF0gPT09ICdmdW5jdGlvbicpIHtcblxuICAgICAgICAgICAgICAgIHJldHVyblByb21pc3Nlcy5wdXNoKG1peGluW21ldGhvZF0uYXBwbHkodGhpcywgYXJncykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHJldHVyblByb21pc3NlcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pc01peGluID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uSW5pdCgpIHtcbiAgICAgICAgaWYgKGFwcC5ERUJVRykge1xuICAgICAgICAgICAgY29uc29sZS5ERUJVRyhBcnJheS5hcHBseShudWxsLCBhcmd1bWVudHMpLCB0aGlzLl90YWdOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBwYXJlbnRDb250cm9sbGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50Q29udHJvbGxlcjtcbiAgICB9XG5cbiAgICBnZXQgY2hpbGRDb250cm9sbGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hpbGRDb250cm9sbGVyO1xuICAgIH1cblxuICAgIG9uTG9hZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkxpZmVjeWNsZSgnb25Mb2FkJywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICB3aWxsU2hvdygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkxpZmVjeWNsZSgnd2lsbFNob3cnLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIG9uUmVmcmVzaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkxpZmVjeWNsZSgnb25SZWZyZXNoJywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBvblJlbW92ZSgpIHtcbiAgICAgICAgdGhpcy5fcnVuTGlmZWN5Y2xlKCdvblJlbW92ZScsIGFyZ3VtZW50cylcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmVtb3ZlKCkge1xuICAgICAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMuX21vZGVscykge1xuICAgICAgICAgICAgbW9kZWwuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgX2NoaWxkQ29udHJvbGxlciA9IHRoaXMuX2NoaWxkQ29udHJvbGxlcjtcbiAgICAgICAgZm9yIChsZXQgaSBpbiBfY2hpbGRDb250cm9sbGVyKSB7XG4gICAgICAgICAgICBpZiAoX2NoaWxkQ29udHJvbGxlci5oYXNPd25Qcm9wZXJ0eShpKSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNjIG9mIF9jaGlsZENvbnRyb2xsZXJbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjYy5yZW1vdmUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm9uUmVtb3ZlIHx8IHRoaXMub25SZW1vdmUoKSkge1xuICAgICAgICAgICAgYWxsT2ZmKHRoaXMpO1xuICAgICAgICAgICAgY29uc3QgY19uYW1lID0gdGFnTmFtZVRvQ2FtZWxDYXNlKHRoaXMuX3RhZ05hbWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3BhcmVudENvbnRyb2xsZXIuX2NoaWxkQ29udHJvbGxlcltjX25hbWVdKSB7XG4gICAgICAgICAgICAgICAgbGV0IGFyciA9IHRoaXMuX3BhcmVudENvbnRyb2xsZXIuX2NoaWxkQ29udHJvbGxlcltjX25hbWVdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcnJbaV0gPT09IHRoaXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyci5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuJGNvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29udHJvbGxlcl9uYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFnTmFtZVRvUmVhZGFibGVOYW1lKHRoaXMuX3RhZ05hbWUpO1xuICAgIH1cblxuICAgIGFkZEV2ZW50KGV2ZW50LCBzZWxlY3RvciwgaGFuZGxlcikge1xuICAgICAgICB0aGlzLmdldEV2ZW50cygpO1xuICAgICAgICB0aGlzLl9hbGxFdmVudHNbZXZlbnRdID0gdGhpcy5fYWxsRXZlbnRzW2V2ZW50XSB8fCB7fTtcbiAgICAgICAgdGhpcy5fYWxsRXZlbnRzW2V2ZW50XVtzZWxlY3Rvcl0gPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGdldEV2ZW50cygpIHtcbiAgICAgICAgaWYgKHRoaXMuX2FsbEV2ZW50cykgcmV0dXJuIHRoaXMuX2FsbEV2ZW50cztcbiAgICAgICAgbGV0IGFsbEV2ZW50cyA9IFtdO1xuICAgICAgICBhbGxFdmVudHMgPSBhbGxFdmVudHMuY29uY2F0KHRoaXMuZXZlbnRzKTtcbiAgICAgICAgZm9yIChsZXQgbWl4aW5LZXkgaW4gdGhpcy5fbWl4aW5zKSB7XG4gICAgICAgICAgICBsZXQgbWl4aW4gPSB0aGlzLl9taXhpbnNbbWl4aW5LZXldO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWl4aW4uZXZlbnRzKSkge1xuICAgICAgICAgICAgICAgIGFsbEV2ZW50cyA9IGFsbEV2ZW50cy5jb25jYXQobWl4aW4uZXZlbnRzKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gKHRoaXMuX2FsbEV2ZW50cyA9IE9iamVjdC5hc3NpZ24oe30sIC4uLmFsbEV2ZW50cykpO1xuICAgIH1cblxuICAgIHBvc3QodXJsLCBhcmdzKSB7XG4gICAgICAgIHJldHVybiBhcHAucG9zdCh0aGlzLCB1cmwsIGFyZ3MpO1xuICAgIH1cblxuICAgIGdldCh1cmwsIGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIGFwcC5nZXQodGhpcywgdXJsLCBhcmdzKTtcbiAgICB9XG5cbiAgICBzdWJtaXRGb3JtKGZvcm0sIHVybCwgbWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBhcHAuc3VibWl0Rm9ybUFuZFVwZGF0ZVZpZXcodGhpcywgZm9ybSwgdXJsLCBtZXRob2QpO1xuICAgIH1cblxuICAgIHNlcnZlckNhbGwobWV0aG9kZSwgYXJncykge1xuICAgICAgICBsZXQgcmUgPSAvc2RjX3ZpZXdcXC8oW14vXSspL2k7XG4gICAgICAgIGxldCBhcHAgPSB0aGlzLmNvbnRlbnRVcmwubWF0Y2gocmUpO1xuICAgICAgICBpZiAoIWFwcCB8fCBhcHAubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignVG8gdXNlIHRoZSBzZXJ2ZXJDYWxsIGZ1bmN0aW9uIHRoZSBjb250ZW50VXJsIG11c3QgYmUgc2V0OiAnICsgdGhpcy5uYW1lKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWxsU2VydmVyKGFwcFsxXSwgdGhpcy5fdGFnTmFtZSwgbWV0aG9kZSwgYXJncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbW9kZWxfbmFtZSB7c3RyaW5nIHwgTnVtYmVyfVxuICAgICAqIEBwYXJhbSBtb2RlbF9xdWVyeSB7T2JqZWN0fVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIG5ld01vZGVsKG1vZGVsX25hbWUsIG1vZGVsX3F1ZXJ5ID0ge30pIHtcbiAgICAgICAgaWYobW9kZWxfbmFtZSBpbnN0YW5jZW9mIE51bWJlciAmJiBtb2RlbF9uYW1lLmhhc093blByb3BlcnR5KCdsb2FkJykpIHtcbiAgICAgICAgICAgIHJldHVybiBtb2RlbF9uYW1lLmxvYWQodGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBNb2RlbChtb2RlbF9uYW1lLCBtb2RlbF9xdWVyeSk7XG4gICAgICAgIHRoaXMuX21vZGVscy5wdXNoKG1vZGVsKTtcbiAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIG1vZGVsX25hbWUge3N0cmluZ31cbiAgICAgKiBAcGFyYW0gbW9kZWxfcXVlcnkge09iamVjdH1cbiAgICAgKiBAcGFyYW0gdmFsdWVzIHtPYmplY3R9XG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgdXBkYXRlTW9kZWwobW9kZWxfbmFtZSwgbW9kZWxfcXVlcnkgPSB7fSwgdmFsdWVzKSB7XG4gICAgICAgIGxldCBtb2RlbCA9IG5ldyBNb2RlbChtb2RlbF9uYW1lLCBtb2RlbF9xdWVyeSk7XG4gICAgICAgIHJldHVybiBtb2RlbC5sb2FkKCkudGhlbigoKT0+e1xuICAgICAgICAgICAgbW9kZWwudmFsdWVzIHw9IHZhbHVlcztcbiAgICAgICAgICAgIG1vZGVsLnNhdmUoKS50aGVuKCgpPT4ge1xuICAgICAgICAgICAgICAgIG1vZGVsLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGVsLnZhbHVlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkYXB0ZXIgdG8gdGhpcy4kY29udGFpbmVyLmZpbmRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZG9tU2VsZWN0b3JcbiAgICAgKi9cbiAgICBmaW5kKGRvbVNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRjb250YWluZXIuZmluZChkb21TZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgcmVmcmVzaCgpIHtcbiAgICAgICAgcmV0dXJuIGFwcC5yZWZyZXNoKHRoaXMuJGNvbnRhaW5lciwgdGhpcyk7XG4gICAgfVxuXG4gICAgcmVsb2FkKCkge1xuICAgICAgICByZXR1cm4gYXBwLnJlbG9hZENvbnRyb2xsZXIodGhpcyk7XG4gICAgfVxuXG4gICAgc3VibWl0TW9kZWxGb3JtRGlzdHJpYnV0b3IoJGZvcm0sIGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zdWJtaXRNb2RlbEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdWJtaXRNb2RlbEZvcm0oJGZvcm0sIGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJtaXRNb2RlbEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFN1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSk7XG4gICAgfVxuXG4gICAgaXRlcmF0ZUFsbENoaWxkcmVuKCkge1xuICAgICAgICBsZXQgX2NoaWxkQ29udHJvbGxlciA9IHRoaXMuX2NoaWxkQ29udHJvbGxlcjtcbiAgICAgICAgbGV0IHJlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpIGluIF9jaGlsZENvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGlmIChfY2hpbGRDb250cm9sbGVyLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2Mgb2YgX2NoaWxkQ29udHJvbGxlcltpXSkge1xuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChjYyk7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKC4uLmNjLml0ZXJhdGVBbGxDaGlsZHJlbigpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNb2RlbCBGb3JtIEV2ZW50c1xuICAgICAqL1xuICAgIGRlZmF1bHRTdWJtaXRNb2RlbEZvcm0oJGZvcm0sIGUpIHtcbiAgICAgICAgbGV0IHBfbGlzdCA9IFtdO1xuICAgICAgICBpZiAoIXRoaXMuX2lzTWl4aW4pIHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBsZXQgbW9kZWwgPSAkZm9ybS5kYXRhKCdtb2RlbCcpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gbW9kZWwuc3luY0Zvcm0oJGZvcm0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5zdGFuY2VfdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgcF9saXN0LnB1c2gobmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvbTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlX3ZhbHVlLnBrICE9PSBudWxsICYmIGluc3RhbmNlX3ZhbHVlLnBrID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb20gPSBtb2RlbC5zYXZlKGluc3RhbmNlX3ZhbHVlLnBrKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb20gPSBtb2RlbC5jcmVhdGUoaW5zdGFuY2VfdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcHJvbS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyRXJyb3JzSW5Gb3JtKCRmb3JtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0X21vZGVsX2Zvcm1fc3VjY2VzcyAmJiB0aGlzLnN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MocmVzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihjb25zdCBjb250cm9sbGVyIG9mIHRoaXMuaXRlcmF0ZUFsbENoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLnN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MgJiYgY29udHJvbGxlci5zdWJtaXRfbW9kZWxfZm9ybV9zdWNjZXNzKHJlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRFcnJvcnNJbkZvcm0oJGZvcm0sICQoZGF0YS5odG1sKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yICYmIHRoaXMuc3VibWl0X21vZGVsX2Zvcm1fZXJyb3IoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IoY29uc3QgY29udHJvbGxlciBvZiB0aGlzLml0ZXJhdGVBbGxDaGlsZHJlbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5zdWJtaXRfbW9kZWxfZm9ybV9lcnJvciAmJiBjb250cm9sbGVyLnN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocF9saXN0KS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCAuLi5yZXMuZmxhdCgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufSJdLCJuYW1lcyI6WyJhbGxPZmYiLCJhcHAiLCJjYWxsU2VydmVyIiwiTW9kZWwiLCJ1dWlkdjQiLCJzZXRFcnJvcnNJbkZvcm0iLCJjbGVhckVycm9yc0luRm9ybSIsInRhZ05hbWVUb0NhbWVsQ2FzZSIsInRhZ05hbWVUb1JlYWRhYmxlTmFtZSIsIkFic3RyYWN0U0RDIiwiY29uc3RydWN0b3IiLCJfdXVpZCIsImNvbnRlbnRVcmwiLCJjb250ZW50UmVsb2FkIiwiZXZlbnRzIiwibG9hZF9hc3luYyIsIl9pc0V2ZW50c1NldCIsIl9hbGxFdmVudHMiLCJfdXJsUGFyYW1zIiwiX21vZGVscyIsIl9jc3NVcmxzIiwiYWZ0ZXJTaG93IiwiY29uc29sZSIsIndhcm4iLCJfbWl4aW5zIiwiX3RhZ05hbWUiLCJfY2hpbGRDb250cm9sbGVyIiwiX3BhcmVudENvbnRyb2xsZXIiLCJfb25Mb2FkRG9uZSIsIiRjb250YWluZXIiLCJfaXNNaXhpbiIsIl9ydW5MaWZlY3ljbGUiLCJtZXRob2QiLCJhcmdzIiwiREVCVUciLCJkZWJ1ZyIsInJldHVyblByb21pc3NlcyIsIm1peGluS2V5IiwibWl4aW4iLCJwdXNoIiwiYXBwbHkiLCJQcm9taXNlIiwiYWxsIiwidGhlbiIsIm9uSW5pdCIsIkFycmF5IiwiYXJndW1lbnRzIiwicGFyZW50Q29udHJvbGxlciIsImNoaWxkQ29udHJvbGxlciIsIm9uTG9hZCIsIndpbGxTaG93Iiwib25SZWZyZXNoIiwib25SZW1vdmUiLCJyZW1vdmUiLCJtb2RlbCIsImNsb3NlIiwiaSIsImhhc093blByb3BlcnR5IiwiY2MiLCJjX25hbWUiLCJhcnIiLCJsZW5ndGgiLCJzcGxpY2UiLCJjb250cm9sbGVyX25hbWUiLCJhZGRFdmVudCIsImV2ZW50Iiwic2VsZWN0b3IiLCJoYW5kbGVyIiwiZ2V0RXZlbnRzIiwiYWxsRXZlbnRzIiwiY29uY2F0IiwiaXNBcnJheSIsIk9iamVjdCIsImFzc2lnbiIsInBvc3QiLCJ1cmwiLCJnZXQiLCJzdWJtaXRGb3JtIiwiZm9ybSIsInN1Ym1pdEZvcm1BbmRVcGRhdGVWaWV3Iiwic2VydmVyQ2FsbCIsIm1ldGhvZGUiLCJyZSIsIm1hdGNoIiwiZXJyb3IiLCJuYW1lIiwibmV3TW9kZWwiLCJtb2RlbF9uYW1lIiwibW9kZWxfcXVlcnkiLCJOdW1iZXIiLCJsb2FkIiwidXBkYXRlTW9kZWwiLCJ2YWx1ZXMiLCJzYXZlIiwiZmluZCIsImRvbVNlbGVjdG9yIiwicmVmcmVzaCIsInJlbG9hZCIsInJlbG9hZENvbnRyb2xsZXIiLCJzdWJtaXRNb2RlbEZvcm1EaXN0cmlidXRvciIsIiRmb3JtIiwiZSIsIl9zdWJtaXRNb2RlbEZvcm0iLCJzdWJtaXRNb2RlbEZvcm0iLCJkZWZhdWx0U3VibWl0TW9kZWxGb3JtIiwiaXRlcmF0ZUFsbENoaWxkcmVuIiwicmVzIiwicF9saXN0Iiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJkYXRhIiwic3luY0Zvcm0iLCJpbnN0YW5jZV92YWx1ZSIsInJlc29sdmUiLCJyZWplY3QiLCJwcm9tIiwicGsiLCJjcmVhdGUiLCJzdWJtaXRfbW9kZWxfZm9ybV9zdWNjZXNzIiwiY29udHJvbGxlciIsImNhdGNoIiwiJCIsImh0bWwiLCJzdWJtaXRfbW9kZWxfZm9ybV9lcnJvciIsImZsYXQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/simpleDomControl/AbstractSDC.js\n");
28
28
 
29
29
  /***/ }),
30
30
 
@@ -44,7 +44,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
44
44
  \************************************************/
45
45
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
46
46
 
47
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ STD_EVENT_BLACK_LIST: () => (/* binding */ STD_EVENT_BLACK_LIST),\n/* harmony export */ STD_EVENT_LIST: () => (/* binding */ STD_EVENT_LIST),\n/* harmony export */ initEvents: () => (/* binding */ initEvents),\n/* harmony export */ setControllerEvents: () => (/* binding */ setControllerEvents),\n/* harmony export */ windowEventHandler: () => (/* binding */ windowEventHandler)\n/* harmony export */ });\n/* harmony import */ var _sdc_view_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_view.js */ \"./src/simpleDomControl/sdc_view.js\");\n\nconst STD_EVENT_BLACK_LIST = ['onbeforeunload'];\nconst STD_EVENT_LIST = Object.keys(window).filter(key => /^on/.test(key) && !STD_EVENT_BLACK_LIST.includes(key)).map(x => x.slice(2));\nfunction windowEventHandler(event) {\n let ev_type = event.type;\n if (event.hasOwnProperty('namespace') && event.namespace && event.namespace.length) ev_type += `.${event.namespace}`;\n let $elm = $(event.target);\n let controller = null;\n let is_done = false;\n let is_last_elem = false;\n event.stopImmediatePropagation = () => is_last_elem = true;\n event.stopPropagation = () => is_last_elem = is_done = true;\n while ($elm.length) {\n let attrs = $elm.attr(`sdc_${ev_type}`);\n if (attrs) {\n if (!controller) {\n controller = (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_0__.getController)($elm);\n if (!controller) return;\n }\n while (controller) {\n attrs.split(' ').forEach(attr => {\n if (is_done) return;\n let handler = null;\n if (typeof attr === 'function') {\n handler = attr;\n } else if (typeof controller[attr] === 'function') {\n handler = controller[attr];\n } else if (typeof attr === 'string' && attr.startsWith('this.event_')) {\n handler = controller.getEvents()[ev_type];\n if (!handler) {\n return;\n }\n handler = handler[attr.slice('this.event_'.length)];\n if (!handler) {\n return;\n }\n }\n handler && handler.call(controller, $elm, event);\n });\n if (is_last_elem) return;\n controller = controller._parentController;\n }\n }\n if (is_done) return;\n $elm = $elm.parent();\n }\n return {\n res: true\n };\n}\n\n/**\n *\n */\nfunction initEvents() {\n const $window = $(window);\n STD_EVENT_LIST.forEach(ev_type => {\n $window.off(ev_type).on(ev_type, windowEventHandler);\n });\n}\n\n/**\n *\n * @param {AbstractSDC} controller\n */\nfunction setControllerEvents(controller) {\n if (controller.isEventsSet) {\n return;\n }\n const events = controller.getEvents();\n for (let ev_type in events) {\n if (events.hasOwnProperty(ev_type)) {\n let eventList = events[ev_type];\n for (let domSelector in eventList) {\n if (eventList.hasOwnProperty(domSelector)) {\n controller.find(domSelector).each(function () {\n let $elements = $(this);\n let event_list = $elements.attr(`sdc_${ev_type}`) || null;\n if (!event_list) event_list = [];else event_list = event_list.split(' ');\n const new_key = `this.event_${domSelector}`;\n if (event_list.indexOf(new_key) === -1) {\n event_list.push(new_key);\n $elements.attr(`sdc_${ev_type}`, event_list.join(' '));\n }\n });\n }\n }\n }\n }\n\n //controller.isEventsSet = true;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O1lBQ3pELElBQUksQ0FBQ29DLFVBQVUsRUFBRUEsVUFBVSxHQUFHLEVBQUUsQ0FBQyxLQUM1QkEsVUFBVSxHQUFHQSxVQUFVLENBQUNyQixLQUFLLENBQUMsR0FBRyxDQUFDO1lBQ3ZDLE1BQU1zQixPQUFPLEdBQUksY0FBYUwsV0FBWSxFQUFDO1lBQzNDLElBQUlJLFVBQVUsQ0FBQ0UsT0FBTyxDQUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtjQUNwQ0QsVUFBVSxDQUFDRyxJQUFJLENBQUNGLE9BQU8sQ0FBQztjQUN4QkYsU0FBUyxDQUFDckIsSUFBSSxDQUFFLE9BQU1kLE9BQVEsRUFBQyxFQUFFb0MsVUFBVSxDQUFDSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUQ7VUFFSixDQUFDLENBQUM7UUFDTjtNQUNKO0lBQ0o7RUFDSjs7RUFFQTtBQUNKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2RjX2NsaWVudC8uL3NyYy9zaW1wbGVEb21Db250cm9sL3NkY19kb21fZXZlbnRzLmpzPzQzMzgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtnZXRDb250cm9sbGVyfSBmcm9tICcuL3NkY192aWV3LmpzJztcblxuZXhwb3J0IGNvbnN0IFNURF9FVkVOVF9CTEFDS19MSVNUID0gWydvbmJlZm9yZXVubG9hZCddO1xuZXhwb3J0IGNvbnN0IFNURF9FVkVOVF9MSVNUID0gT2JqZWN0LmtleXMod2luZG93KS5maWx0ZXIoa2V5ID0+IC9eb24vLnRlc3Qoa2V5KSAmJiAhU1REX0VWRU5UX0JMQUNLX0xJU1QuaW5jbHVkZXMoa2V5KSkubWFwKHggPT4geC5zbGljZSgyKSk7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aW5kb3dFdmVudEhhbmRsZXIoZXZlbnQpIHtcbiAgICBsZXQgZXZfdHlwZSA9IGV2ZW50LnR5cGU7XG4gICAgaWYgKGV2ZW50Lmhhc093blByb3BlcnR5KCduYW1lc3BhY2UnKSAmJiBldmVudC5uYW1lc3BhY2UgJiYgZXZlbnQubmFtZXNwYWNlLmxlbmd0aCkgZXZfdHlwZSArPSBgLiR7ZXZlbnQubmFtZXNwYWNlfWA7XG5cbiAgICBsZXQgJGVsbSA9ICQoZXZlbnQudGFyZ2V0KTtcbiAgICBsZXQgY29udHJvbGxlciA9IG51bGw7XG4gICAgbGV0IGlzX2RvbmUgPSBmYWxzZTtcbiAgICBsZXQgaXNfbGFzdF9lbGVtID0gZmFsc2U7XG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uID0gKCkgPT4gaXNfbGFzdF9lbGVtID0gdHJ1ZTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24gPSAoKSA9PiBpc19sYXN0X2VsZW0gPSBpc19kb25lID0gdHJ1ZTtcbiAgICB3aGlsZSAoJGVsbS5sZW5ndGgpIHtcbiAgICAgICAgbGV0IGF0dHJzID0gJGVsbS5hdHRyKGBzZGNfJHtldl90eXBlfWApO1xuICAgICAgICBpZiAoYXR0cnMpIHtcbiAgICAgICAgICAgIGlmICghY29udHJvbGxlcikge1xuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBnZXRDb250cm9sbGVyKCRlbG0pO1xuICAgICAgICAgICAgICAgIGlmICghY29udHJvbGxlcikgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgICAgICBhdHRycy5zcGxpdCgnICcpLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2RvbmUpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGhhbmRsZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGF0dHIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBhdHRyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb250cm9sbGVyW2F0dHJdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyID0gY29udHJvbGxlclthdHRyXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXR0ciA9PT0gJ3N0cmluZycgJiYgYXR0ci5zdGFydHNXaXRoKCd0aGlzLmV2ZW50XycpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyID0gY29udHJvbGxlci5nZXRFdmVudHMoKVtldl90eXBlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBoYW5kbGVyW2F0dHIuc2xpY2UoJ3RoaXMuZXZlbnRfJy5sZW5ndGgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgJiYgaGFuZGxlci5jYWxsKGNvbnRyb2xsZXIsICRlbG0sIGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNfbGFzdF9lbGVtKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29udHJvbGxlciA9IGNvbnRyb2xsZXIuX3BhcmVudENvbnRyb2xsZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNfZG9uZSkgcmV0dXJuO1xuICAgICAgICAkZWxtID0gJGVsbS5wYXJlbnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge3JlczogdHJ1ZX07XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRFdmVudHMoKSB7XG4gICAgY29uc3QgJHdpbmRvdyA9ICQod2luZG93KTtcbiAgICBTVERfRVZFTlRfTElTVC5mb3JFYWNoKGV2X3R5cGUgPT4ge1xuICAgICAgICAkd2luZG93Lm9mZihldl90eXBlKS5vbihldl90eXBlLCB3aW5kb3dFdmVudEhhbmRsZXIpO1xuICAgIH0pO1xufVxuXG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IGNvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldENvbnRyb2xsZXJFdmVudHMoY29udHJvbGxlcikge1xuXG4gICAgaWYgKGNvbnRyb2xsZXIuaXNFdmVudHNTZXQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50cyA9IGNvbnRyb2xsZXIuZ2V0RXZlbnRzKCk7XG4gICAgZm9yIChsZXQgZXZfdHlwZSBpbiBldmVudHMpIHtcbiAgICAgICAgaWYgKGV2ZW50cy5oYXNPd25Qcm9wZXJ0eShldl90eXBlKSkge1xuICAgICAgICAgICAgbGV0IGV2ZW50TGlzdCA9IGV2ZW50c1tldl90eXBlXTtcbiAgICAgICAgICAgIGZvciAobGV0IGRvbVNlbGVjdG9yIGluIGV2ZW50TGlzdCkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudExpc3QuaGFzT3duUHJvcGVydHkoZG9tU2VsZWN0b3IpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZmluZChkb21TZWxlY3RvcikuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgJGVsZW1lbnRzID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBldmVudF9saXN0ID0gJGVsZW1lbnRzLmF0dHIoYHNkY18ke2V2X3R5cGV9YCkgfHwgbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnRfbGlzdCkgZXZlbnRfbGlzdCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBldmVudF9saXN0ID0gZXZlbnRfbGlzdC5zcGxpdCgnICcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3X2tleSA9IGB0aGlzLmV2ZW50XyR7ZG9tU2VsZWN0b3J9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudF9saXN0LmluZGV4T2YobmV3X2tleSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfbGlzdC5wdXNoKG5ld19rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50cy5hdHRyKGBzZGNfJHtldl90eXBlfWAsIGV2ZW50X2xpc3Quam9pbignICcpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vY29udHJvbGxlci5pc0V2ZW50c1NldCA9IHRydWU7XG59Il0sIm5hbWVzIjpbImdldENvbnRyb2xsZXIiLCJTVERfRVZFTlRfQkxBQ0tfTElTVCIsIlNURF9FVkVOVF9MSVNUIiwiT2JqZWN0Iiwia2V5cyIsIndpbmRvdyIsImZpbHRlciIsImtleSIsInRlc3QiLCJpbmNsdWRlcyIsIm1hcCIsIngiLCJzbGljZSIsIndpbmRvd0V2ZW50SGFuZGxlciIsImV2ZW50IiwiZXZfdHlwZSIsInR5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm5hbWVzcGFjZSIsImxlbmd0aCIsIiRlbG0iLCIkIiwidGFyZ2V0IiwiY29udHJvbGxlciIsImlzX2RvbmUiLCJpc19sYXN0X2VsZW0iLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJzdG9wUHJvcGFnYXRpb24iLCJhdHRycyIsImF0dHIiLCJzcGxpdCIsImZvckVhY2giLCJoYW5kbGVyIiwic3RhcnRzV2l0aCIsImdldEV2ZW50cyIsImNhbGwiLCJfcGFyZW50Q29udHJvbGxlciIsInBhcmVudCIsInJlcyIsImluaXRFdmVudHMiLCIkd2luZG93Iiwib2ZmIiwib24iLCJzZXRDb250cm9sbGVyRXZlbnRzIiwiaXNFdmVudHNTZXQiLCJldmVudHMiLCJldmVudExpc3QiLCJkb21TZWxlY3RvciIsImZpbmQiLCJlYWNoIiwiJGVsZW1lbnRzIiwiZXZlbnRfbGlzdCIsIm5ld19rZXkiLCJpbmRleE9mIiwicHVzaCIsImpvaW4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/simpleDomControl/sdc_dom_events.js\n");
47
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ STD_EVENT_BLACK_LIST: () => (/* binding */ STD_EVENT_BLACK_LIST),\n/* harmony export */ STD_EVENT_LIST: () => (/* binding */ STD_EVENT_LIST),\n/* harmony export */ initEvents: () => (/* binding */ initEvents),\n/* harmony export */ setControllerEvents: () => (/* binding */ setControllerEvents),\n/* harmony export */ windowEventHandler: () => (/* binding */ windowEventHandler)\n/* harmony export */ });\n/* harmony import */ var _sdc_view_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_view.js */ \"./src/simpleDomControl/sdc_view.js\");\n\nconst STD_EVENT_BLACK_LIST = ['onbeforeunload'];\nconst STD_EVENT_LIST = Object.keys(window).filter(key => /^on/.test(key) && !STD_EVENT_BLACK_LIST.includes(key)).map(x => x.slice(2));\nfunction windowEventHandler(event) {\n let ev_type = event.type;\n if (event.hasOwnProperty('namespace') && event.namespace && event.namespace.length) ev_type += `.${event.namespace}`;\n let $elm = $(event.target);\n let controller = null;\n let is_done = false;\n let is_last_elem = false;\n event.stopImmediatePropagation = () => is_last_elem = true;\n event.stopPropagation = () => is_last_elem = is_done = true;\n while ($elm.length) {\n let attrs = $elm.attr(`sdc_${ev_type}`);\n if (attrs) {\n if (!controller) {\n controller = (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_0__.getController)($elm);\n if (!controller) return;\n }\n while (controller) {\n attrs.split(' ').forEach(attr => {\n if (is_done) return;\n let handler = null;\n if (typeof attr === 'function') {\n handler = attr;\n } else if (typeof controller[attr] === 'function') {\n handler = controller[attr];\n } else if (typeof attr === 'string' && attr.startsWith('this.event_')) {\n handler = controller.getEvents()[ev_type];\n if (!handler) {\n return;\n }\n handler = handler[attr.slice('this.event_'.length)];\n if (!handler) {\n return;\n }\n }\n handler && handler.call(controller, $elm, event);\n });\n if (is_last_elem) return;\n controller = controller._parentController;\n }\n }\n if (is_done) return;\n $elm = $elm.parent();\n }\n return {\n res: true\n };\n}\n\n/**\n *\n */\nfunction initEvents() {\n const $window = $(window);\n STD_EVENT_LIST.forEach(ev_type => {\n $window.off(ev_type).on(ev_type, windowEventHandler);\n });\n}\n\n/**\n *\n * @param {AbstractSDC} controller\n */\nfunction setControllerEvents(controller) {\n if (controller._isEventsSet) {\n return;\n }\n const events = controller.getEvents();\n for (let ev_type in events) {\n if (events.hasOwnProperty(ev_type)) {\n let eventList = events[ev_type];\n for (let domSelector in eventList) {\n if (eventList.hasOwnProperty(domSelector)) {\n controller.find(domSelector).each(function () {\n let $elements = $(this);\n let event_list = $elements.attr(`sdc_${ev_type}`) || null;\n if (!event_list) event_list = [];else event_list = event_list.split(' ');\n const new_key = `this.event_${domSelector}`;\n if (event_list.indexOf(new_key) === -1) {\n event_list.push(new_key);\n $elements.attr(`sdc_${ev_type}`, event_list.join(' '));\n }\n });\n }\n }\n }\n }\n // TODO: Is it needed\n //controller._isEventsSet = true;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O1lBQ3pELElBQUksQ0FBQ29DLFVBQVUsRUFBRUEsVUFBVSxHQUFHLEVBQUUsQ0FBQyxLQUM1QkEsVUFBVSxHQUFHQSxVQUFVLENBQUNyQixLQUFLLENBQUMsR0FBRyxDQUFDO1lBQ3ZDLE1BQU1zQixPQUFPLEdBQUksY0FBYUwsV0FBWSxFQUFDO1lBQzNDLElBQUlJLFVBQVUsQ0FBQ0UsT0FBTyxDQUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtjQUNwQ0QsVUFBVSxDQUFDRyxJQUFJLENBQUNGLE9BQU8sQ0FBQztjQUN4QkYsU0FBUyxDQUFDckIsSUFBSSxDQUFFLE9BQU1kLE9BQVEsRUFBQyxFQUFFb0MsVUFBVSxDQUFDSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUQ7VUFFSixDQUFDLENBQUM7UUFDTjtNQUNKO0lBQ0o7RUFDSjtFQUNBO0VBQ0E7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovL3NkY19jbGllbnQvLi9zcmMvc2ltcGxlRG9tQ29udHJvbC9zZGNfZG9tX2V2ZW50cy5qcz80MzM4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Z2V0Q29udHJvbGxlcn0gZnJvbSAnLi9zZGNfdmlldy5qcyc7XG5cbmV4cG9ydCBjb25zdCBTVERfRVZFTlRfQkxBQ0tfTElTVCA9IFsnb25iZWZvcmV1bmxvYWQnXTtcbmV4cG9ydCBjb25zdCBTVERfRVZFTlRfTElTVCA9IE9iamVjdC5rZXlzKHdpbmRvdykuZmlsdGVyKGtleSA9PiAvXm9uLy50ZXN0KGtleSkgJiYgIVNURF9FVkVOVF9CTEFDS19MSVNULmluY2x1ZGVzKGtleSkpLm1hcCh4ID0+IHguc2xpY2UoMikpO1xuXG5leHBvcnQgZnVuY3Rpb24gd2luZG93RXZlbnRIYW5kbGVyKGV2ZW50KSB7XG4gICAgbGV0IGV2X3R5cGUgPSBldmVudC50eXBlO1xuICAgIGlmIChldmVudC5oYXNPd25Qcm9wZXJ0eSgnbmFtZXNwYWNlJykgJiYgZXZlbnQubmFtZXNwYWNlICYmIGV2ZW50Lm5hbWVzcGFjZS5sZW5ndGgpIGV2X3R5cGUgKz0gYC4ke2V2ZW50Lm5hbWVzcGFjZX1gO1xuXG4gICAgbGV0ICRlbG0gPSAkKGV2ZW50LnRhcmdldCk7XG4gICAgbGV0IGNvbnRyb2xsZXIgPSBudWxsO1xuICAgIGxldCBpc19kb25lID0gZmFsc2U7XG4gICAgbGV0IGlzX2xhc3RfZWxlbSA9IGZhbHNlO1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiA9ICgpID0+IGlzX2xhc3RfZWxlbSA9IHRydWU7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uID0gKCkgPT4gaXNfbGFzdF9lbGVtID0gaXNfZG9uZSA9IHRydWU7XG4gICAgd2hpbGUgKCRlbG0ubGVuZ3RoKSB7XG4gICAgICAgIGxldCBhdHRycyA9ICRlbG0uYXR0cihgc2RjXyR7ZXZfdHlwZX1gKTtcbiAgICAgICAgaWYgKGF0dHJzKSB7XG4gICAgICAgICAgICBpZiAoIWNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyID0gZ2V0Q29udHJvbGxlcigkZWxtKTtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2xsZXIpIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICAgICAgYXR0cnMuc3BsaXQoJyAnKS5mb3JFYWNoKChhdHRyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc19kb25lKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGxldCBoYW5kbGVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhdHRyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyID0gYXR0cjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29udHJvbGxlclthdHRyXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciA9IGNvbnRyb2xsZXJbYXR0cl07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGF0dHIgPT09ICdzdHJpbmcnICYmIGF0dHIuc3RhcnRzV2l0aCgndGhpcy5ldmVudF8nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciA9IGNvbnRyb2xsZXIuZ2V0RXZlbnRzKClbZXZfdHlwZV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyID0gaGFuZGxlclthdHRyLnNsaWNlKCd0aGlzLmV2ZW50XycubGVuZ3RoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVyICYmIGhhbmRsZXIuY2FsbChjb250cm9sbGVyLCAkZWxtLCBldmVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzX2xhc3RfZWxlbSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjb250cm9sbGVyLl9wYXJlbnRDb250cm9sbGVyXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzX2RvbmUpIHJldHVybjtcbiAgICAgICAgJGVsbSA9ICRlbG0ucGFyZW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtyZXM6IHRydWV9O1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0RXZlbnRzKCkge1xuICAgIGNvbnN0ICR3aW5kb3cgPSAkKHdpbmRvdyk7XG4gICAgU1REX0VWRU5UX0xJU1QuZm9yRWFjaChldl90eXBlID0+IHtcbiAgICAgICAgJHdpbmRvdy5vZmYoZXZfdHlwZSkub24oZXZfdHlwZSwgd2luZG93RXZlbnRIYW5kbGVyKTtcbiAgICB9KTtcbn1cblxuXG4vKipcbiAqXG4gKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBjb250cm9sbGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb250cm9sbGVyRXZlbnRzKGNvbnRyb2xsZXIpIHtcblxuICAgIGlmIChjb250cm9sbGVyLl9pc0V2ZW50c1NldCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXZlbnRzID0gY29udHJvbGxlci5nZXRFdmVudHMoKTtcbiAgICBmb3IgKGxldCBldl90eXBlIGluIGV2ZW50cykge1xuICAgICAgICBpZiAoZXZlbnRzLmhhc093blByb3BlcnR5KGV2X3R5cGUpKSB7XG4gICAgICAgICAgICBsZXQgZXZlbnRMaXN0ID0gZXZlbnRzW2V2X3R5cGVdO1xuICAgICAgICAgICAgZm9yIChsZXQgZG9tU2VsZWN0b3IgaW4gZXZlbnRMaXN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50TGlzdC5oYXNPd25Qcm9wZXJ0eShkb21TZWxlY3RvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5maW5kKGRvbVNlbGVjdG9yKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAkZWxlbWVudHMgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV2ZW50X2xpc3QgPSAkZWxlbWVudHMuYXR0cihgc2RjXyR7ZXZfdHlwZX1gKSB8fCBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudF9saXN0KSBldmVudF9saXN0ID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGV2ZW50X2xpc3QgPSBldmVudF9saXN0LnNwbGl0KCcgJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdfa2V5ID0gYHRoaXMuZXZlbnRfJHtkb21TZWxlY3Rvcn1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50X2xpc3QuaW5kZXhPZihuZXdfa2V5KSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF9saXN0LnB1c2gobmV3X2tleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnRzLmF0dHIoYHNkY18ke2V2X3R5cGV9YCwgZXZlbnRfbGlzdC5qb2luKCcgJykpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFRPRE86IElzIGl0IG5lZWRlZFxuICAgIC8vY29udHJvbGxlci5faXNFdmVudHNTZXQgPSB0cnVlO1xufSJdLCJuYW1lcyI6WyJnZXRDb250cm9sbGVyIiwiU1REX0VWRU5UX0JMQUNLX0xJU1QiLCJTVERfRVZFTlRfTElTVCIsIk9iamVjdCIsImtleXMiLCJ3aW5kb3ciLCJmaWx0ZXIiLCJrZXkiLCJ0ZXN0IiwiaW5jbHVkZXMiLCJtYXAiLCJ4Iiwic2xpY2UiLCJ3aW5kb3dFdmVudEhhbmRsZXIiLCJldmVudCIsImV2X3R5cGUiLCJ0eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuYW1lc3BhY2UiLCJsZW5ndGgiLCIkZWxtIiwiJCIsInRhcmdldCIsImNvbnRyb2xsZXIiLCJpc19kb25lIiwiaXNfbGFzdF9lbGVtIiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwic3RvcFByb3BhZ2F0aW9uIiwiYXR0cnMiLCJhdHRyIiwic3BsaXQiLCJmb3JFYWNoIiwiaGFuZGxlciIsInN0YXJ0c1dpdGgiLCJnZXRFdmVudHMiLCJjYWxsIiwiX3BhcmVudENvbnRyb2xsZXIiLCJwYXJlbnQiLCJyZXMiLCJpbml0RXZlbnRzIiwiJHdpbmRvdyIsIm9mZiIsIm9uIiwic2V0Q29udHJvbGxlckV2ZW50cyIsIl9pc0V2ZW50c1NldCIsImV2ZW50cyIsImV2ZW50TGlzdCIsImRvbVNlbGVjdG9yIiwiZmluZCIsImVhY2giLCIkZWxlbWVudHMiLCJldmVudF9saXN0IiwibmV3X2tleSIsImluZGV4T2YiLCJwdXNoIiwiam9pbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/simpleDomControl/sdc_dom_events.js\n");
48
48
 
49
49
  /***/ }),
50
50
 
@@ -64,7 +64,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
64
64
  \******************************************/
65
65
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
66
66
 
67
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ app: () => (/* binding */ app)\n/* harmony export */ });\n/* harmony import */ var _sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n/* harmony import */ var _sdc_view_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_view.js */ \"./src/simpleDomControl/sdc_view.js\");\n/* harmony import */ var _AbstractSDC_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AbstractSDC.js */ \"./src/simpleDomControl/AbstractSDC.js\");\n/* harmony import */ var _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_controller.js */ \"./src/simpleDomControl/sdc_controller.js\");\n/* harmony import */ var _sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sdc_dom_events.js */ \"./src/simpleDomControl/sdc_dom_events.js\");\n/* harmony import */ var _sdc_events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n/* harmony import */ var _sdc_socket_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./sdc_socket.js */ \"./src/simpleDomControl/sdc_socket.js\");\n\n\n\n\n\n\n\nconst PROPERTIES_UPDATE = {\n 'classname': 'class'\n};\nlet sdcDomFragment = function (element, props) {\n let $new_elem,\n is_self = false;\n if (typeof element === 'string') {\n $new_elem = $(document.createElement(element));\n } else {\n const tagName = `this.${element.name}`;\n $new_elem = $(document.createElement(tagName));\n $new_elem.data('handler', element);\n is_self = true;\n }\n if (props) {\n Object.entries(props).forEach(([k, v]) => {\n if (k.startsWith('on')) {\n $new_elem[0].addEventListener(k.substring(2).toLowerCase(), v);\n } else {\n if (PROPERTIES_UPDATE[k.toLowerCase()]) {\n k = PROPERTIES_UPDATE[k.toLowerCase()];\n }\n $new_elem[0].setAttribute(k, v);\n }\n });\n }\n if (is_self) {\n $new_elem.addClass('_bind_to_update_handler _with_handler');\n }\n return $new_elem;\n};\nwindow.sdcDom = function (tagName, props, ...children) {\n if (!tagName) {\n return '';\n }\n const $new_elem = sdcDomFragment(tagName, props);\n for (const c of children) {\n $new_elem.append(c);\n }\n return $new_elem;\n};\nlet app = {\n CSRF_TOKEN: window.CSRF_TOKEN || '',\n LANGUAGE_CODE: window.LANGUAGE_CODE || 'en',\n DEBUG: window.DEBUG || false,\n VERSION: window.VERSION || '0.0',\n tagNames: [],\n Global: _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.Global,\n rootController: null,\n _isInit: false,\n _origin_trigger: null,\n init_sdc: () => {\n if (!app._isInit) {\n app._isInit = true;\n if (!app._origin_trigger) {\n app._origin_trigger = $.fn.trigger;\n $.fn.trigger = function (event) {\n const ev_type = {}.hasOwnProperty.call(event, \"type\") ? event.type : event;\n if (!_sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.STD_EVENT_LIST.includes(ev_type)) {\n _sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.STD_EVENT_LIST.push(ev_type);\n $(window).on(ev_type, _sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.windowEventHandler);\n }\n return app._origin_trigger.call(this, event);\n };\n app.updateJquery();\n } else {\n (0,_sdc_socket_js__WEBPACK_IMPORTED_MODULE_6__.close)();\n }\n (0,_sdc_socket_js__WEBPACK_IMPORTED_MODULE_6__.isConnected)();\n (0,_sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.initEvents)();\n app.rootController = app.rootController || new _AbstractSDC_js__WEBPACK_IMPORTED_MODULE_2__.AbstractSDC();\n }\n app.tagNames = (0,_sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.tagList)();\n for (let [tag, controller] of Object.entries(app.Global)) {\n if (!controller.$container) _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.Global[tag].$container = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.getBody)();\n }\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.replaceTagElementsInContainer)(app.tagNames, (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.getBody)(), app.rootController);\n },\n updateJquery: () => {\n $.fn.safeReplace = function ($elem) {\n return app.safeReplace($(this), $elem);\n };\n $.fn.safeEmpty = function () {\n return app.safeEmpty($(this));\n };\n $.fn.safeRemove = function () {\n return app.safeRemove($(this));\n };\n },\n controllerToTag: Controller => {\n let tagName = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.camelCaseToTagName)(Controller.name);\n return tagName.replace(/-controller$/, '');\n },\n /**\n *\n * @param {AbstractSDC} Controller\n */\n registerGlobal: Controller => {\n let tagName = app.controllerToTag(Controller);\n let globalController = new Controller();\n _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.controllerList[tagName] = [globalController, []];\n globalController._tagName = tagName;\n window[(0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.tagNameToCamelCase)(tagName)] = _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.Global[(0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.tagNameToCamelCase)(tagName)] = globalController;\n },\n cleanCache: () => {\n (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.cleanCache)();\n },\n /**\n *\n * @param {AbstractSDC} Controller\n */\n register: Controller => {\n let tagName = app.controllerToTag(Controller);\n _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.controllerList[tagName] = [Controller, []];\n Controller.prototype._tagName = tagName;\n return {\n /**\n *\n * @param {Array<string>} mixins Controller tag names\n */\n addMixin: (...mixins) => {\n for (let mixin of mixins) {\n let mixinName;\n if (typeof mixin === \"string\") {\n mixinName = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.camelCaseToTagName)(mixin);\n } else if (mixin) {\n mixinName = app.controllerToTag(mixin);\n }\n _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.controllerList[tagName][1].push(mixinName);\n }\n }\n };\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @param {string} url\n * @param {object} args\n * @return {Promise}\n */\n post: (controller, url, args) => {\n if (!args) {\n args = {};\n }\n args.CSRF_TOKEN = app.CSRF_TOKEN;\n return app.ajax(controller, url, params, $.post);\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @param {string} url\n * @param {object} args\n * @return {Promise}\n */\n get: (controller, url, args) => {\n return app.ajax(controller, url, args, $.get);\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @param {string} url\n * @param {object} args\n * @param {function} method $.get or $.post\n * @return {Promise}\n */\n ajax: (controller, url, args, method) => {\n if (!args) {\n args = {};\n }\n args.VERSION = app.VERSION;\n args._method = args._method || 'api';\n const p = new Promise((resolve, reject) => {\n return method(url, args).then((a, b, c) => {\n resolve(a, b, c);\n if (a.status === 'redirect') {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_5__.trigger)('onNavLink', a['url-link']);\n } else {\n p.then(() => {\n app.refresh(controller.$container);\n });\n }\n }).catch(reject);\n });\n return p;\n },\n submitFormAndUpdateView: (controller, form, url, method) => {\n let formData = new FormData(form);\n const redirector = a => {\n if (a['url-link']) {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_5__.trigger)('onNavLink', a['url-link']);\n } else {\n window.location.href = a['url'];\n }\n };\n const p = new Promise((resolve, reject) => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.uploadFileFormData)(formData, url || form.action, method || form.method).then((a, b, c) => {\n resolve(a, b, c);\n if (a.status === 'redirect') {\n redirector(a);\n } else {\n p.then(() => {\n app.refresh(controller.$container);\n });\n }\n }).catch((a, b, c) => {\n if (a.status === 301) {\n a = a.responseJSON;\n redirector(a);\n resolve(a, b, c);\n } else {\n reject(a, b, c);\n }\n });\n });\n return p;\n },\n submitForm: (form, url, method) => {\n let formData = new FormData(form);\n return new Promise((resolve, reject) => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.uploadFileFormData)(formData, url || form.action, method || form.method).then(resolve).catch(reject);\n });\n },\n /**\n *\n * @param {jquery} $elem\n * @return {AbstractSDC}\n */\n getController: $elem => (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.getController)($elem),\n /**\n * safeEmpty removes all content of a dom\n * and deletes all child controller safely.\n *\n * @param $elem - jQuery DOM container to be emptyed\n */\n safeEmpty: $elem => {\n let $children = $elem.children();\n $children.each(function (_, element) {\n let $element = $(element);\n app.safeRemove($element);\n });\n return $elem;\n },\n /**\n * safeReplace removes all content of a dom\n * and deletes all child controller safely.\n *\n * @param $elem - jQuery DOM to be repleaced\n * @param $new - jQuery new DOM container\n */\n safeReplace: ($elem, $new) => {\n $new.insertBefore($elem);\n return app.safeRemove($elem);\n },\n /**\n * safeRemove removes a dom and deletes all child controller safely.\n *\n * @param $elem - jQuery Dom\n */\n safeRemove: $elem => {\n $elem.each(function () {\n let $this = $(this);\n if ($this.data(`${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.DATA_CONTROLLER_KEY}`)) {\n $this.data(`${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.DATA_CONTROLLER_KEY}`).remove();\n }\n });\n $elem.find(`.${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.CONTROLLER_CLASS}`).each(function () {\n const controller = $(this).data(`${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.DATA_CONTROLLER_KEY}`);\n controller && controller.remove();\n });\n return $elem.remove();\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @return {Promise<jQuery>}\n */\n reloadController: controller => {\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.reloadHTMLController)(controller).then(html => {\n let $html = $(html);\n controller._childController = {};\n (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.replaceTagElementsInContainer)(app.tagNames, $html, controller).then(() => {\n app.safeEmpty(controller.$container);\n controller.$container.append($html);\n app.refresh(controller.$container, controller);\n });\n });\n },\n /**\n *\n * @param {jquery} $container\n * @param {AbstractSDC} leafController\n * @return {Promise<jQuery>}\n */\n refresh: ($container, leafController) => {\n if (!leafController) {\n leafController = app.getController($container);\n }\n if (!leafController) {\n return (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.promiseDummyFactory)();\n }\n let controller = leafController;\n let controllerList = [];\n while (controller) {\n controller.isEventsSet = false;\n controllerList.unshift(controller);\n controller = controller._parentController;\n }\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.replaceTagElementsInContainer)(app.tagNames, leafController.$container, leafController).then(() => {\n (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.reloadMethodHTML)(leafController).then(() => {\n for (let con of controllerList) {\n (0,_sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.setControllerEvents)(con);\n }\n leafController.onRefresh($container);\n });\n });\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTtFQUNJa0MsT0FBTyxFQUFFQSxDQUFDakMsVUFBVSxFQUFFMEQsY0FBYyxLQUFLO0lBQ3JDLElBQUksQ0FBQ0EsY0FBYyxFQUFFO01BQ2pCQSxjQUFjLEdBQUdoRixHQUFHLENBQUMxQyxhQUFhLENBQUNnRSxVQUFVLENBQUM7SUFDbEQ7SUFFQSxJQUFJLENBQUMwRCxjQUFjLEVBQUU7TUFDakIsT0FBTy9ILGtFQUFtQixDQUFDLENBQUM7SUFDaEM7SUFFQSxJQUFJb0UsVUFBVSxHQUFHMkQsY0FBYztJQUMvQixJQUFJckgsY0FBYyxHQUFHLEVBQUU7SUFDdkIsT0FBTzBELFVBQVUsRUFBRTtNQUNmQSxVQUFVLENBQUM0RCxXQUFXLEdBQUcsS0FBSztNQUM5QnRILGNBQWMsQ0FBQ3VILE9BQU8sQ0FBQzdELFVBQVUsQ0FBQztNQUNsQ0EsVUFBVSxHQUFHQSxVQUFVLENBQUM4RCxpQkFBaUI7SUFDN0M7SUFFQSxPQUFPakksMkVBQTZCLENBQUM4QyxHQUFHLENBQUNLLFFBQVEsRUFBRTJFLGNBQWMsQ0FBQzFELFVBQVUsRUFBRTBELGNBQWMsQ0FBQyxDQUFDN0IsSUFBSSxDQUFDLE1BQU07TUFDckczRiw4REFBZ0IsQ0FBQ3dILGNBQWMsQ0FBQyxDQUFDN0IsSUFBSSxDQUFDLE1BQU07UUFDeEMsS0FBSyxJQUFJaUMsR0FBRyxJQUFJekgsY0FBYyxFQUFFO1VBQzVCRyx1RUFBbUIsQ0FBQ3NILEdBQUcsQ0FBQztRQUM1QjtRQUVBSixjQUFjLENBQUNLLFNBQVMsQ0FBQy9ELFVBQVUsQ0FBQztNQUN4QyxDQUFDLENBQUM7SUFFTixDQUFDLENBQUM7RUFDTjtBQUNKLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zZGNfY2xpZW50Ly4vc3JjL3NpbXBsZURvbUNvbnRyb2wvc2RjX21haW4uanM/MDhmYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGNhbWVsQ2FzZVRvVGFnTmFtZSxcbiAgICB0YWdOYW1lVG9DYW1lbENhc2UsXG4gICAgZ2V0Qm9keSxcbiAgICB1cGxvYWRGaWxlRm9ybURhdGEsXG4gICAgcHJvbWlzZUR1bW15RmFjdG9yeVxufSBmcm9tIFwiLi9zZGNfdXRpbHMuanNcIjtcbmltcG9ydCB7XG4gICAgcmVwbGFjZVRhZ0VsZW1lbnRzSW5Db250YWluZXIsXG4gICAgcmVsb2FkSFRNTENvbnRyb2xsZXIsXG4gICAgREFUQV9DT05UUk9MTEVSX0tFWSxcbiAgICBDT05UUk9MTEVSX0NMQVNTLCBnZXRDb250cm9sbGVyLCBjbGVhbkNhY2hlLCByZWxvYWRNZXRob2RIVE1MXG59IGZyb20gXCIuL3NkY192aWV3LmpzXCI7XG5pbXBvcnQge0Fic3RyYWN0U0RDfSBmcm9tIFwiLi9BYnN0cmFjdFNEQy5qc1wiO1xuaW1wb3J0IHtHbG9iYWwsIGNvbnRyb2xsZXJMaXN0LCB0YWdMaXN0fSBmcm9tIFwiLi9zZGNfY29udHJvbGxlci5qc1wiO1xuaW1wb3J0IHtpbml0RXZlbnRzLCBzZXRDb250cm9sbGVyRXZlbnRzLCBTVERfRVZFTlRfTElTVCwgd2luZG93RXZlbnRIYW5kbGVyfSBmcm9tIFwiLi9zZGNfZG9tX2V2ZW50cy5qc1wiO1xuaW1wb3J0IHt0cmlnZ2VyfSBmcm9tIFwiLi9zZGNfZXZlbnRzLmpzXCI7XG5pbXBvcnQge2lzQ29ubmVjdGVkLCBjbG9zZX0gZnJvbSBcIi4vc2RjX3NvY2tldC5qc1wiO1xuXG5jb25zdCBQUk9QRVJUSUVTX1VQREFURSA9IHsnY2xhc3NuYW1lJzogJ2NsYXNzJ31cblxubGV0IHNkY0RvbUZyYWdtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIHByb3BzKSB7XG4gICAgbGV0ICRuZXdfZWxlbSwgaXNfc2VsZiA9IGZhbHNlO1xuICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgJG5ld19lbGVtID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0YWdOYW1lID0gYHRoaXMuJHtlbGVtZW50Lm5hbWV9YDtcbiAgICAgICAgJG5ld19lbGVtID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpKTtcbiAgICAgICAgJG5ld19lbGVtLmRhdGEoJ2hhbmRsZXInLCBlbGVtZW50KTtcbiAgICAgICAgaXNfc2VsZiA9IHRydWVcbiAgICB9XG5cblxuICAgIGlmIChwcm9wcykge1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wcykuZm9yRWFjaCgoW2ssIHZdKSA9PiB7XG4gICAgICAgICAgICBpZiAoay5zdGFydHNXaXRoKCdvbicpKSB7XG4gICAgICAgICAgICAgICAgJG5ld19lbGVtWzBdLmFkZEV2ZW50TGlzdGVuZXIoay5zdWJzdHJpbmcoMikudG9Mb3dlckNhc2UoKSwgdik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmKFBST1BFUlRJRVNfVVBEQVRFW2sudG9Mb3dlckNhc2UoKV0pIHtcbiAgICAgICAgICAgICAgICAgICAgayA9IFBST1BFUlRJRVNfVVBEQVRFW2sudG9Mb3dlckNhc2UoKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRuZXdfZWxlbVswXS5zZXRBdHRyaWJ1dGUoaywgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc19zZWxmKSB7XG4gICAgICAgICRuZXdfZWxlbS5hZGRDbGFzcygnX2JpbmRfdG9fdXBkYXRlX2hhbmRsZXIgX3dpdGhfaGFuZGxlcicpO1xuICAgIH1cblxuICAgIHJldHVybiAkbmV3X2VsZW07XG59XG5cbndpbmRvdy5zZGNEb20gPSBmdW5jdGlvbiAodGFnTmFtZSwgcHJvcHMsIC4uLmNoaWxkcmVuKSB7XG4gICAgaWYgKCF0YWdOYW1lKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgJG5ld19lbGVtID0gc2RjRG9tRnJhZ21lbnQodGFnTmFtZSwgcHJvcHMpO1xuICAgIGZvciAoY29uc3QgYyBvZiBjaGlsZHJlbikge1xuICAgICAgICAkbmV3X2VsZW0uYXBwZW5kKGMpO1xuICAgIH1cbiAgICByZXR1cm4gJG5ld19lbGVtO1xuXG59XG5cbmV4cG9ydCBsZXQgYXBwID0ge1xuICAgIENTUkZfVE9LRU46IHdpbmRvdy5DU1JGX1RPS0VOIHx8ICcnLFxuICAgIExBTkdVQUdFX0NPREU6IHdpbmRvdy5MQU5HVUFHRV9DT0RFIHx8ICdlbicsXG4gICAgREVCVUc6IHdpbmRvdy5ERUJVRyB8fCBmYWxzZSxcbiAgICBWRVJTSU9OOiB3aW5kb3cuVkVSU0lPTiB8fCAnMC4wJyxcbiAgICB0YWdOYW1lczogW10sXG4gICAgR2xvYmFsOiBHbG9iYWwsXG4gICAgcm9vdENvbnRyb2xsZXI6IG51bGwsXG4gICAgX2lzSW5pdDogZmFsc2UsXG4gICAgX29yaWdpbl90cmlnZ2VyOiBudWxsLFxuXG4gICAgaW5pdF9zZGM6ICgpID0+IHtcbiAgICAgICAgaWYgKCFhcHAuX2lzSW5pdCkge1xuICAgICAgICAgICAgYXBwLl9pc0luaXQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKCFhcHAuX29yaWdpbl90cmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgYXBwLl9vcmlnaW5fdHJpZ2dlciA9ICQuZm4udHJpZ2dlcjtcbiAgICAgICAgICAgICAgICAkLmZuLnRyaWdnZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZfdHlwZSA9IHt9Lmhhc093blByb3BlcnR5LmNhbGwoZXZlbnQsIFwidHlwZVwiKSA/IGV2ZW50LnR5cGUgOiBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFTVERfRVZFTlRfTElTVC5pbmNsdWRlcyhldl90eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgU1REX0VWRU5UX0xJU1QucHVzaChldl90eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQod2luZG93KS5vbihldl90eXBlLCB3aW5kb3dFdmVudEhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcHAuX29yaWdpbl90cmlnZ2VyLmNhbGwodGhpcywgZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGFwcC51cGRhdGVKcXVlcnkoKTtcbiAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpc0Nvbm5lY3RlZCgpO1xuXG4gICAgICAgICAgICBpbml0RXZlbnRzKCk7XG5cbiAgICAgICAgICAgIGFwcC5yb290Q29udHJvbGxlciA9IGFwcC5yb290Q29udHJvbGxlciB8fCBuZXcgQWJzdHJhY3RTREMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcC50YWdOYW1lcyA9IHRhZ0xpc3QoKTtcblxuICAgICAgICBmb3IobGV0IFt0YWcsIGNvbnRyb2xsZXJdIG9mIE9iamVjdC5lbnRyaWVzKGFwcC5HbG9iYWwpKSB7XG4gICAgICAgICAgICBpZighY29udHJvbGxlci4kY29udGFpbmVyKSBHbG9iYWxbdGFnXS4kY29udGFpbmVyID0gZ2V0Qm9keSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyKGFwcC50YWdOYW1lcywgZ2V0Qm9keSgpLCBhcHAucm9vdENvbnRyb2xsZXIpO1xuICAgIH0sXG5cbiAgICB1cGRhdGVKcXVlcnk6ICgpPT4ge1xuICAgICAgICAkLmZuLnNhZmVSZXBsYWNlID0gZnVuY3Rpb24gKCRlbGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwLnNhZmVSZXBsYWNlKCQodGhpcyksICRlbGVtKTtcbiAgICAgICAgfVxuICAgICAgICAkLmZuLnNhZmVFbXB0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHAuc2FmZUVtcHR5KCQodGhpcykpO1xuICAgICAgICB9XG4gICAgICAgICQuZm4uc2FmZVJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHAuc2FmZVJlbW92ZSgkKHRoaXMpKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBjb250cm9sbGVyVG9UYWc6IChDb250cm9sbGVyKSA9PiB7XG4gICAgICAgIGxldCB0YWdOYW1lID0gY2FtZWxDYXNlVG9UYWdOYW1lKENvbnRyb2xsZXIubmFtZSk7XG4gICAgICAgIHJldHVybiB0YWdOYW1lLnJlcGxhY2UoLy1jb250cm9sbGVyJC8sICcnKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBDb250cm9sbGVyXG4gICAgICovXG4gICAgcmVnaXN0ZXJHbG9iYWw6IChDb250cm9sbGVyKSA9PiB7XG4gICAgICAgIGxldCB0YWdOYW1lID0gYXBwLmNvbnRyb2xsZXJUb1RhZyhDb250cm9sbGVyKTtcbiAgICAgICAgbGV0IGdsb2JhbENvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcigpO1xuICAgICAgICBjb250cm9sbGVyTGlzdFt0YWdOYW1lXSA9IFtnbG9iYWxDb250cm9sbGVyLCBbXV07XG4gICAgICAgIGdsb2JhbENvbnRyb2xsZXIuX3RhZ05hbWUgPSB0YWdOYW1lO1xuICAgICAgICB3aW5kb3dbdGFnTmFtZVRvQ2FtZWxDYXNlKHRhZ05hbWUpXSA9IEdsb2JhbFt0YWdOYW1lVG9DYW1lbENhc2UodGFnTmFtZSldID0gZ2xvYmFsQ29udHJvbGxlcjtcbiAgICB9LFxuXG4gICAgY2xlYW5DYWNoZTogKCkgPT4ge1xuICAgICAgICBjbGVhbkNhY2hlKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gQ29udHJvbGxlclxuICAgICAqL1xuICAgIHJlZ2lzdGVyOiAoQ29udHJvbGxlcikgPT4ge1xuICAgICAgICBsZXQgdGFnTmFtZSA9IGFwcC5jb250cm9sbGVyVG9UYWcoQ29udHJvbGxlcik7XG4gICAgICAgIGNvbnRyb2xsZXJMaXN0W3RhZ05hbWVdID0gW0NvbnRyb2xsZXIsIFtdXTtcbiAgICAgICAgQ29udHJvbGxlci5wcm90b3R5cGUuX3RhZ05hbWUgPSB0YWdOYW1lO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBtaXhpbnMgQ29udHJvbGxlciB0YWcgbmFtZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWRkTWl4aW46ICguLi5taXhpbnMpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBtaXhpbiBvZiBtaXhpbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1peGluTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtaXhpbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW5OYW1lID0gY2FtZWxDYXNlVG9UYWdOYW1lKG1peGluKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtaXhpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW5OYW1lID0gYXBwLmNvbnRyb2xsZXJUb1RhZyhtaXhpbilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyTGlzdFt0YWdOYW1lXVsxXS5wdXNoKG1peGluTmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gY29udHJvbGxlclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG4gICAgcG9zdDogKGNvbnRyb2xsZXIsIHVybCwgYXJncykgPT4ge1xuICAgICAgICBpZiAoIWFyZ3MpIHtcbiAgICAgICAgICAgIGFyZ3MgPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFyZ3MuQ1NSRl9UT0tFTiA9IGFwcC5DU1JGX1RPS0VOO1xuICAgICAgICByZXR1cm4gYXBwLmFqYXgoY29udHJvbGxlciwgdXJsLCBwYXJhbXMsICQucG9zdCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gY29udHJvbGxlclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG4gICAgZ2V0OiAoY29udHJvbGxlciwgdXJsLCBhcmdzKSA9PiB7XG4gICAgICAgIHJldHVybiBhcHAuYWpheChjb250cm9sbGVyLCB1cmwsIGFyZ3MsICQuZ2V0KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBjb250cm9sbGVyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kICQuZ2V0IG9yICQucG9zdFxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG4gICAgYWpheDogKGNvbnRyb2xsZXIsIHVybCwgYXJncywgbWV0aG9kKSA9PiB7XG4gICAgICAgIGlmICghYXJncykge1xuICAgICAgICAgICAgYXJncyA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgYXJncy5WRVJTSU9OID0gYXBwLlZFUlNJT047XG4gICAgICAgIGFyZ3MuX21ldGhvZCA9IGFyZ3MuX21ldGhvZCB8fCAnYXBpJztcblxuICAgICAgICBjb25zdCBwID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZCh1cmwsIGFyZ3MpLnRoZW4oKGEsIGIsIGMpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGEsIGIsIGMpO1xuICAgICAgICAgICAgICAgIGlmIChhLnN0YXR1cyA9PT0gJ3JlZGlyZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKCdvbk5hdkxpbmsnLCBhWyd1cmwtbGluayddKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLnJlZnJlc2goY29udHJvbGxlci4kY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfSxcblxuICAgIHN1Ym1pdEZvcm1BbmRVcGRhdGVWaWV3OiAoY29udHJvbGxlciwgZm9ybSwgdXJsLCBtZXRob2QpID0+IHtcbiAgICAgICAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKGZvcm0pO1xuICAgICAgICBjb25zdCByZWRpcmVjdG9yID0gKGEpPT4ge1xuICAgICAgICAgICAgaWYgKGFbJ3VybC1saW5rJ10pIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKCdvbk5hdkxpbmsnLCBhWyd1cmwtbGluayddKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBhWyd1cmwnXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHVwbG9hZEZpbGVGb3JtRGF0YShmb3JtRGF0YSwgKHVybCB8fCBmb3JtLmFjdGlvbiksIChtZXRob2QgfHwgZm9ybS5tZXRob2QpKVxuICAgICAgICAgICAgICAgIC50aGVuKChhLCBiLCBjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYSwgYiwgYyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhLnN0YXR1cyA9PT0gJ3JlZGlyZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RvcihhKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLnJlZnJlc2goY29udHJvbGxlci4kY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGEsYixjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGEuc3RhdHVzID09PSAzMDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhLnJlc3BvbnNlSlNPTjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0b3IoYSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGEsIGIsIGMpO1xuICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoYSwgYiwgYyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHA7XG5cbiAgICB9LFxuICAgIHN1Ym1pdEZvcm06IChmb3JtLCB1cmwsIG1ldGhvZCkgPT4ge1xuICAgICAgICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoZm9ybSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB1cGxvYWRGaWxlRm9ybURhdGEoZm9ybURhdGEsICh1cmwgfHwgZm9ybS5hY3Rpb24pLCAobWV0aG9kIHx8IGZvcm0ubWV0aG9kKSlcbiAgICAgICAgICAgICAgICAudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2pxdWVyeX0gJGVsZW1cbiAgICAgKiBAcmV0dXJuIHtBYnN0cmFjdFNEQ31cbiAgICAgKi9cbiAgICBnZXRDb250cm9sbGVyOiAoJGVsZW0pID0+IGdldENvbnRyb2xsZXIoJGVsZW0pLFxuXG4gICAgLyoqXG4gICAgICogc2FmZUVtcHR5IHJlbW92ZXMgYWxsIGNvbnRlbnQgb2YgYSBkb21cbiAgICAgKiBhbmQgZGVsZXRlcyBhbGwgY2hpbGQgY29udHJvbGxlciBzYWZlbHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gJGVsZW0gLSBqUXVlcnkgRE9NIGNvbnRhaW5lciB0byBiZSBlbXB0eWVkXG4gICAgICovXG4gICAgc2FmZUVtcHR5OiAoJGVsZW0pID0+IHtcbiAgICAgICAgbGV0ICRjaGlsZHJlbiA9ICRlbGVtLmNoaWxkcmVuKCk7XG4gICAgICAgICRjaGlsZHJlbi5lYWNoKGZ1bmN0aW9uIChfLCBlbGVtZW50KSB7XG4gICAgICAgICAgICBsZXQgJGVsZW1lbnQgPSAkKGVsZW1lbnQpO1xuICAgICAgICAgICAgYXBwLnNhZmVSZW1vdmUoJGVsZW1lbnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gJGVsZW07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHNhZmVSZXBsYWNlIHJlbW92ZXMgYWxsIGNvbnRlbnQgb2YgYSBkb21cbiAgICAgKiBhbmQgZGVsZXRlcyBhbGwgY2hpbGQgY29udHJvbGxlciBzYWZlbHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gJGVsZW0gLSBqUXVlcnkgRE9NIHRvIGJlIHJlcGxlYWNlZFxuICAgICAqIEBwYXJhbSAkbmV3IC0galF1ZXJ5IG5ldyBET00gY29udGFpbmVyXG4gICAgICovXG4gICAgc2FmZVJlcGxhY2U6ICgkZWxlbSwgJG5ldykgPT4ge1xuICAgICAgICAkbmV3Lmluc2VydEJlZm9yZSgkZWxlbSk7XG4gICAgICAgIHJldHVybiBhcHAuc2FmZVJlbW92ZSgkZWxlbSk7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogc2FmZVJlbW92ZSByZW1vdmVzIGEgZG9tIGFuZCBkZWxldGVzIGFsbCBjaGlsZCBjb250cm9sbGVyIHNhZmVseS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSAkZWxlbSAtIGpRdWVyeSBEb21cbiAgICAgKi9cbiAgICBzYWZlUmVtb3ZlOiAoJGVsZW0pID0+IHtcbiAgICAgICAgJGVsZW0uZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsZXQgJHRoaXMgPSAkKHRoaXMpO1xuICAgICAgICAgICAgaWYgKCR0aGlzLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKSkge1xuICAgICAgICAgICAgICAgICR0aGlzLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgJGVsZW0uZmluZChgLiR7Q09OVFJPTExFUl9DTEFTU31gKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xsZXIgPSAkKHRoaXMpLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIgJiYgY29udHJvbGxlci5yZW1vdmUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuICRlbGVtLnJlbW92ZSgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IGNvbnRyb2xsZXJcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPGpRdWVyeT59XG4gICAgICovXG4gICAgcmVsb2FkQ29udHJvbGxlcjogKGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlbG9hZEhUTUxDb250cm9sbGVyKGNvbnRyb2xsZXIpLnRoZW4oKGh0bWwpID0+IHtcbiAgICAgICAgICAgIGxldCAkaHRtbCA9ICQoaHRtbCk7XG4gICAgICAgICAgICBjb250cm9sbGVyLl9jaGlsZENvbnRyb2xsZXIgPSB7fTtcbiAgICAgICAgICAgIHJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyKGFwcC50YWdOYW1lcywgJGh0bWwsIGNvbnRyb2xsZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGFwcC5zYWZlRW1wdHkoY29udHJvbGxlci4kY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLiRjb250YWluZXIuYXBwZW5kKCRodG1sKTtcbiAgICAgICAgICAgICAgICBhcHAucmVmcmVzaChjb250cm9sbGVyLiRjb250YWluZXIsIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7anF1ZXJ5fSAkY29udGFpbmVyXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gbGVhZkNvbnRyb2xsZXJcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPGpRdWVyeT59XG4gICAgICovXG4gICAgcmVmcmVzaDogKCRjb250YWluZXIsIGxlYWZDb250cm9sbGVyKSA9PiB7XG4gICAgICAgIGlmICghbGVhZkNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGxlYWZDb250cm9sbGVyID0gYXBwLmdldENvbnRyb2xsZXIoJGNvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxlYWZDb250cm9sbGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvbWlzZUR1bW15RmFjdG9yeSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNvbnRyb2xsZXIgPSBsZWFmQ29udHJvbGxlcjtcbiAgICAgICAgbGV0IGNvbnRyb2xsZXJMaXN0ID0gW107XG4gICAgICAgIHdoaWxlIChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLmlzRXZlbnRzU2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBjb250cm9sbGVyTGlzdC51bnNoaWZ0KGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgY29udHJvbGxlciA9IGNvbnRyb2xsZXIuX3BhcmVudENvbnRyb2xsZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVwbGFjZVRhZ0VsZW1lbnRzSW5Db250YWluZXIoYXBwLnRhZ05hbWVzLCBsZWFmQ29udHJvbGxlci4kY29udGFpbmVyLCBsZWFmQ29udHJvbGxlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZWxvYWRNZXRob2RIVE1MKGxlYWZDb250cm9sbGVyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjb24gb2YgY29udHJvbGxlckxpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q29udHJvbGxlckV2ZW50cyhjb24pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxlYWZDb250cm9sbGVyLm9uUmVmcmVzaCgkY29udGFpbmVyKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pO1xuICAgIH0sXG59OyJdLCJuYW1lcyI6WyJjYW1lbENhc2VUb1RhZ05hbWUiLCJ0YWdOYW1lVG9DYW1lbENhc2UiLCJnZXRCb2R5IiwidXBsb2FkRmlsZUZvcm1EYXRhIiwicHJvbWlzZUR1bW15RmFjdG9yeSIsInJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyIiwicmVsb2FkSFRNTENvbnRyb2xsZXIiLCJEQVRBX0NPTlRST0xMRVJfS0VZIiwiQ09OVFJPTExFUl9DTEFTUyIsImdldENvbnRyb2xsZXIiLCJjbGVhbkNhY2hlIiwicmVsb2FkTWV0aG9kSFRNTCIsIkFic3RyYWN0U0RDIiwiR2xvYmFsIiwiY29udHJvbGxlckxpc3QiLCJ0YWdMaXN0IiwiaW5pdEV2ZW50cyIsInNldENvbnRyb2xsZXJFdmVudHMiLCJTVERfRVZFTlRfTElTVCIsIndpbmRvd0V2ZW50SGFuZGxlciIsInRyaWdnZXIiLCJpc0Nvbm5lY3RlZCIsImNsb3NlIiwiUFJPUEVSVElFU19VUERBVEUiLCJzZGNEb21GcmFnbWVudCIsImVsZW1lbnQiLCJwcm9wcyIsIiRuZXdfZWxlbSIsImlzX3NlbGYiLCIkIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidGFnTmFtZSIsIm5hbWUiLCJkYXRhIiwiT2JqZWN0IiwiZW50cmllcyIsImZvckVhY2giLCJrIiwidiIsInN0YXJ0c1dpdGgiLCJhZGRFdmVudExpc3RlbmVyIiwic3Vic3RyaW5nIiwidG9Mb3dlckNhc2UiLCJzZXRBdHRyaWJ1dGUiLCJhZGRDbGFzcyIsIndpbmRvdyIsInNkY0RvbSIsImNoaWxkcmVuIiwiYyIsImFwcGVuZCIsImFwcCIsIkNTUkZfVE9LRU4iLCJMQU5HVUFHRV9DT0RFIiwiREVCVUciLCJWRVJTSU9OIiwidGFnTmFtZXMiLCJyb290Q29udHJvbGxlciIsIl9pc0luaXQiLCJfb3JpZ2luX3RyaWdnZXIiLCJpbml0X3NkYyIsImZuIiwiZXZlbnQiLCJldl90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwidHlwZSIsImluY2x1ZGVzIiwicHVzaCIsIm9uIiwidXBkYXRlSnF1ZXJ5IiwidGFnIiwiY29udHJvbGxlciIsIiRjb250YWluZXIiLCJzYWZlUmVwbGFjZSIsIiRlbGVtIiwic2FmZUVtcHR5Iiwic2FmZVJlbW92ZSIsImNvbnRyb2xsZXJUb1RhZyIsIkNvbnRyb2xsZXIiLCJyZXBsYWNlIiwicmVnaXN0ZXJHbG9iYWwiLCJnbG9iYWxDb250cm9sbGVyIiwiX3RhZ05hbWUiLCJyZWdpc3RlciIsInByb3RvdHlwZSIsImFkZE1peGluIiwibWl4aW5zIiwibWl4aW4iLCJtaXhpbk5hbWUiLCJwb3N0IiwidXJsIiwiYXJncyIsImFqYXgiLCJwYXJhbXMiLCJnZXQiLCJtZXRob2QiLCJfbWV0aG9kIiwicCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidGhlbiIsImEiLCJiIiwic3RhdHVzIiwicmVmcmVzaCIsImNhdGNoIiwic3VibWl0Rm9ybUFuZFVwZGF0ZVZpZXciLCJmb3JtIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsInJlZGlyZWN0b3IiLCJsb2NhdGlvbiIsImhyZWYiLCJhY3Rpb24iLCJyZXNwb25zZUpTT04iLCJzdWJtaXRGb3JtIiwiJGNoaWxkcmVuIiwiZWFjaCIsIl8iLCIkZWxlbWVudCIsIiRuZXciLCJpbnNlcnRCZWZvcmUiLCIkdGhpcyIsInJlbW92ZSIsImZpbmQiLCJyZWxvYWRDb250cm9sbGVyIiwiaHRtbCIsIiRodG1sIiwiX2NoaWxkQ29udHJvbGxlciIsImxlYWZDb250cm9sbGVyIiwiaXNFdmVudHNTZXQiLCJ1bnNoaWZ0IiwiX3BhcmVudENvbnRyb2xsZXIiLCJjb24iLCJvblJlZnJlc2giXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/simpleDomControl/sdc_main.js\n");
67
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ app: () => (/* binding */ app)\n/* harmony export */ });\n/* harmony import */ var _sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n/* harmony import */ var _sdc_view_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_view.js */ \"./src/simpleDomControl/sdc_view.js\");\n/* harmony import */ var _AbstractSDC_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AbstractSDC.js */ \"./src/simpleDomControl/AbstractSDC.js\");\n/* harmony import */ var _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_controller.js */ \"./src/simpleDomControl/sdc_controller.js\");\n/* harmony import */ var _sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sdc_dom_events.js */ \"./src/simpleDomControl/sdc_dom_events.js\");\n/* harmony import */ var _sdc_events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n/* harmony import */ var _sdc_socket_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./sdc_socket.js */ \"./src/simpleDomControl/sdc_socket.js\");\n\n\n\n\n\n\n\nconst PROPERTIES_UPDATE = {\n 'classname': 'class'\n};\nlet sdcDomFragment = function (element, props) {\n let $new_elem,\n is_self = false;\n if (typeof element === 'string') {\n $new_elem = $(document.createElement(element));\n } else {\n const tagName = `this.${element.name}`;\n $new_elem = $(document.createElement(tagName));\n $new_elem.data('handler', element);\n is_self = true;\n }\n if (props) {\n Object.entries(props).forEach(([k, v]) => {\n if (k.startsWith('on')) {\n $new_elem[0].addEventListener(k.substring(2).toLowerCase(), v);\n } else {\n if (PROPERTIES_UPDATE[k.toLowerCase()]) {\n k = PROPERTIES_UPDATE[k.toLowerCase()];\n }\n $new_elem[0].setAttribute(k, v);\n }\n });\n }\n if (is_self) {\n $new_elem.addClass('_bind_to_update_handler _with_handler');\n }\n return $new_elem;\n};\nwindow.sdcDom = function (tagName, props, ...children) {\n if (!tagName) {\n return '';\n }\n const $new_elem = sdcDomFragment(tagName, props);\n for (const c of children) {\n $new_elem.append(c);\n }\n return $new_elem;\n};\nlet app = {\n CSRF_TOKEN: window.CSRF_TOKEN || '',\n LANGUAGE_CODE: window.LANGUAGE_CODE || 'en',\n DEBUG: window.DEBUG || false,\n VERSION: window.VERSION || '0.0',\n tagNames: [],\n Global: _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.Global,\n rootController: null,\n _isInit: false,\n _origin_trigger: null,\n init_sdc: () => {\n if (!app._isInit) {\n app._isInit = true;\n if (!app._origin_trigger) {\n app._origin_trigger = $.fn.trigger;\n $.fn.trigger = function (event) {\n const ev_type = {}.hasOwnProperty.call(event, \"type\") ? event.type : event;\n if (!_sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.STD_EVENT_LIST.includes(ev_type)) {\n _sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.STD_EVENT_LIST.push(ev_type);\n $(window).on(ev_type, _sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.windowEventHandler);\n }\n return app._origin_trigger.call(this, event);\n };\n app.updateJquery();\n } else {\n (0,_sdc_socket_js__WEBPACK_IMPORTED_MODULE_6__.close)();\n }\n (0,_sdc_socket_js__WEBPACK_IMPORTED_MODULE_6__.isConnected)();\n (0,_sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.initEvents)();\n app.rootController = app.rootController || new _AbstractSDC_js__WEBPACK_IMPORTED_MODULE_2__.AbstractSDC();\n }\n app.tagNames = (0,_sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.tagList)();\n for (let [tag, controller] of Object.entries(app.Global)) {\n if (!controller.$container) _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.Global[tag].$container = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.getBody)();\n }\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.replaceTagElementsInContainer)(app.tagNames, (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.getBody)(), app.rootController);\n },\n updateJquery: () => {\n $.fn.safeReplace = function ($elem) {\n return app.safeReplace($(this), $elem);\n };\n $.fn.safeEmpty = function () {\n return app.safeEmpty($(this));\n };\n $.fn.safeRemove = function () {\n return app.safeRemove($(this));\n };\n },\n controllerToTag: Controller => {\n let tagName = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.camelCaseToTagName)(Controller.name);\n return tagName.replace(/-controller$/, '');\n },\n /**\n *\n * @param {AbstractSDC} Controller\n */\n registerGlobal: Controller => {\n let tagName = app.controllerToTag(Controller);\n let globalController = new Controller();\n _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.controllerList[tagName] = [globalController, []];\n globalController._tagName = tagName;\n window[(0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.tagNameToCamelCase)(tagName)] = _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.Global[(0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.tagNameToCamelCase)(tagName)] = globalController;\n },\n cleanCache: () => {\n (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.cleanCache)();\n },\n /**\n *\n * @param {AbstractSDC} Controller\n */\n register: Controller => {\n let tagName = app.controllerToTag(Controller);\n _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.controllerList[tagName] = [Controller, []];\n Controller.prototype._tagName = tagName;\n return {\n /**\n *\n * @param {Array<string>} mixins Controller tag names\n */\n addMixin: (...mixins) => {\n for (let mixin of mixins) {\n let mixinName;\n if (typeof mixin === \"string\") {\n mixinName = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.camelCaseToTagName)(mixin);\n } else if (mixin) {\n mixinName = app.controllerToTag(mixin);\n }\n _sdc_controller_js__WEBPACK_IMPORTED_MODULE_3__.controllerList[tagName][1].push(mixinName);\n }\n }\n };\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @param {string} url\n * @param {object} args\n * @return {Promise}\n */\n post: (controller, url, args) => {\n if (!args) {\n args = {};\n }\n args.CSRF_TOKEN = app.CSRF_TOKEN;\n return app.ajax(controller, url, params, $.post);\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @param {string} url\n * @param {object} args\n * @return {Promise}\n */\n get: (controller, url, args) => {\n return app.ajax(controller, url, args, $.get);\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @param {string} url\n * @param {object} args\n * @param {function} method $.get or $.post\n * @return {Promise}\n */\n ajax: (controller, url, args, method) => {\n if (!args) {\n args = {};\n }\n args.VERSION = app.VERSION;\n args._method = args._method || 'api';\n const p = new Promise((resolve, reject) => {\n return method(url, args).then((a, b, c) => {\n resolve(a, b, c);\n if (a.status === 'redirect') {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_5__.trigger)('onNavLink', a['url-link']);\n } else {\n p.then(() => {\n app.refresh(controller.$container);\n });\n }\n }).catch(reject);\n });\n return p;\n },\n submitFormAndUpdateView: (controller, form, url, method) => {\n let formData = new FormData(form);\n const redirector = a => {\n if (a['url-link']) {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_5__.trigger)('onNavLink', a['url-link']);\n } else {\n window.location.href = a['url'];\n }\n };\n const p = new Promise((resolve, reject) => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.uploadFileFormData)(formData, url || form.action, method || form.method).then((a, b, c) => {\n resolve(a, b, c);\n if (a.status === 'redirect') {\n redirector(a);\n } else {\n p.then(() => {\n app.refresh(controller.$container);\n });\n }\n }).catch((a, b, c) => {\n if (a.status === 301) {\n a = a.responseJSON;\n redirector(a);\n resolve(a, b, c);\n } else {\n reject(a, b, c);\n }\n });\n });\n return p;\n },\n submitForm: (form, url, method) => {\n let formData = new FormData(form);\n return new Promise((resolve, reject) => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.uploadFileFormData)(formData, url || form.action, method || form.method).then(resolve).catch(reject);\n });\n },\n /**\n *\n * @param {jquery} $elem\n * @return {AbstractSDC}\n */\n getController: $elem => (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.getController)($elem),\n /**\n * safeEmpty removes all content of a dom\n * and deletes all child controller safely.\n *\n * @param $elem - jQuery DOM container to be emptyed\n */\n safeEmpty: $elem => {\n let $children = $elem.children();\n $children.each(function (_, element) {\n let $element = $(element);\n app.safeRemove($element);\n });\n return $elem;\n },\n /**\n * safeReplace removes all content of a dom\n * and deletes all child controller safely.\n *\n * @param $elem - jQuery DOM to be repleaced\n * @param $new - jQuery new DOM container\n */\n safeReplace: ($elem, $new) => {\n $new.insertBefore($elem);\n return app.safeRemove($elem);\n },\n /**\n * safeRemove removes a dom and deletes all child controller safely.\n *\n * @param $elem - jQuery Dom\n */\n safeRemove: $elem => {\n $elem.each(function () {\n let $this = $(this);\n if ($this.data(`${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.DATA_CONTROLLER_KEY}`)) {\n $this.data(`${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.DATA_CONTROLLER_KEY}`).remove();\n }\n });\n $elem.find(`.${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.CONTROLLER_CLASS}`).each(function () {\n const controller = $(this).data(`${_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.DATA_CONTROLLER_KEY}`);\n controller && controller.remove();\n });\n return $elem.remove();\n },\n /**\n *\n * @param {AbstractSDC} controller\n * @return {Promise<jQuery>}\n */\n reloadController: controller => {\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.reloadHTMLController)(controller).then(html => {\n let $html = $(html);\n controller._childController = {};\n (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.replaceTagElementsInContainer)(app.tagNames, $html, controller).then(() => {\n app.safeEmpty(controller.$container);\n controller.$container.append($html);\n app.refresh(controller.$container, controller);\n });\n });\n },\n /**\n *\n * @param {jquery} $container\n * @param {AbstractSDC} leafController\n * @return {Promise<jQuery>}\n */\n refresh: ($container, leafController) => {\n if (!leafController) {\n leafController = app.getController($container);\n }\n if (!leafController) {\n return (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_0__.promiseDummyFactory)();\n }\n let controller = leafController;\n let controllerList = [];\n while (controller) {\n controller._isEventsSet = false;\n controllerList.unshift(controller);\n controller = controller._parentController;\n }\n return (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.replaceTagElementsInContainer)(app.tagNames, leafController.$container, leafController).then(() => {\n (0,_sdc_view_js__WEBPACK_IMPORTED_MODULE_1__.reloadMethodHTML)(leafController).then(() => {\n for (let con of controllerList) {\n (0,_sdc_dom_events_js__WEBPACK_IMPORTED_MODULE_4__.setControllerEvents)(con);\n }\n leafController.onRefresh($container);\n });\n });\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTtFQUNJa0MsT0FBTyxFQUFFQSxDQUFDakMsVUFBVSxFQUFFMEQsY0FBYyxLQUFLO0lBQ3JDLElBQUksQ0FBQ0EsY0FBYyxFQUFFO01BQ2pCQSxjQUFjLEdBQUdoRixHQUFHLENBQUMxQyxhQUFhLENBQUNnRSxVQUFVLENBQUM7SUFDbEQ7SUFFQSxJQUFJLENBQUMwRCxjQUFjLEVBQUU7TUFDakIsT0FBTy9ILGtFQUFtQixDQUFDLENBQUM7SUFDaEM7SUFFQSxJQUFJb0UsVUFBVSxHQUFHMkQsY0FBYztJQUMvQixJQUFJckgsY0FBYyxHQUFHLEVBQUU7SUFDdkIsT0FBTzBELFVBQVUsRUFBRTtNQUNmQSxVQUFVLENBQUM0RCxZQUFZLEdBQUcsS0FBSztNQUMvQnRILGNBQWMsQ0FBQ3VILE9BQU8sQ0FBQzdELFVBQVUsQ0FBQztNQUNsQ0EsVUFBVSxHQUFHQSxVQUFVLENBQUM4RCxpQkFBaUI7SUFDN0M7SUFFQSxPQUFPakksMkVBQTZCLENBQUM4QyxHQUFHLENBQUNLLFFBQVEsRUFBRTJFLGNBQWMsQ0FBQzFELFVBQVUsRUFBRTBELGNBQWMsQ0FBQyxDQUFDN0IsSUFBSSxDQUFDLE1BQU07TUFDckczRiw4REFBZ0IsQ0FBQ3dILGNBQWMsQ0FBQyxDQUFDN0IsSUFBSSxDQUFDLE1BQU07UUFDeEMsS0FBSyxJQUFJaUMsR0FBRyxJQUFJekgsY0FBYyxFQUFFO1VBQzVCRyx1RUFBbUIsQ0FBQ3NILEdBQUcsQ0FBQztRQUM1QjtRQUVBSixjQUFjLENBQUNLLFNBQVMsQ0FBQy9ELFVBQVUsQ0FBQztNQUN4QyxDQUFDLENBQUM7SUFFTixDQUFDLENBQUM7RUFDTjtBQUNKLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zZGNfY2xpZW50Ly4vc3JjL3NpbXBsZURvbUNvbnRyb2wvc2RjX21haW4uanM/MDhmYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGNhbWVsQ2FzZVRvVGFnTmFtZSxcbiAgICB0YWdOYW1lVG9DYW1lbENhc2UsXG4gICAgZ2V0Qm9keSxcbiAgICB1cGxvYWRGaWxlRm9ybURhdGEsXG4gICAgcHJvbWlzZUR1bW15RmFjdG9yeVxufSBmcm9tIFwiLi9zZGNfdXRpbHMuanNcIjtcbmltcG9ydCB7XG4gICAgcmVwbGFjZVRhZ0VsZW1lbnRzSW5Db250YWluZXIsXG4gICAgcmVsb2FkSFRNTENvbnRyb2xsZXIsXG4gICAgREFUQV9DT05UUk9MTEVSX0tFWSxcbiAgICBDT05UUk9MTEVSX0NMQVNTLCBnZXRDb250cm9sbGVyLCBjbGVhbkNhY2hlLCByZWxvYWRNZXRob2RIVE1MXG59IGZyb20gXCIuL3NkY192aWV3LmpzXCI7XG5pbXBvcnQge0Fic3RyYWN0U0RDfSBmcm9tIFwiLi9BYnN0cmFjdFNEQy5qc1wiO1xuaW1wb3J0IHtHbG9iYWwsIGNvbnRyb2xsZXJMaXN0LCB0YWdMaXN0fSBmcm9tIFwiLi9zZGNfY29udHJvbGxlci5qc1wiO1xuaW1wb3J0IHtpbml0RXZlbnRzLCBzZXRDb250cm9sbGVyRXZlbnRzLCBTVERfRVZFTlRfTElTVCwgd2luZG93RXZlbnRIYW5kbGVyfSBmcm9tIFwiLi9zZGNfZG9tX2V2ZW50cy5qc1wiO1xuaW1wb3J0IHt0cmlnZ2VyfSBmcm9tIFwiLi9zZGNfZXZlbnRzLmpzXCI7XG5pbXBvcnQge2lzQ29ubmVjdGVkLCBjbG9zZX0gZnJvbSBcIi4vc2RjX3NvY2tldC5qc1wiO1xuXG5jb25zdCBQUk9QRVJUSUVTX1VQREFURSA9IHsnY2xhc3NuYW1lJzogJ2NsYXNzJ31cblxubGV0IHNkY0RvbUZyYWdtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIHByb3BzKSB7XG4gICAgbGV0ICRuZXdfZWxlbSwgaXNfc2VsZiA9IGZhbHNlO1xuICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgJG5ld19lbGVtID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0YWdOYW1lID0gYHRoaXMuJHtlbGVtZW50Lm5hbWV9YDtcbiAgICAgICAgJG5ld19lbGVtID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpKTtcbiAgICAgICAgJG5ld19lbGVtLmRhdGEoJ2hhbmRsZXInLCBlbGVtZW50KTtcbiAgICAgICAgaXNfc2VsZiA9IHRydWVcbiAgICB9XG5cblxuICAgIGlmIChwcm9wcykge1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wcykuZm9yRWFjaCgoW2ssIHZdKSA9PiB7XG4gICAgICAgICAgICBpZiAoay5zdGFydHNXaXRoKCdvbicpKSB7XG4gICAgICAgICAgICAgICAgJG5ld19lbGVtWzBdLmFkZEV2ZW50TGlzdGVuZXIoay5zdWJzdHJpbmcoMikudG9Mb3dlckNhc2UoKSwgdik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmKFBST1BFUlRJRVNfVVBEQVRFW2sudG9Mb3dlckNhc2UoKV0pIHtcbiAgICAgICAgICAgICAgICAgICAgayA9IFBST1BFUlRJRVNfVVBEQVRFW2sudG9Mb3dlckNhc2UoKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRuZXdfZWxlbVswXS5zZXRBdHRyaWJ1dGUoaywgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc19zZWxmKSB7XG4gICAgICAgICRuZXdfZWxlbS5hZGRDbGFzcygnX2JpbmRfdG9fdXBkYXRlX2hhbmRsZXIgX3dpdGhfaGFuZGxlcicpO1xuICAgIH1cblxuICAgIHJldHVybiAkbmV3X2VsZW07XG59XG5cbndpbmRvdy5zZGNEb20gPSBmdW5jdGlvbiAodGFnTmFtZSwgcHJvcHMsIC4uLmNoaWxkcmVuKSB7XG4gICAgaWYgKCF0YWdOYW1lKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgJG5ld19lbGVtID0gc2RjRG9tRnJhZ21lbnQodGFnTmFtZSwgcHJvcHMpO1xuICAgIGZvciAoY29uc3QgYyBvZiBjaGlsZHJlbikge1xuICAgICAgICAkbmV3X2VsZW0uYXBwZW5kKGMpO1xuICAgIH1cbiAgICByZXR1cm4gJG5ld19lbGVtO1xuXG59XG5cbmV4cG9ydCBsZXQgYXBwID0ge1xuICAgIENTUkZfVE9LRU46IHdpbmRvdy5DU1JGX1RPS0VOIHx8ICcnLFxuICAgIExBTkdVQUdFX0NPREU6IHdpbmRvdy5MQU5HVUFHRV9DT0RFIHx8ICdlbicsXG4gICAgREVCVUc6IHdpbmRvdy5ERUJVRyB8fCBmYWxzZSxcbiAgICBWRVJTSU9OOiB3aW5kb3cuVkVSU0lPTiB8fCAnMC4wJyxcbiAgICB0YWdOYW1lczogW10sXG4gICAgR2xvYmFsOiBHbG9iYWwsXG4gICAgcm9vdENvbnRyb2xsZXI6IG51bGwsXG4gICAgX2lzSW5pdDogZmFsc2UsXG4gICAgX29yaWdpbl90cmlnZ2VyOiBudWxsLFxuXG4gICAgaW5pdF9zZGM6ICgpID0+IHtcbiAgICAgICAgaWYgKCFhcHAuX2lzSW5pdCkge1xuICAgICAgICAgICAgYXBwLl9pc0luaXQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKCFhcHAuX29yaWdpbl90cmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgYXBwLl9vcmlnaW5fdHJpZ2dlciA9ICQuZm4udHJpZ2dlcjtcbiAgICAgICAgICAgICAgICAkLmZuLnRyaWdnZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZfdHlwZSA9IHt9Lmhhc093blByb3BlcnR5LmNhbGwoZXZlbnQsIFwidHlwZVwiKSA/IGV2ZW50LnR5cGUgOiBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFTVERfRVZFTlRfTElTVC5pbmNsdWRlcyhldl90eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgU1REX0VWRU5UX0xJU1QucHVzaChldl90eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQod2luZG93KS5vbihldl90eXBlLCB3aW5kb3dFdmVudEhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcHAuX29yaWdpbl90cmlnZ2VyLmNhbGwodGhpcywgZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGFwcC51cGRhdGVKcXVlcnkoKTtcbiAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpc0Nvbm5lY3RlZCgpO1xuXG4gICAgICAgICAgICBpbml0RXZlbnRzKCk7XG5cbiAgICAgICAgICAgIGFwcC5yb290Q29udHJvbGxlciA9IGFwcC5yb290Q29udHJvbGxlciB8fCBuZXcgQWJzdHJhY3RTREMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcC50YWdOYW1lcyA9IHRhZ0xpc3QoKTtcblxuICAgICAgICBmb3IobGV0IFt0YWcsIGNvbnRyb2xsZXJdIG9mIE9iamVjdC5lbnRyaWVzKGFwcC5HbG9iYWwpKSB7XG4gICAgICAgICAgICBpZighY29udHJvbGxlci4kY29udGFpbmVyKSBHbG9iYWxbdGFnXS4kY29udGFpbmVyID0gZ2V0Qm9keSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyKGFwcC50YWdOYW1lcywgZ2V0Qm9keSgpLCBhcHAucm9vdENvbnRyb2xsZXIpO1xuICAgIH0sXG5cbiAgICB1cGRhdGVKcXVlcnk6ICgpPT4ge1xuICAgICAgICAkLmZuLnNhZmVSZXBsYWNlID0gZnVuY3Rpb24gKCRlbGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwLnNhZmVSZXBsYWNlKCQodGhpcyksICRlbGVtKTtcbiAgICAgICAgfVxuICAgICAgICAkLmZuLnNhZmVFbXB0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHAuc2FmZUVtcHR5KCQodGhpcykpO1xuICAgICAgICB9XG4gICAgICAgICQuZm4uc2FmZVJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHAuc2FmZVJlbW92ZSgkKHRoaXMpKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBjb250cm9sbGVyVG9UYWc6IChDb250cm9sbGVyKSA9PiB7XG4gICAgICAgIGxldCB0YWdOYW1lID0gY2FtZWxDYXNlVG9UYWdOYW1lKENvbnRyb2xsZXIubmFtZSk7XG4gICAgICAgIHJldHVybiB0YWdOYW1lLnJlcGxhY2UoLy1jb250cm9sbGVyJC8sICcnKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBDb250cm9sbGVyXG4gICAgICovXG4gICAgcmVnaXN0ZXJHbG9iYWw6IChDb250cm9sbGVyKSA9PiB7XG4gICAgICAgIGxldCB0YWdOYW1lID0gYXBwLmNvbnRyb2xsZXJUb1RhZyhDb250cm9sbGVyKTtcbiAgICAgICAgbGV0IGdsb2JhbENvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcigpO1xuICAgICAgICBjb250cm9sbGVyTGlzdFt0YWdOYW1lXSA9IFtnbG9iYWxDb250cm9sbGVyLCBbXV07XG4gICAgICAgIGdsb2JhbENvbnRyb2xsZXIuX3RhZ05hbWUgPSB0YWdOYW1lO1xuICAgICAgICB3aW5kb3dbdGFnTmFtZVRvQ2FtZWxDYXNlKHRhZ05hbWUpXSA9IEdsb2JhbFt0YWdOYW1lVG9DYW1lbENhc2UodGFnTmFtZSldID0gZ2xvYmFsQ29udHJvbGxlcjtcbiAgICB9LFxuXG4gICAgY2xlYW5DYWNoZTogKCkgPT4ge1xuICAgICAgICBjbGVhbkNhY2hlKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gQ29udHJvbGxlclxuICAgICAqL1xuICAgIHJlZ2lzdGVyOiAoQ29udHJvbGxlcikgPT4ge1xuICAgICAgICBsZXQgdGFnTmFtZSA9IGFwcC5jb250cm9sbGVyVG9UYWcoQ29udHJvbGxlcik7XG4gICAgICAgIGNvbnRyb2xsZXJMaXN0W3RhZ05hbWVdID0gW0NvbnRyb2xsZXIsIFtdXTtcbiAgICAgICAgQ29udHJvbGxlci5wcm90b3R5cGUuX3RhZ05hbWUgPSB0YWdOYW1lO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBtaXhpbnMgQ29udHJvbGxlciB0YWcgbmFtZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWRkTWl4aW46ICguLi5taXhpbnMpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBtaXhpbiBvZiBtaXhpbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1peGluTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtaXhpbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW5OYW1lID0gY2FtZWxDYXNlVG9UYWdOYW1lKG1peGluKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtaXhpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW5OYW1lID0gYXBwLmNvbnRyb2xsZXJUb1RhZyhtaXhpbilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyTGlzdFt0YWdOYW1lXVsxXS5wdXNoKG1peGluTmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gY29udHJvbGxlclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG4gICAgcG9zdDogKGNvbnRyb2xsZXIsIHVybCwgYXJncykgPT4ge1xuICAgICAgICBpZiAoIWFyZ3MpIHtcbiAgICAgICAgICAgIGFyZ3MgPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFyZ3MuQ1NSRl9UT0tFTiA9IGFwcC5DU1JGX1RPS0VOO1xuICAgICAgICByZXR1cm4gYXBwLmFqYXgoY29udHJvbGxlciwgdXJsLCBwYXJhbXMsICQucG9zdCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gY29udHJvbGxlclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG4gICAgZ2V0OiAoY29udHJvbGxlciwgdXJsLCBhcmdzKSA9PiB7XG4gICAgICAgIHJldHVybiBhcHAuYWpheChjb250cm9sbGVyLCB1cmwsIGFyZ3MsICQuZ2V0KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Fic3RyYWN0U0RDfSBjb250cm9sbGVyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kICQuZ2V0IG9yICQucG9zdFxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG4gICAgYWpheDogKGNvbnRyb2xsZXIsIHVybCwgYXJncywgbWV0aG9kKSA9PiB7XG4gICAgICAgIGlmICghYXJncykge1xuICAgICAgICAgICAgYXJncyA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgYXJncy5WRVJTSU9OID0gYXBwLlZFUlNJT047XG4gICAgICAgIGFyZ3MuX21ldGhvZCA9IGFyZ3MuX21ldGhvZCB8fCAnYXBpJztcblxuICAgICAgICBjb25zdCBwID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZCh1cmwsIGFyZ3MpLnRoZW4oKGEsIGIsIGMpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGEsIGIsIGMpO1xuICAgICAgICAgICAgICAgIGlmIChhLnN0YXR1cyA9PT0gJ3JlZGlyZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKCdvbk5hdkxpbmsnLCBhWyd1cmwtbGluayddKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLnJlZnJlc2goY29udHJvbGxlci4kY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfSxcblxuICAgIHN1Ym1pdEZvcm1BbmRVcGRhdGVWaWV3OiAoY29udHJvbGxlciwgZm9ybSwgdXJsLCBtZXRob2QpID0+IHtcbiAgICAgICAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKGZvcm0pO1xuICAgICAgICBjb25zdCByZWRpcmVjdG9yID0gKGEpPT4ge1xuICAgICAgICAgICAgaWYgKGFbJ3VybC1saW5rJ10pIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKCdvbk5hdkxpbmsnLCBhWyd1cmwtbGluayddKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBhWyd1cmwnXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHVwbG9hZEZpbGVGb3JtRGF0YShmb3JtRGF0YSwgKHVybCB8fCBmb3JtLmFjdGlvbiksIChtZXRob2QgfHwgZm9ybS5tZXRob2QpKVxuICAgICAgICAgICAgICAgIC50aGVuKChhLCBiLCBjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYSwgYiwgYyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhLnN0YXR1cyA9PT0gJ3JlZGlyZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RvcihhKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLnJlZnJlc2goY29udHJvbGxlci4kY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGEsYixjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGEuc3RhdHVzID09PSAzMDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhLnJlc3BvbnNlSlNPTjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0b3IoYSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGEsIGIsIGMpO1xuICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoYSwgYiwgYyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHA7XG5cbiAgICB9LFxuICAgIHN1Ym1pdEZvcm06IChmb3JtLCB1cmwsIG1ldGhvZCkgPT4ge1xuICAgICAgICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoZm9ybSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB1cGxvYWRGaWxlRm9ybURhdGEoZm9ybURhdGEsICh1cmwgfHwgZm9ybS5hY3Rpb24pLCAobWV0aG9kIHx8IGZvcm0ubWV0aG9kKSlcbiAgICAgICAgICAgICAgICAudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2pxdWVyeX0gJGVsZW1cbiAgICAgKiBAcmV0dXJuIHtBYnN0cmFjdFNEQ31cbiAgICAgKi9cbiAgICBnZXRDb250cm9sbGVyOiAoJGVsZW0pID0+IGdldENvbnRyb2xsZXIoJGVsZW0pLFxuXG4gICAgLyoqXG4gICAgICogc2FmZUVtcHR5IHJlbW92ZXMgYWxsIGNvbnRlbnQgb2YgYSBkb21cbiAgICAgKiBhbmQgZGVsZXRlcyBhbGwgY2hpbGQgY29udHJvbGxlciBzYWZlbHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gJGVsZW0gLSBqUXVlcnkgRE9NIGNvbnRhaW5lciB0byBiZSBlbXB0eWVkXG4gICAgICovXG4gICAgc2FmZUVtcHR5OiAoJGVsZW0pID0+IHtcbiAgICAgICAgbGV0ICRjaGlsZHJlbiA9ICRlbGVtLmNoaWxkcmVuKCk7XG4gICAgICAgICRjaGlsZHJlbi5lYWNoKGZ1bmN0aW9uIChfLCBlbGVtZW50KSB7XG4gICAgICAgICAgICBsZXQgJGVsZW1lbnQgPSAkKGVsZW1lbnQpO1xuICAgICAgICAgICAgYXBwLnNhZmVSZW1vdmUoJGVsZW1lbnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gJGVsZW07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHNhZmVSZXBsYWNlIHJlbW92ZXMgYWxsIGNvbnRlbnQgb2YgYSBkb21cbiAgICAgKiBhbmQgZGVsZXRlcyBhbGwgY2hpbGQgY29udHJvbGxlciBzYWZlbHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gJGVsZW0gLSBqUXVlcnkgRE9NIHRvIGJlIHJlcGxlYWNlZFxuICAgICAqIEBwYXJhbSAkbmV3IC0galF1ZXJ5IG5ldyBET00gY29udGFpbmVyXG4gICAgICovXG4gICAgc2FmZVJlcGxhY2U6ICgkZWxlbSwgJG5ldykgPT4ge1xuICAgICAgICAkbmV3Lmluc2VydEJlZm9yZSgkZWxlbSk7XG4gICAgICAgIHJldHVybiBhcHAuc2FmZVJlbW92ZSgkZWxlbSk7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogc2FmZVJlbW92ZSByZW1vdmVzIGEgZG9tIGFuZCBkZWxldGVzIGFsbCBjaGlsZCBjb250cm9sbGVyIHNhZmVseS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSAkZWxlbSAtIGpRdWVyeSBEb21cbiAgICAgKi9cbiAgICBzYWZlUmVtb3ZlOiAoJGVsZW0pID0+IHtcbiAgICAgICAgJGVsZW0uZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsZXQgJHRoaXMgPSAkKHRoaXMpO1xuICAgICAgICAgICAgaWYgKCR0aGlzLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKSkge1xuICAgICAgICAgICAgICAgICR0aGlzLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgJGVsZW0uZmluZChgLiR7Q09OVFJPTExFUl9DTEFTU31gKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xsZXIgPSAkKHRoaXMpLmRhdGEoYCR7REFUQV9DT05UUk9MTEVSX0tFWX1gKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIgJiYgY29udHJvbGxlci5yZW1vdmUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuICRlbGVtLnJlbW92ZSgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QWJzdHJhY3RTREN9IGNvbnRyb2xsZXJcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPGpRdWVyeT59XG4gICAgICovXG4gICAgcmVsb2FkQ29udHJvbGxlcjogKGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlbG9hZEhUTUxDb250cm9sbGVyKGNvbnRyb2xsZXIpLnRoZW4oKGh0bWwpID0+IHtcbiAgICAgICAgICAgIGxldCAkaHRtbCA9ICQoaHRtbCk7XG4gICAgICAgICAgICBjb250cm9sbGVyLl9jaGlsZENvbnRyb2xsZXIgPSB7fTtcbiAgICAgICAgICAgIHJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyKGFwcC50YWdOYW1lcywgJGh0bWwsIGNvbnRyb2xsZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGFwcC5zYWZlRW1wdHkoY29udHJvbGxlci4kY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLiRjb250YWluZXIuYXBwZW5kKCRodG1sKTtcbiAgICAgICAgICAgICAgICBhcHAucmVmcmVzaChjb250cm9sbGVyLiRjb250YWluZXIsIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7anF1ZXJ5fSAkY29udGFpbmVyXG4gICAgICogQHBhcmFtIHtBYnN0cmFjdFNEQ30gbGVhZkNvbnRyb2xsZXJcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPGpRdWVyeT59XG4gICAgICovXG4gICAgcmVmcmVzaDogKCRjb250YWluZXIsIGxlYWZDb250cm9sbGVyKSA9PiB7XG4gICAgICAgIGlmICghbGVhZkNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGxlYWZDb250cm9sbGVyID0gYXBwLmdldENvbnRyb2xsZXIoJGNvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxlYWZDb250cm9sbGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvbWlzZUR1bW15RmFjdG9yeSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNvbnRyb2xsZXIgPSBsZWFmQ29udHJvbGxlcjtcbiAgICAgICAgbGV0IGNvbnRyb2xsZXJMaXN0ID0gW107XG4gICAgICAgIHdoaWxlIChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLl9pc0V2ZW50c1NldCA9IGZhbHNlO1xuICAgICAgICAgICAgY29udHJvbGxlckxpc3QudW5zaGlmdChjb250cm9sbGVyKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjb250cm9sbGVyLl9wYXJlbnRDb250cm9sbGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcGxhY2VUYWdFbGVtZW50c0luQ29udGFpbmVyKGFwcC50YWdOYW1lcywgbGVhZkNvbnRyb2xsZXIuJGNvbnRhaW5lciwgbGVhZkNvbnRyb2xsZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVsb2FkTWV0aG9kSFRNTChsZWFmQ29udHJvbGxlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY29uIG9mIGNvbnRyb2xsZXJMaXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldENvbnRyb2xsZXJFdmVudHMoY29uKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZWFmQ29udHJvbGxlci5vblJlZnJlc2goJGNvbnRhaW5lcik7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9KTtcbiAgICB9LFxufTsiXSwibmFtZXMiOlsiY2FtZWxDYXNlVG9UYWdOYW1lIiwidGFnTmFtZVRvQ2FtZWxDYXNlIiwiZ2V0Qm9keSIsInVwbG9hZEZpbGVGb3JtRGF0YSIsInByb21pc2VEdW1teUZhY3RvcnkiLCJyZXBsYWNlVGFnRWxlbWVudHNJbkNvbnRhaW5lciIsInJlbG9hZEhUTUxDb250cm9sbGVyIiwiREFUQV9DT05UUk9MTEVSX0tFWSIsIkNPTlRST0xMRVJfQ0xBU1MiLCJnZXRDb250cm9sbGVyIiwiY2xlYW5DYWNoZSIsInJlbG9hZE1ldGhvZEhUTUwiLCJBYnN0cmFjdFNEQyIsIkdsb2JhbCIsImNvbnRyb2xsZXJMaXN0IiwidGFnTGlzdCIsImluaXRFdmVudHMiLCJzZXRDb250cm9sbGVyRXZlbnRzIiwiU1REX0VWRU5UX0xJU1QiLCJ3aW5kb3dFdmVudEhhbmRsZXIiLCJ0cmlnZ2VyIiwiaXNDb25uZWN0ZWQiLCJjbG9zZSIsIlBST1BFUlRJRVNfVVBEQVRFIiwic2RjRG9tRnJhZ21lbnQiLCJlbGVtZW50IiwicHJvcHMiLCIkbmV3X2VsZW0iLCJpc19zZWxmIiwiJCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInRhZ05hbWUiLCJuYW1lIiwiZGF0YSIsIk9iamVjdCIsImVudHJpZXMiLCJmb3JFYWNoIiwiayIsInYiLCJzdGFydHNXaXRoIiwiYWRkRXZlbnRMaXN0ZW5lciIsInN1YnN0cmluZyIsInRvTG93ZXJDYXNlIiwic2V0QXR0cmlidXRlIiwiYWRkQ2xhc3MiLCJ3aW5kb3ciLCJzZGNEb20iLCJjaGlsZHJlbiIsImMiLCJhcHBlbmQiLCJhcHAiLCJDU1JGX1RPS0VOIiwiTEFOR1VBR0VfQ09ERSIsIkRFQlVHIiwiVkVSU0lPTiIsInRhZ05hbWVzIiwicm9vdENvbnRyb2xsZXIiLCJfaXNJbml0IiwiX29yaWdpbl90cmlnZ2VyIiwiaW5pdF9zZGMiLCJmbiIsImV2ZW50IiwiZXZfdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInR5cGUiLCJpbmNsdWRlcyIsInB1c2giLCJvbiIsInVwZGF0ZUpxdWVyeSIsInRhZyIsImNvbnRyb2xsZXIiLCIkY29udGFpbmVyIiwic2FmZVJlcGxhY2UiLCIkZWxlbSIsInNhZmVFbXB0eSIsInNhZmVSZW1vdmUiLCJjb250cm9sbGVyVG9UYWciLCJDb250cm9sbGVyIiwicmVwbGFjZSIsInJlZ2lzdGVyR2xvYmFsIiwiZ2xvYmFsQ29udHJvbGxlciIsIl90YWdOYW1lIiwicmVnaXN0ZXIiLCJwcm90b3R5cGUiLCJhZGRNaXhpbiIsIm1peGlucyIsIm1peGluIiwibWl4aW5OYW1lIiwicG9zdCIsInVybCIsImFyZ3MiLCJhamF4IiwicGFyYW1zIiwiZ2V0IiwibWV0aG9kIiwiX21ldGhvZCIsInAiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInRoZW4iLCJhIiwiYiIsInN0YXR1cyIsInJlZnJlc2giLCJjYXRjaCIsInN1Ym1pdEZvcm1BbmRVcGRhdGVWaWV3IiwiZm9ybSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJyZWRpcmVjdG9yIiwibG9jYXRpb24iLCJocmVmIiwiYWN0aW9uIiwicmVzcG9uc2VKU09OIiwic3VibWl0Rm9ybSIsIiRjaGlsZHJlbiIsImVhY2giLCJfIiwiJGVsZW1lbnQiLCIkbmV3IiwiaW5zZXJ0QmVmb3JlIiwiJHRoaXMiLCJyZW1vdmUiLCJmaW5kIiwicmVsb2FkQ29udHJvbGxlciIsImh0bWwiLCIkaHRtbCIsIl9jaGlsZENvbnRyb2xsZXIiLCJsZWFmQ29udHJvbGxlciIsIl9pc0V2ZW50c1NldCIsInVuc2hpZnQiLCJfcGFyZW50Q29udHJvbGxlciIsImNvbiIsIm9uUmVmcmVzaCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/simpleDomControl/sdc_main.js\n");
68
68
 
69
69
  /***/ }),
70
70
 
@@ -1 +1 @@
1
- var 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]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};let n;e.d(t,{wz:()=>ne,ms:()=>q,yA:()=>he,sD:()=>d,kb:()=>_,wH:()=>C,on:()=>S,YV:()=>O,eA:()=>m,YF:()=>E,WQ:()=>ue,QN:()=>de,gV:()=>F});const r=/([^\s,]+)/g,s=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;function o(){return n||(n=$("body")),n}function i(){return new Promise((function(e){e()}))}function l(e){return(e=(e=e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))).replace(/[0-9]+/g,(e=>`-${e}`))).replace(/^[-]/g,"")}function a(e){return e.replace(/-./g,(e=>`${e[1].toUpperCase()}`))}const c=(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 h(e,t,n){return $.ajax({url:t,type:n||"POST",xhr:function(){var e=$.ajaxSettings.xhr();return e.upload&&e.upload.addEventListener("progress",u,!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 u(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 d(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 f(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)))}function _(e){e.find(".has-error").removeClass("has-error").find(".alert-danger").remove(),e.find(".non-field-errors").remove()}function m(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"),s=e.find(".form-group."+n);s.addClass("has-error"),s.find(".form-input-container").append(t.find(".alert-danger"))})),r}function p(e,t,n=null){let r=function(e,t){let n;e||(e=[]);let r=t.data(),s={};for(let t in r)r.hasOwnProperty(t)&&t!==R&&!e.includes(t)&&(s[t]=r[t]);n=[];for(let t=0;t<e.length;t++){let s=e[t];r.hasOwnProperty(s)?n.push(r[s]):n.push("undefined")}return n.push(s),n}(e,t);return function(e,t=null){let n=[];for(let r=0;r<e.length;r++){let s=d(e[r],t);n.push(s)}return n}(r,n)}function g(e,t,n){if(!e)return!1;if("function"!=typeof e.onInit)return!1;let o;var i;"function"==typeof e._on_init_params?o=e._on_init_params():o=(i=e.onInit.toString().replace(s,"")).slice(i.indexOf("(")+1,i.indexOf(")")).match(r)||[];let l=p(o,t,n._parentController);if(e.onInit.apply(n,l),n===e)for(let r in e._mixins)g(e._mixins[r],t,n)}let y={},v={};function w(){return Object.keys(v)}function b(e,t){if(e){let n=a(t._tagName);e._childController[n]||(e._childController[n]=[]),e._childController[n].push(t)}return t._parentController=e}function k(e,t,n,r){let s=[];r=function(e,t){e=(e=e.concat(v[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 v[t][1])e.includes(r)||(e.push(r),n=!0)}return e}(r,n);for(let e of r)s.push(v[e][0]);let o=new(function(e,...t){let n=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}get mixins(){return this._mixins}};return c(n,e),t.forEach((e=>{c(n,e)})),n}(v[n][0],...s));return o._tagName=n,b(e,o),o.$container=t,function(e,t){g(t,e,t)}(t,o),o}function C(e,t,n,r){let s=a(n);if(y[s]){let n=y[s];return b(e,n),n.$container=t,n}return k(e,t,n,r)}function O(e){const t=function(e){return function(e){let t={args:{}};return e.contentUrl&&(t=L(e,e.contentUrl),e.contentUrl=t.url),Promise.all([M(e.contentUrl,t.args,e._tagName,e.contentReload)]).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)||i()).then((()=>t)))))}(e).then((function(t){return function(e,t){return D(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){return e.refresh&&e.refresh()}(e))).catch((function(t){return D(e,t)}));return e.load_async?Promise.resolve():t}let N={},P={};function S(e,t){return E(e),P.hasOwnProperty(e)?t[P[e]]?void N[e].push(t):console.log("No event handler: "+e,t):console.log("No event: "+e,t)}function E(e,t){t||(t=e),P[e]||(P[e]=t,N[e]=[])}function q(e){for(let t in N)if(N.hasOwnProperty(t))for(let n=N[t].length;n>=0;n--)e===N[t][n]&&N[t].splice(n,1)}function F(e){let t=Array.apply(null,arguments);if(e=t.shift(),!N.hasOwnProperty(e)||!P.hasOwnProperty(e))return i();let n=N[e],r=P[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 x={};const R="_controller_",j="_sdc_controller_";function T(e,t,n){if(!e)return[];let r=e.children(),s=[];return r.each((function(e,r){let o=$(r),i=o.prop("tagName").toLowerCase().split("_");$.inArray(i[0],t)>=0?s.push({tag:i[0],super:i.splice(1)||[],dom:o}):i[0].startsWith("this.")?o.addClass(`_bind_to_update_handler sdc_uuid_${n._uuid}`):s=s.concat(T(o,t,n))})),s}function M(e,t,n,r){return e?x[n]?Promise.resolve(x[n]):(t.VERSION=he.VERSION,t._method="content",$.get(e,t).then((function(e){return r||(x[n]=e),e})).catch((function(e){throw 301===e.status&&F("_RedirectOnView",e.responseJSON["url-link"]),F("navLoaded",{controller_name:()=>e.status}),`<sdc-error data-code="${e.status}">${e.responseText}</sdc-error>`}))):Promise.resolve(!1)}function I(e,t){return t=t||e.data(R),J(he.tagNames,e,t)}function L(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 p(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 s=e._urlParams[r],o=RegExp("%\\("+s+"\\)\\w","gm");t=t.replace(o,""+n.shift())}return t}(e,t,n)),e.parsedContentUrl=t,{url:t,args:n[n.length-1]}}function A(e){return e.hasClass(j)?e.data(`${R}`):e.closest(`.${j}`).data(`${R}`)}function U(e,t,n,r){let s=e.data(R);return s?I(e,s):(s=C(r,e,t,n),e.data(R,s),e.addClass(j),O(s))}function D(e,t){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 I(e.$container,e)}function J(e,t,n){return new Promise((r=>{let s=T(t,e,n),o=s.length;if(0===o)return r();for(let e=0;e<s.length;e++)U(s[e].dom,s[e].tag,s[e].super,n).then((()=>{if(o--,0===o)return r()}))}))}function V(e){return G(e,e.$container)}function G(e,t){const n=[];return t.find(`._bind_to_update_handler.sdc_uuid_${e._uuid}`).each((function(){const t=$(this);let r;if(t.hasClass("_with_handler"))r=t.data("handler");else{let t=this.tagName.toLowerCase().replace(/^this./,"");e[t]&&(r=e[t])}void 0!==r&&("function"==typeof r&&(r=r.bind(e)(t.data())),n.push(Promise.resolve(r).then((n=>{const r=$("<div></div>");return r.append(n),J(w(),r,e).then((()=>G(e,r).then((()=>(t.safeEmpty().text("").append(n),!0)))))}))))})),Promise.all(n)}let W=!1,B=!1,K=null;const z=25e3;let H={};class Q{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 e.newModel(this._model,{pk:this.pk})}}const Y={get(e,t){const n=e[t]??void 0;if(n instanceof Q){if(!n.pk&&0!==n.pk)return null;const e=new Number(n.pk);return e.load=n.load.bind(n),e}return n},set(e,t,n){if(t in e){const r=e[t];r instanceof Q?n.hasOwnProperty("pk")?r.pk=n.pk:r.pk=n:e[t]=n}else e[t]=n;return!0}};function X(){return B=!0,new Promise((e=>{K="https:"===window.location.protocol?new WebSocket(`wss://${window.location.host}/sdc_ws/ws/`):new WebSocket(`ws://${window.location.host}/sdc_ws/ws/`),K.onmessage=function(e){let t=JSON.parse(e.data);if(t.is_error)(t.msg||t.header)&&F("pushErrorMsg",t.header||"",t.msg||""),H[t.id]&&(H[t.id][1](t.data||null),delete H[t.id]);else if((t.msg||t.header)&&F("pushMsg",t.header||"",t.msg||""),t.type&&"sdc_recall"===t.type)H[t.id]&&(H[t.id][0](t.data),delete H[t.id]);else if(t.type&&"sdc_event"===t.type){let e=t.event;e&&F(e,t.payload)}else t.type&&"sdc_redirect"===t.type&&F("onNavLink",t.link)},K.onclose=function(){W&&console.error("SDC Socket closed unexpectedly"),W=!1;for(const[e,t]of Object.entries(H))t[1]({}),delete H[e];setTimeout((()=>{X()}),1e3)},K.onerror=function(e){if(console.error("Socket encountered error: ",e.message,"Closing socket"),W)try{K.close()}catch(e){}},K.onopen=function(){W=!0,B=!1,e()}}))}function Z(){if(W){W=!1;try{K.close()}catch(e){}}}function ee(){return new Promise((e=>W?e():B?void setTimeout((()=>{ee().then((()=>{e()}))}),200):e(X())))}class te{constructor(e,t={}){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=f()}[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},Y),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=f();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){let r=$('<div class="container-fluid">');return this.isConnected().then((()=>{const s=f();this.socket.send(JSON.stringify({event:"model",event_type:"list_view",event_id:s,args:{model_name:this.model_name,model_query:this.model_query,filter:e}})),this.open_request[s]=[e=>{r.append(e.html),he.refresh(r),t&&t(e)},e=>{n&&n(e)}]})),r}detailView(e=-1,t=null,n=null){e=parseInt(e),isNaN(e)&&(e=-1);let r,s=$('<div class="container-fluid">');return r=0!==this.values_list.length?this.isConnected():this.load(),r.then((()=>{-1===e&&(e=this.values_list[0].pk);const r=f();this.socket.send(JSON.stringify({event:"model",event_type:"detail_view",event_id:r,args:{model_name:this.model_name,model_query:this.model_query,pk:e}})),this.open_request[r]=[e=>{s.append(e.html),he.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]=(s=$(e).val()).toLowerCase().match(/^(true|false)$/)?"true"===s.toLowerCase():"undefined"!==s?"none"===s.toLowerCase()?null:s.match(/^-?\d+$/)?parseInt(s):s.match(/^-?\d+\.?\d+$/)?parseFloat(s):s.match(/^(['][^']*['])|(["][^"]*["])$/)?s.substring(1,s.length-1):s:void 0:"checkbox"===e.type?r[t]=e.checked:"file"===e.type?r[t]=e.files[0]:r[t]=$(e).val())}var s;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 class="container-fluid">');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 s=$('<div class="container-fluid">');return r.then((()=>{e<=-1&&(e=this.values_list.at(e).pk),this._getForm(e,"edit_form",null,s,t,n)})),s}namedForm(e=-1,t,n=null,r=null){let s;e=parseInt(e),isNaN(e)&&(e=-1),s=0!==this.values_list.length?this.isConnected():this.load();let o=$('<div class="container-fluid">');return s.then((()=>{e<=-1&&(e=this.values_list.at(e).pk),this._getForm(e,"named_form",t,o,n,r)})),o}_getForm(e,t,n,r,s,o){e=parseInt(e),isNaN(e)&&(e=-1);const i=f();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 n=r.closest("form").addClass(`sdc-model-${l}-form sdc-model-form ${this.form_id}`).data("model",this).data("model_pk",e);n.length>0&&!n[0].hasAttribute("sdc_submit")&&n.attr("sdc_submit","submitModelFormDistributor"),he.refresh(r),s&&s(t)},e=>{o&&o(e)}]}new(){return new Promise(((e,t)=>{const n=$("<form>").append(this.createForm((()=>{this.syncFormToModel(n),e()}),t))}))}save(e=-1){return e=parseInt(e),isNaN(e)&&(e=-1),this.isConnected().then((()=>{let t;t=e>-1?[this.byPk(e)]:this.values_list;let n=[];return t.forEach((e=>{const t=f();n.push(new Promise(((n,r)=>{this._readFiles(e).then((s=>{this.socket.send(JSON.stringify({event:"model",event_type:"save",event_id:t,args:{model_name:this.model_name,model_query:this.model_query,data:e,files:s}})),this.open_request[t]=[e=>{let t="string"==typeof e.data.instance?JSON.parse(e.data.instance):e.data.instance;e.data.instance=this._parseServerRes(t),n(e)},r]}))})))})),Promise.all(n)}))}create(e=this.values){const t=f();return this.isConnected().then((()=>new Promise(((n,r)=>{this._readFiles(e).then((s=>{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:s}})),this.open_request[t]=[e=>{let t="string"==typeof e.data.instance?JSON.parse(e.data.instance):e.data.instance;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=f();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){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,s]of Object.entries(e))s instanceof File&&t.push(new Promise(((e,t)=>{((r,s)=>{let o=new FileReader;o.onload=o=>{const i=f();this.open_request[i]=[e,t];let l=o.target.result,a=parseInt(Math.ceil(l.length/z));n[r]={id:i,file_name:s.name,field_name:r,content_length:s.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(z*e,z*(e+1)),idx:e,number_of_chunks:a,file_name:s.name,field_name:r,content_length:s.size,content_type:s.type,model_name:this.model_name,model_query:this.model_query}}))},o.onerror=()=>{t()},o.readAsBinaryString(s)})(r,s)})));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),delete this.open_request[t.event_id]),(t.msg||t.header)&&F("pushErrorMsg",t.header||"",t.msg||""),"connect"===t.type&&(this.open_request._connecting_process[1](t),delete this.open_request._connecting_process,this._auto_reconnect=!1,this.socket.close());else{if((t.msg||t.header)&&F("pushMsg",t.header||"",t.msg||""),"connect"===t.type)this._is_connected=!0,this._is_conneting_process=!1,this.open_request._connecting_process[0](t),delete this.open_request._connecting_process;else if("load"===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),delete this.open_request[t.event_id])}}_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=f();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 Q(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}}class ne{constructor(){this._uuid=f(),this.contentUrl="",this.contentReload=!1,this.hasSubnavView=!1,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="",this._childController={},this._parentController=null,this._onLoadDone=!1,this.$container=null,this._isMixin=!1}_runLifecycle(e,t){he.DEBUG&&console.debug(e,this._tagName);let n=[];if(!this._isMixin){this._isMixin=!0;for(let r in this._mixins){let s=this._mixins[r];"function"==typeof s[e]&&n.push(s[e].apply(this,t))}return Promise.all(n).then((()=>{this._isMixin=!1}))}}onInit(){he.DEBUG&&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}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()){q(this);const e=a(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=Object.assign({},...e)}post(e,t){return he.post(this,e,t)}get(e,t){return he.get(this,e,t)}submitForm(e,t,n){return he.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){let s=f();return ee().then((()=>{K.send(JSON.stringify({event:"sdc_call",id:s,controller:t,app:e,function:n,args:r}))})),new Promise(((e,t)=>{H[s]=[e,t]}))}(n[1],this._tagName,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 te(e,t);return this._models.push(n),n}updateModel(e,t={},n){let r=new te(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 he.refresh(this.$container,this)}reload(){return he.reloadController(this)}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 r=e.data("model");const s=r.syncForm(e);for(let t of s)n.push(new Promise(((n,s)=>{let o;o=null!==t.pk&&t.pk>=0?r.save(t.pk):r.create(t),o.then((t=>{_(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=>{m(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 re=["onbeforeunload"],se=Object.keys(window).filter((e=>/^on/.test(e)&&!re.includes(e))).map((e=>e.slice(2)));function oe(e){let t=e.type;e.hasOwnProperty("namespace")&&e.namespace&&e.namespace.length&&(t+=`.${e.namespace}`);let n=$(e.target),r=null,s=!1,o=!1;for(e.stopImmediatePropagation=()=>o=!0,e.stopPropagation=()=>o=s=!0;n.length;){let i=n.attr(`sdc_${t}`);if(i){if(!r&&(r=A(n),!r))return;for(;r;){if(i.split(" ").forEach((o=>{if(s)return;let i=null;if("function"==typeof o)i=o;else if("function"==typeof r[o])i=r[o];else if("string"==typeof o&&o.startsWith("this.event_")){if(i=r.getEvents()[t],!i)return;if(i=i[o.slice(11)],!i)return}i&&i.call(r,n,e)})),o)return;r=r._parentController}}if(s)return;n=n.parent()}return{res:!0}}function ie(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 s=`this.event_${t}`;-1===r.indexOf(s)&&(r.push(s),e.attr(`sdc_${n}`,r.join(" ")))}))}}const le={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):(le[e.toLowerCase()]&&(e=le[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 ae,ce,he={CSRF_TOKEN:window.CSRF_TOKEN||"",LANGUAGE_CODE:window.LANGUAGE_CODE||"en",DEBUG:window.DEBUG||!1,VERSION:window.VERSION||"0.0",tagNames:[],Global:y,rootController:null,_isInit:!1,_origin_trigger:null,init_sdc:()=>{he._isInit||(he._isInit=!0,he._origin_trigger?Z():(he._origin_trigger=$.fn.trigger,$.fn.trigger=function(e){const t={}.hasOwnProperty.call(e,"type")?e.type:e;return se.includes(t)||(se.push(t),$(window).on(t,oe)),he._origin_trigger.call(this,e)},he.updateJquery()),ee(),function(){const e=$(window);se.forEach((t=>{e.off(t).on(t,oe)}))}(),he.rootController=he.rootController||new ne),he.tagNames=w();for(let[e,t]of Object.entries(he.Global))t.$container||(y[e].$container=o());return J(he.tagNames,o(),he.rootController)},updateJquery:()=>{$.fn.safeReplace=function(e){return he.safeReplace($(this),e)},$.fn.safeEmpty=function(){return he.safeEmpty($(this))},$.fn.safeRemove=function(){return he.safeRemove($(this))}},controllerToTag:e=>l(e.name).replace(/-controller$/,""),registerGlobal:e=>{let t=he.controllerToTag(e),n=new e;v[t]=[n,[]],n._tagName=t,window[a(t)]=y[a(t)]=n},cleanCache:()=>{x={}},register:e=>{let t=he.controllerToTag(e);return v[t]=[e,[]],e.prototype._tagName=t,{addMixin:(...e)=>{for(let n of e){let e;"string"==typeof n?e=l(n):n&&(e=he.controllerToTag(n)),v[t][1].push(e)}}}},post:(e,t,n)=>(n||(n={}),n.CSRF_TOKEN=he.CSRF_TOKEN,he.ajax(e,t,params,$.post)),get:(e,t,n)=>he.ajax(e,t,n,$.get),ajax:(e,t,n,r)=>{n||(n={}),n.VERSION=he.VERSION,n._method=n._method||"api";const s=new Promise(((o,i)=>r(t,n).then(((t,n,r)=>{o(t,n,r),"redirect"===t.status?F("onNavLink",t["url-link"]):s.then((()=>{he.refresh(e.$container)}))})).catch(i)));return s},submitFormAndUpdateView:(e,t,n,r)=>{let s=new FormData(t);const o=e=>{e["url-link"]?F("onNavLink",e["url-link"]):window.location.href=e.url},i=new Promise(((l,a)=>{h(s,n||t.action,r||t.method).then(((t,n,r)=>{l(t,n,r),"redirect"===t.status?o(t):i.then((()=>{he.refresh(e.$container)}))})).catch(((e,t,n)=>{301===e.status?(e=e.responseJSON,o(e),l(e,t,n)):a(e,t,n)}))}));return i},submitForm:(e,t,n)=>{let r=new FormData(e);return new Promise(((s,o)=>{h(r,t||e.action,n||e.method).then(s).catch(o)}))},getController:e=>A(e),safeEmpty:e=>(e.children().each((function(e,t){let n=$(t);he.safeRemove(n)})),e),safeReplace:(e,t)=>(t.insertBefore(e),he.safeRemove(e)),safeRemove:e=>(e.each((function(){let e=$(this);e.data(`${R}`)&&e.data(`${R}`).remove()})),e.find(`.${j}`).each((function(){const e=$(this).data(`${R}`);e&&e.remove()})),e.remove()),reloadController:e=>function(e){if(e.contentUrl){let t=L(e,e.contentUrl);return e.contentUrl=t.url,M(e.contentUrl,t.args,e._tagName,e.contentReload)}return new Promise((e=>{e($())}))}(e).then((t=>{let n=$(t);e._childController={},J(he.tagNames,n,e).then((()=>{he.safeEmpty(e.$container),e.$container.append(n),he.refresh(e.$container,e)}))})),refresh:(e,t)=>{if(t||(t=he.getController(e)),!t)return i();let n=t,r=[];for(;n;)n.isEventsSet=!1,r.unshift(n),n=n._parentController;return J(he.tagNames,t.$container,t).then((()=>{V(t).then((()=>{for(let e of r)ie(e);t.onRefresh(e)}))}))}};const ue=Z,de={get_controller:async function(e,t={},n=""){if(!jest)throw new Error("JEST is not defined");ae||(ce=$.ajax.bind($),ae=jest.spyOn($,"ajax"),ae.mockImplementation((function(e){return ce(e).then((e=>e)).catch((e=>e))})));const r=$("body");he.updateJquery(),r.safeEmpty();const s=$(`<${e}>${n}</${e}>`);for(const[e,n]of Object.entries(t))s.data(e,n);const o=$("<div></div>").append(s);return r.append(o),he._isInit=!1,he.cleanCache(),await he.init_sdc(),he.getController(s)}};var fe=t.wz,_e=t.ms,me=t.yA,pe=t.sD,ge=t.kb,ye=t.wH,ve=t.on,we=t.YV,$e=t.eA,be=t.YF,ke=t.WQ,Ce=t.QN,Oe=t.gV;export{fe as AbstractSDC,_e as allOff,me as app,pe as checkIfParamNumberBoolOrString,ge as clearErrorsInForm,ye as controllerFactory,ve as on,we as runControlFlowFunctions,$e as setErrorsInForm,be as setEvent,ke as socketReconnect,Ce as test_utils,Oe as trigger};
1
+ var 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]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};let n;e.d(t,{wz:()=>ne,ms:()=>q,yA:()=>he,sD:()=>d,kb:()=>_,wH:()=>C,on:()=>S,YV:()=>O,eA:()=>m,YF:()=>E,WQ:()=>ue,QN:()=>de,gV:()=>F});const r=/([^\s,]+)/g,s=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;function o(){return n||(n=$("body")),n}function i(){return new Promise((function(e){e()}))}function l(e){return(e=(e=e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))).replace(/[0-9]+/g,(e=>`-${e}`))).replace(/^[-]/g,"")}function a(e){return e.replace(/-./g,(e=>`${e[1].toUpperCase()}`))}const c=(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 h(e,t,n){return $.ajax({url:t,type:n||"POST",xhr:function(){var e=$.ajaxSettings.xhr();return e.upload&&e.upload.addEventListener("progress",u,!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 u(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 d(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 f(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)))}function _(e){e.find(".has-error").removeClass("has-error").find(".alert-danger").remove(),e.find(".non-field-errors").remove()}function m(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"),s=e.find(".form-group."+n);s.addClass("has-error"),s.find(".form-input-container").append(t.find(".alert-danger"))})),r}function p(e,t,n=null){let r=function(e,t){let n;e||(e=[]);let r=t.data(),s={};for(let t in r)r.hasOwnProperty(t)&&t!==R&&!e.includes(t)&&(s[t]=r[t]);n=[];for(let t=0;t<e.length;t++){let s=e[t];r.hasOwnProperty(s)?n.push(r[s]):n.push("undefined")}return n.push(s),n}(e,t);return function(e,t=null){let n=[];for(let r=0;r<e.length;r++){let s=d(e[r],t);n.push(s)}return n}(r,n)}function g(e,t,n){if(!e)return!1;if("function"!=typeof e.onInit)return!1;let o;var i;"function"==typeof e._on_init_params?o=e._on_init_params():o=(i=e.onInit.toString().replace(s,"")).slice(i.indexOf("(")+1,i.indexOf(")")).match(r)||[];let l=p(o,t,n._parentController);if(e.onInit.apply(n,l),n===e)for(let r in e._mixins)g(e._mixins[r],t,n)}let y={},v={};function w(){return Object.keys(v)}function b(e,t){if(e){let n=a(t._tagName);e._childController[n]||(e._childController[n]=[]),e._childController[n].push(t)}return t._parentController=e}function k(e,t,n,r){let s=[];r=function(e,t){e=(e=e.concat(v[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 v[t][1])e.includes(r)||(e.push(r),n=!0)}return e}(r,n);for(let e of r)s.push(v[e][0]);let o=new(function(e,...t){let n=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}get mixins(){return this._mixins}};return c(n,e),t.forEach((e=>{c(n,e)})),n}(v[n][0],...s));return o._tagName=n,b(e,o),o.$container=t,function(e,t){g(t,e,t)}(t,o),o}function C(e,t,n,r){let s=a(n);if(y[s]){let n=y[s];return b(e,n),n.$container=t,n}return k(e,t,n,r)}function O(e){const t=function(e){return function(e){let t={args:{}};return e.contentUrl&&(t=L(e,e.contentUrl),e.contentUrl=t.url),Promise.all([M(e.contentUrl,t.args,e._tagName,e.contentReload)]).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)||i()).then((()=>t)))))}(e).then((function(t){return function(e,t){return D(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){return e.refresh&&e.refresh()}(e))).catch((function(t){return D(e,t)}));return e.load_async?Promise.resolve():t}let N={},P={};function S(e,t){return E(e),P.hasOwnProperty(e)?t[P[e]]?void N[e].push(t):console.log("No event handler: "+e,t):console.log("No event: "+e,t)}function E(e,t){t||(t=e),P[e]||(P[e]=t,N[e]=[])}function q(e){for(let t in N)if(N.hasOwnProperty(t))for(let n=N[t].length;n>=0;n--)e===N[t][n]&&N[t].splice(n,1)}function F(e){let t=Array.apply(null,arguments);if(e=t.shift(),!N.hasOwnProperty(e)||!P.hasOwnProperty(e))return i();let n=N[e],r=P[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 x={};const R="_controller_",j="_sdc_controller_";function T(e,t,n){if(!e)return[];let r=e.children(),s=[];return r.each((function(e,r){let o=$(r),i=o.prop("tagName").toLowerCase().split("_");$.inArray(i[0],t)>=0?s.push({tag:i[0],super:i.splice(1)||[],dom:o}):i[0].startsWith("this.")?o.addClass(`_bind_to_update_handler sdc_uuid_${n._uuid}`):s=s.concat(T(o,t,n))})),s}function M(e,t,n,r){return e?x[n]?Promise.resolve(x[n]):(t.VERSION=he.VERSION,t._method="content",$.get(e,t).then((function(e){return r||(x[n]=e),e})).catch((function(e){throw 301===e.status&&F("_RedirectOnView",e.responseJSON["url-link"]),F("navLoaded",{controller_name:()=>e.status}),`<sdc-error data-code="${e.status}">${e.responseText}</sdc-error>`}))):Promise.resolve(!1)}function I(e,t){return t=t||e.data(R),J(he.tagNames,e,t)}function L(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 p(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 s=e._urlParams[r],o=RegExp("%\\("+s+"\\)\\w","gm");t=t.replace(o,""+n.shift())}return t}(e,t,n)),e.parsedContentUrl=t,{url:t,args:n[n.length-1]}}function A(e){return e.hasClass(j)?e.data(`${R}`):e.closest(`.${j}`).data(`${R}`)}function U(e,t,n,r){let s=e.data(R);return s?I(e,s):(s=C(r,e,t,n),e.data(R,s),e.addClass(j),O(s))}function D(e,t){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 I(e.$container,e)}function J(e,t,n){return new Promise((r=>{let s=T(t,e,n),o=s.length;if(0===o)return r();for(let e=0;e<s.length;e++)U(s[e].dom,s[e].tag,s[e].super,n).then((()=>{if(o--,0===o)return r()}))}))}function V(e){return G(e,e.$container)}function G(e,t){const n=[];return t.find(`._bind_to_update_handler.sdc_uuid_${e._uuid}`).each((function(){const t=$(this);let r;if(t.hasClass("_with_handler"))r=t.data("handler");else{let t=this.tagName.toLowerCase().replace(/^this./,"");e[t]&&(r=e[t])}void 0!==r&&("function"==typeof r&&(r=r.bind(e)(t.data())),n.push(Promise.resolve(r).then((n=>{const r=$("<div></div>");return r.append(n),J(w(),r,e).then((()=>G(e,r).then((()=>(t.safeEmpty().text("").append(n),!0)))))}))))})),Promise.all(n)}let W=!1,B=!1,K=null;const z=25e3;let H={};class Q{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 e.newModel(this._model,{pk:this.pk})}}const Y={get(e,t){const n=e[t]??void 0;if(n instanceof Q){if(!n.pk&&0!==n.pk)return null;const e=new Number(n.pk);return e.load=n.load.bind(n),e}return n},set(e,t,n){if(t in e){const r=e[t];r instanceof Q?n.hasOwnProperty("pk")?r.pk=n.pk:r.pk=n:e[t]=n}else e[t]=n;return!0}};function X(){return B=!0,new Promise((e=>{K="https:"===window.location.protocol?new WebSocket(`wss://${window.location.host}/sdc_ws/ws/`):new WebSocket(`ws://${window.location.host}/sdc_ws/ws/`),K.onmessage=function(e){let t=JSON.parse(e.data);if(t.is_error)(t.msg||t.header)&&F("pushErrorMsg",t.header||"",t.msg||""),H[t.id]&&(H[t.id][1](t.data||null),delete H[t.id]);else if((t.msg||t.header)&&F("pushMsg",t.header||"",t.msg||""),t.type&&"sdc_recall"===t.type)H[t.id]&&(H[t.id][0](t.data),delete H[t.id]);else if(t.type&&"sdc_event"===t.type){let e=t.event;e&&F(e,t.payload)}else t.type&&"sdc_redirect"===t.type&&F("onNavLink",t.link)},K.onclose=function(){W&&console.error("SDC Socket closed unexpectedly"),W=!1;for(const[e,t]of Object.entries(H))t[1]({}),delete H[e];setTimeout((()=>{X()}),1e3)},K.onerror=function(e){if(console.error("Socket encountered error: ",e.message,"Closing socket"),W)try{K.close()}catch(e){}},K.onopen=function(){W=!0,B=!1,e()}}))}function Z(){if(W){W=!1;try{K.close()}catch(e){}}}function ee(){return new Promise((e=>W?e():B?void setTimeout((()=>{ee().then((()=>{e()}))}),200):e(X())))}class te{constructor(e,t={}){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=f()}[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},Y),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=f();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){let r=$('<div class="container-fluid">');return this.isConnected().then((()=>{const s=f();this.socket.send(JSON.stringify({event:"model",event_type:"list_view",event_id:s,args:{model_name:this.model_name,model_query:this.model_query,filter:e}})),this.open_request[s]=[e=>{r.append(e.html),he.refresh(r),t&&t(e)},e=>{n&&n(e)}]})),r}detailView(e=-1,t=null,n=null){e=parseInt(e),isNaN(e)&&(e=-1);let r,s=$('<div class="container-fluid">');return r=0!==this.values_list.length?this.isConnected():this.load(),r.then((()=>{-1===e&&(e=this.values_list[0].pk);const r=f();this.socket.send(JSON.stringify({event:"model",event_type:"detail_view",event_id:r,args:{model_name:this.model_name,model_query:this.model_query,pk:e}})),this.open_request[r]=[e=>{s.append(e.html),he.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]=(s=$(e).val()).toLowerCase().match(/^(true|false)$/)?"true"===s.toLowerCase():"undefined"!==s?"none"===s.toLowerCase()?null:s.match(/^-?\d+$/)?parseInt(s):s.match(/^-?\d+\.?\d+$/)?parseFloat(s):s.match(/^(['][^']*['])|(["][^"]*["])$/)?s.substring(1,s.length-1):s:void 0:"checkbox"===e.type?r[t]=e.checked:"file"===e.type?r[t]=e.files[0]:r[t]=$(e).val())}var s;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 class="container-fluid">');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 s=$('<div class="container-fluid">');return r.then((()=>{e<=-1&&(e=this.values_list.at(e).pk),this._getForm(e,"edit_form",null,s,t,n)})),s}namedForm(e=-1,t,n=null,r=null){let s;e=parseInt(e),isNaN(e)&&(e=-1),s=0!==this.values_list.length?this.isConnected():this.load();let o=$('<div class="container-fluid">');return s.then((()=>{e<=-1&&(e=this.values_list.at(e).pk),this._getForm(e,"named_form",t,o,n,r)})),o}_getForm(e,t,n,r,s,o){e=parseInt(e),isNaN(e)&&(e=-1);const i=f();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 n=r.closest("form").addClass(`sdc-model-${l}-form sdc-model-form ${this.form_id}`).data("model",this).data("model_pk",e);n.length>0&&!n[0].hasAttribute("sdc_submit")&&n.attr("sdc_submit","submitModelFormDistributor"),he.refresh(r),s&&s(t)},e=>{o&&o(e)}]}new(){return new Promise(((e,t)=>{const n=$("<form>").append(this.createForm((()=>{this.syncFormToModel(n),e()}),t))}))}save(e=-1){return e=parseInt(e),isNaN(e)&&(e=-1),this.isConnected().then((()=>{let t;t=e>-1?[this.byPk(e)]:this.values_list;let n=[];return t.forEach((e=>{const t=f();n.push(new Promise(((n,r)=>{this._readFiles(e).then((s=>{this.socket.send(JSON.stringify({event:"model",event_type:"save",event_id:t,args:{model_name:this.model_name,model_query:this.model_query,data:e,files:s}})),this.open_request[t]=[e=>{let t="string"==typeof e.data.instance?JSON.parse(e.data.instance):e.data.instance;e.data.instance=this._parseServerRes(t),n(e)},r]}))})))})),Promise.all(n)}))}create(e=this.values){const t=f();return this.isConnected().then((()=>new Promise(((n,r)=>{this._readFiles(e).then((s=>{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:s}})),this.open_request[t]=[e=>{let t="string"==typeof e.data.instance?JSON.parse(e.data.instance):e.data.instance;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=f();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){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,s]of Object.entries(e))s instanceof File&&t.push(new Promise(((e,t)=>{((r,s)=>{let o=new FileReader;o.onload=o=>{const i=f();this.open_request[i]=[e,t];let l=o.target.result,a=parseInt(Math.ceil(l.length/z));n[r]={id:i,file_name:s.name,field_name:r,content_length:s.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(z*e,z*(e+1)),idx:e,number_of_chunks:a,file_name:s.name,field_name:r,content_length:s.size,content_type:s.type,model_name:this.model_name,model_query:this.model_query}}))},o.onerror=()=>{t()},o.readAsBinaryString(s)})(r,s)})));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),delete this.open_request[t.event_id]),(t.msg||t.header)&&F("pushErrorMsg",t.header||"",t.msg||""),"connect"===t.type&&(this.open_request._connecting_process[1](t),delete this.open_request._connecting_process,this._auto_reconnect=!1,this.socket.close());else{if((t.msg||t.header)&&F("pushMsg",t.header||"",t.msg||""),"connect"===t.type)this._is_connected=!0,this._is_conneting_process=!1,this.open_request._connecting_process[0](t),delete this.open_request._connecting_process;else if("load"===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),delete this.open_request[t.event_id])}}_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=f();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 Q(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}}class ne{constructor(){this._uuid=f(),this.contentUrl="",this.contentReload=!1,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="",this._childController={},this._parentController=null,this._onLoadDone=!1,this.$container=null,this._isMixin=!1}_runLifecycle(e,t){he.DEBUG&&console.debug(e,this._tagName);let n=[];if(!this._isMixin){this._isMixin=!0;for(let r in this._mixins){let s=this._mixins[r];"function"==typeof s[e]&&n.push(s[e].apply(this,t))}return Promise.all(n).then((()=>{this._isMixin=!1}))}}onInit(){he.DEBUG&&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}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()){q(this);const e=a(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=Object.assign({},...e)}post(e,t){return he.post(this,e,t)}get(e,t){return he.get(this,e,t)}submitForm(e,t,n){return he.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){let s=f();return ee().then((()=>{K.send(JSON.stringify({event:"sdc_call",id:s,controller:t,app:e,function:n,args:r}))})),new Promise(((e,t)=>{H[s]=[e,t]}))}(n[1],this._tagName,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 te(e,t);return this._models.push(n),n}updateModel(e,t={},n){let r=new te(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 he.refresh(this.$container,this)}reload(){return he.reloadController(this)}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 r=e.data("model");const s=r.syncForm(e);for(let t of s)n.push(new Promise(((n,s)=>{let o;o=null!==t.pk&&t.pk>=0?r.save(t.pk):r.create(t),o.then((t=>{_(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=>{m(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 re=["onbeforeunload"],se=Object.keys(window).filter((e=>/^on/.test(e)&&!re.includes(e))).map((e=>e.slice(2)));function oe(e){let t=e.type;e.hasOwnProperty("namespace")&&e.namespace&&e.namespace.length&&(t+=`.${e.namespace}`);let n=$(e.target),r=null,s=!1,o=!1;for(e.stopImmediatePropagation=()=>o=!0,e.stopPropagation=()=>o=s=!0;n.length;){let i=n.attr(`sdc_${t}`);if(i){if(!r&&(r=A(n),!r))return;for(;r;){if(i.split(" ").forEach((o=>{if(s)return;let i=null;if("function"==typeof o)i=o;else if("function"==typeof r[o])i=r[o];else if("string"==typeof o&&o.startsWith("this.event_")){if(i=r.getEvents()[t],!i)return;if(i=i[o.slice(11)],!i)return}i&&i.call(r,n,e)})),o)return;r=r._parentController}}if(s)return;n=n.parent()}return{res:!0}}function ie(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 s=`this.event_${t}`;-1===r.indexOf(s)&&(r.push(s),e.attr(`sdc_${n}`,r.join(" ")))}))}}const le={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):(le[e.toLowerCase()]&&(e=le[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 ae,ce,he={CSRF_TOKEN:window.CSRF_TOKEN||"",LANGUAGE_CODE:window.LANGUAGE_CODE||"en",DEBUG:window.DEBUG||!1,VERSION:window.VERSION||"0.0",tagNames:[],Global:y,rootController:null,_isInit:!1,_origin_trigger:null,init_sdc:()=>{he._isInit||(he._isInit=!0,he._origin_trigger?Z():(he._origin_trigger=$.fn.trigger,$.fn.trigger=function(e){const t={}.hasOwnProperty.call(e,"type")?e.type:e;return se.includes(t)||(se.push(t),$(window).on(t,oe)),he._origin_trigger.call(this,e)},he.updateJquery()),ee(),function(){const e=$(window);se.forEach((t=>{e.off(t).on(t,oe)}))}(),he.rootController=he.rootController||new ne),he.tagNames=w();for(let[e,t]of Object.entries(he.Global))t.$container||(y[e].$container=o());return J(he.tagNames,o(),he.rootController)},updateJquery:()=>{$.fn.safeReplace=function(e){return he.safeReplace($(this),e)},$.fn.safeEmpty=function(){return he.safeEmpty($(this))},$.fn.safeRemove=function(){return he.safeRemove($(this))}},controllerToTag:e=>l(e.name).replace(/-controller$/,""),registerGlobal:e=>{let t=he.controllerToTag(e),n=new e;v[t]=[n,[]],n._tagName=t,window[a(t)]=y[a(t)]=n},cleanCache:()=>{x={}},register:e=>{let t=he.controllerToTag(e);return v[t]=[e,[]],e.prototype._tagName=t,{addMixin:(...e)=>{for(let n of e){let e;"string"==typeof n?e=l(n):n&&(e=he.controllerToTag(n)),v[t][1].push(e)}}}},post:(e,t,n)=>(n||(n={}),n.CSRF_TOKEN=he.CSRF_TOKEN,he.ajax(e,t,params,$.post)),get:(e,t,n)=>he.ajax(e,t,n,$.get),ajax:(e,t,n,r)=>{n||(n={}),n.VERSION=he.VERSION,n._method=n._method||"api";const s=new Promise(((o,i)=>r(t,n).then(((t,n,r)=>{o(t,n,r),"redirect"===t.status?F("onNavLink",t["url-link"]):s.then((()=>{he.refresh(e.$container)}))})).catch(i)));return s},submitFormAndUpdateView:(e,t,n,r)=>{let s=new FormData(t);const o=e=>{e["url-link"]?F("onNavLink",e["url-link"]):window.location.href=e.url},i=new Promise(((l,a)=>{h(s,n||t.action,r||t.method).then(((t,n,r)=>{l(t,n,r),"redirect"===t.status?o(t):i.then((()=>{he.refresh(e.$container)}))})).catch(((e,t,n)=>{301===e.status?(e=e.responseJSON,o(e),l(e,t,n)):a(e,t,n)}))}));return i},submitForm:(e,t,n)=>{let r=new FormData(e);return new Promise(((s,o)=>{h(r,t||e.action,n||e.method).then(s).catch(o)}))},getController:e=>A(e),safeEmpty:e=>(e.children().each((function(e,t){let n=$(t);he.safeRemove(n)})),e),safeReplace:(e,t)=>(t.insertBefore(e),he.safeRemove(e)),safeRemove:e=>(e.each((function(){let e=$(this);e.data(`${R}`)&&e.data(`${R}`).remove()})),e.find(`.${j}`).each((function(){const e=$(this).data(`${R}`);e&&e.remove()})),e.remove()),reloadController:e=>function(e){if(e.contentUrl){let t=L(e,e.contentUrl);return e.contentUrl=t.url,M(e.contentUrl,t.args,e._tagName,e.contentReload)}return new Promise((e=>{e($())}))}(e).then((t=>{let n=$(t);e._childController={},J(he.tagNames,n,e).then((()=>{he.safeEmpty(e.$container),e.$container.append(n),he.refresh(e.$container,e)}))})),refresh:(e,t)=>{if(t||(t=he.getController(e)),!t)return i();let n=t,r=[];for(;n;)n._isEventsSet=!1,r.unshift(n),n=n._parentController;return J(he.tagNames,t.$container,t).then((()=>{V(t).then((()=>{for(let e of r)ie(e);t.onRefresh(e)}))}))}};const ue=Z,de={get_controller:async function(e,t={},n=""){if(!jest)throw new Error("JEST is not defined");ae||(ce=$.ajax.bind($),ae=jest.spyOn($,"ajax"),ae.mockImplementation((function(e){return ce(e).then((e=>e)).catch((e=>e))})));const r=$("body");he.updateJquery(),r.safeEmpty();const s=$(`<${e}>${n}</${e}>`);for(const[e,n]of Object.entries(t))s.data(e,n);const o=$("<div></div>").append(s);return r.append(o),he._isInit=!1,he.cleanCache(),await he.init_sdc(),he.getController(s)}};var fe=t.wz,_e=t.ms,me=t.yA,pe=t.sD,ge=t.kb,ye=t.wH,ve=t.on,we=t.YV,$e=t.eA,be=t.YF,ke=t.WQ,Ce=t.QN,Oe=t.gV;export{fe as AbstractSDC,_e as allOff,me as app,pe as checkIfParamNumberBoolOrString,ge as clearErrorsInForm,ye as controllerFactory,ve as on,we as runControlFlowFunctions,$e as setErrorsInForm,be as setEvent,ke as socketReconnect,Ce as test_utils,Oe as trigger};
package/gulp/gulp.jsx CHANGED
@@ -21,7 +21,8 @@ function scss() {
21
21
  * @returns {*}
22
22
  */
23
23
  function pre_compile_javascript() {
24
- return src(['.js', '.json'].map((x)=> `./src/**/*${x}`), {follow: true})
24
+ let file_extentions =process.env.JS_CILENT_FILE_EXTENTIONS?.split(',') || ['.js', '.json'];
25
+ return src(file_extentions.map((x)=> `./src/**/*${x}`), {follow: true})
25
26
  .pipe(through.obj(function (obj, enc, next) {
26
27
  let srcFile = obj.path
27
28
  if (!obj.isNull() && !obj.isDirectory() && obj.isBuffer() && /.js$/.test(srcFile)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sdc_client",
3
- "version": "0.55.3",
3
+ "version": "0.56.0",
4
4
  "description": "Simple Dom Control",
5
5
  "main": "dist/ugly.index.js",
6
6
  "type": "module",
@@ -8,10 +8,9 @@ export class AbstractSDC {
8
8
  this._uuid = uuidv4();
9
9
  this.contentUrl = '';
10
10
  this.contentReload = false;
11
- this.hasSubnavView = false;
12
11
  this.events = [];
13
12
  this.load_async = false;
14
- this.isEventsSet = false;
13
+ this._isEventsSet = false;
15
14
  this._allEvents = null;
16
15
 
17
16
  this._urlParams = [];
@@ -69,7 +69,7 @@ export function initEvents() {
69
69
  */
70
70
  export function setControllerEvents(controller) {
71
71
 
72
- if (controller.isEventsSet) {
72
+ if (controller._isEventsSet) {
73
73
  return;
74
74
  }
75
75
 
@@ -95,6 +95,6 @@ export function setControllerEvents(controller) {
95
95
  }
96
96
  }
97
97
  }
98
-
99
- //controller.isEventsSet = true;
98
+ // TODO: Is it needed
99
+ //controller._isEventsSet = true;
100
100
  }
@@ -365,7 +365,7 @@ export let app = {
365
365
  let controller = leafController;
366
366
  let controllerList = [];
367
367
  while (controller) {
368
- controller.isEventsSet = false;
368
+ controller._isEventsSet = false;
369
369
  controllerList.unshift(controller);
370
370
  controller = controller._parentController;
371
371
  }
@@ -128,7 +128,6 @@ describe('Controller', () => {
128
128
  let ctr = new TestCtr();
129
129
  expect(ctr.contentUrl).toBe("TestCtr");
130
130
  expect(ctr.contentReload).toBe(true);
131
- expect(ctr.hasSubnavView).toBe(false);
132
131
  });
133
132
 
134
133
  });
package/test/dist.test.js CHANGED
@@ -122,7 +122,6 @@ describe('Controller', () => {
122
122
  let ctr = new TestCtr();
123
123
  expect(ctr.contentUrl).toBe("TestCtr");
124
124
  expect(ctr.contentReload).toBe(true);
125
- expect(ctr.hasSubnavView).toBe(false);
126
125
  });
127
126
 
128
127
  });