sdc_client 0.158.7 → 0.158.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -24,7 +24,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
24
24
|
\*********************************************/
|
|
25
25
|
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
26
26
|
|
|
27
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbstractSDC: () => (/* binding */ AbstractSDC)\n/* harmony export */ });\n/* harmony import */ var _sdc_events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n/* harmony import */ var _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_main.js */ \"./src/simpleDomControl/sdc_main.js\");\n/* harmony import */ var _sdc_model_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sdc_model.js */ \"./src/simpleDomControl/sdc_model.js\");\n/* harmony import */ var _sdc_server_call_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_server_call.js */ \"./src/simpleDomControl/sdc_server_call.js\");\n/* harmony import */ var _sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n\n\n\n\n\nclass AbstractSDC {\n constructor() {\n this._uuid = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.uuidv4)();\n this.contentUrl = \"\";\n this.contentReload = false;\n this.parsedContentUrl = null;\n this.events = [];\n this.load_async = false;\n this._isEventsSet = false;\n this._allEvents = null;\n this._params = {};\n this._urlParams = [];\n this._models = [];\n\n // ------------------ Old deprecated properties ----------------------\n this._cssUrls = [];\n this.afterShow = () => {\n console.warn(\"afterShow is deprecated!!\");\n };\n // -------------- End old deprecated properties ----------------------\n\n /**\n *\n * @type {{string: AbstractSDC}}\n */\n this._mixins = {};\n\n /**\n * @type {string}\n */\n this._tagName = Object.getPrototypeOf(this)._tagName ?? \"\";\n\n /**\n * @type {{string:AbstractSDC}}\n */\n this._childController = {};\n\n /**\n * @type {AbstractSDC}\n */\n this._parentController = null;\n\n /**\n * @type {boolean}\n */\n this._onLoadDone = false;\n\n /**\n * @type {jquery}\n */\n this.$container = null;\n\n /**\n *\n * @type {boolean}\n */\n this._isMixin = false;\n }\n get params() {\n return this._params;\n }\n set params(params) {\n this._params = params;\n }\n\n /**\n *\n * @param {string} method must be in {}\n * @param {Array} args in arguments of\n *\n */\n _runLifecycle(method, args) {\n if (_sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.DEBUG && !this._isMixin) {\n console.debug(method, this._tagName);\n }\n let returnPromisses = [];\n if (this._isMixin) {\n return;\n }\n this._isMixin = true;\n for (let mixinKey in this._mixins) {\n let mixin = this._mixins[mixinKey];\n if (typeof mixin[method] === \"function\") {\n returnPromisses.push(mixin[method].apply(this, args));\n }\n }\n return Promise.all(returnPromisses).then(() => {\n this._isMixin = false;\n });\n }\n\n /**\n *\n * @return {Promise<*>|*}\n */\n onInit() {\n if (_sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.DEBUG && !this._isMixin) {\n console.debug(Array.apply(null, arguments), this._tagName);\n }\n }\n get parentController() {\n return this._parentController;\n }\n get childController() {\n return this._childController;\n }\n onLoad() {\n return this._runLifecycle(\"onLoad\", arguments);\n }\n willShow() {\n return this._runLifecycle(\"willShow\", arguments);\n }\n onRefresh() {\n return this._runLifecycle(\"onRefresh\", arguments);\n }\n onRemove() {\n this._runLifecycle(\"onRemove\", arguments);\n return true;\n }\n noOpenModelRequests() {\n return Promise.all(this._models.map(x => x.noOpenRequests()));\n }\n remove() {\n for (const model of this._models) {\n model.close();\n }\n let _childController = this._childController;\n for (let i in _childController) {\n if (_childController.hasOwnProperty(i)) {\n for (let cc of _childController[i]) {\n if (!cc.remove()) {\n return false;\n }\n }\n }\n }\n if (!this.onRemove || this.onRemove()) {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_0__.allOff)(this);\n const c_name = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.tagNameToCamelCase)(this._tagName);\n if (this._parentController._childController[c_name]) {\n let arr = this._parentController._childController[c_name];\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === this) {\n arr.splice(i, 1);\n }\n }\n }\n this.$container.remove();\n delete this;\n return true;\n }\n return false;\n }\n controller_name() {\n return (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.tagNameToReadableName)(this._tagName);\n }\n addEvent(event, selector, handler) {\n this.getEvents();\n this._allEvents[event] = this._allEvents[event] || {};\n this._allEvents[event][selector] = handler;\n }\n getEvents() {\n if (this._allEvents) return this._allEvents;\n let allEvents = [];\n allEvents = allEvents.concat(this.events);\n for (let mixinKey in this._mixins) {\n let mixin = this._mixins[mixinKey];\n if (Array.isArray(mixin.events)) {\n allEvents = allEvents.concat(mixin.events);\n }\n }\n return this._allEvents = _.merge(...allEvents);\n }\n post(url, args) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.post(this, url, args);\n }\n get(url, args) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.get(this, url, args);\n }\n submitForm(form, url, method) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.submitFormAndUpdateView(this, form, url, method);\n }\n serverCall(methode, args) {\n let re = /sdc_view\\/([^/]+)/i;\n let app = this.contentUrl.match(re);\n if (!app || app.length < 2) {\n console.error(\"To use the serverCall function the contentUrl must be set: \" + this.name);\n return;\n }\n return (0,_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_3__.callServer)(app[1], this._tagName, this.parsedContentUrl ?? this.contentUrl, methode, args);\n }\n\n /**\n *\n * @param {string} modelName\n * @param {object?} modelQuery\n * @returns {SdcQuerySet}\n */\n querySet(modelName, modelQuery = {}) {\n const newQuerySet = new _sdc_model_js__WEBPACK_IMPORTED_MODULE_2__.SdcQuerySet(modelName, modelQuery);\n this._models.push(newQuerySet);\n return newQuerySet;\n }\n newModel(modelName, modelQuery = {}) {\n console.warn(\"newModel is deprecated and will soon be removed\");\n return this.querySet(modelName, modelQuery);\n }\n\n /**\n * Adapter to this.$container.find\n * @param {string} domSelector\n */\n find(domSelector) {\n return this.$container.find(domSelector);\n }\n refresh() {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.refresh(this.$container, this);\n }\n reload() {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.reloadController(this);\n }\n reconcile($virtualNode, $realNode = null) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.reconcile(this, $virtualNode, $realNode);\n }\n submitModelFormDistributor($form, e) {\n if (typeof this._submitModelForm === \"function\") {\n return this._submitModelForm($form, e);\n }\n if (typeof this.submitModelForm === \"function\") {\n return this.submitModelForm($form, e);\n }\n return this.defaultSubmitModelForm($form, e);\n }\n iterateAllChildren() {\n let _childController = this._childController;\n let res = [];\n for (let i in _childController) {\n if (_childController.hasOwnProperty(i)) {\n for (let cc of _childController[i]) {\n res.push(cc);\n res.push(...cc.iterateAllChildren());\n }\n }\n }\n return res;\n }\n\n /**\n * Model Form Events\n */\n defaultSubmitModelForm($form, e) {\n if (!this._isMixin) {\n e.stopPropagation();\n e.preventDefault();\n let {\n model,\n form_name\n } = $form.data();\n let data = model.syncForm($form);\n return new Promise((resolve, reject) => {\n let prom;\n if (model.id !== null && model.id >= 0) {\n prom = model.save({\n formName: form_name,\n data\n });\n } else {\n prom = model.create({\n data\n });\n }\n prom.then(res => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.clearErrorsInForm)($form);\n this.submit_model_form_success && this.submit_model_form_success(res[0]);\n for (const controller of this.iterateAllChildren()) {\n controller.submit_model_form_success && controller.submit_model_form_success(res[0]);\n }\n resolve(res);\n }).catch(data => {\n this.reconcile($(`<div class=\"container-fluid\">${data.html}</div>`), $form.find(\".container-fluid\").first());\n this.submit_model_form_error && this.submit_model_form_error(data);\n for (const controller of this.iterateAllChildren()) {\n controller.submit_model_form_error && controller.submit_model_form_error(data);\n }\n reject(data);\n });\n });\n }\n return Promise.resolve();\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFJLENBQUM7UUFDZCxDQUFDLENBQUM7TUFDTixDQUFDLENBQUM7SUFDSjtJQUVBLE9BQU96RSxPQUFPLENBQUMyRSxPQUFPLENBQUMsQ0FBQztFQUMxQjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2RjX2NsaWVudC8uL3NyYy9zaW1wbGVEb21Db250cm9sL0Fic3RyYWN0U0RDLmpzP2Q3ZjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthbGxPZmZ9IGZyb20gXCIuL3NkY19ldmVudHMuanNcIjtcbmltcG9ydCB7YXBwfSBmcm9tIFwiLi9zZGNfbWFpbi5qc1wiO1xuaW1wb3J0IHtTZGNRdWVyeVNldH0gZnJvbSBcIi4vc2RjX21vZGVsLmpzXCI7XG5pbXBvcnQge2NhbGxTZXJ2ZXJ9IGZyb20gXCIuL3NkY19zZXJ2ZXJfY2FsbC5qc1wiO1xuaW1wb3J0IHtcbiAgdXVpZHY0LFxuICBjbGVhckVycm9yc0luRm9ybSxcbiAgdGFnTmFtZVRvQ2FtZWxDYXNlLFxuICB0YWdOYW1lVG9SZWFkYWJsZU5hbWUsXG59IGZyb20gXCIuL3NkY191dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RTREMge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl91dWlkID0gdXVpZHY0KCk7XG4gICAgdGhpcy5jb250ZW50VXJsID0gXCJcIjtcbiAgICB0aGlzLmNvbnRlbnRSZWxvYWQgPSBmYWxzZTtcbiAgICB0aGlzLnBhcnNlZENvbnRlbnRVcmwgPSBudWxsO1xuICAgIHRoaXMuZXZlbnRzID0gW107XG4gICAgdGhpcy5sb2FkX2FzeW5jID0gZmFsc2U7XG4gICAgdGhpcy5faXNFdmVudHNTZXQgPSBmYWxzZTtcbiAgICB0aGlzLl9hbGxFdmVudHMgPSBudWxsO1xuICAgIHRoaXMuX3BhcmFtcyA9IHt9O1xuXG4gICAgdGhpcy5fdXJsUGFyYW1zID0gW107XG4gICAgdGhpcy5fbW9kZWxzID0gW107XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0gT2xkIGRlcHJlY2F0ZWQgcHJvcGVydGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdGhpcy5fY3NzVXJscyA9IFtdO1xuICAgIHRoaXMuYWZ0ZXJTaG93ID0gKCkgPT4ge1xuICAgICAgY29uc29sZS53YXJuKFwiYWZ0ZXJTaG93IGlzIGRlcHJlY2F0ZWQhIVwiKTtcbiAgICB9O1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tIEVuZCBvbGQgZGVwcmVjYXRlZCBwcm9wZXJ0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHR5cGUge3tzdHJpbmc6IEFic3RyYWN0U0RDfX1cbiAgICAgKi9cbiAgICB0aGlzLl9taXhpbnMgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5fdGFnTmFtZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5fdGFnTmFtZSA/PyBcIlwiO1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUge3tzdHJpbmc6QWJzdHJhY3RTREN9fVxuICAgICAqL1xuICAgIHRoaXMuX2NoaWxkQ29udHJvbGxlciA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUge0Fic3RyYWN0U0RDfVxuICAgICAqL1xuICAgIHRoaXMuX3BhcmVudENvbnRyb2xsZXIgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5fb25Mb2FkRG9uZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUge2pxdWVyeX1cbiAgICAgKi9cbiAgICB0aGlzLiRjb250YWluZXIgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLl9pc01peGluID0gZmFsc2U7XG4gIH1cblxuICBnZXQgcGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbXM7XG4gIH1cblxuICBzZXQgcGFyYW1zKHBhcmFtcykge1xuICAgIHRoaXMuX3BhcmFtcyA9IHBhcmFtcztcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIG11c3QgYmUgaW4ge31cbiAgICogQHBhcmFtIHtBcnJheX0gYXJncyBpbiBhcmd1bWVudHMgb2ZcbiAgICpcbiAgICovXG4gIF9ydW5MaWZlY3ljbGUobWV0aG9kLCBhcmdzKSB7XG4gICAgaWYgKGFwcC5ERUJVRyAmJiAhdGhpcy5faXNNaXhpbikge1xuICAgICAgY29uc29sZS5kZWJ1ZyhtZXRob2QsIHRoaXMuX3RhZ05hbWUpO1xuICAgIH1cblxuICAgIGxldCByZXR1cm5Qcm9taXNzZXMgPSBbXTtcbiAgICBpZiAodGhpcy5faXNNaXhpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9pc01peGluID0gdHJ1ZTtcbiAgICBmb3IgKGxldCBtaXhpbktleSBpbiB0aGlzLl9taXhpbnMpIHtcbiAgICAgIGxldCBtaXhpbiA9IHRoaXMuX21peGluc1ttaXhpbktleV07XG4gICAgICBpZiAodHlwZW9mIG1peGluW21ldGhvZF0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm5Qcm9taXNzZXMucHVzaChtaXhpblttZXRob2RdLmFwcGx5KHRoaXMsIGFyZ3MpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocmV0dXJuUHJvbWlzc2VzKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzTWl4aW4gPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPCo+fCp9XG4gICAqL1xuICBvbkluaXQoKSB7XG4gICAgaWYgKGFwcC5ERUJVRyAmJiAhdGhpcy5faXNNaXhpbikge1xuICAgICAgY29uc29sZS5kZWJ1ZyhBcnJheS5hcHBseShudWxsLCBhcmd1bWVudHMpLCB0aGlzLl90YWdOYW1lKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcGFyZW50Q29udHJvbGxlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50Q29udHJvbGxlcjtcbiAgfVxuXG4gIGdldCBjaGlsZENvbnRyb2xsZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaWxkQ29udHJvbGxlcjtcbiAgfVxuXG4gIG9uTG9hZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcnVuTGlmZWN5Y2xlKFwib25Mb2FkXCIsIGFyZ3VtZW50cyk7XG4gIH1cblxuICB3aWxsU2hvdygpIHtcbiAgICByZXR1cm4gdGhpcy5fcnVuTGlmZWN5Y2xlKFwid2lsbFNob3dcIiwgYXJndW1lbnRzKTtcbiAgfVxuXG4gIG9uUmVmcmVzaCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcnVuTGlmZWN5Y2xlKFwib25SZWZyZXNoXCIsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBvblJlbW92ZSgpIHtcbiAgICB0aGlzLl9ydW5MaWZlY3ljbGUoXCJvblJlbW92ZVwiLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbm9PcGVuTW9kZWxSZXF1ZXN0cygpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwodGhpcy5fbW9kZWxzLm1hcCgoeCkgPT4geC5ub09wZW5SZXF1ZXN0cygpKSk7XG4gIH1cblxuICByZW1vdmUoKSB7XG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLl9tb2RlbHMpIHtcbiAgICAgIG1vZGVsLmNsb3NlKCk7XG4gICAgfVxuICAgIGxldCBfY2hpbGRDb250cm9sbGVyID0gdGhpcy5fY2hpbGRDb250cm9sbGVyO1xuICAgIGZvciAobGV0IGkgaW4gX2NoaWxkQ29udHJvbGxlcikge1xuICAgICAgaWYgKF9jaGlsZENvbnRyb2xsZXIuaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgZm9yIChsZXQgY2Mgb2YgX2NoaWxkQ29udHJvbGxlcltpXSkge1xuICAgICAgICAgIGlmICghY2MucmVtb3ZlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMub25SZW1vdmUgfHwgdGhpcy5vblJlbW92ZSgpKSB7XG4gICAgICBhbGxPZmYodGhpcyk7XG4gICAgICBjb25zdCBjX25hbWUgPSB0YWdOYW1lVG9DYW1lbENhc2UodGhpcy5fdGFnTmFtZSk7XG4gICAgICBpZiAodGhpcy5fcGFyZW50Q29udHJvbGxlci5fY2hpbGRDb250cm9sbGVyW2NfbmFtZV0pIHtcbiAgICAgICAgbGV0IGFyciA9IHRoaXMuX3BhcmVudENvbnRyb2xsZXIuX2NoaWxkQ29udHJvbGxlcltjX25hbWVdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChhcnJbaV0gPT09IHRoaXMpIHtcbiAgICAgICAgICAgIGFyci5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJGNvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgIGRlbGV0ZSB0aGlzO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29udHJvbGxlcl9uYW1lKCkge1xuICAgIHJldHVybiB0YWdOYW1lVG9SZWFkYWJsZU5hbWUodGhpcy5fdGFnTmFtZSk7XG4gIH1cblxuICBhZGRFdmVudChldmVudCwgc2VsZWN0b3IsIGhhbmRsZXIpIHtcbiAgICB0aGlzLmdldEV2ZW50cygpO1xuICAgIHRoaXMuX2FsbEV2ZW50c1tldmVudF0gPSB0aGlzLl9hbGxFdmVudHNbZXZlbnRdIHx8IHt9O1xuICAgIHRoaXMuX2FsbEV2ZW50c1tldmVudF1bc2VsZWN0b3JdID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldEV2ZW50cygpIHtcbiAgICBpZiAodGhpcy5fYWxsRXZlbnRzKSByZXR1cm4gdGhpcy5fYWxsRXZlbnRzO1xuICAgIGxldCBhbGxFdmVudHMgPSBbXTtcbiAgICBhbGxFdmVudHMgPSBhbGxFdmVudHMuY29uY2F0KHRoaXMuZXZlbnRzKTtcbiAgICBmb3IgKGxldCBtaXhpbktleSBpbiB0aGlzLl9taXhpbnMpIHtcbiAgICAgIGxldCBtaXhpbiA9IHRoaXMuX21peGluc1ttaXhpbktleV07XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShtaXhpbi5ldmVudHMpKSB7XG4gICAgICAgIGFsbEV2ZW50cyA9IGFsbEV2ZW50cy5jb25jYXQobWl4aW4uZXZlbnRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMuX2FsbEV2ZW50cyA9IF8ubWVyZ2UoLi4uYWxsRXZlbnRzKSk7XG4gIH1cblxuICBwb3N0KHVybCwgYXJncykge1xuICAgIHJldHVybiBhcHAucG9zdCh0aGlzLCB1cmwsIGFyZ3MpO1xuICB9XG5cbiAgZ2V0KHVybCwgYXJncykge1xuICAgIHJldHVybiBhcHAuZ2V0KHRoaXMsIHVybCwgYXJncyk7XG4gIH1cblxuICBzdWJtaXRGb3JtKGZvcm0sIHVybCwgbWV0aG9kKSB7XG4gICAgcmV0dXJuIGFwcC5zdWJtaXRGb3JtQW5kVXBkYXRlVmlldyh0aGlzLCBmb3JtLCB1cmwsIG1ldGhvZCk7XG4gIH1cblxuICBzZXJ2ZXJDYWxsKG1ldGhvZGUsIGFyZ3MpIHtcbiAgICBsZXQgcmUgPSAvc2RjX3ZpZXdcXC8oW14vXSspL2k7XG4gICAgbGV0IGFwcCA9IHRoaXMuY29udGVudFVybC5tYXRjaChyZSk7XG4gICAgaWYgKCFhcHAgfHwgYXBwLmxlbmd0aCA8IDIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIFwiVG8gdXNlIHRoZSBzZXJ2ZXJDYWxsIGZ1bmN0aW9uIHRoZSBjb250ZW50VXJsIG11c3QgYmUgc2V0OiBcIiArXG4gICAgICAgIHRoaXMubmFtZSxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhbGxTZXJ2ZXIoXG4gICAgICBhcHBbMV0sXG4gICAgICB0aGlzLl90YWdOYW1lLFxuICAgICAgdGhpcy5wYXJzZWRDb250ZW50VXJsID8/IHRoaXMuY29udGVudFVybCxcbiAgICAgIG1ldGhvZGUsXG4gICAgICBhcmdzLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsTmFtZVxuICAgKiBAcGFyYW0gIHtvYmplY3Q/fSBtb2RlbFF1ZXJ5XG4gICAqIEByZXR1cm5zIHtTZGNRdWVyeVNldH1cbiAgICovXG4gIHF1ZXJ5U2V0KG1vZGVsTmFtZSwgbW9kZWxRdWVyeSA9IHt9KSB7XG4gICAgY29uc3QgbmV3UXVlcnlTZXQgPSBuZXcgU2RjUXVlcnlTZXQobW9kZWxOYW1lLCBtb2RlbFF1ZXJ5KTtcbiAgICB0aGlzLl9tb2RlbHMucHVzaChuZXdRdWVyeVNldCk7XG4gICAgcmV0dXJuIG5ld1F1ZXJ5U2V0O1xuICB9XG5cbiAgbmV3TW9kZWwobW9kZWxOYW1lLCBtb2RlbFF1ZXJ5ID0ge30pIHtcbiAgICBjb25zb2xlLndhcm4oXCJuZXdNb2RlbCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIHNvb24gYmUgcmVtb3ZlZFwiKTtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVNldChtb2RlbE5hbWUsIG1vZGVsUXVlcnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkYXB0ZXIgdG8gdGhpcy4kY29udGFpbmVyLmZpbmRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRvbVNlbGVjdG9yXG4gICAqL1xuICBmaW5kKGRvbVNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuJGNvbnRhaW5lci5maW5kKGRvbVNlbGVjdG9yKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgcmV0dXJuIGFwcC5yZWZyZXNoKHRoaXMuJGNvbnRhaW5lciwgdGhpcyk7XG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgcmV0dXJuIGFwcC5yZWxvYWRDb250cm9sbGVyKHRoaXMpO1xuICB9XG5cbiAgcmVjb25jaWxlKCR2aXJ0dWFsTm9kZSwgJHJlYWxOb2RlID0gbnVsbCkge1xuICAgIHJldHVybiBhcHAucmVjb25jaWxlKHRoaXMsICR2aXJ0dWFsTm9kZSwgJHJlYWxOb2RlKTtcbiAgfVxuXG4gIHN1Ym1pdE1vZGVsRm9ybURpc3RyaWJ1dG9yKCRmb3JtLCBlKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9zdWJtaXRNb2RlbEZvcm0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHRoaXMuX3N1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdGhpcy5zdWJtaXRNb2RlbEZvcm0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHRoaXMuc3VibWl0TW9kZWxGb3JtKCRmb3JtLCBlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdFN1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSk7XG4gIH1cblxuICBpdGVyYXRlQWxsQ2hpbGRyZW4oKSB7XG4gICAgbGV0IF9jaGlsZENvbnRyb2xsZXIgPSB0aGlzLl9jaGlsZENvbnRyb2xsZXI7XG4gICAgbGV0IHJlcyA9IFtdO1xuICAgIGZvciAobGV0IGkgaW4gX2NoaWxkQ29udHJvbGxlcikge1xuICAgICAgaWYgKF9jaGlsZENvbnRyb2xsZXIuaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgZm9yIChsZXQgY2Mgb2YgX2NoaWxkQ29udHJvbGxlcltpXSkge1xuICAgICAgICAgIHJlcy5wdXNoKGNjKTtcbiAgICAgICAgICByZXMucHVzaCguLi5jYy5pdGVyYXRlQWxsQ2hpbGRyZW4oKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBNb2RlbCBGb3JtIEV2ZW50c1xuICAgKi9cbiAgZGVmYXVsdFN1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSkge1xuICAgIGlmICghdGhpcy5faXNNaXhpbikge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGxldCB7bW9kZWwsIGZvcm1fbmFtZX0gPSAkZm9ybS5kYXRhKCk7XG4gICAgICBsZXQgZGF0YSA9IG1vZGVsLnN5bmNGb3JtKCRmb3JtKTtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBwcm9tO1xuICAgICAgICBpZiAobW9kZWwuaWQgIT09IG51bGwgJiYgbW9kZWwuaWQgPj0gMCkge1xuICAgICAgICAgIHByb20gPSBtb2RlbC5zYXZlKHtmb3JtTmFtZTogZm9ybV9uYW1lLCBkYXRhfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvbSA9IG1vZGVsLmNyZWF0ZSh7ZGF0YX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvbVxuICAgICAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgIGNsZWFyRXJyb3JzSW5Gb3JtKCRmb3JtKTtcbiAgICAgICAgICAgIHRoaXMuc3VibWl0X21vZGVsX2Zvcm1fc3VjY2VzcyAmJlxuICAgICAgICAgICAgdGhpcy5zdWJtaXRfbW9kZWxfZm9ybV9zdWNjZXNzKHJlc1swXSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2xsZXIgb2YgdGhpcy5pdGVyYXRlQWxsQ2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICBjb250cm9sbGVyLnN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MgJiZcbiAgICAgICAgICAgICAgY29udHJvbGxlci5zdWJtaXRfbW9kZWxfZm9ybV9zdWNjZXNzKHJlc1swXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWNvbmNpbGUoXG4gICAgICAgICAgICAgICQoYDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj4ke2RhdGEuaHRtbH08L2Rpdj5gKSxcbiAgICAgICAgICAgICAgJGZvcm0uZmluZChcIi5jb250YWluZXItZmx1aWRcIikuZmlyc3QoKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yICYmXG4gICAgICAgICAgICB0aGlzLnN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yKGRhdGEpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb250cm9sbGVyIG9mIHRoaXMuaXRlcmF0ZUFsbENoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgICAgY29udHJvbGxlci5zdWJtaXRfbW9kZWxfZm9ybV9lcnJvciAmJlxuICAgICAgICAgICAgICBjb250cm9sbGVyLnN1Ym1pdF9tb2RlbF9mb3JtX2Vycm9yKGRhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZWplY3QoZGF0YSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJhbGxPZmYiLCJhcHAiLCJTZGNRdWVyeVNldCIsImNhbGxTZXJ2ZXIiLCJ1dWlkdjQiLCJjbGVhckVycm9yc0luRm9ybSIsInRhZ05hbWVUb0NhbWVsQ2FzZSIsInRhZ05hbWVUb1JlYWRhYmxlTmFtZSIsIkFic3RyYWN0U0RDIiwiY29uc3RydWN0b3IiLCJfdXVpZCIsImNvbnRlbnRVcmwiLCJjb250ZW50UmVsb2FkIiwicGFyc2VkQ29udGVudFVybCIsImV2ZW50cyIsImxvYWRfYXN5bmMiLCJfaXNFdmVudHNTZXQiLCJfYWxsRXZlbnRzIiwiX3BhcmFtcyIsIl91cmxQYXJhbXMiLCJfbW9kZWxzIiwiX2Nzc1VybHMiLCJhZnRlclNob3ciLCJjb25zb2xlIiwid2FybiIsIl9taXhpbnMiLCJfdGFnTmFtZSIsIk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwiX2NoaWxkQ29udHJvbGxlciIsIl9wYXJlbnRDb250cm9sbGVyIiwiX29uTG9hZERvbmUiLCIkY29udGFpbmVyIiwiX2lzTWl4aW4iLCJwYXJhbXMiLCJfcnVuTGlmZWN5Y2xlIiwibWV0aG9kIiwiYXJncyIsIkRFQlVHIiwiZGVidWciLCJyZXR1cm5Qcm9taXNzZXMiLCJtaXhpbktleSIsIm1peGluIiwicHVzaCIsImFwcGx5IiwiUHJvbWlzZSIsImFsbCIsInRoZW4iLCJvbkluaXQiLCJBcnJheSIsImFyZ3VtZW50cyIsInBhcmVudENvbnRyb2xsZXIiLCJjaGlsZENvbnRyb2xsZXIiLCJvbkxvYWQiLCJ3aWxsU2hvdyIsIm9uUmVmcmVzaCIsIm9uUmVtb3ZlIiwibm9PcGVuTW9kZWxSZXF1ZXN0cyIsIm1hcCIsIngiLCJub09wZW5SZXF1ZXN0cyIsInJlbW92ZSIsIm1vZGVsIiwiY2xvc2UiLCJpIiwiaGFzT3duUHJvcGVydHkiLCJjYyIsImNfbmFtZSIsImFyciIsImxlbmd0aCIsInNwbGljZSIsImNvbnRyb2xsZXJfbmFtZSIsImFkZEV2ZW50IiwiZXZlbnQiLCJzZWxlY3RvciIsImhhbmRsZXIiLCJnZXRFdmVudHMiLCJhbGxFdmVudHMiLCJjb25jYXQiLCJpc0FycmF5IiwiXyIsIm1lcmdlIiwicG9zdCIsInVybCIsImdldCIsInN1Ym1pdEZvcm0iLCJmb3JtIiwic3VibWl0Rm9ybUFuZFVwZGF0ZVZpZXciLCJzZXJ2ZXJDYWxsIiwibWV0aG9kZSIsInJlIiwibWF0Y2giLCJlcnJvciIsIm5hbWUiLCJxdWVyeVNldCIsIm1vZGVsTmFtZSIsIm1vZGVsUXVlcnkiLCJuZXdRdWVyeVNldCIsIm5ld01vZGVsIiwiZmluZCIsImRvbVNlbGVjdG9yIiwicmVmcmVzaCIsInJlbG9hZCIsInJlbG9hZENvbnRyb2xsZXIiLCJyZWNvbmNpbGUiLCIkdmlydHVhbE5vZGUiLCIkcmVhbE5vZGUiLCJzdWJtaXRNb2RlbEZvcm1EaXN0cmlidXRvciIsIiRmb3JtIiwiZSIsIl9zdWJtaXRNb2RlbEZvcm0iLCJzdWJtaXRNb2RlbEZvcm0iLCJkZWZhdWx0U3VibWl0TW9kZWxGb3JtIiwiaXRlcmF0ZUFsbENoaWxkcmVuIiwicmVzIiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJmb3JtX25hbWUiLCJkYXRhIiwic3luY0Zvcm0iLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbSIsImlkIiwic2F2ZSIsImZvcm1OYW1lIiwiY3JlYXRlIiwic3VibWl0X21vZGVsX2Zvcm1fc3VjY2VzcyIsImNvbnRyb2xsZXIiLCJjYXRjaCIsIiQiLCJodG1sIiwiZmlyc3QiLCJzdWJtaXRfbW9kZWxfZm9ybV9lcnJvciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/simpleDomControl/AbstractSDC.js\n\n}");
|
|
27
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbstractSDC: () => (/* binding */ AbstractSDC)\n/* harmony export */ });\n/* harmony import */ var _sdc_events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sdc_events.js */ \"./src/simpleDomControl/sdc_events.js\");\n/* harmony import */ var _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sdc_main.js */ \"./src/simpleDomControl/sdc_main.js\");\n/* harmony import */ var _sdc_model_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sdc_model.js */ \"./src/simpleDomControl/sdc_model.js\");\n/* harmony import */ var _sdc_server_call_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sdc_server_call.js */ \"./src/simpleDomControl/sdc_server_call.js\");\n/* harmony import */ var _sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sdc_utils.js */ \"./src/simpleDomControl/sdc_utils.js\");\n\n\n\n\n\nclass AbstractSDC {\n constructor() {\n this._uuid = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.uuidv4)();\n this.contentUrl = \"\";\n this.contentReload = false;\n this.parsedContentUrl = null;\n this.events = [];\n this.load_async = false;\n this._isEventsSet = false;\n this._allEvents = null;\n this._params = {};\n this._urlParams = [];\n this._models = [];\n\n // ------------------ Old deprecated properties ----------------------\n this._cssUrls = [];\n this.afterShow = () => {\n console.warn(\"afterShow is deprecated!!\");\n };\n // -------------- End old deprecated properties ----------------------\n\n /**\n *\n * @type {{string: AbstractSDC}}\n */\n this._mixins = {};\n\n /**\n * @type {string}\n */\n this._tagName = Object.getPrototypeOf(this)._tagName ?? \"\";\n\n /**\n * @type {{string:AbstractSDC}}\n */\n this._childController = {};\n\n /**\n * @type {AbstractSDC}\n */\n this._parentController = null;\n\n /**\n * @type {boolean}\n */\n this._onLoadDone = false;\n\n /**\n * @type {jquery}\n */\n this.$container = null;\n\n /**\n *\n * @type {boolean}\n */\n this._isMixin = false;\n }\n get params() {\n return this._params;\n }\n set params(params) {\n this._params = params;\n }\n\n /**\n *\n * @param {string} method must be in {}\n * @param {Array} args in arguments of\n *\n */\n _runLifecycle(method, args) {\n if (_sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.DEBUG && !this._isMixin) {\n console.debug(method, this._tagName);\n }\n let returnPromisses = [];\n if (this._isMixin) {\n return;\n }\n this._isMixin = true;\n for (let mixinKey in this._mixins) {\n let mixin = this._mixins[mixinKey];\n if (typeof mixin[method] === \"function\") {\n returnPromisses.push(mixin[method].apply(this, args));\n }\n }\n return Promise.all(returnPromisses).then(() => {\n this._isMixin = false;\n });\n }\n\n /**\n *\n * @return {Promise<*>|*}\n */\n onInit() {\n if (_sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.DEBUG && !this._isMixin) {\n console.debug(Array.apply(null, arguments), this._tagName);\n }\n }\n get parentController() {\n return this._parentController;\n }\n get childController() {\n return this._childController;\n }\n onLoad() {\n return this._runLifecycle(\"onLoad\", arguments);\n }\n willShow() {\n return this._runLifecycle(\"willShow\", arguments);\n }\n onRefresh() {\n return this._runLifecycle(\"onRefresh\", arguments);\n }\n onRemove() {\n this._runLifecycle(\"onRemove\", arguments);\n return true;\n }\n noOpenModelRequests() {\n return Promise.all(this._models.map(x => x.noOpenRequests()));\n }\n remove() {\n for (const model of this._models) {\n model.close();\n }\n let _childController = this._childController;\n for (let i in _childController) {\n if (_childController.hasOwnProperty(i)) {\n for (let cc of _childController[i]) {\n if (!cc.remove()) {\n return false;\n }\n }\n }\n }\n if (!this.onRemove || this.onRemove()) {\n (0,_sdc_events_js__WEBPACK_IMPORTED_MODULE_0__.allOff)(this);\n const c_name = (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.tagNameToCamelCase)(this._tagName);\n if (this._parentController._childController[c_name]) {\n let arr = this._parentController._childController[c_name];\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === this) {\n arr.splice(i, 1);\n }\n }\n }\n this.$container.remove();\n delete this;\n return true;\n }\n return false;\n }\n controller_name() {\n return (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.tagNameToReadableName)(this._tagName);\n }\n addEvent(event, selector, handler) {\n this.getEvents();\n this._allEvents[event] = this._allEvents[event] || {};\n this._allEvents[event][selector] = handler;\n }\n getEvents() {\n if (this._allEvents) return this._allEvents;\n let allEvents = [];\n allEvents = allEvents.concat(this.events);\n for (let mixinKey in this._mixins) {\n let mixin = this._mixins[mixinKey];\n if (Array.isArray(mixin.events)) {\n allEvents = allEvents.concat(mixin.events);\n }\n }\n return this._allEvents = _.merge(...allEvents);\n }\n post(url, args) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.post(this, url, args);\n }\n get(url, args) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.get(this, url, args);\n }\n submitForm(form, url, method) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.submitFormAndUpdateView(this, form, url, method);\n }\n serverCall(methode, args) {\n let re = /sdc_view\\/([^/]+)/i;\n let app = this.contentUrl.match(re);\n if (!app || app.length < 2) {\n console.error(\"To use the serverCall function the contentUrl must be set: \" + this.name);\n return;\n }\n return (0,_sdc_server_call_js__WEBPACK_IMPORTED_MODULE_3__.callServer)(app[1], this._tagName, this.parsedContentUrl ?? this.contentUrl, methode, args);\n }\n\n /**\n *\n * @param {string} modelName\n * @param {object?} modelQuery\n * @returns {SdcQuerySet}\n */\n querySet(modelName, modelQuery = {}) {\n const newQuerySet = new _sdc_model_js__WEBPACK_IMPORTED_MODULE_2__.SdcQuerySet(modelName, modelQuery);\n this._models.push(newQuerySet);\n return newQuerySet;\n }\n newModel(modelName, modelQuery = {}) {\n console.warn(\"newModel is deprecated and will soon be removed. Please use this.querySet(modelName, modelQuery)\");\n return this.querySet(modelName, modelQuery);\n }\n\n /**\n * Adapter to this.$container.find\n * @param {string} domSelector\n */\n find(domSelector) {\n return this.$container.find(domSelector);\n }\n refresh() {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.refresh(this.$container, this);\n }\n reload() {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.reloadController(this);\n }\n reconcile($virtualNode, $realNode = null) {\n return _sdc_main_js__WEBPACK_IMPORTED_MODULE_1__.app.reconcile(this, $virtualNode, $realNode);\n }\n submitModelFormDistributor($form, e) {\n if (typeof this._submitModelForm === \"function\") {\n return this._submitModelForm($form, e);\n }\n if (typeof this.submitModelForm === \"function\") {\n return this.submitModelForm($form, e);\n }\n return this.defaultSubmitModelForm($form, e);\n }\n iterateAllChildren() {\n let _childController = this._childController;\n let res = [];\n for (let i in _childController) {\n if (_childController.hasOwnProperty(i)) {\n for (let cc of _childController[i]) {\n res.push(cc);\n res.push(...cc.iterateAllChildren());\n }\n }\n }\n return res;\n }\n\n /**\n * Model Form Events\n */\n defaultSubmitModelForm($form, e) {\n if (!this._isMixin) {\n e.stopPropagation();\n e.preventDefault();\n let {\n model,\n form_name\n } = $form.data();\n let data = model.syncForm($form);\n return new Promise((resolve, reject) => {\n let prom;\n if (model.id !== null && model.id >= 0) {\n prom = model.save({\n formName: form_name,\n data\n });\n } else {\n prom = model.create({\n data\n });\n }\n prom.then(res => {\n (0,_sdc_utils_js__WEBPACK_IMPORTED_MODULE_4__.clearErrorsInForm)($form);\n this.submit_model_form_success && this.submit_model_form_success(res[0]);\n for (const controller of this.iterateAllChildren()) {\n controller.submit_model_form_success && controller.submit_model_form_success(res[0]);\n }\n resolve(res);\n }).catch(data => {\n this.reconcile($(`<div class=\"container-fluid\">${data.html}</div>`), $form.find(\".container-fluid\").first());\n this.submit_model_form_error && this.submit_model_form_error(data);\n for (const controller of this.iterateAllChildren()) {\n controller.submit_model_form_error && controller.submit_model_form_error(data);\n }\n reject(data);\n });\n });\n }\n return Promise.resolve();\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFJLENBQUM7UUFDZCxDQUFDLENBQUM7TUFDTixDQUFDLENBQUM7SUFDSjtJQUVBLE9BQU96RSxPQUFPLENBQUMyRSxPQUFPLENBQUMsQ0FBQztFQUMxQjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2RjX2NsaWVudC8uL3NyYy9zaW1wbGVEb21Db250cm9sL0Fic3RyYWN0U0RDLmpzP2Q3ZjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthbGxPZmZ9IGZyb20gXCIuL3NkY19ldmVudHMuanNcIjtcbmltcG9ydCB7YXBwfSBmcm9tIFwiLi9zZGNfbWFpbi5qc1wiO1xuaW1wb3J0IHtTZGNRdWVyeVNldH0gZnJvbSBcIi4vc2RjX21vZGVsLmpzXCI7XG5pbXBvcnQge2NhbGxTZXJ2ZXJ9IGZyb20gXCIuL3NkY19zZXJ2ZXJfY2FsbC5qc1wiO1xuaW1wb3J0IHtcbiAgdXVpZHY0LFxuICBjbGVhckVycm9yc0luRm9ybSxcbiAgdGFnTmFtZVRvQ2FtZWxDYXNlLFxuICB0YWdOYW1lVG9SZWFkYWJsZU5hbWUsXG59IGZyb20gXCIuL3NkY191dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RTREMge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl91dWlkID0gdXVpZHY0KCk7XG4gICAgdGhpcy5jb250ZW50VXJsID0gXCJcIjtcbiAgICB0aGlzLmNvbnRlbnRSZWxvYWQgPSBmYWxzZTtcbiAgICB0aGlzLnBhcnNlZENvbnRlbnRVcmwgPSBudWxsO1xuICAgIHRoaXMuZXZlbnRzID0gW107XG4gICAgdGhpcy5sb2FkX2FzeW5jID0gZmFsc2U7XG4gICAgdGhpcy5faXNFdmVudHNTZXQgPSBmYWxzZTtcbiAgICB0aGlzLl9hbGxFdmVudHMgPSBudWxsO1xuICAgIHRoaXMuX3BhcmFtcyA9IHt9O1xuXG4gICAgdGhpcy5fdXJsUGFyYW1zID0gW107XG4gICAgdGhpcy5fbW9kZWxzID0gW107XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0gT2xkIGRlcHJlY2F0ZWQgcHJvcGVydGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdGhpcy5fY3NzVXJscyA9IFtdO1xuICAgIHRoaXMuYWZ0ZXJTaG93ID0gKCkgPT4ge1xuICAgICAgY29uc29sZS53YXJuKFwiYWZ0ZXJTaG93IGlzIGRlcHJlY2F0ZWQhIVwiKTtcbiAgICB9O1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tIEVuZCBvbGQgZGVwcmVjYXRlZCBwcm9wZXJ0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHR5cGUge3tzdHJpbmc6IEFic3RyYWN0U0RDfX1cbiAgICAgKi9cbiAgICB0aGlzLl9taXhpbnMgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5fdGFnTmFtZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5fdGFnTmFtZSA/PyBcIlwiO1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUge3tzdHJpbmc6QWJzdHJhY3RTREN9fVxuICAgICAqL1xuICAgIHRoaXMuX2NoaWxkQ29udHJvbGxlciA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUge0Fic3RyYWN0U0RDfVxuICAgICAqL1xuICAgIHRoaXMuX3BhcmVudENvbnRyb2xsZXIgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5fb25Mb2FkRG9uZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUge2pxdWVyeX1cbiAgICAgKi9cbiAgICB0aGlzLiRjb250YWluZXIgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLl9pc01peGluID0gZmFsc2U7XG4gIH1cblxuICBnZXQgcGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbXM7XG4gIH1cblxuICBzZXQgcGFyYW1zKHBhcmFtcykge1xuICAgIHRoaXMuX3BhcmFtcyA9IHBhcmFtcztcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIG11c3QgYmUgaW4ge31cbiAgICogQHBhcmFtIHtBcnJheX0gYXJncyBpbiBhcmd1bWVudHMgb2ZcbiAgICpcbiAgICovXG4gIF9ydW5MaWZlY3ljbGUobWV0aG9kLCBhcmdzKSB7XG4gICAgaWYgKGFwcC5ERUJVRyAmJiAhdGhpcy5faXNNaXhpbikge1xuICAgICAgY29uc29sZS5kZWJ1ZyhtZXRob2QsIHRoaXMuX3RhZ05hbWUpO1xuICAgIH1cblxuICAgIGxldCByZXR1cm5Qcm9taXNzZXMgPSBbXTtcbiAgICBpZiAodGhpcy5faXNNaXhpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9pc01peGluID0gdHJ1ZTtcbiAgICBmb3IgKGxldCBtaXhpbktleSBpbiB0aGlzLl9taXhpbnMpIHtcbiAgICAgIGxldCBtaXhpbiA9IHRoaXMuX21peGluc1ttaXhpbktleV07XG4gICAgICBpZiAodHlwZW9mIG1peGluW21ldGhvZF0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm5Qcm9taXNzZXMucHVzaChtaXhpblttZXRob2RdLmFwcGx5KHRoaXMsIGFyZ3MpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocmV0dXJuUHJvbWlzc2VzKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzTWl4aW4gPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPCo+fCp9XG4gICAqL1xuICBvbkluaXQoKSB7XG4gICAgaWYgKGFwcC5ERUJVRyAmJiAhdGhpcy5faXNNaXhpbikge1xuICAgICAgY29uc29sZS5kZWJ1ZyhBcnJheS5hcHBseShudWxsLCBhcmd1bWVudHMpLCB0aGlzLl90YWdOYW1lKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcGFyZW50Q29udHJvbGxlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50Q29udHJvbGxlcjtcbiAgfVxuXG4gIGdldCBjaGlsZENvbnRyb2xsZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaWxkQ29udHJvbGxlcjtcbiAgfVxuXG4gIG9uTG9hZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcnVuTGlmZWN5Y2xlKFwib25Mb2FkXCIsIGFyZ3VtZW50cyk7XG4gIH1cblxuICB3aWxsU2hvdygpIHtcbiAgICByZXR1cm4gdGhpcy5fcnVuTGlmZWN5Y2xlKFwid2lsbFNob3dcIiwgYXJndW1lbnRzKTtcbiAgfVxuXG4gIG9uUmVmcmVzaCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcnVuTGlmZWN5Y2xlKFwib25SZWZyZXNoXCIsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBvblJlbW92ZSgpIHtcbiAgICB0aGlzLl9ydW5MaWZlY3ljbGUoXCJvblJlbW92ZVwiLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbm9PcGVuTW9kZWxSZXF1ZXN0cygpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwodGhpcy5fbW9kZWxzLm1hcCgoeCkgPT4geC5ub09wZW5SZXF1ZXN0cygpKSk7XG4gIH1cblxuICByZW1vdmUoKSB7XG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLl9tb2RlbHMpIHtcbiAgICAgIG1vZGVsLmNsb3NlKCk7XG4gICAgfVxuICAgIGxldCBfY2hpbGRDb250cm9sbGVyID0gdGhpcy5fY2hpbGRDb250cm9sbGVyO1xuICAgIGZvciAobGV0IGkgaW4gX2NoaWxkQ29udHJvbGxlcikge1xuICAgICAgaWYgKF9jaGlsZENvbnRyb2xsZXIuaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgZm9yIChsZXQgY2Mgb2YgX2NoaWxkQ29udHJvbGxlcltpXSkge1xuICAgICAgICAgIGlmICghY2MucmVtb3ZlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMub25SZW1vdmUgfHwgdGhpcy5vblJlbW92ZSgpKSB7XG4gICAgICBhbGxPZmYodGhpcyk7XG4gICAgICBjb25zdCBjX25hbWUgPSB0YWdOYW1lVG9DYW1lbENhc2UodGhpcy5fdGFnTmFtZSk7XG4gICAgICBpZiAodGhpcy5fcGFyZW50Q29udHJvbGxlci5fY2hpbGRDb250cm9sbGVyW2NfbmFtZV0pIHtcbiAgICAgICAgbGV0IGFyciA9IHRoaXMuX3BhcmVudENvbnRyb2xsZXIuX2NoaWxkQ29udHJvbGxlcltjX25hbWVdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChhcnJbaV0gPT09IHRoaXMpIHtcbiAgICAgICAgICAgIGFyci5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJGNvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgIGRlbGV0ZSB0aGlzO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29udHJvbGxlcl9uYW1lKCkge1xuICAgIHJldHVybiB0YWdOYW1lVG9SZWFkYWJsZU5hbWUodGhpcy5fdGFnTmFtZSk7XG4gIH1cblxuICBhZGRFdmVudChldmVudCwgc2VsZWN0b3IsIGhhbmRsZXIpIHtcbiAgICB0aGlzLmdldEV2ZW50cygpO1xuICAgIHRoaXMuX2FsbEV2ZW50c1tldmVudF0gPSB0aGlzLl9hbGxFdmVudHNbZXZlbnRdIHx8IHt9O1xuICAgIHRoaXMuX2FsbEV2ZW50c1tldmVudF1bc2VsZWN0b3JdID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldEV2ZW50cygpIHtcbiAgICBpZiAodGhpcy5fYWxsRXZlbnRzKSByZXR1cm4gdGhpcy5fYWxsRXZlbnRzO1xuICAgIGxldCBhbGxFdmVudHMgPSBbXTtcbiAgICBhbGxFdmVudHMgPSBhbGxFdmVudHMuY29uY2F0KHRoaXMuZXZlbnRzKTtcbiAgICBmb3IgKGxldCBtaXhpbktleSBpbiB0aGlzLl9taXhpbnMpIHtcbiAgICAgIGxldCBtaXhpbiA9IHRoaXMuX21peGluc1ttaXhpbktleV07XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShtaXhpbi5ldmVudHMpKSB7XG4gICAgICAgIGFsbEV2ZW50cyA9IGFsbEV2ZW50cy5jb25jYXQobWl4aW4uZXZlbnRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMuX2FsbEV2ZW50cyA9IF8ubWVyZ2UoLi4uYWxsRXZlbnRzKSk7XG4gIH1cblxuICBwb3N0KHVybCwgYXJncykge1xuICAgIHJldHVybiBhcHAucG9zdCh0aGlzLCB1cmwsIGFyZ3MpO1xuICB9XG5cbiAgZ2V0KHVybCwgYXJncykge1xuICAgIHJldHVybiBhcHAuZ2V0KHRoaXMsIHVybCwgYXJncyk7XG4gIH1cblxuICBzdWJtaXRGb3JtKGZvcm0sIHVybCwgbWV0aG9kKSB7XG4gICAgcmV0dXJuIGFwcC5zdWJtaXRGb3JtQW5kVXBkYXRlVmlldyh0aGlzLCBmb3JtLCB1cmwsIG1ldGhvZCk7XG4gIH1cblxuICBzZXJ2ZXJDYWxsKG1ldGhvZGUsIGFyZ3MpIHtcbiAgICBsZXQgcmUgPSAvc2RjX3ZpZXdcXC8oW14vXSspL2k7XG4gICAgbGV0IGFwcCA9IHRoaXMuY29udGVudFVybC5tYXRjaChyZSk7XG4gICAgaWYgKCFhcHAgfHwgYXBwLmxlbmd0aCA8IDIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIFwiVG8gdXNlIHRoZSBzZXJ2ZXJDYWxsIGZ1bmN0aW9uIHRoZSBjb250ZW50VXJsIG11c3QgYmUgc2V0OiBcIiArXG4gICAgICAgIHRoaXMubmFtZSxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhbGxTZXJ2ZXIoXG4gICAgICBhcHBbMV0sXG4gICAgICB0aGlzLl90YWdOYW1lLFxuICAgICAgdGhpcy5wYXJzZWRDb250ZW50VXJsID8/IHRoaXMuY29udGVudFVybCxcbiAgICAgIG1ldGhvZGUsXG4gICAgICBhcmdzLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsTmFtZVxuICAgKiBAcGFyYW0gIHtvYmplY3Q/fSBtb2RlbFF1ZXJ5XG4gICAqIEByZXR1cm5zIHtTZGNRdWVyeVNldH1cbiAgICovXG4gIHF1ZXJ5U2V0KG1vZGVsTmFtZSwgbW9kZWxRdWVyeSA9IHt9KSB7XG4gICAgY29uc3QgbmV3UXVlcnlTZXQgPSBuZXcgU2RjUXVlcnlTZXQobW9kZWxOYW1lLCBtb2RlbFF1ZXJ5KTtcbiAgICB0aGlzLl9tb2RlbHMucHVzaChuZXdRdWVyeVNldCk7XG4gICAgcmV0dXJuIG5ld1F1ZXJ5U2V0O1xuICB9XG5cbiAgbmV3TW9kZWwobW9kZWxOYW1lLCBtb2RlbFF1ZXJ5ID0ge30pIHtcbiAgICBjb25zb2xlLndhcm4oXCJuZXdNb2RlbCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIHNvb24gYmUgcmVtb3ZlZC4gUGxlYXNlIHVzZSB0aGlzLnF1ZXJ5U2V0KG1vZGVsTmFtZSwgbW9kZWxRdWVyeSlcIik7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZXQobW9kZWxOYW1lLCBtb2RlbFF1ZXJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGFwdGVyIHRvIHRoaXMuJGNvbnRhaW5lci5maW5kXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkb21TZWxlY3RvclxuICAgKi9cbiAgZmluZChkb21TZWxlY3Rvcikge1xuICAgIHJldHVybiB0aGlzLiRjb250YWluZXIuZmluZChkb21TZWxlY3Rvcik7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHJldHVybiBhcHAucmVmcmVzaCh0aGlzLiRjb250YWluZXIsIHRoaXMpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHJldHVybiBhcHAucmVsb2FkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHJlY29uY2lsZSgkdmlydHVhbE5vZGUsICRyZWFsTm9kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gYXBwLnJlY29uY2lsZSh0aGlzLCAkdmlydHVhbE5vZGUsICRyZWFsTm9kZSk7XG4gIH1cblxuICBzdWJtaXRNb2RlbEZvcm1EaXN0cmlidXRvcigkZm9ybSwgZSkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5fc3VibWl0TW9kZWxGb3JtID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdWJtaXRNb2RlbEZvcm0oJGZvcm0sIGUpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHRoaXMuc3VibWl0TW9kZWxGb3JtID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiB0aGlzLnN1Ym1pdE1vZGVsRm9ybSgkZm9ybSwgZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRlZmF1bHRTdWJtaXRNb2RlbEZvcm0oJGZvcm0sIGUpO1xuICB9XG5cbiAgaXRlcmF0ZUFsbENoaWxkcmVuKCkge1xuICAgIGxldCBfY2hpbGRDb250cm9sbGVyID0gdGhpcy5fY2hpbGRDb250cm9sbGVyO1xuICAgIGxldCByZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpIGluIF9jaGlsZENvbnRyb2xsZXIpIHtcbiAgICAgIGlmIChfY2hpbGRDb250cm9sbGVyLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgIGZvciAobGV0IGNjIG9mIF9jaGlsZENvbnRyb2xsZXJbaV0pIHtcbiAgICAgICAgICByZXMucHVzaChjYyk7XG4gICAgICAgICAgcmVzLnB1c2goLi4uY2MuaXRlcmF0ZUFsbENoaWxkcmVuKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICAvKipcbiAgICogTW9kZWwgRm9ybSBFdmVudHNcbiAgICovXG4gIGRlZmF1bHRTdWJtaXRNb2RlbEZvcm0oJGZvcm0sIGUpIHtcbiAgICBpZiAoIXRoaXMuX2lzTWl4aW4pIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBsZXQge21vZGVsLCBmb3JtX25hbWV9ID0gJGZvcm0uZGF0YSgpO1xuICAgICAgbGV0IGRhdGEgPSBtb2RlbC5zeW5jRm9ybSgkZm9ybSk7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsZXQgcHJvbTtcbiAgICAgICAgaWYgKG1vZGVsLmlkICE9PSBudWxsICYmIG1vZGVsLmlkID49IDApIHtcbiAgICAgICAgICBwcm9tID0gbW9kZWwuc2F2ZSh7Zm9ybU5hbWU6IGZvcm1fbmFtZSwgZGF0YX0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb20gPSBtb2RlbC5jcmVhdGUoe2RhdGF9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb21cbiAgICAgICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICBjbGVhckVycm9yc0luRm9ybSgkZm9ybSk7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MgJiZcbiAgICAgICAgICAgIHRoaXMuc3VibWl0X21vZGVsX2Zvcm1fc3VjY2VzcyhyZXNbMF0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb250cm9sbGVyIG9mIHRoaXMuaXRlcmF0ZUFsbENoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgICAgY29udHJvbGxlci5zdWJtaXRfbW9kZWxfZm9ybV9zdWNjZXNzICYmXG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuc3VibWl0X21vZGVsX2Zvcm1fc3VjY2VzcyhyZXNbMF0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVjb25jaWxlKFxuICAgICAgICAgICAgICAkKGA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+JHtkYXRhLmh0bWx9PC9kaXY+YCksXG4gICAgICAgICAgICAgICRmb3JtLmZpbmQoXCIuY29udGFpbmVyLWZsdWlkXCIpLmZpcnN0KCksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zdWJtaXRfbW9kZWxfZm9ybV9lcnJvciAmJlxuICAgICAgICAgICAgdGhpcy5zdWJtaXRfbW9kZWxfZm9ybV9lcnJvcihkYXRhKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29udHJvbGxlciBvZiB0aGlzLml0ZXJhdGVBbGxDaGlsZHJlbigpKSB7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuc3VibWl0X21vZGVsX2Zvcm1fZXJyb3IgJiZcbiAgICAgICAgICAgICAgY29udHJvbGxlci5zdWJtaXRfbW9kZWxfZm9ybV9lcnJvcihkYXRhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVqZWN0KGRhdGEpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG59XG4iXSwibmFtZXMiOlsiYWxsT2ZmIiwiYXBwIiwiU2RjUXVlcnlTZXQiLCJjYWxsU2VydmVyIiwidXVpZHY0IiwiY2xlYXJFcnJvcnNJbkZvcm0iLCJ0YWdOYW1lVG9DYW1lbENhc2UiLCJ0YWdOYW1lVG9SZWFkYWJsZU5hbWUiLCJBYnN0cmFjdFNEQyIsImNvbnN0cnVjdG9yIiwiX3V1aWQiLCJjb250ZW50VXJsIiwiY29udGVudFJlbG9hZCIsInBhcnNlZENvbnRlbnRVcmwiLCJldmVudHMiLCJsb2FkX2FzeW5jIiwiX2lzRXZlbnRzU2V0IiwiX2FsbEV2ZW50cyIsIl9wYXJhbXMiLCJfdXJsUGFyYW1zIiwiX21vZGVscyIsIl9jc3NVcmxzIiwiYWZ0ZXJTaG93IiwiY29uc29sZSIsIndhcm4iLCJfbWl4aW5zIiwiX3RhZ05hbWUiLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsIl9jaGlsZENvbnRyb2xsZXIiLCJfcGFyZW50Q29udHJvbGxlciIsIl9vbkxvYWREb25lIiwiJGNvbnRhaW5lciIsIl9pc01peGluIiwicGFyYW1zIiwiX3J1bkxpZmVjeWNsZSIsIm1ldGhvZCIsImFyZ3MiLCJERUJVRyIsImRlYnVnIiwicmV0dXJuUHJvbWlzc2VzIiwibWl4aW5LZXkiLCJtaXhpbiIsInB1c2giLCJhcHBseSIsIlByb21pc2UiLCJhbGwiLCJ0aGVuIiwib25Jbml0IiwiQXJyYXkiLCJhcmd1bWVudHMiLCJwYXJlbnRDb250cm9sbGVyIiwiY2hpbGRDb250cm9sbGVyIiwib25Mb2FkIiwid2lsbFNob3ciLCJvblJlZnJlc2giLCJvblJlbW92ZSIsIm5vT3Blbk1vZGVsUmVxdWVzdHMiLCJtYXAiLCJ4Iiwibm9PcGVuUmVxdWVzdHMiLCJyZW1vdmUiLCJtb2RlbCIsImNsb3NlIiwiaSIsImhhc093blByb3BlcnR5IiwiY2MiLCJjX25hbWUiLCJhcnIiLCJsZW5ndGgiLCJzcGxpY2UiLCJjb250cm9sbGVyX25hbWUiLCJhZGRFdmVudCIsImV2ZW50Iiwic2VsZWN0b3IiLCJoYW5kbGVyIiwiZ2V0RXZlbnRzIiwiYWxsRXZlbnRzIiwiY29uY2F0IiwiaXNBcnJheSIsIl8iLCJtZXJnZSIsInBvc3QiLCJ1cmwiLCJnZXQiLCJzdWJtaXRGb3JtIiwiZm9ybSIsInN1Ym1pdEZvcm1BbmRVcGRhdGVWaWV3Iiwic2VydmVyQ2FsbCIsIm1ldGhvZGUiLCJyZSIsIm1hdGNoIiwiZXJyb3IiLCJuYW1lIiwicXVlcnlTZXQiLCJtb2RlbE5hbWUiLCJtb2RlbFF1ZXJ5IiwibmV3UXVlcnlTZXQiLCJuZXdNb2RlbCIsImZpbmQiLCJkb21TZWxlY3RvciIsInJlZnJlc2giLCJyZWxvYWQiLCJyZWxvYWRDb250cm9sbGVyIiwicmVjb25jaWxlIiwiJHZpcnR1YWxOb2RlIiwiJHJlYWxOb2RlIiwic3VibWl0TW9kZWxGb3JtRGlzdHJpYnV0b3IiLCIkZm9ybSIsImUiLCJfc3VibWl0TW9kZWxGb3JtIiwic3VibWl0TW9kZWxGb3JtIiwiZGVmYXVsdFN1Ym1pdE1vZGVsRm9ybSIsIml0ZXJhdGVBbGxDaGlsZHJlbiIsInJlcyIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwiZm9ybV9uYW1lIiwiZGF0YSIsInN5bmNGb3JtIiwicmVzb2x2ZSIsInJlamVjdCIsInByb20iLCJpZCIsInNhdmUiLCJmb3JtTmFtZSIsImNyZWF0ZSIsInN1Ym1pdF9tb2RlbF9mb3JtX3N1Y2Nlc3MiLCJjb250cm9sbGVyIiwiY2F0Y2giLCIkIiwiaHRtbCIsImZpcnN0Iiwic3VibWl0X21vZGVsX2Zvcm1fZXJyb3IiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/simpleDomControl/AbstractSDC.js\n\n}");
|
|
28
28
|
|
|
29
29
|
/***/ },
|
|
30
30
|
|
package/dist/ugly.index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={};let t;function n(){return new Promise(function(e){e()})}function r(e){return(e=(e=e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)).replace(/[0-9]+/g,e=>`-${e}`)).replace(/^[-]/g,"")}function s(e){return e.replace(/-./g,e=>`${e[1].toUpperCase()}`)}e.d=(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const o=(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 i(e,t,n){return $.ajax({url:t,type:n||"POST",xhr:function(){var e=$.ajaxSettings.xhr();return e.upload&&e.upload.addEventListener("progress",l,!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 l(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 a(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 c(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}function u(e){e.find(".has-error").removeClass("has-error").find(".alert-danger").remove(),e.find(".non-field-errors").remove()}function d(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 h(e){let{type:t,name:n}=e;return n&&""!==n?"hidden"===t?(r=$(e).val()).toLowerCase().match(/^(true|false)$/)?"true"===r.toLowerCase():"undefined"!==r?"none"===r.toLowerCase()?null:r.match(/^-?\d+$/)?parseInt(r,10):r.match(/^-?\d+\.?\d+$/)?parseFloat(r):r.match(/^(['][^']*['])|(["][^"]*["])$/)?r.substring(1,r.length-1):r:void 0:"checkbox"===t?e.checked:"file"===t?e.files[0]:$(e).val():null;var r}function f(e,t){let{type:n,name:r}=e;if(r&&""!==r)if("checkbox"===n)e.checked=!!t;else if("file"===n){if(t instanceof File&&"undefined"!=typeof DataTransfer){let n=new DataTransfer;n.items.add(t),e.files=n}}else t instanceof ae?$(e).val(t.id):t instanceof le?$(e).val(`[${t.getIds().join(",")}]`):(null===t&&(t=""),$(e).val(t));return null}function m(e,t=null){return Object.fromEntries(Object.entries(e).filter(([e,t])=>e!==A).map(([e,n])=>{if("string"==typeof n&&n.startsWith("SDC_JSON_MODEL=["))try{const{pk:t,fields:r}=JSON.parse(n.slice(16,-1));return[e,{...r,id:t,id:t}]}catch{}return[e,a(n,t)]}))}function p(e,t=null){return m(e.data(),t)}const y=["onbeforeunload","onunload"],g=Object.keys(window).filter(e=>/^on/.test(e)&&!y.includes(e)).map(e=>e.slice(2));function v(e,t,n){let r;switch(e){case"mouseleave":case"mouseout":case"mouseenter":case"mousein":return r=document.elementFromPoint(t.clientX,t.clientY),n!==r&&!n.contains(r);default:return!0}}function w(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&&v(t,e,n[0])){if(!r&&(r=Q(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 b(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(" ")))})}}let R=[],N={};function C(e,t){if(e){let n=s(t._tagName);e._childController[n]||(e._childController[n]=[]),e._childController[n].push(t)}return t._parentController=e}function O(e,t,n,r){let s=[];r=function(e,t){e=(e=e.concat(N[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 N[t][1])e.includes(r)||(e.push(r),n=!0)}return e}(r,n);for(let e of r)s.push(N[e][0]);let i=new(function(e,...t){let n={[e.name]:class{constructor(...n){let r={};t.forEach(e=>{let t;Object.assign(this,t=new e),t._tagName=e.prototype._tagName,t._isMixin=!0,r[e.name]=t}),Object.assign(this,new e),this._mixins=r}static get name(){return e.name}static className(){return this.name}get mixins(){return this._mixins}}}[e.name];return o(n,e),t.forEach(e=>{o(n,e)}),n}(N[n][0],...s));return i._tagName=n,C(e,i),i.$container=t,function(e,t){!function(e,t,n){e&&"function"==typeof e.onInit&&(e.params=p(t,n._parentController))}(t,e,t)}(t,i),i}function S(e,t,n,r){if(R.includes(n)){let o=s(n);return window[o]||(window[o]=O(e,t,n,r)),window[o].$container=t,window[o]}return O(e,t,n,r)}function F(e,t){const r=function(e){return function(e){let t={args:{}};return e.contentUrl&&(t=V(e),e.contentUrl=t.url),Promise.all([D(e,t.args)]).then(function(e){let t=e[0];if(t)try{return $(t)}catch{return $("<div></div>").append(t)}return null})}(e).then(t=>!e.onLoad||e._onLoadDone?t:(e._onLoadDone=!0,(e.onLoad(t)||n()).then(()=>t)))}(e).then(function(t){return function(e,t){return W(e,t).then(function(t){if(t=t||!0,e.willShow){let n=e.willShow();if(n instanceof Promise)return n.then(function(){return t})}return t})}(e,t)}).then(()=>function(e,t){return X(null,e,t)}(e,t)).catch(function(t){return W(e,t)});return e.load_async?Promise.resolve():r}function E(e){const t=function(e){let t=[];for(;e;)e._isEventsSet=!1,t.unshift(e),e=e._parentController;return t}(e.controller[0]),n=t.concat(e.controller.slice(1));for(let t of n)b(t),t.onRefresh(e.controller[0])}function k(e,t){let n=Boolean(e);return n?e.uuids.has(t._uuid)||(e.uuids.add(t._uuid),e.controller.push(t)):e={uuids:new Set([t._uuid]),controller:[t]},{isRunningProcess:n,refreshProcess:e}}let P={},x={};function L(e,t){return j(e),x.hasOwnProperty(e)?t[x[e]]?void P[e].push(t):console.log("No event handler: "+e,t):console.log("No event: "+e,t)}function j(e,t){t||(t=e),x[e]||(x[e]=t,P[e]=[])}function I(e){for(let t in P)if(P.hasOwnProperty(t))for(let n=P[t].length-1;n>=0;n--)e===P[t][n]&&P[t].splice(n,1)}function q(e){let t=Array.apply(null,arguments);if(e=t.shift(),!P.hasOwnProperty(e)||!x.hasOwnProperty(e))return n();let r=P[e],s=x[e],o=[];for(let e=0;e<r.length;e++){let n=r[e][s].apply(r[e],t);void 0!==n&&o.push(n)}return Promise.all(o)}let T={};const A="_controller_",M="_sdc_controller_";function U(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(U(o,t,n))}),s}function D(e,t){const{contentUrl:n,_tagName:r,contentReload:s}=e;return n?T[r]?Promise.resolve(T[r]):(t.VERSION=we.VERSION,t._method="content",$.get(n,t).then(function(e){return s||(T[r]=e),e}).catch(function(t){throw 301===t.status&&q("_RedirectOnView",t.responseJSON["url-link"]),"function"==typeof e.confirmPageLoaded&&q("navLoaded",{controller_name:()=>t.status}),`<sdc-error data-code="${t.status}">${t.responseText}</sdc-error>`})):Promise.resolve(!1)}function J(e,t,n=null){return t=t||e.data(A),G(we.tagNames,e,t,n)}function V(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{args:n,params:r}=function(e,t){const n=p(t,e),[r,s]=Object.entries(n).reduce(([t,n],[r,s])=>(e._urlParams.includes(r)?t[r]=s:n[r]=s,[t,n]),[{},{}]);return{params:r,args:s}}(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");const i=n[s];i||console.warn(`${s} is not set for controller ${e._tagName}`),t=t.replace(o,i)}return t}(e,t,r)),e.parsedContentUrl=t,{url:t,args:n}}function Q(e){return e.hasClass(M)?e.data(`${A}`):e.closest(`.${M}`).data(`${A}`)}function B(e,t,n,r,s){let o=e.data(A);return o?J(e,o,s):(o=S(r,e,t,n),e.data(A,o),e.addClass(M),F(o,s))}function W(e,t,n=null){if(t&&t.length>0){e.$container.empty(),e.$container.attr(e._tagName,"");for(let t in e._mixins)e.$container.attr(e._mixins[t]._tagName,"");e.$container.append(t)}return J(e.$container,e,n)}function G(e,t,n,r){return new Promise(s=>{let o=U(t,e,n),i=o.length;if(0===i)return s();for(let e=0;e<o.length;e++)B(o[e].dom,o[e].tag,o[e].super,n,r).then(()=>{if(i--,0===i)return s()})})}function z({$element:e,id:t=[],parent:n=null}){t.push(function(e){if(3===e[0].nodeType)return`TEXT__${e[0].nodeValue}`;const t=[e[0].tagName];return"INPUT"===e[0].nodeName&&[["name",""],["type","text"],["id",""]].forEach(([n,r])=>{const s=e.attr(n)??r;s&&t.push(s)}),t.join("__")}(e));const r={$element:e,id:t.join("::"),depth:t.length,idx:0,getRealParent:()=>n,getIdx:function(){return this.idx=Math.max(0,(this.getRealParent()?.getIdx()??-1)+e.index()+1),this.idx},op:null,parent:n};return r.getIdx.bind(r),[r].concat(e.contents().toArray().map(e=>z({$element:$(e),id:t.slice(),parent:r})).flat())}function K(e,t){const n=z({$element:t}),r=z({$element:e});n.map((e,t)=>e.idx=t),r.map((e,t)=>e.idx=t);const s=Math.max(...r.concat(n).map(e=>e.depth)),o=H(n,r,s);let i=[];window.MAIN=t,window.OPS=o,o.forEach((e,t)=>{const{op:n,$element:r,idx:s}=e;if("keep_counterpart"===n.type){if(n.counterpart.getIdx()!==s){const t=e.getBefore();t?n.counterpart.$element.insertAfter(t.$element):e.getRealParent().$element.prepend(n.counterpart.$element)}!function(e,t){const n=e[0].attributes??[],r=t[0].attributes??[];[...n].forEach(n=>{t.is(`[${n.name}]`)||e.removeAttr(n.name)}),[...r].forEach(t=>{t.name.startsWith("data")||e.attr(t.name)===t.value||e.attr(t.name,t.value)}),e.removeData(),Object.entries(t.data()).forEach(([t,n])=>{e.data(t,n)})}(n.counterpart.$element,r),r.hasClass(M)&&(r.data(A).$container=n.counterpart.$element,r.data(A,null)),i.push(r)}else if("delete"===n.type)r.safeRemove();else if("insert"===n.type){const{after:t,target:n}=e.op;t?r.insertAfter(t.$element):n&&n.$element.prepend(r)}}),i.forEach(e=>e.safeRemove())}function H(e,t,n){return t.filter(e=>e.depth===n&&!e.op).forEach(t=>{const n=e.find(e=>!e.op&&e.id===t.id);if(n){const e=(t,n)=>{t.op={type:"keep",idx:n.idx},n.op={type:"keep_counterpart",counterpart:t},t=t.parent,n=n.parent,!t||t.op||n?.op||e(t,n)};e(n,t)}}),n>1?H(e,t,n-1):(e.forEach((t,n)=>{if(!t.op){const r=(e[n-1]?.op.idx??-1)+1;t.op={type:"delete",idx:r}}}),t.forEach((e,n)=>{if(e.getBefore=()=>function(e,n){const r=e.depth;for(;n>=1&&e.depth>=r;)if((e=t[n-=1]).depth===r)return"keep_counterpart"===e.op.type?e.op.counterpart:e;return null}(e,n),e.getRealParent=()=>{return(t=e).parent?"keep_counterpart"===t.parent.op.type?t.parent.op.counterpart:t.parent:null;var t},!e.op){const t=e.getRealParent(),n="insert"===t?.op.type?"insert_ignore":"insert";e.op={type:n,target:t,after:e.getBefore()}}}),[...e,...t].sort((e,t)=>(e.op?.idx??e.idx)-(t.op?.idx??t.idx)))}function X(e,t,n=null){if(t||(t=Q(e)),!t)return Promise.resolve();const{refreshProcess:r,isRunningProcess:s}=k(n,t);return e??=t.$container,G(we.tagNames,e,t,n).then(()=>function(e,t,n){return function(e,t,n){const r=[];return t.find(`._bind_to_update_handler.sdc_uuid_${e._uuid}`).each(function(){const t=$(this);let s;if(t.hasClass("_with_handler"))s=t.data("handler");else{let t=this.tagName.toLowerCase().replace(/^this./,"");e[t]&&(s=e[t])}if("function"==typeof s){const n=m(t.data(),e);s=s.bind(e)(n)}s&&r.push(Promise.resolve(s).then(r=>{let s=$("<div></div>");return s.append(r),""===t.html()&&t.append("<div></div>"),we.reconcile(e,s,t.children(),n)}))}),Promise.all(r)}(e,t??e.$container,n)}(t,e,r).then(()=>{s||E(r)}))}const Y={};function Z(e,t){Y[e]=t}function ee(e){return Y[e]}const te=25e3,ne="_connecting_process",re=e=>Object.assign(Object.create(Object.getPrototypeOf(e)),structuredClone(e));class se extends Error{constructor(e){"string"==typeof e&&(e={msg:e,is_error:!0,header:"Error"}),super(e.msg),this.msg=e.msg,this.header=e.header,this.is_error=e.is_error,this.html=e.html}}class oe{constructor({name:e,url:t}){this.name=e,this.url=t,this.content=null}async load(e=!1){return!e&&this.content||(this.content=await new Promise((e,t)=>{$.get(this.url).then(e).catch(()=>{e("")})})),this.content}async text(){return this.load()}static isValid(e){return!(null===e||"object"!=typeof e||Array.isArray(e)||e instanceof File||"string"!=typeof e.url||"string"!=typeof e.name)}}function ie(e){const t=parseInt(e??-1,10);return Number.isNaN(t)?-1:t}class le{constructor(e,t={}){return this.valuesList=[],this.loaded=!1,this.modelName=e,this.modelQuery=t??{},this._onNoOpenRequests=[],this._isConnected=!1,this._isConnectingProcess=!1,this._autoReconnect=!0,this.socket=null,this.openRequest={},this.modelId=0,this.onUpdate=()=>{},this.onCreate=()=>{},new Proxy(this,{get:(e,t)=>"symbol"==typeof t||isNaN(t)?e[t]:e.valuesList[t],set:(e,t,n)=>isNaN(t)?(e[t]=n,!0):(e.valuesList[t]=n,!0)})}[Symbol.iterator](){let e=-1;return{next:()=>(++e,e<this.valuesList.length?{value:this.valuesList[e],done:!1}:{value:null,done:!0})}}set on_create(e){this.onCreate=e}set on_update(e){this.onUpdate=e}setIds(e){const t=this._setIds(e),n={id__in:t.map(e=>e.id)};return this.setFilter(n),t}cloneObject;_setIds(e){if(null===e||""===e||Array.isArray(e)&&0===e.length)return this.valuesList=[],this.valuesList;if(e instanceof le)return this.valuesList=e.valuesList.map(re),this.valuesList.forEach(e=>e._setQuerySet(this,!0)),this.valuesList;if(e instanceof ae)return this.valuesList=[re(e)],this.valuesList.forEach(e=>e._setQuerySet(this,!0)),this.valuesList;let t,n=Number.NaN;if(Number.isInteger(e))n=e;else if(e instanceof Array){const n=e.map(e=>parseInt(e));n.some(Number.isNaN)||(t=n)}else if("string"==typeof e){const r=e.split(",").map(e=>parseInt(e));r.some(Number.isNaN)?n=parseInt(e):t=r}if(Number.isNaN(n)){if(t){this.valuesList=this.valuesList.filter(e=>t.includes(e.id));const e=this.getIds();t.filter(t=>!e.includes(t)).forEach(e=>{this.valuesList.push(new(ee(this.modelName))({id:e}))})}}else this.valuesList=this.valuesList.filter(e=>n===e.id),0===this.valuesList.length&&(this.new().id=n);return this.valuesList}getIds(){return this.valuesList.map(e=>e.id)}get length(){return this.valuesList.length}byId(e){if(null!==e){const t=ie(e);return this.valuesList.find(e=>e.id===t)??null}return null}setFilter(e){return this.modelQuery=e,this}addFilter(e){return this.modelQuery=Object.assign({},this.modelQuery,e),this}new(e={}){const t=new(ee(this.modelName))(e);return t._setQuerySet(this,!1),this.valuesList.push(t),t}load(e=null){return this.valuesList=[],this.modelQuery=e??this.modelQuery,this._sendLoad()}update({modelQuery:e=null,item:t=null}){this.modelQuery=e??this.modelQuery;let n=t?{id:t.id}:this.modelQuery;return this._sendLoad(n)}delete({pk:e=null,id:t=null,elem:n=null}){if(e??=t,null===(e=n?n.id:e))throw new Error("pk or elem must be set");const r=c();return this.isConnected().then(()=>new Promise((t,n)=>{this.socket.send(JSON.stringify({event:"model",event_type:"delete",event_id:r,args:{model_name:this.modelName,model_query:this.modelQuery,id:e,pk:e}})),this.openRequest[r]=[t,n]}))}_sendLoad(e=null){return this.isConnected().then(()=>{const t=c();return new Promise((n,r)=>{this.socket.send(JSON.stringify({event:"model",event_type:"load",event_id:t,args:{model_name:this.modelName,model_query:e??this.modelQuery}})),this.openRequest[t]=[e=>{this.loaded=!0,n(e)},r]})})}_sendListView({modelQuery:e={},cbResolve:t=null,cbReject:n=null,templateContext:r={}}){return this.view({modelQuery:e,cbResolve:t,cbReject:n,templateContext:r,eventType:"list_view"})}view({viewName:e="html_list_template",modelQuery:t={},cbResolve:n=null,cbReject:r=null,templateContext:s={},eventType:o="named_view"}){let i=$('<div class="container-fluid">');return this.isConnected().then(()=>{const l=c();this.socket.send(JSON.stringify({event:"model",event_type:o,event_id:l,args:{view_name:e,model_name:this.modelName,model_query:t,template_context:s}})),this.openRequest[l]=[e=>{i.append(e.html),we.refresh(i),n&&n(e)},e=>{r&&r(e)}]}),i}_sendDetailView({pk:e=null,id:t=null,cbResolve:n=null,cbReject:r=null,templateContext:s={}}){e??=t,e=ie(e);let o=$('<div class="container-fluid">');return this.isConnected().then(()=>{const t=c();this.socket.send(JSON.stringify({event:"model",event_type:"detail_view",event_id:t,args:{model_name:this.modelName,model_query:this.modelQuery,id:e,pk:e,template_context:s}})),this.openRequest[t]=[e=>{o.append(e.html),we.refresh(o),n&&n(e)},e=>{r&&r(e)}]}),o}getForm({modelObj:e,eventType:t,formName:n,$divForm:r,cbResolve:s,cbReject:o,formId:i}){const l=c(),a=e.id??-1;this.isConnected().then(()=>{this.socket.send(JSON.stringify({event:"model",event_type:t,event_id:l,args:{model_name:this.modelName,id:a,pk:a,form_name:n}}))});const u=null===a||-1===a?"create":"edit";this.openRequest[l]=[t=>{r.append(t.html);let o=r.closest("form").addClass(`sdc-model-${u}-form sdc-model-form ${i}`).data("model",e).data("model_pk",a).data("form_name",n);e.addForm(o),o.length>0&&!o[0].hasAttribute("sdc_submit")&&o.attr("sdc_submit","submitModelFormDistributor"),we.refresh(r).then(()=>null),s&&s(t)},e=>{o&&o(e)}]}async get(e=null,t=!1){if(t){const t=e?.id??this.modelQuery?.id;return e&&this.setFilter(e),this.byId(t)??this.new(e||this.modelQuery)}if(await this.load(e),1!==this.length)throw new Error(`model query returns ${this.length} but only 1 expected.`);return this.addFilter({id:this.valuesList[0].id}),this.valuesList[0]}detailView({pk:e,cbResolve:t=null,cbReject:n=null,templateContext:r={}}){return this._sendDetailView({id:e,cbResolve:t,cbReject:n,templateContext:r})}listView({modelQuery:e={},searchValues:t={},cbResolve:n=null,cbReject:r=null,templateContext:s={}}){return this._sendListView({modelQuery:Object.assign({},this.modelQuery,e,{__search_values:t}),cbResolve:n,cbReject:r,templateContext:s})}save({pk:e=null,id:t=null,formName:n="edit_form",data:r=null}={}){e??=t;const s=ie(e);return this.isConnected().then(()=>{let e;if(s>-1){const t=this.byId(s);if(!t)return Promise.reject(new se(`Element not found with ID: ${s}`));e=[t]}else e=this.valuesList;let t=[];return e.forEach(e=>{const s=c();t.push(new Promise((t,o)=>{this._readFiles(e).then(i=>{const l=r?{...r}:e.serialize();l.id=e.id,this.socket.send(JSON.stringify({event:"model",event_type:"save",event_id:s,args:{form_name:n,model_name:this.modelName,model_query:this.modelQuery,data:l,id:l.id,pk:l.id,files:i}})),this.openRequest[s]=[e=>{let n="string"==typeof e.data.instance?JSON.parse(e.data.instance):e.data.instance;e.data.instance=this._parseServerRes(n),t(e)},o]})}))}),Promise.all(t)})}create({elem:e=null,data:t=null}={}){const n=c();return e||(e=this.new(t)),this.isConnected().then(()=>new Promise((r,s)=>{this._readFiles(e).then(o=>{this.socket.send(JSON.stringify({event:"model",event_type:"create",event_id:n,args:{model_name:this.modelName,model_query:this.modelQuery,data:t??e?.serialize()??{},files:o}})),this.openRequest[n]=[t=>{let n="string"==typeof t.data.instance?JSON.parse(t.data.instance):t.data.instance;e&&(e.id=n[0]?.id||n[0]?.pk),t.data.instance=this._parseServerRes(n)[0],r(t)},s]})}))}isConnected(){return new Promise((e,t)=>{if(this._isConnected)e();else if(this._isConnectingProcess&&this.openRequest[ne]){const[n,r]=this.openRequest[ne];this.openRequest[ne]=[()=>{n(),e()},()=>{r(),t()}]}else this._isConnectingProcess=!0,this.openRequest[ne]=[()=>{},()=>{}],this._connectToServer().then(()=>{e(this._checkConnection())})})}close(){this.socket&&(this._autoReconnect=!1,this.socket.onclose=()=>{},this.socket.close(),delete this.socket),this.valuesList.forEach(e=>{e._onClose()})}_readFiles(e){let t=[],n={};return e?(Object.keys(e.constructor.fields).forEach(r=>{const s=e[r];s instanceof File&&t.push(new Promise(async(e,t)=>{const o=c();this.openRequest[o]=[e,t];const i=await s.arrayBuffer();let l=new Uint8Array(i),a=Math.ceil(l.length/te);n[r]={id:o,file_name:s.name,field_name:r,content_length:s.size};for(let e=0;e<a;++e){const t=Array.from(l.slice(te*e,te*(e+1)));this.socket.send(JSON.stringify({event:"model",event_type:"upload",event_id:o,args:{chunk:t,idx:e,number_of_chunks:a,file_name:s.name,field_name:r,content_length:s.size,content_type:s.type,model_name:this.modelName,model_query:this.modelQuery}}))}}))}),Promise.all(t).then(()=>n)):Promise.resolve(n)}async _onMessage(e){let t=JSON.parse(e.data);if(t.is_error)this.openRequest.hasOwnProperty(t.event_id)&&(this.openRequest[t.event_id][1](new se(t)),this._closeOpenRequest(t.event_id)),(t.msg||t.header)&&q("pushErrorMsg",t.header||"",t.msg||""),"connect"===t.type&&(this.openRequest[ne][1](new se(t)),this._closeOpenRequest(ne),this._autoReconnect=!1,this.socket.close());else{if((t.msg||t.header)&&q("pushMsg",t.header||"",t.msg||""),"connect"===t.type)this._isConnected=!0,this._isConnectingProcess=!1,this.openRequest[ne][0](t),this._closeOpenRequest(ne);else if(["load","named_view","detail_view"].includes(t.type)){const e=JSON.parse(t.args.data);t.args.data=await this._parseServerRes(e)}else if("on_update"===t.type||"on_create"===t.type){const e=JSON.parse(t.args.data);let n,r=await this._parseServerRes(e);n="on_create"===t.type?this.onCreate:this.onUpdate,n(r),t.args.data=r}let e=t.data?.instance;e&&(t.data.instance=JSON.parse(t.data.instance)),this.openRequest.hasOwnProperty(t.event_id)&&(this.openRequest[t.event_id][0](t),this._closeOpenRequest(t.event_id))}}noOpenRequests(){return new Promise(e=>{if(0===Object.keys(this.openRequest).length)return e();this._onNoOpenRequests.push(e)})}_closeOpenRequest(e){delete this.openRequest[e],0===Object.keys(this.openRequest).length&&(this._onNoOpenRequests.forEach(e=>e()),this._onNoOpenRequests=[])}_connectToServer(){return new Promise(e=>{const t=`${this.modelName}`+(this.modelId>0?`/${this.modelId}`:"");"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.modelName}, ${this.modelId}) Socket closed unexpectedly`),this._isConnected=!1;for(const[t,n]of Object.entries(this.openRequest))n[1](e);this.openRequest={},setTimeout(()=>{this._autoReconnect&&this._connectToServer().then(()=>{})},1e3)},this.socket.onerror=e=>{if(console.error(`Model Socket encountered error: ${e} Closing socket`),this._isConnected)try{this.socket.close()}catch(e){}},this.socket.onopen=()=>{e()}})}_checkConnection(){const e=c();return new Promise((t,n)=>{this.socket.send(JSON.stringify({event:"model",event_type:"connect",event_id:e,args:{model_name:this.modelName,model_query:this.modelQuery}})),this.openRequest[e]=[t,n]})}_parseServerRes(e){const t=[];for(const n of e){const e=ee(this.modelName);if(!e)throw new Error(`${this.modelName} is no SdcModel. mybe the models ar not importad.`);const r=new e({id:n.id??n.pk,...n.fields}),s=this.byId(r.id);s?(s.setValues(r),t.push(s)):(this.valuesList.push(r),r._setQuerySet(this,!0),t.push(r))}return this.valuesList.sort((e,t)=>e._id-t._id),t}}class ae{static fields={};constructor(e){this._id=null,this._forms=[],this.loaded=!1,this.formId=c(),this.modelName=e}static querySet(e=null,t=null){return t?t.querySet(this.modeName,e):new le(this.modeName,e)}addForm(e){const t=this._onChange.bind(this);this._forms.push(e),e&&e.on("input.formWatcher change.formWatcher","input, select, textarea",t)}_onChange(e){const{name:t}=e.target;this.constructor.fields[t]&&this[`set${t}`](h(e.target))}_updateForm(e){const t=this;this._forms.forEach(n=>{n.find(`[name="${e}"]`).each(function(){f(this,t[e])})})}setValues(e={}){throw new Error("setValues() must be implemented by subclass")}_setQuerySet(e,t){this._querySet=new WeakRef(e),this.loaded=t}get querySet(){return this._querySet.deref()}save({formName:e="edit_form",data:t=null}={}){return this._querySet.deref().save({pk:this.id,formName:e,data:t})}create({data:e=null}={}){return this._querySet.deref().create({elem:this,data:e})}delete(){return this._querySet.deref().delete({elem:this})}load(){return this._querySet.deref().update({item:this})}update(){return this.load()}get id(){return this._id}set id(e){this._id=e}set pk(e){this.id=e}get pk(){return this._id}close(){return this._querySet.deref().close()}_onClose(){Object.keys(this.constructor.fields).filter(e=>this[`_${e}`]instanceof le).forEach(e=>this[`_${e}`].close())}detailView({cbResolve:e=null,cbReject:t=null,templateContext:n={}}){return this._querySet.deref().detailView({pk:this.id,cbResolve:e,cbReject:t,templateContext:n})}serialize(){return Object.entries(this.constructor.fields).reduce((e,[t,n])=>{const r=this[t];if(r instanceof le)if(n.many_to_many||n.one_to_many)e[t]=r.getIds();else{const n=r.getIds();n.length>0?e[t]=n[0]:e[t]=null}else n.is_relation&&r instanceof ae?e[t]=r.id??null:e[t]=r;return e},{})}toJson(){const e={};for(let t in this.constructor.fields){const n=this[t];n instanceof File?e[t]=n.name:e[t]=n instanceof ae?n.id:n instanceof le?n.getIds():n}return e}syncFormToModel(e){return this.syncForm(e)}_resolveForms(e){return e&&e.hasClass(this.formId)?e:$(`.${this.formId}`)}syncModelToForm(e){e=this._resolveForms(e);const t=this,n=this.constructor.fields;e.each(function(){const e=ie($(this).data("model_pk"));if(t.id===e)for(let e of this.elements){let r=e.name;r&&""!==r&&n[r]&&f(e,t[r])}})}syncForm(e){e=this._resolveForms(e);const t=this,n=this.constructor.fields,r={};function s(e,s){n[e]&&(t[e]=s),r[e]=s}return e.each(function(){const e=ie($(this).data("model_pk"));if(t.id===e||null===t.id&&-1===e){for(let e of this.elements)s(e.name,h(e));return t}}),r}form({cbResolve:e=null,cbReject:t=null}={}){return null===this.id||-1===this.id?this._createForm({cbReject:t,cbResolve:e}):this._editForm({cbReject:t,cbResolve:e})}_createForm({cbResolve:e=null,cbReject:t=null}){let n=$("<div>");return this._querySet.deref().getForm({modelObj:this,eventType:"create_form",formName:null,$divForm:n,cbResolve:e,cbReject:t,formId:this.formId}),n}_editForm({cbResolve:e=null,cbReject:t=null}){let n=$("<div>");return this._querySet.deref().getForm({modelObj:this,eventType:"edit_form",formName:null,$divForm:n,cbResolve:e,cbReject:t,formId:this.formId}),n}namedForm({formName:e,cbResolve:t=null,cbReject:n=null}){let r=$('<div class="container-fluid">');return this._querySet.deref().getForm({modelObj:this,eventType:"named_form",formName:e,$divForm:r,cbResolve:t,cbReject:n,formId:this.formId}),r}validate(e,t){const n=function(e,t){const{type:n,required:r,max_length:s,is_relation:o,many_to_many:i,one_to_many:l,many_to_one:a,one_to_one:c,related_model:u}=t;if(r&&(null==e||""===e))return"This field is required";if(null==e||""===e)return null;if((i||l||a||c)&&(!(e instanceof le)||e.modelName!==u))return"string"==typeof e&&(e=JSON.parse(e)),(i||a)&&Array.isArray(e)&&e.some(e=>!Number.isNaN(parseInt(e)))?null:"object"!=typeof e&&Number.isNaN(parseInt(e))?"Must be object or ID":null;switch(n){case"CharField":case"TextField":if("string"!=typeof e)return"Must be a string";if(s&&e.length>s)return`Max length is ${s}`;break;case"IntegerField":case"AutoField":case"BigIntegerField":if(!isFinite(parseInt(e)))return"Must be an integer";break;case"FloatField":case"DecimalField":if(!isFinite(parseFloat(e)))return"Must be a number";break;case"BooleanField":if("boolean"!=typeof e)return"Must be a boolean";break;case"DateField":case"DateTimeField":if(isNaN(Date.parse(e)))return"Must be a valid date";break;case"EmailField":if("string"!=typeof e||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e))return"Invalid email";break;case"URLField":try{new URL(e)}catch{return"Invalid URL"}break;case"UUIDField":if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(e))return"Invalid UUID";break;case"JSONField":if("object"!=typeof e)return"Must be JSON object";break;case"FileField":if(!(oe.isValid(e)||e instanceof File||e instanceof oe))return"Must be a valid file"}return null}(e,t);if(n)throw new Error(n)}parseValue(e,t){const{type:n,many_to_many:r,one_to_many:s,many_to_one:o,one_to_one:i}=t;if(null===e)return null;if((r||s||o||i)&&e&&"string"==typeof e)return JSON.parse(e);switch(n){case"CharField":case"TeextField":case"UUIDField":case"EmailField":return`${e}`;case"IntegerField":case"AutoField":case"BigIntegerField":return parseInt(e,10);case"FloatField":case"DecimalField":return parseFloat(e);case"BooleanField":return!!e;case"DateField":case"DateTimeField":return Date.parse(e);case"URLField":return new URL(e);case"FileField":if(null==e)return null;if("string"==typeof e)return null;if(oe.isValid(e))return new oe(e);if(e instanceof oe)return new oe(e);if("undefined"!=typeof File&&e instanceof File)return t.max_size&&e.size>t.max_size?`File too large (max ${t.max_size} bytes)`:t.allowed_types&&!t.allowed_types.includes(e.type)?`Invalid file type (${e.type})`:e;break;case"JSONField":if("object"==typeof e)return e;if("string"==typeof e)return JSON.parse(e)}return e}}let ce=!1,ue=!1,de=null,he={};function fe(){return window.SERVER_CALL_VIA_WEB_SOCKET?new Promise(e=>ce?e():ue?void setTimeout(()=>{fe().then(()=>{e()})},200):e(pe())):Promise.resolve(!0)}function me(){window.SERVER_CALL_VIA_WEB_SOCKET&&function(){if(ce){ce=!1;try{de.close()}catch(e){}}}()}function pe(){return ue=!0,new Promise(e=>{de="https:"===window.location.protocol?new WebSocket(`wss://${window.location.host}/sdc_ws/ws/`):new WebSocket(`ws://${window.location.host}/sdc_ws/ws/`),de.onmessage=function(e){_e(JSON.parse(e.data))},de.onclose=function(){ce&&console.error("SDC Socket closed unexpectedly"),ce=!1;for(const[e,t]of Object.entries(he))t[1]({}),delete he[e];setTimeout(()=>{pe()},1e3)},de.onerror=function(e){if(console.error("Socket encountered error: ",e.message,"Closing socket"),ce)try{de.close()}catch(e){}},de.onopen=function(){ce=!0,ue=!1,e()}})}function _e(e){if(e||(e={}),e.is_error)(e.msg||e.header)&&q("pushErrorMsg",e.header||"",e.msg||""),e.id&&he[e.id]&&(he[e.id][1](e.data||null),delete he[e.id]);else if((e.msg||e.header)&&q("pushMsg",e.header||"",e.msg||""),e.type&&"sdc_recall"===e.type)e.id&&he[e.id]&&(he[e.id][0](e.data),delete he[e.id]);else if(e.type&&"sdc_event"===e.type){let t=e.event;t&&q(t,e.payload)}else e.type&&"sdc_redirect"===e.type&&q("onNavLink",e.link)}class ye{constructor(){this._uuid=c(),this.contentUrl="",this.contentReload=!1,this.parsedContentUrl=null,this.events=[],this.load_async=!1,this._isEventsSet=!1,this._allEvents=null,this._params={},this._urlParams=[],this._models=[],this._cssUrls=[],this.afterShow=()=>{console.warn("afterShow is deprecated!!")},this._mixins={},this._tagName=Object.getPrototypeOf(this)._tagName??"",this._childController={},this._parentController=null,this._onLoadDone=!1,this.$container=null,this._isMixin=!1}get params(){return this._params}set params(e){this._params=e}_runLifecycle(e,t){we.DEBUG&&!this._isMixin&&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(){we.DEBUG&&!this._isMixin&&console.debug(Array.apply(null,arguments),this._tagName)}get parentController(){return this._parentController}get childController(){return this._childController}onLoad(){return this._runLifecycle("onLoad",arguments)}willShow(){return this._runLifecycle("willShow",arguments)}onRefresh(){return this._runLifecycle("onRefresh",arguments)}onRemove(){return this._runLifecycle("onRemove",arguments),!0}noOpenModelRequests(){return Promise.all(this._models.map(e=>e.noOpenRequests()))}remove(){for(const e of this._models)e.close();let e=this._childController;for(let t in e)if(e.hasOwnProperty(t))for(let n of e[t])if(!n.remove())return!1;if(!this.onRemove||this.onRemove()){I(this);const e=s(this._tagName);if(this._parentController._childController[e]){let t=this._parentController._childController[e];for(let e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)}return this.$container.remove(),!0}return!1}controller_name(){return this._tagName.replace(/-./g,e=>` ${e[1].toUpperCase()}`).replace(/^./g,e=>`${e.toUpperCase()}`)}addEvent(e,t,n){this.getEvents(),this._allEvents[e]=this._allEvents[e]||{},this._allEvents[e][t]=n}getEvents(){if(this._allEvents)return this._allEvents;let e=[];e=e.concat(this.events);for(let t in this._mixins){let n=this._mixins[t];Array.isArray(n.events)&&(e=e.concat(n.events))}return this._allEvents=_.merge(...e)}post(e,t){return we.post(this,e,t)}get(e,t){return we.get(this,e,t)}submitForm(e,t,n){return we.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,s){return window.SERVER_CALL_VIA_WEB_SOCKET?function(e,t,n,r){let s=c();return fe().then(()=>{de.send(JSON.stringify({event:"sdc_call",id:s,controller:t,app:e,function:n,args:r}))}),new Promise((e,t)=>{he[s]=[e,t]})}(e,t,r,s):function(e,t,n){return"object"!=typeof n&&Array.isArray(n)&&null===n&&(n={arg0:n}),n={data:JSON.stringify(n),_sdc_func_name:t,_method:"sdc_server_call"},$.post({url:e,data:n,beforeSend:function(e,t){e.setRequestHeader("X-CSRFToken",window.CSRF_TOKEN)}}).then(e=>{const t=e._return_data;return _e(t),t}).catch(e=>{const t=e.responseJSON||{};throw t.is_error=!0,_e(t),e})}(n,r,s)}(n[1],this._tagName,this.parsedContentUrl??this.contentUrl,e,t);console.error("To use the serverCall function the contentUrl must be set: "+this.name)}querySet(e,t={}){const n=new le(e,t);return this._models.push(n),n}newModel(e,t={}){return console.warn("newModel is deprecated and will soon be removed"),this.querySet(e,t)}find(e){return this.$container.find(e)}refresh(){return we.refresh(this.$container,this)}reload(){return we.reloadController(this)}reconcile(e,t=null){return we.reconcile(this,e,t)}submitModelFormDistributor(e,t){return"function"==typeof this._submitModelForm?this._submitModelForm(e,t):"function"==typeof this.submitModelForm?this.submitModelForm(e,t):this.defaultSubmitModelForm(e,t)}iterateAllChildren(){let e=this._childController,t=[];for(let n in e)if(e.hasOwnProperty(n))for(let r of e[n])t.push(r),t.push(...r.iterateAllChildren());return t}defaultSubmitModelForm(e,t){if(!this._isMixin){t.stopPropagation(),t.preventDefault();let{model:n,form_name:r}=e.data(),s=n.syncForm(e);return new Promise((t,o)=>{let i;i=null!==n.id&&n.id>=0?n.save({formName:r,data:s}):n.create({data:s}),i.then(n=>{u(e),this.submit_model_form_success&&this.submit_model_form_success(n[0]);for(const e of this.iterateAllChildren())e.submit_model_form_success&&e.submit_model_form_success(n[0]);t(n)}).catch(t=>{this.reconcile($(`<div class="container-fluid">${t.html}</div>`),e.find(".container-fluid").first()),this.submit_model_form_error&&this.submit_model_form_error(t);for(const e of this.iterateAllChildren())e.submit_model_form_error&&e.submit_model_form_error(t);o(t)})})}return Promise.resolve()}}const ge={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):(ge[e.toLowerCase()]&&(e=ge[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 ve,we={CSRF_TOKEN:window.CSRF_TOKEN||"",LANGUAGE_CODE:window.LANGUAGE_CODE||"en",DEBUG:window.DEBUG||!1,VERSION:window.VERSION||"0.0",tagNames:[],Global:R,rootController:null,globalRootController:null,_isInit:!1,_origin_trigger:null,_globalControllerClasses:[],init_sdc:()=>{we._isInit||(we._isInit=!0,we._origin_trigger?me():(we._origin_trigger=$.fn.trigger,$.fn.trigger=function(e){const t={}.hasOwnProperty.call(e,"type")?e.type:e;return g.includes(t)||(g.push(t),$(window).on(t,w)),we._origin_trigger.call(this,e)},we.updateJquery()),fe(),function(){const e=$(window);g.forEach(t=>{e.off(t).on(t,w)})}(),we.rootController=we.rootController||new ye,we.globalRootController=we.globalRootController||new ye),we.tagNames=Object.keys(N);const e=$("<div></div>");R.forEach(t=>{const n=N[t][0];e.append(`<${n.prototype._tagName}></${n.prototype._tagName}>`)});const{refreshProcess:n}=k(null,we.rootController);return G(we.tagNames,e,we.globalRootController,n).then(()=>G(we.tagNames,(t||(t=$("body")),t),we.rootController,n).then(e=>(E(n),e)))},updateJquery:()=>{$.fn.safeReplace=function(e){return we.safeReplace($(this),e)},$.fn.safeEmpty=function(){return we.safeEmpty($(this))},$.fn.safeRemove=function(){return we.safeRemove($(this))}},controllerToTag:e=>r(e.name).replace(/-controller$/,""),registerGlobal:e=>{we.register(e);let t=e.prototype._tagName;R.push(t)},cleanCache:()=>{T={}},register:(e,t=!1)=>{let n=we.controllerToTag(e);return!N[n]||t?(N[n]=[e,[]],e.prototype._tagName=n,{addMixin:(...e)=>{for(let t of e){let e;"string"==typeof t?e=r(t):t&&(e=we.controllerToTag(t)),N[n][1].push(e)}}}):{addMixin:(...e)=>{}}},post:(e,t,n)=>(n||(n={}),n.CSRF_TOKEN=we.CSRF_TOKEN,we.ajax(e,t,n,$.post)),get:(e,t,n)=>we.ajax(e,t,n,$.get),ajax:(e,t,n,r)=>{n||(n={}),n.VERSION=we.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?q("onNavLink",t["url-link"]):s.then(()=>{we.refresh(e.$container)})}).catch(i));return s},submitFormAndUpdateView:(e,t,n,r)=>{let s=new FormData(t);const o=e=>{e["url-link"]?q("onNavLink",e["url-link"]):window.location.href=e.url},l=new Promise((a,c)=>{i(s,n||t.action,r||t.method).then((t,n,r)=>{a(t,n,r),"redirect"===t.status?o(t):l.then(()=>{we.refresh(e.$container,e)})}).catch((e,t,n)=>{301===e.status?(e=e.responseJSON,o(e),a(e,t,n)):c(e,t,n)})});return l},submitForm:(e,t,n)=>{let r=new FormData(e);return new Promise((s,o)=>{i(r,t||e.action,n||e.method).then(s).catch(o)})},getController:e=>Q(e),safeEmpty:e=>(e.children().each(function(e,t){let n=$(t);we.safeRemove(n)}),e),safeReplace:(e,t)=>(t.insertBefore(e),we.safeRemove(e)),safeRemove:e=>(e.each(function(){let e=$(this);e.data(`${A}`)&&e.data(`${A}`).remove()}),e.find(`.${M}`).each(function(){const e=$(this).data(`${A}`);e&&e.remove()}),e.remove()),reloadController:e=>function(e){if(e.contentUrl){let t=V(e);return e.contentUrl=t.url,D(e,t.args)}return new Promise(e=>{e($())})}(e).then(t=>{let n=$(t);return we.reconcile(e,n)}),reconcile:(e,t,n=null,r=null)=>{if(!n){let n=e.$container.clone().empty();n.data(A,null),n.removeClass(M),n.append(t),t=n}n=n??e.$container;const{refreshProcess:s,isRunningProcess:o}=k(r,e);return X(t,e,s).then(()=>{var r;return K(t,n),(r=e)._childController={},r.find(`.${M}`).each(function(){const e=Q($(this));e===r&&C(r,e)}),o||E(s),e})},refresh:(e,t=null)=>X(e,t)},be=[];function $e(){if(!jest)throw new Error("JEST is not defined");0===be.length&&(ve=$.ajax.bind($),be.push(jest.spyOn($,"ajax")),be[0].mockImplementation(function(e){return ve(e).then(e=>e).catch(e=>e)}))}const Re=me,Ne={get_controller:async function(e,t={},n=""){$e();const r=$("body");we.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);r.append(o),we._isInit=!1,we.cleanCache(),await we.init_sdc();const i=we.getController(s);return i.navControllerPath=[e],i},getCsrfToken:function(){return function(e){if(document.cookie&&""!==document.cookie){const t=document.cookie.split(";");for(let n=0;n<t.length;n++){const r=t[n].trim();if(r.substring(0,10)===e+"=")return decodeURIComponent(r.substring(10))}}return""}("csrftoken")},controllerFromTestHtml:async function(e,t=null){$e();const n=$("body");we.updateJquery(),n.safeEmpty().append(e),we._isInit=!1,we.cleanCache(),await we.init_sdc();let r=we.rootController.iterateAllChildren();if(!t)return r;const s=r[0].onRefresh,o=jest.spyOn(r[0],"onRefresh");return new Promise(e=>{o.mockImplementation(function(){o.mockRestore();const t=s.apply(r[0],arguments);return e(r),t})})}};export{ye as AbstractSDC,ae as SdcModel,le as SdcQuerySet,I as allOff,we as app,a as checkIfParamNumberBoolOrString,u as clearErrorsInForm,S as controllerFactory,L as on,Z as registerModel,F as runControlFlowFunctions,d as setErrorsInForm,j as setEvent,Re as socketReconnect,Ne as test_utils,q as trigger};
|
|
1
|
+
var e={};let t;function n(){return new Promise(function(e){e()})}function r(e){return(e=(e=e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)).replace(/[0-9]+/g,e=>`-${e}`)).replace(/^[-]/g,"")}function s(e){return e.replace(/-./g,e=>`${e[1].toUpperCase()}`)}e.d=(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const o=(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 i(e,t,n){return $.ajax({url:t,type:n||"POST",xhr:function(){var e=$.ajaxSettings.xhr();return e.upload&&e.upload.addEventListener("progress",l,!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 l(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 a(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 c(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}function u(e){e.find(".has-error").removeClass("has-error").find(".alert-danger").remove(),e.find(".non-field-errors").remove()}function d(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 h(e){let{type:t,name:n}=e;return n&&""!==n?"hidden"===t?(r=$(e).val()).toLowerCase().match(/^(true|false)$/)?"true"===r.toLowerCase():"undefined"!==r?"none"===r.toLowerCase()?null:r.match(/^-?\d+$/)?parseInt(r,10):r.match(/^-?\d+\.?\d+$/)?parseFloat(r):r.match(/^(['][^']*['])|(["][^"]*["])$/)?r.substring(1,r.length-1):r:void 0:"checkbox"===t?e.checked:"file"===t?e.files[0]:$(e).val():null;var r}function m(e,t){let{type:n,name:r}=e;if(r&&""!==r)if("checkbox"===n)e.checked=!!t;else if("file"===n){if(t instanceof File&&"undefined"!=typeof DataTransfer){let n=new DataTransfer;n.items.add(t),e.files=n}}else t instanceof ae?$(e).val(t.id):t instanceof le?$(e).val(`[${t.getIds().join(",")}]`):(null===t&&(t=""),$(e).val(t));return null}function f(e,t=null){return Object.fromEntries(Object.entries(e).filter(([e,t])=>e!==A).map(([e,n])=>{if("string"==typeof n&&n.startsWith("SDC_JSON_MODEL=["))try{const{pk:t,fields:r}=JSON.parse(n.slice(16,-1));return[e,{...r,id:t,id:t}]}catch{}return[e,a(n,t)]}))}function p(e,t=null){return f(e.data(),t)}const y=["onbeforeunload","onunload"],g=Object.keys(window).filter(e=>/^on/.test(e)&&!y.includes(e)).map(e=>e.slice(2));function v(e,t,n){let r;switch(e){case"mouseleave":case"mouseout":case"mouseenter":case"mousein":return r=document.elementFromPoint(t.clientX,t.clientY),n!==r&&!n.contains(r);default:return!0}}function w(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&&v(t,e,n[0])){if(!r&&(r=Q(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 b(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(" ")))})}}let R=[],N={};function C(e,t){if(e){let n=s(t._tagName);e._childController[n]||(e._childController[n]=[]),e._childController[n].push(t)}return t._parentController=e}function O(e,t,n,r){let s=[];r=function(e,t){e=(e=e.concat(N[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 N[t][1])e.includes(r)||(e.push(r),n=!0)}return e}(r,n);for(let e of r)s.push(N[e][0]);let i=new(function(e,...t){let n={[e.name]:class{constructor(...n){let r={};t.forEach(e=>{let t;Object.assign(this,t=new e),t._tagName=e.prototype._tagName,t._isMixin=!0,r[e.name]=t}),Object.assign(this,new e),this._mixins=r}static get name(){return e.name}static className(){return this.name}get mixins(){return this._mixins}}}[e.name];return o(n,e),t.forEach(e=>{o(n,e)}),n}(N[n][0],...s));return i._tagName=n,C(e,i),i.$container=t,function(e,t){!function(e,t,n){e&&"function"==typeof e.onInit&&(e.params=p(t,n._parentController))}(t,e,t)}(t,i),i}function S(e,t,n,r){if(R.includes(n)){let o=s(n);return window[o]||(window[o]=O(e,t,n,r)),window[o].$container=t,window[o]}return O(e,t,n,r)}function F(e,t){const r=function(e){return function(e){let t={args:{}};return e.contentUrl&&(t=V(e),e.contentUrl=t.url),Promise.all([D(e,t.args)]).then(function(e){let t=e[0];if(t)try{return $(t)}catch{return $("<div></div>").append(t)}return null})}(e).then(t=>!e.onLoad||e._onLoadDone?t:(e._onLoadDone=!0,(e.onLoad(t)||n()).then(()=>t)))}(e).then(function(t){return function(e,t){return W(e,t).then(function(t){if(t=t||!0,e.willShow){let n=e.willShow();if(n instanceof Promise)return n.then(function(){return t})}return t})}(e,t)}).then(()=>function(e,t){return X(null,e,t)}(e,t)).catch(function(t){return W(e,t)});return e.load_async?Promise.resolve():r}function E(e){const t=function(e){let t=[];for(;e;)e._isEventsSet=!1,t.unshift(e),e=e._parentController;return t}(e.controller[0]),n=t.concat(e.controller.slice(1));for(let t of n)b(t),t.onRefresh(e.controller[0])}function k(e,t){let n=Boolean(e);return n?e.uuids.has(t._uuid)||(e.uuids.add(t._uuid),e.controller.push(t)):e={uuids:new Set([t._uuid]),controller:[t]},{isRunningProcess:n,refreshProcess:e}}let P={},x={};function L(e,t){return j(e),x.hasOwnProperty(e)?t[x[e]]?void P[e].push(t):console.log("No event handler: "+e,t):console.log("No event: "+e,t)}function j(e,t){t||(t=e),x[e]||(x[e]=t,P[e]=[])}function I(e){for(let t in P)if(P.hasOwnProperty(t))for(let n=P[t].length-1;n>=0;n--)e===P[t][n]&&P[t].splice(n,1)}function q(e){let t=Array.apply(null,arguments);if(e=t.shift(),!P.hasOwnProperty(e)||!x.hasOwnProperty(e))return n();let r=P[e],s=x[e],o=[];for(let e=0;e<r.length;e++){let n=r[e][s].apply(r[e],t);void 0!==n&&o.push(n)}return Promise.all(o)}let T={};const A="_controller_",M="_sdc_controller_";function U(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(U(o,t,n))}),s}function D(e,t){const{contentUrl:n,_tagName:r,contentReload:s}=e;return n?T[r]?Promise.resolve(T[r]):(t.VERSION=we.VERSION,t._method="content",$.get(n,t).then(function(e){return s||(T[r]=e),e}).catch(function(t){throw 301===t.status&&q("_RedirectOnView",t.responseJSON["url-link"]),"function"==typeof e.confirmPageLoaded&&q("navLoaded",{controller_name:()=>t.status}),`<sdc-error data-code="${t.status}">${t.responseText}</sdc-error>`})):Promise.resolve(!1)}function J(e,t,n=null){return t=t||e.data(A),G(we.tagNames,e,t,n)}function V(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{args:n,params:r}=function(e,t){const n=p(t,e),[r,s]=Object.entries(n).reduce(([t,n],[r,s])=>(e._urlParams.includes(r)?t[r]=s:n[r]=s,[t,n]),[{},{}]);return{params:r,args:s}}(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");const i=n[s];i||console.warn(`${s} is not set for controller ${e._tagName}`),t=t.replace(o,i)}return t}(e,t,r)),e.parsedContentUrl=t,{url:t,args:n}}function Q(e){return e.hasClass(M)?e.data(`${A}`):e.closest(`.${M}`).data(`${A}`)}function B(e,t,n,r,s){let o=e.data(A);return o?J(e,o,s):(o=S(r,e,t,n),e.data(A,o),e.addClass(M),F(o,s))}function W(e,t,n=null){if(t&&t.length>0){e.$container.empty(),e.$container.attr(e._tagName,"");for(let t in e._mixins)e.$container.attr(e._mixins[t]._tagName,"");e.$container.append(t)}return J(e.$container,e,n)}function G(e,t,n,r){return new Promise(s=>{let o=U(t,e,n),i=o.length;if(0===i)return s();for(let e=0;e<o.length;e++)B(o[e].dom,o[e].tag,o[e].super,n,r).then(()=>{if(i--,0===i)return s()})})}function z({$element:e,id:t=[],parent:n=null}){t.push(function(e){if(3===e[0].nodeType)return`TEXT__${e[0].nodeValue}`;const t=[e[0].tagName];return"INPUT"===e[0].nodeName&&[["name",""],["type","text"],["id",""]].forEach(([n,r])=>{const s=e.attr(n)??r;s&&t.push(s)}),t.join("__")}(e));const r={$element:e,id:t.join("::"),depth:t.length,idx:0,getRealParent:()=>n,getIdx:function(){return this.idx=Math.max(0,(this.getRealParent()?.getIdx()??-1)+e.index()+1),this.idx},op:null,parent:n};return r.getIdx.bind(r),[r].concat(e.contents().toArray().map(e=>z({$element:$(e),id:t.slice(),parent:r})).flat())}function K(e,t){const n=z({$element:t}),r=z({$element:e});n.map((e,t)=>e.idx=t),r.map((e,t)=>e.idx=t);const s=Math.max(...r.concat(n).map(e=>e.depth)),o=H(n,r,s);let i=[];window.MAIN=t,window.OPS=o,o.forEach((e,t)=>{const{op:n,$element:r,idx:s}=e;if("keep_counterpart"===n.type){if(n.counterpart.getIdx()!==s){const t=e.getBefore();t?n.counterpart.$element.insertAfter(t.$element):e.getRealParent().$element.prepend(n.counterpart.$element)}!function(e,t){const n=e[0].attributes??[],r=t[0].attributes??[];[...n].forEach(n=>{t.is(`[${n.name}]`)||e.removeAttr(n.name)}),[...r].forEach(t=>{t.name.startsWith("data")||e.attr(t.name)===t.value||e.attr(t.name,t.value)}),e.removeData(),Object.entries(t.data()).forEach(([t,n])=>{e.data(t,n)})}(n.counterpart.$element,r),r.hasClass(M)&&(r.data(A).$container=n.counterpart.$element,r.data(A,null)),i.push(r)}else if("delete"===n.type)r.safeRemove();else if("insert"===n.type){const{after:t,target:n}=e.op;t?r.insertAfter(t.$element):n&&n.$element.prepend(r)}}),i.forEach(e=>e.safeRemove())}function H(e,t,n){return t.filter(e=>e.depth===n&&!e.op).forEach(t=>{const n=e.find(e=>!e.op&&e.id===t.id);if(n){const e=(t,n)=>{t.op={type:"keep",idx:n.idx},n.op={type:"keep_counterpart",counterpart:t},t=t.parent,n=n.parent,!t||t.op||n?.op||e(t,n)};e(n,t)}}),n>1?H(e,t,n-1):(e.forEach((t,n)=>{if(!t.op){const r=(e[n-1]?.op.idx??-1)+1;t.op={type:"delete",idx:r}}}),t.forEach((e,n)=>{if(e.getBefore=()=>function(e,n){const r=e.depth;for(;n>=1&&e.depth>=r;)if((e=t[n-=1]).depth===r)return"keep_counterpart"===e.op.type?e.op.counterpart:e;return null}(e,n),e.getRealParent=()=>{return(t=e).parent?"keep_counterpart"===t.parent.op.type?t.parent.op.counterpart:t.parent:null;var t},!e.op){const t=e.getRealParent(),n="insert"===t?.op.type?"insert_ignore":"insert";e.op={type:n,target:t,after:e.getBefore()}}}),[...e,...t].sort((e,t)=>(e.op?.idx??e.idx)-(t.op?.idx??t.idx)))}function X(e,t,n=null){if(t||(t=Q(e)),!t)return Promise.resolve();const{refreshProcess:r,isRunningProcess:s}=k(n,t);return e??=t.$container,G(we.tagNames,e,t,n).then(()=>function(e,t,n){return function(e,t,n){const r=[];return t.find(`._bind_to_update_handler.sdc_uuid_${e._uuid}`).each(function(){const t=$(this);let s;if(t.hasClass("_with_handler"))s=t.data("handler");else{let t=this.tagName.toLowerCase().replace(/^this./,"");e[t]&&(s=e[t])}if("function"==typeof s){const n=f(t.data(),e);s=s.bind(e)(n)}s&&r.push(Promise.resolve(s).then(r=>{let s=$("<div></div>");return s.append(r),""===t.html()&&t.append("<div></div>"),we.reconcile(e,s,t.children(),n)}))}),Promise.all(r)}(e,t??e.$container,n)}(t,e,r).then(()=>{s||E(r)}))}const Y={};function Z(e,t){Y[e]=t}function ee(e){return Y[e]}const te=25e3,ne="_connecting_process",re=e=>Object.assign(Object.create(Object.getPrototypeOf(e)),structuredClone(e));class se extends Error{constructor(e){"string"==typeof e&&(e={msg:e,is_error:!0,header:"Error"}),super(e.msg),this.msg=e.msg,this.header=e.header,this.is_error=e.is_error,this.html=e.html}}class oe{constructor({name:e,url:t}){this.name=e,this.url=t,this.content=null}async load(e=!1){return!e&&this.content||(this.content=await new Promise((e,t)=>{$.get(this.url).then(e).catch(()=>{e("")})})),this.content}async text(){return this.load()}static isValid(e){return!(null===e||"object"!=typeof e||Array.isArray(e)||e instanceof File||"string"!=typeof e.url||"string"!=typeof e.name)}}function ie(e){const t=parseInt(e??-1,10);return Number.isNaN(t)?-1:t}class le{constructor(e,t={}){return this.valuesList=[],this.loaded=!1,this.modelName=e,this.modelQuery=t??{},this._onNoOpenRequests=[],this._isConnected=!1,this._isConnectingProcess=!1,this._autoReconnect=!0,this.socket=null,this.openRequest={},this.modelId=0,this.onUpdate=()=>{},this.onCreate=()=>{},new Proxy(this,{get:(e,t)=>"symbol"==typeof t||isNaN(t)?e[t]:e.valuesList[t],set:(e,t,n)=>isNaN(t)?(e[t]=n,!0):(e.valuesList[t]=n,!0)})}[Symbol.iterator](){let e=-1;return{next:()=>(++e,e<this.valuesList.length?{value:this.valuesList[e],done:!1}:{value:null,done:!0})}}set on_create(e){this.onCreate=e}set on_update(e){this.onUpdate=e}setIds(e){const t=this._setIds(e),n={id__in:t.map(e=>e.id)};return this.setFilter(n),t}cloneObject;_setIds(e){if(null===e||""===e||Array.isArray(e)&&0===e.length)return this.valuesList=[],this.valuesList;if(e instanceof le)return this.valuesList=e.valuesList.map(re),this.valuesList.forEach(e=>e._setQuerySet(this,!0)),this.valuesList;if(e instanceof ae)return this.valuesList=[re(e)],this.valuesList.forEach(e=>e._setQuerySet(this,!0)),this.valuesList;let t,n=Number.NaN;if(Number.isInteger(e))n=e;else if(e instanceof Array){const n=e.map(e=>parseInt(e));n.some(Number.isNaN)||(t=n)}else if("string"==typeof e){const r=e.split(",").map(e=>parseInt(e));r.some(Number.isNaN)?n=parseInt(e):t=r}if(Number.isNaN(n)){if(t){this.valuesList=this.valuesList.filter(e=>t.includes(e.id));const e=this.getIds();t.filter(t=>!e.includes(t)).forEach(e=>{this.valuesList.push(new(ee(this.modelName))({id:e}))})}}else this.valuesList=this.valuesList.filter(e=>n===e.id),0===this.valuesList.length&&(this.new().id=n);return this.valuesList}getIds(){return this.valuesList.map(e=>e.id)}get length(){return this.valuesList.length}byId(e){if(null!==e){const t=ie(e);return this.valuesList.find(e=>e.id===t)??null}return null}setFilter(e){return this.modelQuery=e,this}addFilter(e){return this.modelQuery=Object.assign({},this.modelQuery,e),this}new(e={}){const t=new(ee(this.modelName))(e);return t._setQuerySet(this,!1),this.valuesList.push(t),t}load(e=null){return this.valuesList=[],this.modelQuery=e??this.modelQuery,this._sendLoad()}update({modelQuery:e=null,item:t=null}){this.modelQuery=e??this.modelQuery;let n=t?{id:t.id}:this.modelQuery;return this._sendLoad(n)}delete({pk:e=null,id:t=null,elem:n=null}){if(e??=t,null===(e=n?n.id:e))throw new Error("pk or elem must be set");const r=c();return this.isConnected().then(()=>new Promise((t,n)=>{this.socket.send(JSON.stringify({event:"model",event_type:"delete",event_id:r,args:{model_name:this.modelName,model_query:this.modelQuery,id:e,pk:e}})),this.openRequest[r]=[t,n]}))}_sendLoad(e=null){return this.isConnected().then(()=>{const t=c();return new Promise((n,r)=>{this.socket.send(JSON.stringify({event:"model",event_type:"load",event_id:t,args:{model_name:this.modelName,model_query:e??this.modelQuery}})),this.openRequest[t]=[e=>{this.loaded=!0,n(e)},r]})})}_sendListView({modelQuery:e={},cbResolve:t=null,cbReject:n=null,templateContext:r={}}){return this.view({modelQuery:e,cbResolve:t,cbReject:n,templateContext:r,eventType:"list_view"})}view({viewName:e="html_list_template",modelQuery:t={},cbResolve:n=null,cbReject:r=null,templateContext:s={},eventType:o="named_view"}){let i=$('<div class="container-fluid">');return this.isConnected().then(()=>{const l=c();this.socket.send(JSON.stringify({event:"model",event_type:o,event_id:l,args:{view_name:e,model_name:this.modelName,model_query:t,template_context:s}})),this.openRequest[l]=[e=>{i.append(e.html),we.refresh(i),n&&n(e)},e=>{r&&r(e)}]}),i}_sendDetailView({pk:e=null,id:t=null,cbResolve:n=null,cbReject:r=null,templateContext:s={}}){e??=t,e=ie(e);let o=$('<div class="container-fluid">');return this.isConnected().then(()=>{const t=c();this.socket.send(JSON.stringify({event:"model",event_type:"detail_view",event_id:t,args:{model_name:this.modelName,model_query:this.modelQuery,id:e,pk:e,template_context:s}})),this.openRequest[t]=[e=>{o.append(e.html),we.refresh(o),n&&n(e)},e=>{r&&r(e)}]}),o}getForm({modelObj:e,eventType:t,formName:n,$divForm:r,cbResolve:s,cbReject:o,formId:i}){const l=c(),a=e.id??-1;this.isConnected().then(()=>{this.socket.send(JSON.stringify({event:"model",event_type:t,event_id:l,args:{model_name:this.modelName,id:a,pk:a,form_name:n}}))});const u=null===a||-1===a?"create":"edit";this.openRequest[l]=[t=>{r.append(t.html);let o=r.closest("form").addClass(`sdc-model-${u}-form sdc-model-form ${i}`).data("model",e).data("model_pk",a).data("form_name",n);e.addForm(o),o.length>0&&!o[0].hasAttribute("sdc_submit")&&o.attr("sdc_submit","submitModelFormDistributor"),we.refresh(r).then(()=>null),s&&s(t)},e=>{o&&o(e)}]}async get(e=null,t=!1){if(t){const t=e?.id??this.modelQuery?.id;return e&&this.setFilter(e),this.byId(t)??this.new(e||this.modelQuery)}if(await this.load(e),1!==this.length)throw new Error(`model query returns ${this.length} but only 1 expected.`);return this.addFilter({id:this.valuesList[0].id}),this.valuesList[0]}detailView({pk:e,cbResolve:t=null,cbReject:n=null,templateContext:r={}}){return this._sendDetailView({id:e,cbResolve:t,cbReject:n,templateContext:r})}listView({modelQuery:e={},searchValues:t={},cbResolve:n=null,cbReject:r=null,templateContext:s={}}){return this._sendListView({modelQuery:Object.assign({},this.modelQuery,e,{__search_values:t}),cbResolve:n,cbReject:r,templateContext:s})}save({pk:e=null,id:t=null,formName:n="edit_form",data:r=null}={}){e??=t;const s=ie(e);return this.isConnected().then(()=>{let e;if(s>-1){const t=this.byId(s);if(!t)return Promise.reject(new se(`Element not found with ID: ${s}`));e=[t]}else e=this.valuesList;let t=[];return e.forEach(e=>{const s=c();t.push(new Promise((t,o)=>{this._readFiles(e).then(i=>{const l=r?{...r}:e.serialize();l.id=e.id,this.socket.send(JSON.stringify({event:"model",event_type:"save",event_id:s,args:{form_name:n,model_name:this.modelName,model_query:this.modelQuery,data:l,id:l.id,pk:l.id,files:i}})),this.openRequest[s]=[e=>{let n="string"==typeof e.data.instance?JSON.parse(e.data.instance):e.data.instance;e.data.instance=this._parseServerRes(n),t(e)},o]})}))}),Promise.all(t)})}create({elem:e=null,data:t=null}={}){const n=c();return e||(e=this.new(t)),this.isConnected().then(()=>new Promise((r,s)=>{this._readFiles(e).then(o=>{this.socket.send(JSON.stringify({event:"model",event_type:"create",event_id:n,args:{model_name:this.modelName,model_query:this.modelQuery,data:t??e?.serialize()??{},files:o}})),this.openRequest[n]=[t=>{let n="string"==typeof t.data.instance?JSON.parse(t.data.instance):t.data.instance;e&&(e.id=n[0]?.id||n[0]?.pk),t.data.instance=this._parseServerRes(n)[0],r(t)},s]})}))}isConnected(){return new Promise((e,t)=>{if(this._isConnected)e();else if(this._isConnectingProcess&&this.openRequest[ne]){const[n,r]=this.openRequest[ne];this.openRequest[ne]=[()=>{n(),e()},()=>{r(),t()}]}else this._isConnectingProcess=!0,this.openRequest[ne]=[()=>{},()=>{}],this._connectToServer().then(()=>{e(this._checkConnection())})})}close(){this.socket&&(this._autoReconnect=!1,this.socket.onclose=()=>{},this.socket.close(),delete this.socket),this.valuesList.forEach(e=>{e._onClose()})}_readFiles(e){let t=[],n={};return e?(Object.keys(e.constructor.fields).forEach(r=>{const s=e[r];s instanceof File&&t.push(new Promise(async(e,t)=>{const o=c();this.openRequest[o]=[e,t];const i=await s.arrayBuffer();let l=new Uint8Array(i),a=Math.ceil(l.length/te);n[r]={id:o,file_name:s.name,field_name:r,content_length:s.size};for(let e=0;e<a;++e){const t=Array.from(l.slice(te*e,te*(e+1)));this.socket.send(JSON.stringify({event:"model",event_type:"upload",event_id:o,args:{chunk:t,idx:e,number_of_chunks:a,file_name:s.name,field_name:r,content_length:s.size,content_type:s.type,model_name:this.modelName,model_query:this.modelQuery}}))}}))}),Promise.all(t).then(()=>n)):Promise.resolve(n)}async _onMessage(e){let t=JSON.parse(e.data);if(t.is_error)this.openRequest.hasOwnProperty(t.event_id)&&(this.openRequest[t.event_id][1](new se(t)),this._closeOpenRequest(t.event_id)),(t.msg||t.header)&&q("pushErrorMsg",t.header||"",t.msg||""),"connect"===t.type&&(this.openRequest[ne][1](new se(t)),this._closeOpenRequest(ne),this._autoReconnect=!1,this.socket.close());else{if((t.msg||t.header)&&q("pushMsg",t.header||"",t.msg||""),"connect"===t.type)this._isConnected=!0,this._isConnectingProcess=!1,this.openRequest[ne][0](t),this._closeOpenRequest(ne);else if(["load","named_view","detail_view"].includes(t.type)){const e=JSON.parse(t.args.data);t.args.data=await this._parseServerRes(e)}else if("on_update"===t.type||"on_create"===t.type){const e=JSON.parse(t.args.data);let n,r=await this._parseServerRes(e);n="on_create"===t.type?this.onCreate:this.onUpdate,n(r),t.args.data=r}let e=t.data?.instance;e&&(t.data.instance=JSON.parse(t.data.instance)),this.openRequest.hasOwnProperty(t.event_id)&&(this.openRequest[t.event_id][0](t),this._closeOpenRequest(t.event_id))}}noOpenRequests(){return new Promise(e=>{if(0===Object.keys(this.openRequest).length)return e();this._onNoOpenRequests.push(e)})}_closeOpenRequest(e){delete this.openRequest[e],0===Object.keys(this.openRequest).length&&(this._onNoOpenRequests.forEach(e=>e()),this._onNoOpenRequests=[])}_connectToServer(){return new Promise(e=>{const t=`${this.modelName}`+(this.modelId>0?`/${this.modelId}`:"");"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.modelName}, ${this.modelId}) Socket closed unexpectedly`),this._isConnected=!1;for(const[t,n]of Object.entries(this.openRequest))n[1](e);this.openRequest={},setTimeout(()=>{this._autoReconnect&&this._connectToServer().then(()=>{})},1e3)},this.socket.onerror=e=>{if(console.error(`Model Socket encountered error: ${e} Closing socket`),this._isConnected)try{this.socket.close()}catch(e){}},this.socket.onopen=()=>{e()}})}_checkConnection(){const e=c();return new Promise((t,n)=>{this.socket.send(JSON.stringify({event:"model",event_type:"connect",event_id:e,args:{model_name:this.modelName,model_query:this.modelQuery}})),this.openRequest[e]=[t,n]})}_parseServerRes(e){const t=[];for(const n of e){const e=ee(this.modelName);if(!e)throw new Error(`${this.modelName} is no SdcModel. mybe the models ar not importad.`);const r=new e({id:n.id??n.pk,...n.fields}),s=this.byId(r.id);s?(s.setValues(r),t.push(s)):(this.valuesList.push(r),r._setQuerySet(this,!0),t.push(r))}return this.valuesList.sort((e,t)=>e._id-t._id),t}}class ae{static fields={};constructor(e){this._id=null,this._forms=[],this.loaded=!1,this.formId=c(),this.modelName=e}static querySet(e=null,t=null){return t?t.querySet(this.modeName,e):new le(this.modeName,e)}addForm(e){const t=this._onChange.bind(this);this._forms.push(e),e&&e.on("input.formWatcher change.formWatcher","input, select, textarea",t)}_onChange(e){const{name:t}=e.target;this.constructor.fields[t]&&this[`set${t}`](h(e.target))}_updateForm(e){const t=this;this._forms.forEach(n=>{n.find(`[name="${e}"]`).each(function(){m(this,t[e])})})}setValues(e={}){throw new Error("setValues() must be implemented by subclass")}_setQuerySet(e,t){this._querySet=new WeakRef(e),this.loaded=t}get querySet(){return this._querySet.deref()}save({formName:e="edit_form",data:t=null}={}){return this._querySet.deref().save({pk:this.id,formName:e,data:t})}create({data:e=null}={}){return this._querySet.deref().create({elem:this,data:e})}delete(){return this._querySet.deref().delete({elem:this})}load(){return this._querySet.deref().update({item:this})}update(){return this.load()}get id(){return this._id}set id(e){this._id=e}set pk(e){this.id=e}get pk(){return this._id}close(){return this._querySet.deref().close()}_onClose(){Object.keys(this.constructor.fields).filter(e=>this[`_${e}`]instanceof le).forEach(e=>this[`_${e}`].close())}detailView({cbResolve:e=null,cbReject:t=null,templateContext:n={}}){return this._querySet.deref().detailView({pk:this.id,cbResolve:e,cbReject:t,templateContext:n})}serialize(){return Object.entries(this.constructor.fields).reduce((e,[t,n])=>{const r=this[t];if(r instanceof le)if(n.many_to_many||n.one_to_many)e[t]=r.getIds();else{const n=r.getIds();n.length>0?e[t]=n[0]:e[t]=null}else n.is_relation&&r instanceof ae?e[t]=r.id??null:e[t]=r;return e},{})}toJson(){const e={};for(let t in this.constructor.fields){const n=this[t];n instanceof File?e[t]=n.name:e[t]=n instanceof ae?n.id:n instanceof le?n.getIds():n}return e}syncFormToModel(e){return this.syncForm(e)}_resolveForms(e){return e&&e.hasClass(this.formId)?e:$(`.${this.formId}`)}syncModelToForm(e){e=this._resolveForms(e);const t=this,n=this.constructor.fields;e.each(function(){const e=ie($(this).data("model_pk"));if(t.id===e)for(let e of this.elements){let r=e.name;r&&""!==r&&n[r]&&m(e,t[r])}})}syncForm(e){e=this._resolveForms(e);const t=this,n=this.constructor.fields,r={};function s(e,s){n[e]&&(t[e]=s),r[e]=s}return e.each(function(){const e=ie($(this).data("model_pk"));if(t.id===e||null===t.id&&-1===e){for(let e of this.elements)s(e.name,h(e));return t}}),r}form({cbResolve:e=null,cbReject:t=null}={}){return null===this.id||-1===this.id?this._createForm({cbReject:t,cbResolve:e}):this._editForm({cbReject:t,cbResolve:e})}_createForm({cbResolve:e=null,cbReject:t=null}){let n=$("<div>");return this._querySet.deref().getForm({modelObj:this,eventType:"create_form",formName:null,$divForm:n,cbResolve:e,cbReject:t,formId:this.formId}),n}_editForm({cbResolve:e=null,cbReject:t=null}){let n=$("<div>");return this._querySet.deref().getForm({modelObj:this,eventType:"edit_form",formName:null,$divForm:n,cbResolve:e,cbReject:t,formId:this.formId}),n}namedForm({formName:e,cbResolve:t=null,cbReject:n=null}){let r=$('<div class="container-fluid">');return this._querySet.deref().getForm({modelObj:this,eventType:"named_form",formName:e,$divForm:r,cbResolve:t,cbReject:n,formId:this.formId}),r}validate(e,t){const n=function(e,t){const{type:n,required:r,max_length:s,is_relation:o,many_to_many:i,one_to_many:l,many_to_one:a,one_to_one:c,related_model:u}=t;if(r&&(null==e||""===e))return"This field is required";if(null==e||""===e)return null;if((i||l||a||c)&&(!(e instanceof le)||e.modelName!==u))return"string"==typeof e&&(e=JSON.parse(e)),(i||a)&&Array.isArray(e)&&e.some(e=>!Number.isNaN(parseInt(e)))?null:"object"!=typeof e&&Number.isNaN(parseInt(e))?"Must be object or ID":null;switch(n){case"CharField":case"TextField":if("string"!=typeof e)return"Must be a string";if(s&&e.length>s)return`Max length is ${s}`;break;case"IntegerField":case"AutoField":case"BigIntegerField":if(!isFinite(parseInt(e)))return"Must be an integer";break;case"FloatField":case"DecimalField":if(!isFinite(parseFloat(e)))return"Must be a number";break;case"BooleanField":if("boolean"!=typeof e)return"Must be a boolean";break;case"DateField":case"DateTimeField":if(isNaN(Date.parse(e)))return"Must be a valid date";break;case"EmailField":if("string"!=typeof e||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e))return"Invalid email";break;case"URLField":try{new URL(e)}catch{return"Invalid URL"}break;case"UUIDField":if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(e))return"Invalid UUID";break;case"JSONField":if("object"!=typeof e)return"Must be JSON object";break;case"FileField":if(!(oe.isValid(e)||e instanceof File||e instanceof oe))return"Must be a valid file"}return null}(e,t);if(n)throw new Error(n)}parseValue(e,t){const{type:n,many_to_many:r,one_to_many:s,many_to_one:o,one_to_one:i}=t;if(null===e)return null;if((r||s||o||i)&&e&&"string"==typeof e)return JSON.parse(e);switch(n){case"CharField":case"TeextField":case"UUIDField":case"EmailField":return`${e}`;case"IntegerField":case"AutoField":case"BigIntegerField":return parseInt(e,10);case"FloatField":case"DecimalField":return parseFloat(e);case"BooleanField":return!!e;case"DateField":case"DateTimeField":return Date.parse(e);case"URLField":return new URL(e);case"FileField":if(null==e)return null;if("string"==typeof e)return null;if(oe.isValid(e))return new oe(e);if(e instanceof oe)return new oe(e);if("undefined"!=typeof File&&e instanceof File)return t.max_size&&e.size>t.max_size?`File too large (max ${t.max_size} bytes)`:t.allowed_types&&!t.allowed_types.includes(e.type)?`Invalid file type (${e.type})`:e;break;case"JSONField":if("object"==typeof e)return e;if("string"==typeof e)return JSON.parse(e)}return e}}let ce=!1,ue=!1,de=null,he={};function me(){return window.SERVER_CALL_VIA_WEB_SOCKET?new Promise(e=>ce?e():ue?void setTimeout(()=>{me().then(()=>{e()})},200):e(pe())):Promise.resolve(!0)}function fe(){window.SERVER_CALL_VIA_WEB_SOCKET&&function(){if(ce){ce=!1;try{de.close()}catch(e){}}}()}function pe(){return ue=!0,new Promise(e=>{de="https:"===window.location.protocol?new WebSocket(`wss://${window.location.host}/sdc_ws/ws/`):new WebSocket(`ws://${window.location.host}/sdc_ws/ws/`),de.onmessage=function(e){_e(JSON.parse(e.data))},de.onclose=function(){ce&&console.error("SDC Socket closed unexpectedly"),ce=!1;for(const[e,t]of Object.entries(he))t[1]({}),delete he[e];setTimeout(()=>{pe()},1e3)},de.onerror=function(e){if(console.error("Socket encountered error: ",e.message,"Closing socket"),ce)try{de.close()}catch(e){}},de.onopen=function(){ce=!0,ue=!1,e()}})}function _e(e){if(e||(e={}),e.is_error)(e.msg||e.header)&&q("pushErrorMsg",e.header||"",e.msg||""),e.id&&he[e.id]&&(he[e.id][1](e.data||null),delete he[e.id]);else if((e.msg||e.header)&&q("pushMsg",e.header||"",e.msg||""),e.type&&"sdc_recall"===e.type)e.id&&he[e.id]&&(he[e.id][0](e.data),delete he[e.id]);else if(e.type&&"sdc_event"===e.type){let t=e.event;t&&q(t,e.payload)}else e.type&&"sdc_redirect"===e.type&&q("onNavLink",e.link)}class ye{constructor(){this._uuid=c(),this.contentUrl="",this.contentReload=!1,this.parsedContentUrl=null,this.events=[],this.load_async=!1,this._isEventsSet=!1,this._allEvents=null,this._params={},this._urlParams=[],this._models=[],this._cssUrls=[],this.afterShow=()=>{console.warn("afterShow is deprecated!!")},this._mixins={},this._tagName=Object.getPrototypeOf(this)._tagName??"",this._childController={},this._parentController=null,this._onLoadDone=!1,this.$container=null,this._isMixin=!1}get params(){return this._params}set params(e){this._params=e}_runLifecycle(e,t){we.DEBUG&&!this._isMixin&&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(){we.DEBUG&&!this._isMixin&&console.debug(Array.apply(null,arguments),this._tagName)}get parentController(){return this._parentController}get childController(){return this._childController}onLoad(){return this._runLifecycle("onLoad",arguments)}willShow(){return this._runLifecycle("willShow",arguments)}onRefresh(){return this._runLifecycle("onRefresh",arguments)}onRemove(){return this._runLifecycle("onRemove",arguments),!0}noOpenModelRequests(){return Promise.all(this._models.map(e=>e.noOpenRequests()))}remove(){for(const e of this._models)e.close();let e=this._childController;for(let t in e)if(e.hasOwnProperty(t))for(let n of e[t])if(!n.remove())return!1;if(!this.onRemove||this.onRemove()){I(this);const e=s(this._tagName);if(this._parentController._childController[e]){let t=this._parentController._childController[e];for(let e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)}return this.$container.remove(),!0}return!1}controller_name(){return this._tagName.replace(/-./g,e=>` ${e[1].toUpperCase()}`).replace(/^./g,e=>`${e.toUpperCase()}`)}addEvent(e,t,n){this.getEvents(),this._allEvents[e]=this._allEvents[e]||{},this._allEvents[e][t]=n}getEvents(){if(this._allEvents)return this._allEvents;let e=[];e=e.concat(this.events);for(let t in this._mixins){let n=this._mixins[t];Array.isArray(n.events)&&(e=e.concat(n.events))}return this._allEvents=_.merge(...e)}post(e,t){return we.post(this,e,t)}get(e,t){return we.get(this,e,t)}submitForm(e,t,n){return we.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,s){return window.SERVER_CALL_VIA_WEB_SOCKET?function(e,t,n,r){let s=c();return me().then(()=>{de.send(JSON.stringify({event:"sdc_call",id:s,controller:t,app:e,function:n,args:r}))}),new Promise((e,t)=>{he[s]=[e,t]})}(e,t,r,s):function(e,t,n){return"object"!=typeof n&&Array.isArray(n)&&null===n&&(n={arg0:n}),n={data:JSON.stringify(n),_sdc_func_name:t,_method:"sdc_server_call"},$.post({url:e,data:n,beforeSend:function(e,t){e.setRequestHeader("X-CSRFToken",window.CSRF_TOKEN)}}).then(e=>{const t=e._return_data;return _e(t),t}).catch(e=>{const t=e.responseJSON||{};throw t.is_error=!0,_e(t),e})}(n,r,s)}(n[1],this._tagName,this.parsedContentUrl??this.contentUrl,e,t);console.error("To use the serverCall function the contentUrl must be set: "+this.name)}querySet(e,t={}){const n=new le(e,t);return this._models.push(n),n}newModel(e,t={}){return console.warn("newModel is deprecated and will soon be removed. Please use this.querySet(modelName, modelQuery)"),this.querySet(e,t)}find(e){return this.$container.find(e)}refresh(){return we.refresh(this.$container,this)}reload(){return we.reloadController(this)}reconcile(e,t=null){return we.reconcile(this,e,t)}submitModelFormDistributor(e,t){return"function"==typeof this._submitModelForm?this._submitModelForm(e,t):"function"==typeof this.submitModelForm?this.submitModelForm(e,t):this.defaultSubmitModelForm(e,t)}iterateAllChildren(){let e=this._childController,t=[];for(let n in e)if(e.hasOwnProperty(n))for(let r of e[n])t.push(r),t.push(...r.iterateAllChildren());return t}defaultSubmitModelForm(e,t){if(!this._isMixin){t.stopPropagation(),t.preventDefault();let{model:n,form_name:r}=e.data(),s=n.syncForm(e);return new Promise((t,o)=>{let i;i=null!==n.id&&n.id>=0?n.save({formName:r,data:s}):n.create({data:s}),i.then(n=>{u(e),this.submit_model_form_success&&this.submit_model_form_success(n[0]);for(const e of this.iterateAllChildren())e.submit_model_form_success&&e.submit_model_form_success(n[0]);t(n)}).catch(t=>{this.reconcile($(`<div class="container-fluid">${t.html}</div>`),e.find(".container-fluid").first()),this.submit_model_form_error&&this.submit_model_form_error(t);for(const e of this.iterateAllChildren())e.submit_model_form_error&&e.submit_model_form_error(t);o(t)})})}return Promise.resolve()}}const ge={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):(ge[e.toLowerCase()]&&(e=ge[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 ve,we={CSRF_TOKEN:window.CSRF_TOKEN||"",LANGUAGE_CODE:window.LANGUAGE_CODE||"en",DEBUG:window.DEBUG||!1,VERSION:window.VERSION||"0.0",tagNames:[],Global:R,rootController:null,globalRootController:null,_isInit:!1,_origin_trigger:null,_globalControllerClasses:[],init_sdc:()=>{we._isInit||(we._isInit=!0,we._origin_trigger?fe():(we._origin_trigger=$.fn.trigger,$.fn.trigger=function(e){const t={}.hasOwnProperty.call(e,"type")?e.type:e;return g.includes(t)||(g.push(t),$(window).on(t,w)),we._origin_trigger.call(this,e)},we.updateJquery()),me(),function(){const e=$(window);g.forEach(t=>{e.off(t).on(t,w)})}(),we.rootController=we.rootController||new ye,we.globalRootController=we.globalRootController||new ye),we.tagNames=Object.keys(N);const e=$("<div></div>");R.forEach(t=>{const n=N[t][0];e.append(`<${n.prototype._tagName}></${n.prototype._tagName}>`)});const{refreshProcess:n}=k(null,we.rootController);return G(we.tagNames,e,we.globalRootController,n).then(()=>G(we.tagNames,(t||(t=$("body")),t),we.rootController,n).then(e=>(E(n),e)))},updateJquery:()=>{$.fn.safeReplace=function(e){return we.safeReplace($(this),e)},$.fn.safeEmpty=function(){return we.safeEmpty($(this))},$.fn.safeRemove=function(){return we.safeRemove($(this))}},controllerToTag:e=>r(e.name).replace(/-controller$/,""),registerGlobal:e=>{we.register(e);let t=e.prototype._tagName;R.push(t)},cleanCache:()=>{T={}},register:(e,t=!1)=>{let n=we.controllerToTag(e);return!N[n]||t?(N[n]=[e,[]],e.prototype._tagName=n,{addMixin:(...e)=>{for(let t of e){let e;"string"==typeof t?e=r(t):t&&(e=we.controllerToTag(t)),N[n][1].push(e)}}}):{addMixin:(...e)=>{}}},post:(e,t,n)=>(n||(n={}),n.CSRF_TOKEN=we.CSRF_TOKEN,we.ajax(e,t,n,$.post)),get:(e,t,n)=>we.ajax(e,t,n,$.get),ajax:(e,t,n,r)=>{n||(n={}),n.VERSION=we.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?q("onNavLink",t["url-link"]):s.then(()=>{we.refresh(e.$container)})}).catch(i));return s},submitFormAndUpdateView:(e,t,n,r)=>{let s=new FormData(t);const o=e=>{e["url-link"]?q("onNavLink",e["url-link"]):window.location.href=e.url},l=new Promise((a,c)=>{i(s,n||t.action,r||t.method).then((t,n,r)=>{a(t,n,r),"redirect"===t.status?o(t):l.then(()=>{we.refresh(e.$container,e)})}).catch((e,t,n)=>{301===e.status?(e=e.responseJSON,o(e),a(e,t,n)):c(e,t,n)})});return l},submitForm:(e,t,n)=>{let r=new FormData(e);return new Promise((s,o)=>{i(r,t||e.action,n||e.method).then(s).catch(o)})},getController:e=>Q(e),safeEmpty:e=>(e.children().each(function(e,t){let n=$(t);we.safeRemove(n)}),e),safeReplace:(e,t)=>(t.insertBefore(e),we.safeRemove(e)),safeRemove:e=>(e.each(function(){let e=$(this);e.data(`${A}`)&&e.data(`${A}`).remove()}),e.find(`.${M}`).each(function(){const e=$(this).data(`${A}`);e&&e.remove()}),e.remove()),reloadController:e=>function(e){if(e.contentUrl){let t=V(e);return e.contentUrl=t.url,D(e,t.args)}return new Promise(e=>{e($())})}(e).then(t=>{let n=$(t);return we.reconcile(e,n)}),reconcile:(e,t,n=null,r=null)=>{if(!n){let n=e.$container.clone().empty();n.data(A,null),n.removeClass(M),n.append(t),t=n}n=n??e.$container;const{refreshProcess:s,isRunningProcess:o}=k(r,e);return X(t,e,s).then(()=>{var r;return K(t,n),(r=e)._childController={},r.find(`.${M}`).each(function(){const e=Q($(this));e===r&&C(r,e)}),o||E(s),e})},refresh:(e,t=null)=>X(e,t)},be=[];function $e(){if(!jest)throw new Error("JEST is not defined");0===be.length&&(ve=$.ajax.bind($),be.push(jest.spyOn($,"ajax")),be[0].mockImplementation(function(e){return ve(e).then(e=>e).catch(e=>e)}))}const Re=fe,Ne={get_controller:async function(e,t={},n=""){$e();const r=$("body");we.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);r.append(o),we._isInit=!1,we.cleanCache(),await we.init_sdc();const i=we.getController(s);return i.navControllerPath=[e],i},getCsrfToken:function(){return function(e){if(document.cookie&&""!==document.cookie){const t=document.cookie.split(";");for(let n=0;n<t.length;n++){const r=t[n].trim();if(r.substring(0,10)===e+"=")return decodeURIComponent(r.substring(10))}}return""}("csrftoken")},controllerFromTestHtml:async function(e,t=null){$e();const n=$("body");we.updateJquery(),n.safeEmpty().append(e),we._isInit=!1,we.cleanCache(),await we.init_sdc();let r=we.rootController.iterateAllChildren();if(!t)return r;const s=r[0].onRefresh,o=jest.spyOn(r[0],"onRefresh");return new Promise(e=>{o.mockImplementation(function(){o.mockRestore();const t=s.apply(r[0],arguments);return e(r),t})})}};export{ye as AbstractSDC,ae as SdcModel,le as SdcQuerySet,I as allOff,we as app,a as checkIfParamNumberBoolOrString,u as clearErrorsInForm,S as controllerFactory,L as on,Z as registerModel,F as runControlFlowFunctions,d as setErrorsInForm,j as setEvent,Re as socketReconnect,Ne as test_utils,q as trigger};
|
package/package.json
CHANGED
|
@@ -248,7 +248,7 @@ export class AbstractSDC {
|
|
|
248
248
|
}
|
|
249
249
|
|
|
250
250
|
newModel(modelName, modelQuery = {}) {
|
|
251
|
-
console.warn("newModel is deprecated and will soon be removed");
|
|
251
|
+
console.warn("newModel is deprecated and will soon be removed. Please use this.querySet(modelName, modelQuery)");
|
|
252
252
|
return this.querySet(modelName, modelQuery);
|
|
253
253
|
}
|
|
254
254
|
|