{"version":3,"file":"webix.min.js","sources":["../sources/thirdparty/promiz.js","../sources/services.js","../sources/webix/debug.js","../sources/webix/helpers.js","../sources/webix/i18n.js","../sources/webix/stringify.js","../sources/core/eventsystem.js","../sources/webix/customevents.js","../sources/load/drivers/xml.js","../sources/load/drivers/json.js","../sources/load/ajax.js","../sources/load/proxy/binary.js","../sources/load/proxy/debug.js","../sources/load/proxy/rest.js","../sources/load/proxy/json.js","../sources/load/proxy/post.js","../sources/load/proxy/graphql.js","../sources/load/proxy.js","../sources/load/drivers/jsarray.js","../sources/load/drivers/html.js","../sources/webix/env.js","../sources/webix/html.js","../sources/load/drivers/htmltable.js","../sources/load/require.js","../sources/load/drivers/excel.js","../sources/load/drivers/index.js","../sources/load/drivers/csv.js","../sources/core/atomdataloader.js","../sources/core/codeparser.js","../sources/webix/template.js","../sources/core/atomrender.js","../sources/core/autoscroll.js","../sources/webix/htmlevents.js","../sources/webix/type.js","../sources/core/state.js","../sources/ui/core.js","../sources/core/tooltipcontrol.js","../sources/ui/helpers.js","../sources/webix/ready.js","../sources/core/uimanager.js","../sources/core/settings.js","../sources/core/destruction.js","../sources/core/collectionbind.js","../sources/core/valuebind.js","../sources/core/recordbind.js","../sources/core/bindsource.js","../sources/core/basebind.js","../sources/views/baseview.js","../sources/views/view.js","../sources/core/singlerender.js","../sources/views/tooltip.js","../sources/core/autotooltip.js","../sources/core/canvas.js","../sources/webix/animate.js","../sources/css/skins/material/config.js","../sources/webix/skin.js","../sources/css/skins/mini/config.js","../sources/css/skins/flat/config.js","../sources/css/skins/compact/config.js","../sources/css/skins/contrast/config.js","../sources/core/touch.js","../sources/core/dragcontrol.js","../sources/core/movable.js","../sources/core/modality.js","../sources/core/resizearea.js","../sources/views/window.js","../sources/core/contexthelper.js","../sources/webix/clipbuffer.js","../sources/core/copypaste.js","../sources/core/customprint.js","../sources/core/customscroll.js","../sources/core/datamarks.js","../sources/core/datamove.js","../sources/webix/rules.js","../sources/core/validatedata.js","../sources/load/dataprocessor.js","../sources/core/datastore.js","../sources/core/dataloader.js","../sources/core/datastate.js","../sources/core/dragitem.js","../sources/core/dragorder.js","../sources/core/undo.js","../sources/webix/editors.js","../sources/core/editability.js","../sources/core/flexlayout.js","../sources/core/groupmethods.js","../sources/core/groupstore.js","../sources/core/group.js","../sources/core/htmloptions.js","../sources/core/htmlmap.js","../sources/core/idspace.js","../sources/core/keysnavigation.js","../sources/core/mapcollection.js","../sources/core/mouseevents.js","../sources/core/navigationbuttons.js","../sources/core/overlaybox.js","../sources/core/pagingability.js","../sources/core/progressbar.js","../sources/core/renderstack.js","../sources/core/scrollable.js","../sources/core/selectionmodel.js","../sources/webix/color.js","../sources/core/sparklines/svg.js","../sources/core/sparklines/line.js","../sources/core/sparklines/area.js","../sources/core/sparklines/bar.js","../sources/core/sparklines/pie.js","../sources/core/sparklines/spline.js","../sources/core/sparklines/splinearea.js","../sources/core/sparklines.js","../sources/webix/csv.js","../sources/core/tablepaste.js","../sources/core/treeapi.js","../sources/core/treeclick.js","../sources/core/treedataloader.js","../sources/core/treedatamove.js","../sources/core/treerenderstack.js","../sources/core/treestatecheckbox.js","../sources/core/treestore.js","../sources/core/treetablepaste.js","../sources/core/treetype.js","../sources/core/uploaddriver.js","../sources/core/validatecollection.js","../sources/core/values.js","../sources/core/virtualrenderstack.js","../sources/core/vrenderstack.js","../sources/webix/export/common.js","../sources/webix/export/topdf.js","../sources/webix/export/toexcel.js","../sources/webix/message.js","../sources/webix/ie8.js","../sources/i18n/en.js","../sources/core/date.js","../sources/core/number.js","../sources/webix/locale.js","../sources/webix/storage.js","../sources/webix/print.js","../sources/webix/patterns.js","../sources/webix/fullscreen.js","../sources/webix/index.js","../sources/load/remote.js","../sources/ui/fullscreen.js","../sources/ui/datafilter.js","../sources/views/baselayout.js","../sources/views/layout.js","../sources/views/daterange.js","../sources/ui/datafilter_pro.js","../sources/ui/detect.js","../sources/ui/index.js","../sources/ui/animate.js","../sources/i18n/index.js","../sources/i18n/de.js","../sources/i18n/es.js","../sources/i18n/fr.js","../sources/i18n/it.js","../sources/i18n/ja.js","../sources/i18n/pt.js","../sources/i18n/zh.js","../sources/i18n/ru.js","../sources/i18n/be.js","../sources/views/spacer.js","../sources/views/template.js","../sources/views/scrollview.js","../sources/views/accordion.js","../sources/views/iframe.js","../sources/views/accordionitem.js","../sources/views/headerlayout.js","../sources/views/resizearea.js","../sources/views/resizer.js","../sources/views/align.js","../sources/views/multiview.js","../sources/views/tabview.js","../sources/views/carousel.js","../sources/views/proxy.js","../sources/views/portlet.js","../sources/views/abslayout.js","../sources/views/gridlayout.js","../sources/views/dashboard.js","../sources/views/panel.js","../sources/views/flexlayout.js","../sources/views/datalayout.js","../sources/views/flexdatalayout.js","../sources/views/popup.js","../sources/views/toolbar.js","../sources/views/form.js","../sources/views/fieldset.js","../sources/views/forminput.js","../sources/views/htmlform.js","../sources/views/property.js","../sources/views/calendar.js","../sources/views/colorboard.js","../sources/views/button.js","../sources/views/label.js","../sources/core/textpattern.js","../sources/views/text.js","../sources/core/datacollection.js","../sources/views/select.js","../sources/views/checkbox.js","../sources/views/radio.js","../sources/views/datepicker.js","../sources/views/colorpicker.js","../sources/views/richselect.js","../sources/views/combo.js","../sources/views/counter.js","../sources/views/icon.js","../sources/views/search.js","../sources/views/segmented.js","../sources/views/textarea.js","../sources/views/toggle.js","../sources/views/multitext.js","../sources/views/proto.js","../sources/views/list.js","../sources/views/multiselect.js","../sources/views/multicombo.js","../sources/views/slider.js","../sources/views/rangeslider.js","../sources/views/switch.js","../sources/views/tabbar.js","../sources/views/richtext.js","../sources/views/uploader.js","../sources/views/suggest.js","../sources/views/multisuggest.js","../sources/views/checksuggest.js","../sources/views/gridsuggest.js","../sources/views/datasuggest.js","../sources/views/mentionsuggest.js","../sources/views/daterangesuggest.js","../sources/views/daterangepicker.js","../sources/views/vscroll.js","../sources/views/excelbar.js","../sources/views/datatable/areaselect.js","../sources/views/datatable/filter.js","../sources/views/datatable/selection.js","../sources/webix/consts.js","../sources/webix/export/topng.js","../sources/webix/export/tocsv.js","../sources/webix/api.js","../sources/load/send.js"],"sourcesContent":["var global = window;\n\nvar queueId = 1;\nvar queue = {};\nvar isRunningTask = false;\n\nif (!global.setImmediate && global.addEventListener)\n\tglobal.addEventListener(\"message\", function (e) {\n\t\tif (e.source == global){\n\t\t\tif (isRunningTask)\n\t\t\t\tnextTick(queue[e.data]);\n\t\t\telse {\n\t\t\t\tisRunningTask = true;\n\t\t\t\ttry {\n\t\t\t\t\tqueue[e.data]();\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// eslint-disable-line\n\t\t\t\t}\n\n\t\t\t\tdelete queue[e.data];\n\t\t\t\tisRunningTask = false;\n\t\t\t}\n\t\t}\n\t});\n\nfunction nextTick(fn) {\n\tif (global.setImmediate) global.setImmediate(fn);\n\t// if inside of web worker\n\telse if (global.importScripts || !global.addEventListener) setTimeout(fn);\n\telse {\n\t\tqueueId++;\n\t\tqueue[queueId] = fn;\n\t\tglobal.postMessage(queueId, \"*\");\n\t}\n}\n\nDeferred.resolve = function (value) {\n\tif (!(this._d == 1))\n\t\tthrow TypeError();\n\n\tif (value instanceof Deferred)\n\t\treturn value;\n\n\treturn new Deferred(function (resolve) {\n\t\tresolve(value);\n\t});\n};\n\nDeferred.reject = function (value) {\n\tif (!(this._d == 1))\n\t\tthrow TypeError();\n\n\treturn new Deferred(function (resolve, reject) {\n\t\treject(value);\n\t});\n};\n\nDeferred.all = function (arr) {\n\tif (!(this._d == 1))\n\t\tthrow TypeError();\n\n\tif (!(arr instanceof Array))\n\t\treturn Deferred.reject(TypeError());\n\n\tvar d = new Deferred();\n\n\tfunction done(e, v) {\n\t\tif (v)\n\t\t\treturn d.resolve(v);\n\n\t\tif (e)\n\t\t\treturn d.reject(e);\n\n\t\tvar unresolved = arr.reduce(function (cnt, v) {\n\t\t\tif (v && v.then)\n\t\t\t\treturn cnt + 1;\n\t\t\treturn cnt;\n\t\t}, 0);\n\n\t\tif(unresolved == 0)\n\t\t\td.resolve(arr);\n\n\n\t\tarr.map(function (v, i) {\n\t\t\tif (v && v.then)\n\t\t\t\tv.then(function (r) {\n\t\t\t\t\tarr[i] = r;\n\t\t\t\t\tdone();\n\t\t\t\t\treturn r;\n\t\t\t\t}, done);\n\t\t});\n\t}\n\n\tdone();\n\n\treturn d;\n};\n\nDeferred.race = function (arr) {\n\tif (!(this._d == 1))\n\t\tthrow TypeError();\n\n\tif (!(arr instanceof Array))\n\t\treturn Deferred.reject(TypeError());\n\n\tif (arr.length == 0)\n\t\treturn new Deferred();\n\n\tvar d = new Deferred();\n\n\tfunction done(e, v) {\n\t\tif (v)\n\t\t\treturn d.resolve(v);\n\n\t\tif (e)\n\t\t\treturn d.reject(e);\n\n\t\tvar unresolved = arr.reduce(function (cnt, v) {\n\t\t\tif (v && v.then)\n\t\t\t\treturn cnt + 1;\n\t\t\treturn cnt;\n\t\t}, 0);\n\n\t\tif(unresolved == 0)\n\t\t\td.resolve(arr);\n\n\t\tarr.map(function (v) {\n\t\t\tif (v && v.then)\n\t\t\t\tv.then(function (r) {\n\t\t\t\t\tdone(null, r);\n\t\t\t\t}, done);\n\t\t});\n\t}\n\n\tdone();\n\n\treturn d;\n};\n\nDeferred._d = 1;\n\n\n/**\n * @constructor\n */\nfunction Deferred(resolver) {\n\t\"use strict\";\n\tif (typeof resolver != \"function\" && resolver != undefined)\n\t\tthrow TypeError();\n\t\t\n\tif (typeof this != \"object\" || (this && this.then))\n\t\tthrow TypeError();\n\n\t// states\n\t// 0: pending\n\t// 1: resolving\n\t// 2: rejecting\n\t// 3: resolved\n\t// 4: rejected\n\tvar self = this,\n\t\tstate = 0,\n\t\tval = 0,\n\t\tnext = [],\n\t\tfn, er;\n\n\tself[\"promise\"] = self;\n\n\tself[\"resolve\"] = function (v) {\n\t\tfn = self.fn;\n\t\ter = self.er;\n\t\tif (!state) {\n\t\t\tval = v;\n\t\t\tstate = 1;\n\n\t\t\tnextTick(fire);\n\t\t}\n\t\treturn self;\n\t};\n\n\tself[\"reject\"] = function (v) {\n\t\tfn = self.fn;\n\t\ter = self.er;\n\t\tif (!state) {\n\t\t\tval = v;\n\t\t\tstate = 2;\n\n\t\t\tnextTick(fire);\n\n\t\t}\n\t\treturn self;\n\t};\n\n\tself[\"_d\"] = 1;\n\n\tself[\"then\"] = function (_fn, _er) {\n\t\tif (!(this._d == 1))\n\t\t\tthrow TypeError();\n\n\t\tvar d = new Deferred();\n\n\t\td.fn = _fn;\n\t\td.er = _er;\n\t\tif (state == 3) {\n\t\t\td.resolve(val);\n\t\t}\n\t\telse if (state == 4) {\n\t\t\td.reject(val);\n\t\t}\n\t\telse {\n\t\t\tnext.push(d);\n\t\t}\n\n\t\treturn d;\n\t};\n\n\tself[\"finally\"] = function(_handler){\n\t\tvar _value;\n\t\tconst handler = function(value){\n\t\t\t_value = value;\n\t\t\treturn _handler();\n\t\t};\n\t\t\n\t\tconst value = function(){\n\t\t\tconst d = new Deferred();\n\t\t\tif(state == 4)\n\t\t\t\treturn d.reject(_value);\n\t\t\telse\n\t\t\t\treturn d.resolve(_value);\n\t\t};\n\n\t\treturn self.then(handler, handler).then(value, value);\n\t};\n\n\tself[\"catch\"] = function (_er) {\n\t\treturn self[\"then\"](null, _er);\n\t};\n\n\t//compatibility with old version of promiz lib\n\tself[\"fail\"] = function (_er) {\n\t\treturn self[\"then\"](null, _er);\n\t};\n\n\tvar finish = function (type) {\n\t\tstate = type || 4;\n\t\tfor (var i=0; i1){\n\t\ttarget = arguments[0];\n\t\tsource = arguments[1];\n\t} else \n\t\ttarget = (isArray(source)?[]:{});\n\n\tfor (var method in source){\n\t\tvar from = source[method];\n\t\tif(from && typeof from == \"object\" && !(from instanceof RegExp)){\n\t\t\tif (isDate(from))\n\t\t\t\ttarget[method] = new Date(from);\n\t\t\t/* jshint ignore:start */\n\t\t\telse if (esModern && (from instanceof Map || from instanceof Set || from instanceof WeakMap || from instanceof WeakSet))\n\t\t\t\ttarget[method] = from;\n\t\t\t/* jshint ignore:end */\n\t\t\telse {\n\t\t\t\ttarget[method] = (isArray(from)?[]:{});\n\t\t\t\tcopy(target[method],from);\n\t\t\t}\n\t\t} else {\n\t\t\ttarget[method] = from;\n\t\t}\n\t}\n\n\tif (DEBUG) level_out();\n\treturn target;\t\n}\n\nexport function single(source){ \n\tvar instance = null;\n\tvar t = function(){\n\t\tif (!instance)\n\t\t\tinstance = new source({});\n\t\t\t\n\t\tif (instance._reinit)\n\t\t\tinstance._reinit.apply(instance, arguments);\n\t\treturn instance;\n\t};\n\treturn t;\n}\n\n\n//creates function with specified \"this\" pointer\nexport function bind(functor, object){ \n\treturn function(){ return functor.apply(object,arguments); }; \n}\n\n\n//evaluate javascript code in the global scoope\nexport function exec(code){\n\tif (window.execScript)\t//special handling for IE\n\t\twindow.execScript(code);\n\telse window.eval(code);\n}\n\nexport function wrap(code, wrap){\n\tif (!code) return wrap;\n\treturn function(){\n\t\tvar result = code.apply(this, arguments);\n\t\twrap.apply(this,arguments);\n\t\treturn result;\n\t};\n}\n\n//check === undefined\nexport function isUndefined(a){\n\treturn typeof a == \"undefined\";\n}\n//delay call to after-render time\nexport function delay(method, obj, params, delay){\n\treturn window.setTimeout(function(){\n\t\tif(!(obj&&obj.$destructed)){\n\t\t\tvar ret = method.apply(obj,(params||[]));\n\t\t\tmethod = obj = params = null;\n\t\t\treturn ret;\n\t\t}\n\t},delay||1);\n}\n\nexport function once(method){\n\tvar flag = true;\n\treturn function(){\n\t\tif (flag){\n\t\t\tflag = false;\n\t\t\tmethod.apply(this, arguments);\n\t\t}\n\t};\n}\n\n//common helpers\n\n//generates unique ID (unique per window, nog GUID)\nlet _seed = (new Date()).valueOf();\nexport function uid(){\n\t_seed++;\n\treturn _seed;\n}\n//resolve ID as html object\nexport function toNode(node){\n\tif (typeof node == \"string\") return document.getElementById(node);\n\treturn node;\n}\n//resolve function name\nexport function toFunctor(str, scope){ \n\tif (typeof(str)==\"string\"){\n\t\tvar method = str.replace(\"()\",\"\");\n\t\tif (scope && scope[method]) return scope[method];\n\t\treturn window[method] || window.eval(str);\n\t}\n\treturn str;\n}\n/*checks where an object is instance of Array*/\nexport function isArray(obj) {\n\treturn Array.isArray?Array.isArray(obj):(Object.prototype.toString.call(obj) === \"[object Array]\");\n}\nexport function isDate(obj){\n\treturn obj instanceof Date;\n}\n\n//adds extra methods for the array\nexport function _to_array(array){ \n\treturn extend((array||[]),_power_array, true);\n}\n//can be used by _to_array()\nexport const _power_array={\n\t//remove element at specified position\n\tremoveAt:function(pos,len){\n\t\tif (pos>=0) this.splice(pos,(len||1));\n\t},\n\t//find element in collection and remove it \n\tremove:function(value){\n\t\tthis.removeAt(this.find(value));\n\t},\t\n\t//add element to collection at specific position\n\tinsertAt:function(data,pos){\n\t\tif (!pos && pos!==0)\t//add to the end by default\n\t\t\tthis.push(data);\n\t\telse {\n\t\t\tthis.splice(pos, 0, data); \n\t\t}\n\t},\n\t//return index of element, -1 if it doesn't exists\n\tfind:function(data){ \n\t\tfor (var i=0; i handler\n\t\t\tthis._evs_handlers = {};\t//hash of event handlers, ID => handler\n\t\t\tthis._evs_map = {};\n\t\t}\n\t},\n\t//temporary block event triggering\n\tblockEvent : function(){\n\t\tthis._evs_events._block = true;\n\t},\n\t//re-enable event triggering\n\tunblockEvent : function(){\n\t\tthis._evs_events._block = false;\n\t},\n\tmapEvent:function(map){\n\t\textend(this._evs_map, map, true);\n\t},\n\ton_setter:function(config){\n\t\tif(config){\n\t\t\tfor(var i in config){\n\t\t\t\tvar method = toFunctor(config[i], this.$scope);\n\t\t\t\tvar sub = i.indexOf(\"->\");\n\t\t\t\tif (sub !== -1){\n\t\t\t\t\tthis[i.substr(0,sub)].attachEvent(i.substr(sub+2), bind(method, this));\n\t\t\t\t} else\n\t\t\t\t\tthis.attachEvent(i, method);\n\t\t\t}\n\t\t}\n\t},\n\t//trigger event\n\tcallEvent:function(type,params){\n\t\tconst master = this._event_master || this;\n\t\tif (this._evs_events._block) return true;\n\t\t\n\t\ttype = type.toLowerCase();\n\t\tvar event_stack =this._evs_events[type.toLowerCase()];\t//all events for provided name\n\t\tvar return_value = true;\n\n\t\tif (DEBUG)\n\t\t\tif ((debug_mode.events || this.debug) && type !== \"onmousemoving\" )\t//can slowdown a lot\n\t\t\t\tlog(\"info\",\"[\"+this.name+\"@\"+((this._settings||{}).id)+\"] event:\"+type,params);\n\t\t\n\t\tif (event_stack)\n\t\t\tfor(var i=0; i evs.callEvent(a, b);\nexport const attachEvent = (a,b,c,d) => evs.attachEvent(a, b, c, d);\nexport const detachEvent = (a) => evs.detachEvent(a);\nexport const blockEvent = () => evs.blockEvent();\nexport const unblockEvent = () => evs.unblockEvent();\nexport const mapEvent = map => evs.mapEvent(map);\nexport const hasEvent = type => evs.hasEvent(type);\n","import { assert } from \"../../webix/debug\";\n\nconst xml={\n\t_isValidXML:function(data){\n\t\tif (!data || !data.documentElement)\n\t\t\treturn null;\n\t\tif (data.getElementsByTagName(\"parsererror\").length)\n\t\t\treturn null;\n\t\treturn data;\n\t},\n\t//convert xml string to xml object if necessary\n\ttoObject:function(text, response){\n\t\tvar data = response ? (response.rawxml ? response.rawxml() : response) :null;\n\t\tif (this._isValidXML(data))\n\t\t\treturn data;\n\t\tif (typeof text == \"string\")\n\t\t\tdata = this.fromString(text.replace(/^[\\s]+/,\"\"));\n\t\telse\n\t\t\tdata = text;\n\n\t\tif (this._isValidXML(data))\n\t\t\treturn data;\n\t\treturn null;\n\t},\n\t//get array of records\n\tgetRecords:function(data){\n\t\treturn this.xpath(data,this.records);\n\t},\n\trecords:\"/*/item\",\n\tchild:\"item\",\n\tconfig:\"/*/config\",\n\t//get hash of properties for single record\n\tgetDetails:function(data){\n\t\treturn this.tagToObject(data,{});\n\t},\n\tgetOptions:function(){ \n\t\treturn false;\n\t},\n\t//get count of data and position at which new data_loading need to be inserted\n\tgetInfo:function(data){\n\t\t\n\t\tvar config = this.xpath(data, this.config);\n\t\tif (config.length)\n\t\t\tconfig = this.assignTypes(this.tagToObject(config[0],{}));\n\t\telse \n\t\t\tconfig = null;\n\n\t\treturn {\n\t\t\tsize:(data.documentElement.getAttribute(\"total_count\")||0),\n\t\t\tfrom:data.documentElement.getAttribute(\"pos\"),\n\t\t\tparent:(data.documentElement.getAttribute(\"parent\")||0),\n\t\t\tconfig:config\n\t\t};\n\t},\n\t//xpath helper\n\txpath:function(xml,path){\n\t\tif (window.XPathResult){\t//FF, KHTML, Opera\n\t\t\tvar node=xml;\n\t\t\tif(xml.nodeName.indexOf(\"document\")==-1)\n\t\t\t\txml=xml.ownerDocument;\n\n\t\t\tvar res = [];\n\t\t\tvar col = xml.evaluate(path, node, null, XPathResult.ANY_TYPE, null);\n\t\t\tvar temp = col.iterateNext();\n\t\t\twhile (temp){ \n\t\t\t\tres.push(temp);\n\t\t\t\ttemp = col.iterateNext();\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t\telse {\n\t\t\tvar test = true;\n\t\t\ttry {\n\t\t\t\tif (typeof(xml.selectNodes)==\"undefined\")\n\t\t\t\t\ttest = false;\n\t\t\t} catch(e){ /*IE7 and below can't operate with xml object*/ }\n\t\t\t//IE\n\t\t\tif (test)\n\t\t\t\treturn xml.selectNodes(path);\n\t\t\telse {\n\t\t\t\t//there is no interface to do XPath\n\t\t\t\t//use naive approach\n\t\t\t\tvar name = path.split(\"/\").pop();\n\n\t\t\t\treturn xml.getElementsByTagName(name);\n\t\t\t}\n\t\t}\n\t},\n\tassignTypes:function(obj){\n\t\tfor (var k in obj){\n\t\t\tvar test = obj[k];\n\t\t\tif (typeof test == \"object\")\n\t\t\t\tthis.assignTypes(test);\n\t\t\telse if (typeof test == \"string\"){\n\t\t\t\tif (test === \"\") \n\t\t\t\t\tcontinue;\n\t\t\t\tif (test == \"true\")\n\t\t\t\t\tobj[k] = true;\n\t\t\t\telse if (test == \"false\")\n\t\t\t\t\tobj[k] = false;\n\t\t\t\telse if (test == test*1)\n\t\t\t\t\tobj[k] = obj[k]*1;\n\t\t\t}\n\t\t}\n\t\treturn obj;\n\t},\n\t//convert xml tag to js object, all subtags and attributes are mapped to the properties of result object\n\ttagToObject:function(tag,z){\n\t\tvar isArray = tag.nodeType == 1 && tag.getAttribute(\"stack\");\n\t\tvar hasSubTags = 0;\n\n\t\tif (!isArray){\n\t\t\tz=z||{};\n\t\t\t\n\n\t\t\t//map attributes\n\t\t\tlet a=tag.attributes;\n\t\t\tif(a && a.length)\n\t\t\t\tfor (let i=0; i= 400 || x.status === 0;\n\t\t\t\tvar text, data;\n\t\t\t\tif (x.responseType == \"blob\" || x.responseType == \"arraybuffer\"){\n\t\t\t\t\ttext = \"\";\n\t\t\t\t\tdata = x.response;\n\t\t\t\t} else {\n\t\t\t\t\ttext = x.responseText||\"\";\n\t\t\t\t\tdata = self._data(x);\n\t\t\t\t}\n\t\t\t\tif (is_error){\n\t\t\t\t\tcallEvent(\"onAjaxError\", [x]);\n\t\t\t\t\tdefer.reject(x);\n\t\t\t\t\tif(call)\n\t\t\t\t\t\tajax.$callback((self.master || window), call, text, data, x, is_error);\n\t\t\t\t} else {\n\t\t\t\t\tdefer.resolve(data);\n\t\t\t\t\tif(call)\n\t\t\t\t\t\tajax.$callback((self.master || window), call, text, data, x, is_error);\n\t\t\t\t}\t\n\t\t\t}\n\t\t};\n\n\t\tif (this._timeout)\n\t\t\tx.timeout = this._timeout;\n\n\t\t//IE can use sync mode sometimes, fix it\n\t\tif (!this._sync)\n\t\t\tsetTimeout(function(){\n\t\t\t\tx.send(params||null);\n\t\t\t}, 1);\n\t\telse\n\t\t\tx.send(params||null);\n\t\t\n\t\tif (this.master && !this._sync){\n\t\t\tdefer.then(function(data){\n\t\t\t\t//anti-leak\n\t\t\t\tself.master=null;\n\t\t\t\tcall=self=master=null;\t\n\t\t\t\treturn data;\n\t\t\t});\n\t\t}\n\n\t\treturn this._sync?x:defer; //return XHR, which can be used in case of sync. mode\n\t},\n\t_data:function(x){\n\t\treturn {\n\t\t\txml:function(){ \n\t\t\t\ttry{\n\t\t\t\t\treturn xml.tagToObject(xml.toObject(x.responseText, this));\n\t\t\t\t}\n\t\t\t\tcatch(e){\n\t\t\t\t\tlog(x.responseText);\n\t\t\t\t\tlog(e.toString()); assert(0, \"Invalid xml data for parsing\"); \n\t\t\t\t}\n\t\t\t},\n\t\t\trawxml:function(){ \n\t\t\t\tif (!window.XPathResult)\n\t\t\t\t\treturn xml.fromString(x.responseText);\n\t\t\t\treturn x.responseXML;\n\t\t\t},\n\t\t\ttext:function(){ return x.responseText; },\n\t\t\tjson:function(){\n\t\t\t\treturn json.toObject(x.responseText, false);\n\t\t\t}\n\t\t};\n\t},\n\t//GET request\n\tget:function(url,params,call){\n\t\treturn this._send(url,params,call,\"GET\");\n\t},\n\t//POST request\n\tpost:function(url,params,call){\n\t\treturn this._send(url,params,call,\"POST\");\n\t},\n\t//PUT request\n\tput:function(url,params,call){\n\t\treturn this._send(url,params,call,\"PUT\");\n\t},\n\t//DELETE request\n\tdel:function(url,params,call){\n\t\treturn this._send(url,params,call,\"DELETE\");\n\t},\n\t//PATCH request\n\tpatch:function(url,params,call){\n\t\treturn this._send(url,params,call,\"PATCH\");\n\t},\n\n\tsync:function(){\n\t\tthis._sync = true;\n\t\treturn this;\n\t},\n\ttimeout:function(num){\n\t\tthis._timeout = num;\n\t\treturn this;\n\t},\n\tresponse:function(value){\n\t\tthis._response = value;\n\t\treturn this;\n\t},\n\theaders:function(header){\n\t\tthis._header = extend(this._header||{},header);\n\t\treturn this;\n\t},\n\tbind:function(master){\n\t\tthis.master = master;\n\t\treturn this;\n\t}\n};\najax.$callback = function(owner, call, text, data, x, is_error){\n\tif (owner.$destructed) return;\n\n\tif (is_error)\n\t\tcallEvent(\"onAjaxError\", [x]);\n\t\n\tif (call){\n\t\tvar method = call.success || call;\n\t\tif (is_error)\n\t\t\tmethod = call.error;\n\t\tif (method && method.call)\n\t\t\tmethod.call(owner,text,data,x);\n\t}\n};","import {ajax} from \"../ajax\";\n\nconst proxy = {\n\t$proxy:true,\n\tload:function(){\n\t\tvar parts = this.source.split(\"@\");\n\t\tvar ext = parts[0].split(\".\").pop();\n\t\treturn ajax().response(\"arraybuffer\").get(parts[0]).then(function(res){\n\t\t\tvar options = { ext:ext, dataurl : parts[1] };\n\t\t\treturn { data:res, options:options };\n\t\t});\n\t}\n};\n\nexport default proxy;","import {delay} from \"../../webix/helpers\";\n\n\n\nconst proxy = {\n\t$proxy:true,\n\tload:function(){},\n\tsave:function(v,u,d){\n\t\tdelay(function(){\n\t\t\twindow.console.log(\"[DP] \"+u.id+\" -> \"+u.operation, u.data);\n\t\t\tvar data = {\n\t\t\t\tid:u.data.id,\n\t\t\t\tnewid:u.data.id,\n\t\t\t\tstatus:u.data.operation\n\t\t\t};\n\t\t\td.processResult(data, data);\n\t\t});\n\t}\n};\n\nexport default proxy;","import {ajax} from \"../ajax\";\n\nconst proxy = {\n\t$proxy:true,\n\tload:function(){\n\t\treturn ajax(this.source);\n\t},\n\tsave:function(view, update){\n\t\treturn proxy._save_logic.call(this, update, ajax());\n\t},\n\t_save_logic:function(update, ajax){\n\t\tvar url = this.source;\n\t\tvar query = \"\";\n\t\tvar mark = url.indexOf(\"?\");\n\n\t\tif (mark !== -1){\n\t\t\tquery = url.substr(mark);\n\t\t\turl = url.substr(0, mark);\n\t\t}\n\n\t\turl += url.charAt(url.length-1) == \"/\" ? \"\" : \"/\";\n\t\tvar mode = update.operation;\n\n\n\t\tvar data = update.data;\n\t\tif (mode == \"insert\") delete data.id;\n\n\t\t//call rest URI\n\t\tif (mode == \"update\"){\n\t\t\treturn ajax.put(url + data.id + query, data);\n\t\t} else if (mode == \"delete\") {\n\t\t\treturn ajax.del(url + data.id + query, data);\n\t\t} else {\n\t\t\treturn ajax.post(url + query, data);\n\t\t}\n\t}\n};\n\nexport default proxy;\n","import {ajax} from \"../ajax\";\nimport rest from \"./rest\";\n\nconst proxy = {\n\t$proxy:true,\n\tload:function(){\n\t\treturn ajax(this.source);\n\t},\n\tsave:function(view, update){\n\t\tvar xhr = ajax().headers({ \"Content-Type\":\"application/json\" });\n\t\treturn rest._save_logic.call(this, update, xhr);\n\t}\n};\n\nexport default proxy;","import {extend} from \"../../webix/helpers\";\n\nimport {ajax} from \"../ajax\";\n\nconst proxy = {\n\t$proxy:true,\n\tload:function(view, params){\n\t\tparams = extend(params||{}, this.params || {}, true);\n\t\treturn ajax().post(this.source, params);\n\t}\n};\n\nexport default proxy;","import {ajax} from \"../ajax\";\n\nfunction unbox(data){\n\tif (!data || !typeof data === \"object\" || Array.isArray(data))\n\t\treturn data;\n\n\tvar lkey =\"\";\n\tvar count = 0;\n\tfor (var key in data){\n\t\tcount++;\n\t\tif (count == 2) return data;\n\t\tlkey = key;\n\t}\n\n\treturn data[lkey];\n}\n\nconst GraphQL = {\n\t$proxy:true,\n\tsave:function(data){\n\t\treturn this.load(data);\n\t},\n\tload:function(view){\n\t\tvar params = {\n\t\t\tquery: this.source\n\t\t};\n\t\tif (arguments.length === 1){\n\t\t\tparams.variables = view;\n\t\t}\n\n\t\treturn ajax()\n\t\t\t.headers({ \"Content-type\": \"application/json\" })\n\t\t\t.post(this.url, params)\n\t\t\t.then(function(data){\n\t\t\t\treturn unbox(data.json().data);\n\t\t\t});\n\t}\n};\n\nexport default GraphQL;","import {assert} from \"../webix/debug\";\nimport {extend, copy as makeCopy} from \"../webix/helpers\";\n\nimport binary from \"./proxy/binary\";\nimport debug from \"./proxy/debug\";\nimport json from \"./proxy/json\";\nimport post from \"./proxy/post\";\nimport rest from \"./proxy/rest\";\nimport graphql from \"./proxy/graphql\";\n\nfunction proxy(name, source, extra){\n\tassert(proxy[name], \"Invalid proxy name: \"+name);\n\n\tvar copy = makeCopy(proxy[name]);\n\tcopy.source = source;\n\n\tif (extra)\n\t\textend(copy, extra, true);\n\n\tif (copy.init) copy.init();\n\treturn copy;\n}\n\nproxy.$parse = function(value){\n\tif (typeof value == \"string\" && value.indexOf(\"->\") != -1){\n\t\tvar parts = value.split(\"->\");\n\t\treturn proxy(parts[0], parts[1]);\n\t}\n\treturn value;\n};\n\nproxy.binary = binary;\nproxy.debug = debug;\nproxy.json = json;\nproxy.post = post;\nproxy.rest = rest;\nproxy.GraphQL = graphql;\n\nexport default proxy;","const jsarray={\n\t//parse jsarray string to jsarray object if necessary\n\ttoObject:function(data){\n\t\tif (typeof data == \"string\")\n\t\t\treturn JSON.parse(data);\n\t\treturn data;\n\t},\n\t//get array of records\n\tgetRecords:function(data){\n\t\tif (data && data.data)\n\t\t\tdata = data.data;\n\t\treturn data;\n\t},\n\t//get hash of properties for single record, in case of array they will have names as \"data{index}\"\n\tgetDetails:function(data){\n\t\tvar result = {};\n\t\tfor (var i=0; i < data.length; i++)\n\t\t\tresult[\"data\"+i]=data[i];\n\t\tif (this.idColumn !== null)\n\t\t\tresult.id = data[this.idColumn];\n\n\t\treturn result;\n\t},\n\tgetOptions:function(){ return false; },\n\t//dyn loading is not supported by js-array data source\n\tgetInfo:function(){\n\t\treturn {\n\t\t\tsize:0\n\t\t};\n\t},\n\tidColumn:null\n};\n\nexport default jsarray;","import { toNode } from \"../../webix/helpers.js\";\nimport xml from \"./xml.js\";\n\nconst html = {\n\t/*\n\t\tincoming data can be\n\t\t - ID of parent container\n\t\t - HTML text\n\t*/\n\ttoObject:function(data){\n\t\tif (typeof data == \"string\"){\n\t\t\tvar t=null;\n\t\t\tif (data.indexOf(\"<\")==-1)\t//if no tags inside - probably its an ID\n\t\t\t\tt = toNode(data);\n\t\t\tif (!t){\n\t\t\t\tt=document.createElement(\"DIV\");\n\t\t\t\tt.innerHTML = data;\n\t\t\t}\n\t\t\n\t\t\treturn t.firstChild;\n\t\t}\n\t\treturn data;\n\t},\n\t//get array of records\n\tgetRecords:function(node){\n\t\treturn node.getElementsByTagName(this.tag);\n\t},\n\t//get hash of properties for single record\n\tgetDetails:function(data){\n\t\treturn xml.tagToObject(data);\n\t},\n\tgetOptions:function(){ \n\t\treturn false;\n\t},\n\t//dyn loading is not supported by HTML data source\n\tgetInfo:function(){\n\t\treturn {\n\t\t\tsize:0\n\t\t};\n\t},\n\ttag: \"LI\"\n};\n\nexport default html;","const env = {};\n\nenv.cdn = \"//cdn.webix.com/\";\nenv.codebase = \"\";\nenv.zIndexBase = 100;\nenv.scrollSize = 17;\nenv.strict = !!window.webix_strict;\nenv.https = document.location.protocol === \"https:\";\n\nvar agent = navigator.userAgent;\nenv.isMac = agent.indexOf(\"Mac\")!=-1;\n\nif (agent.indexOf(\"Mobile\")!=-1 || agent.indexOf(\"Windows Phone\")!=-1)\n\tenv.mobile = true;\nif (env.mobile || agent.indexOf(\"iPad\")!=-1 || agent.indexOf(\"Android\")!=-1)\n\tenv.touch = true;\nif (agent.indexOf(\"Opera\")!=-1)\n\tenv.isOpera=true;\nelse{\n\t//very rough detection, but it is enough for current goals\n\tenv.isIE=!!document.all || (agent.indexOf(\"Trident\") !== -1);\n\tif (env.isIE){\n\t\tvar version = parseFloat(navigator.appVersion.split(\"MSIE\")[1]);\n\t\tif (version == 8)\n\t\t\tenv.isIE8 = true;\n\t}\n\tenv.isEdge=(agent.indexOf(\"Edge\")!=-1);\n\tenv.isFF=(agent.indexOf(\"Firefox\")!=-1);\n\tenv.isWebKit=(agent.indexOf(\"KHTML\")!=-1);\n\tenv.isSafari=env.isWebKit && env.isMac && (agent.indexOf(\"Chrome\")==-1);\n\n\t//maximum height/width for HTML elements in pixels (rough), bigger values will be ignored by browser\n\tif(env.isIE || env.isEdge || env.isFF)\n\t\tenv.maxHTMLElementSize = 10000000;\n\tif(env.isSafari)\n\t\tenv.maxHTMLElementSize = 100000000;\n}\n\nif(agent.toLowerCase().indexOf(\"android\")!=-1){\n\tenv.isAndroid = true;\n\tif(agent.toLowerCase().indexOf(\"trident\")!=-1){\n\t\tenv.isAndroid = false;\n\t\tenv.isIEMobile = true;\n\t}\n}\n\nenv.transform = false;\nenv.transition = false;\n\nvar found_index = -1;\nvar js_list = [\"\", \"webkit\", \"Moz\", \"O\", \"ms\"];\nvar css_list = [\"\", \"-webkit-\", \"-Moz-\", \"-o-\", \"-ms-\"];\n\n\nvar d = document.createElement(\"DIV\");\nfor (var j=0; j < js_list.length; j++) {\n\tvar name = js_list[j] ? (js_list[j]+\"Transform\") : \"transform\";\n\tif(typeof d.style[name] != \"undefined\"){\n\t\tfound_index = j;\n\t\tbreak;\n\t}\n}\n\n\nif (found_index > -1){\n\tenv.cssPrefix = css_list[found_index];\n\tvar jp = env.jsPrefix = js_list[found_index];\n\n\tenv.transform = jp ? jp+\"Transform\" : \"transform\";\n\tenv.transition = jp ? jp+\"Transition\" : \"transition\";\n\tenv.transitionDuration = jp ? jp+\"TransitionDuration\" : \"transitionDuration\";\n\n\td.style[env.transform] = \"translate3d(0,0,0)\";\n\tenv.translate = (d.style[env.transform])?\"translate3d\":\"translate\";\n\tenv.transitionEnd = ((env.cssPrefix == \"-Moz-\")?\"transitionend\":(jp ? jp+\"TransitionEnd\" : \"transitionend\"));\n}\n\nenv.pointerevents = (!env.isIE ||(new RegExp(\"Trident/.*rv:11\")).exec(agent) !== null);\n\n//touch events that can be prevented\nenv.passiveEventListeners = false;\ntry {\n\tvar opts = Object.defineProperty({}, \"passive\", {\n\t\tget: function() { // eslint-disable-line\n\t\t\tenv.passiveEventListeners = true;\n\t\t}\n\t});\n\twindow.addEventListener(\"testPassive\", null, opts);\n\twindow.removeEventListener(\"testPassive\", null, opts);\n} catch (e) {} // eslint-disable-line\n\nenv.svg = (function(){\n\treturn document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\");\n})();\n\nenv.svganimation = (function(){\n\treturn document.implementation.hasFeature(\"https://www.w3.org/TR/SVG11/feature#SVG-animation\", \"1.1\");\n})();\n\nexport default env;","import {delay, uid, toNode, isUndefined} from \"./helpers.js\";\nimport env from \"./env.js\";\n\nlet _native_on_selectstart = 0;\nconst _style_element = {};\nconst _style_cache = {};\n\nexport function denySelect(){\n\tif (!_native_on_selectstart)\n\t\t_native_on_selectstart = document.onselectstart;\n\tdocument.onselectstart = stopEvent;\n}\n\nexport function allowSelect(){\n\tif (_native_on_selectstart !== 0){\n\t\tdocument.onselectstart = _native_on_selectstart||null;\n\t}\n\t_native_on_selectstart = 0;\n\n}\n\nexport function index(node){\n\tvar k=0;\n\t//must be =, it is not a comparation!\n\twhile ((node = node.previousSibling)) k++;\n\treturn k;\n}\n\nexport function createCss(rule, sufix){\n\tvar text = \"\";\n\tsufix = sufix || \"\";\n\n\tfor (var key in rule)\n\t\ttext+= key+\":\"+rule[key]+\";\";\n \n\tvar name = _style_cache[text+sufix];\n\tif (!name){\n\t\tname = \"s\"+uid();\n\t\taddStyle(\".\"+name+(sufix||\"\")+\"{\"+text+\"}\");\n\t\t_style_cache[text+sufix] = name;\n\t}\n\treturn name;\n}\n\nexport function addStyle(rule, group){\n\tvar style = group ? _style_element[group] :_style_element[\"default\"];\n\tif(!style){\n\t\tstyle = document.createElement(\"style\");\n\t\tstyle.setAttribute(\"type\", \"text/css\");\n\t\tstyle.setAttribute(\"media\", \"screen,print\");\n\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(style);\n\n\t\tif (group)\n\t\t\t_style_element[group] = style;\n\t\telse\n\t\t\t_style_element[\"default\"] = style;\n\t}\n\t/*IE8*/\n\tif (style.styleSheet)\n\t\tstyle.styleSheet.cssText += rule;\n\telse\n\t\tstyle.appendChild(document.createTextNode(rule));\n}\n\nexport function removeStyle(group){\n\tvar box = _style_element[group||\"default\"];\n\tif (box)\n\t\tbox.innerHTML = \"\";\n}\n\nexport function create(name,attrs,html){\n\tattrs = attrs || {};\n\tvar node = document.createElement(name);\n\tfor (var attr_name in attrs)\n\t\tnode.setAttribute(attr_name, attrs[attr_name]);\n\tif (attrs.style)\n\t\tnode.style.cssText = attrs.style;\n\tif (attrs[\"class\"])\n\t\tnode.className = attrs[\"class\"];\n\tif (html)\n\t\tnode.innerHTML=html;\n\treturn node;\n}\n\n//return node value, different logic for different html elements\nexport function getValue(node){\n\tnode = toNode(node);\n\tif (!node) return \"\";\n\treturn isUndefined(node.value)?node.innerHTML:node.value;\n}\n\n//remove html node, can process an array of nodes at once\nexport function remove(node){\n\tif (node instanceof Array)\n\t\tfor (var i=0; i < node.length; i++)\n\t\t\tremove(node[i]);\n\telse if (node && node.parentNode)\n\t\tnode.parentNode.removeChild(node);\n}\n\n//insert new node before sibling, or at the end if sibling doesn't exist\nexport function insertBefore(node,before,rescue){\n\tif (!node) return;\n\tif (before && before.parentNode)\n\t\tbefore.parentNode.insertBefore(node, before);\n\telse\n\t\trescue.appendChild(node);\n}\n\n//return custom ID from html element \n//will check all parents starting from event's target\nexport function locate(e,id){\n\tvar trg;\n\tif (e.tagName)\n\t\ttrg = e;\n\telse {\n\t\te=e||event;\n\t\ttrg=e.target||e.srcElement;\n\t}\n \n\twhile (trg){\n\t\tif (trg.getAttribute){\t//text nodes has not getAttribute\n\t\t\tvar test = trg.getAttribute(id);\n\t\t\tif (test) return test;\n\t\t}\n\t\ttrg=trg.parentNode;\n\t}\t\n\treturn null;\n}\n\n//returns position of html element on the page\nexport function offset(elem) {\n\tif (elem.getBoundingClientRect) { //HTML5 method\n\t\tconst box = elem.getBoundingClientRect();\n\t\tconst body = document.body;\n\t\tconst docElem = document.documentElement;\n\t\tconst scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n\t\tconst scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n\t\tconst clientTop = docElem.clientTop || body.clientTop || 0;\n\t\tconst clientLeft = docElem.clientLeft || body.clientLeft || 0;\n\t\tconst top = box.top + scrollTop - clientTop;\n\t\tconst left = box.left + scrollLeft - clientLeft;\n\t\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight };\n\t} else { //fallback to naive approach\n\t\tlet top=0, left=0;\n\t\twhile(elem) {\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\n\t\t\telem = elem.offsetParent;\n\t\t}\n\t\treturn { y: top, x: left, width:elem.offsetHeight, height:elem.offsetWidth };\n\t}\n}\n\n//returns relative position of event\nexport function posRelative(ev){\n\tev = ev || event;\n\tif (!isUndefined(ev.offsetX))\n\t\treturn { x:ev.offsetX, y:ev.offsetY };\t//ie, webkit\n\telse\n\t\treturn { x:ev.layerX, y:ev.layerY };\t//firefox\n}\n\n//returns position of event\nexport function pos(ev){\n\tev = ev || event;\n\tif (ev.touches && ev.touches[0])\n\t\tev = ev.touches[0];\n\n\tif(ev.pageX || ev.pageY)\t//FF, KHTML\n\t\treturn {x:ev.pageX, y:ev.pageY};\n\t//IE\n\tvar d = ((env.isIE)&&(document.compatMode != \"BackCompat\"))?document.documentElement:document.body;\n\treturn {\n\t\tx:ev.clientX + d.scrollLeft - d.clientLeft,\n\t\ty:ev.clientY + d.scrollTop - d.clientTop\n\t};\n}\n\n//prevent event action\nexport function preventEvent(e){\n\tif(e && e.preventDefault) e.preventDefault();\n\tif(e) e.returnValue = false;\n\treturn stopEvent(e);\n}\n\n//stop event bubbling\nexport function stopEvent(e){\n\te = (e||event);\n\tif(e.stopPropagation) e.stopPropagation();\n\te.cancelBubble=true;\n\treturn false;\n}\n\nexport function triggerEvent(node, type, name){\n\tif(document.createEventObject){\n\t\tconst ev = document.createEventObject();\n\t\tif (node.fireEvent)\n\t\t\tnode.fireEvent(\"on\"+name, ev);\n\t} else{\n\t\tconst ev = document.createEvent(type);\n\t\tev.initEvent(name, true, true);\n\t\tif (node.dispatchEvent)\n\t\t\tnode.dispatchEvent(ev);\n\t}\n}\n\n//add css class to the node\nexport function addCss(node,name,check){\n\tif (!check || node.className.indexOf(name) === -1)\n\t\tnode.className+=\" \"+name;\n}\n\n//remove css class from the node\nexport function removeCss(node,name){\n\tnode.className=node.className.replace(RegExp(\" \"+name,\"g\"),\"\");\n}\n\nexport function getTextSize(text, css, basewidth){\n\tvar d = create(\"DIV\",{\"class\":\"webix_view webix_measure_size \"+(css||\"\")},\"\");\n\td.style.cssText = \"height:auto;visibility:hidden; position:absolute; top:0px; left:0px; overflow:hidden;\"+(basewidth?(\"width:\"+basewidth+\"px;\"):\"width:auto;white-space:nowrap;\");\n\tdocument.body.appendChild(d);\n\n\tvar all = (typeof text !== \"object\") ? [text] : text;\n\tvar width = 0;\n\tvar height = 0;\n\n\tfor (var i = 0; i < all.length; i++) {\n\t\td.innerHTML = all[i];\n\t\t//we need to add 1 to offsetWidth/Height because these methods return value as an integer\n\t\t//we can use ie9+ d.getBoundingClientRect().width\n\t\twidth = Math.max(width, d.offsetWidth+1);\n\t\theight = Math.max(height, d.offsetHeight+1);\n\t}\n \n\tremove(d);\n\treturn { width:width, height:height };\n}\n\nexport function download(data, filename){\n\tvar objUrl = false;\n\n\tif(typeof data ==\"object\"){//blob\n\t\tif(window.navigator.msSaveBlob)\n\t\t\treturn window.navigator.msSaveBlob(data, filename);\n\t\telse {\n\t\t\tdata = window.URL.createObjectURL(data);\n\t\t\tobjUrl = true;\n\t\t}\n\t}\n\t//data url or blob url\n\tvar link = document.createElement(\"a\");\n\tlink.href = data;\n\tlink.download = filename;\n\tdocument.body.appendChild(link);\n\tlink.click(); \n\n\tdelay(function(){\n\t\tif(objUrl) window.URL.revokeObjectURL(data);\n\t\tdocument.body.removeChild(link);\n\t\tlink.remove();\n\t});\n}\n\nexport function _getClassName(node){\n\tif(!node) return \"\";\n\n\tvar className = node.className || \"\";\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\n\t\tclassName = className.baseVal;\n\n\tif(!className.indexOf)\n\t\tclassName = \"\";\n\n\treturn className;\n}\n\nexport function setSelectionRange(node, start, end){\n\tstart = start || 0;\n\tend = end || start;\n\n\tnode.focus();\n\tif(node.setSelectionRange)\n\t\tnode.setSelectionRange(start, end);\n\telse{\n\t\t//ie8\n\t\tvar textRange = node.createTextRange();\n\t\ttextRange.collapse(true);\n\t\ttextRange.moveEnd(\"character\", end);\n\t\ttextRange.moveStart(\"character\", start);\n\t\ttextRange.select();\n\t}\n}\n\nexport function getSelectionRange(node){\n\tif(\"selectionStart\" in node)\n\t\treturn {start:node.selectionStart || 0, end:node.selectionEnd || 0};\n\telse{\n\t\t//ie8\n\t\tnode.focus();\n\t\tvar selection = document.selection.createRange();\n\t\tvar bookmark = selection.getBookmark();\n\t\tvar textRange = node.createTextRange();\n\n\t\ttextRange.moveToBookmark(bookmark);\n\t\tvar length = textRange.text.length;\n \n\t\ttextRange.collapse(true);\n\t\ttextRange.moveStart(\"character\", -node.value.length);\n\n\t\tvar start = textRange.text.length;\n\t\treturn {start:start, end: start + length};\n\t}\n}\n\nexport function addMeta(name, value){\n\tdocument.getElementsByTagName(\"head\").item(0).appendChild(create(\"meta\",{\n\t\tname:name,\n\t\tcontent:value\n\t}));\t\n}\n\n","import {assert} from \"../../webix/debug\";\nimport {toNode, extend} from \"../../webix/helpers\";\nimport {remove} from \"../../webix/html\";\n\nconst htmltable={\n\n\t//convert json string to json object if necessary\n\ttoObject:function(data){\n\t\tdata = toNode(data);\n\t\tassert(data, \"table is not found\");\n\t\tassert(data.tagName.toLowerCase() === \"table\", \"Incorrect table object\");\n\n\t\tvar tr = data.rows;\n\t\tremove(data);\n\t\treturn tr;\n\t},\n\t//get array of records\n\tgetRecords:function(data){\n\t\tvar new_data = [];\n\t\t//skip header rows if necessary\n\t\tvar i = (data[0] && data[0]._webix_skip)?1:0;\n\n\t\tfor (; i < data.length; i++)\n\t\t\tnew_data.push(data[i]);\n\t\treturn new_data;\n\t},\n\t//get hash of properties for single record\n\tgetDetails:function(data){\n\t\tvar td = data.getElementsByTagName(\"td\");\n\t\tdata = {};\n\t\t//get hash of properties for single record, data named as \"data{index}\"\n\t\tfor (var i=0; i < td.length; i++) {\n\t\t\tdata[\"data\" + i] = td[i].innerHTML;\n\t\t}\n\t\treturn data;\n\t},\n\t//get count of data and position at which new data need to be inserted\n\tgetInfo:function(){\n\t\t// dyn loading is not supported for htmltable\n\t\treturn { \n\t\t\tsize:0\n\t\t};\n\t},\n\tgetOptions:function(){},\n\n\t/*! gets header from first table row\n\t **/\n\tgetConfig: function(data) {\n\t\tvar columns = [];\n\t\tvar td = data[0].getElementsByTagName(\"th\");\n\t\tif (td.length) data[0]._webix_skip = true;\n\t\tfor (var i = 0; i < td.length; i++) {\n\t\t\tvar col = {\n\t\t\t\tid: \"data\" + i,\n\t\t\t\theader: this._de_json(td[i].innerHTML)\n\t\t\t};\n\t\t\tvar attrs = this._get_attrs(td[i]);\n\t\t\tcol = extend(col, attrs);\n\t\t\tcolumns.push(col);\n\t\t}\n\t\treturn columns;\n\t},\n\n\t_de_json:function(str){\n\t\tvar pos = str.indexOf(\"json://\");\n\t\t\n\t\tif (pos != -1)\n\t\t\tstr = JSON.parse(str.substr(pos+7));\n\t\treturn str;\n\t},\n\t\n\t/*! gets hash of html-element attributes\n\t **/\n\t_get_attrs: function(el) {\n\t\tvar attr = el.attributes;\n\t\tvar hash = {};\n\t\tfor (var i = 0; i < attr.length; i++) {\n\t\t\thash[attr[i].nodeName] = this._de_json(attr[i].nodeValue);\n\t\t}\n\t\thash.width = parseInt(hash.width, 10);\n\t\treturn hash;\n\t}\n};\n\nexport default htmltable;","import {create} from \"../webix/html.js\";\nimport {exec} from \"../webix/helpers.js\";\nimport {ajax} from \"./ajax.js\";\n\nimport Promise from \"../thirdparty/promiz\";\n\nconst _modules = {};\t//hash of already loaded modules\n\n//loads module from external js file\nexport default function require(module, callback, master){\n\tvar promise = Promise.defer();\n\n\tif (callback && callback !== true)\n\t\tpromise = promise.then(function(){ callback.call(master || this); });\n\n\tif (require.disabled){\n\t\tpromise.resolve();\n\t\treturn promise;\n\t}\n\n\t//multiple files required at once\n\tif (typeof module != \"string\"){\n\t\tvar count = module.length||0;\n\t\t\n\t\tif (!count){\n\t\t\t// { file: true, other: true }\n\t\t\tfor (let file in module) count++; // eslint-disable-line\n\t\t\tlet callback2 = function(){\n\t\t\t\tcount--;\n\t\t\t\tif (count === 0)\n\t\t\t\t\tpromise.resolve();\n\t\t\t};\n\t\t\tfor (let file in module)\n\t\t\t\trequire(file).then(callback2, () => promise.reject());\n\t\t} else {\n\t\t\t// [ file, other ]\n\t\t\tlet callback2 = function(){\n\t\t\t\tif (count){\n\t\t\t\t\tcount--;\n\t\t\t\t\trequire(module[module.length - count - 1])\n\t\t\t\t\t\t.then(callback2, () => promise.reject());\n\n\t\t\t\t} else {\n\t\t\t\t\tpromise.resolve();\n\t\t\t\t}\n\t\t\t};\n\t\t\tcallback2();\n\t\t}\n\t\treturn promise;\n\t}\n\n\tif (_modules[module] !== true){\n\t\tconst fullpath = module;\n\n\t\tif (callback === true){\n\t\t\t//sync mode\n\t\t\texec( ajax().sync().get(fullpath).responseText );\n\t\t\t_modules[module]=true;\n\t\t\treturn promise.resolve();\n\t\t}\n\n\t\tif (!_modules[module])\t//first call\n\t\t\t_modules[module] = [promise];\n\t\telse {\n\t\t\t_modules[module].push(promise);\n\t\t\treturn promise;\n\t\t}\n\n\t\tconst onerror = function(){\n\t\t\tconst calls = _modules[module];\n\t\t\t_modules[module] = false;\n\t\t\tfor (var i=0; i=0 && e.r-yCorrection<=options.rows[1]))\n\t\t\t\t\t\tspans.push([s.r-yCorrection, s.c-xCorrection, e.c-s.c+1, e.r-s.r+1]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(sheet[\"!cols\"]){\n\t\t\t\tvar widths = sheet[\"!cols\"];\n\t\t\t\tfor(let i = 0; i {\n\t\t\t\tthis._onLoad(data);\n\t\t\t\tif (call)\n\t\t\t\t\tajax.$callback(this, call, \"\", data, -1);\n\t\t\t\treturn data;\n\t\t\t}, x => this._onLoadError(x));\n\t},\n\t_fetch:function(url, type, details){\n\t\tvar result;\n\n\t\tif (type || !this.data.driver)\n\t\t\tthis.data.driver = DataDriver[type||\"json\"];\n\n\t\tif(!this.callEvent(\"onBeforeLoad\",[]))\n\t\t\treturn promise.reject();\t\t\n\n\t\t//proxy\t\n\t\turl = proxy.$parse(url);\n\t\tif (url.$proxy && url.load){\n\t\t\tresult = url.load(this, details);\n\t\t}\n\t\t//promize\n\t\telse if (typeof url === \"function\"){\n\t\t\tresult = url.call(this, details);\n\t\t}\n\t\t//normal url\n\t\telse {\n\t\t\tresult = ajax().bind(this).get(url);\n\t\t}\n\n\t\t//we wrap plain data in promise to keep the same processing for it\n\t\tif(result && !result.then){\n\t\t\tresult = promise.resolve(result);\n\t\t}\n\n\t\tconst gen = this._data_generation;\n\t\tif(result && result.then){\n\t\t\tresult.then((data) => {\n\t\t\t\t// component destroyed, or clearAll was issued\n\t\t\t\tif (this.$destructed || (gen && this._data_generation !== gen))\n\t\t\t\t\t// by returning rejection we are preventing the further executing chain\n\t\t\t\t\t// if user have used list.load(data).then(do_something)\n\t\t\t\t\t// the do_something will not be executed\n\t\t\t\t\t// the error handler may be triggered though\n\t\t\t\t\treturn promise.reject(silentErrorMarker);\n\n\t\t\t\treturn data;\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t},\n\t//loads data from object\n\tparse:function(data,type){\n\t\tif (data && typeof data.then == \"function\"){\n\t\t\tconst generation = this._data_generation;\n\t\t\t// component destroyed, or clearAll was issued\n\t\t\treturn data.then(bind(function(data){ \n\t\t\t\tif (this.$destructed || (generation && this._data_generation !== generation))\n\t\t\t\t\treturn promise.reject();\n\t\t\t\tthis.parse(data, type); \n\t\t\t}, this));\n\t\t}\n\n\t\t//loading data from other component\n\t\tif (data && data.sync && this.sync)\n\t\t\tthis._syncData(data);\n\t\telse if(!this.callEvent(\"onBeforeLoad\",[]))\n\t\t\treturn promise.reject();\n\t\telse {\n\t\t\tif(type || !this.data.driver)\n\t\t\t\tthis.data.driver = DataDriver[type||\"json\"];\n\t\t\tthis._onLoad(data);\n\t\t}\n\n\t\treturn promise.resolve();\n\t},\n\t_syncData: function(data){\n\t\tif(this.data)\n\t\t\tthis.data.attachEvent(\"onSyncApply\",bind(function(){\n\t\t\t\tif(this._call_onready)\n\t\t\t\t\tthis._call_onready();\n\t\t\t},this));\n\n\t\tthis.sync(data);\n\t},\n\t_parse:function(data){\n\t\tvar parsed, record,\n\t\t\tdriver = this.data.driver;\n\n\t\trecord = driver.getRecords(data)[0];\n\t\tparsed = record?driver.getDetails(record):{};\n\n\t\tif (this.setValues)\n\t\t\tthis.setValues(parsed);\n\t\telse\n\t\t\tthis.data = parsed;\n\t},\n\t_onLoadContinue:function(data){\n\t\tif (data){\n\t\t\tif(!this.$onLoad || !this.$onLoad(data, this.data.driver)){\n\t\t\t\tif(this.data && this.data._parse)\n\t\t\t\t\tthis.data._parse(data); //datastore\n\t\t\t\telse\n\t\t\t\t\tthis._parse(data);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t\tthis._onLoadError(data);\n\n\t\t//data loaded, view rendered, call onready handler\n\t\tif(this._call_onready)\n\t\t\tthis._call_onready();\n\n\t\tthis.callEvent(\"onAfterLoad\",[]);\n\t\tthis.waitData.resolve();\n\t},\n\t//default after loading callback\n\t_onLoad:function(data){\n\t\t// webix loading object or uploaded file structure\n\t\tif (data && typeof data.text === \"function\" && !data.name){\n\t\t\tdata = data.text();\n\t\t}\n\n\t\tdata = this.data.driver.toObject(data);\n\t\tif(data && data.then)\n\t\t\tdata.then(data => this._onLoadContinue(data));\n\t\telse\n\t\t\tthis._onLoadContinue(data);\n\t},\n\t_onLoadError:function(xhttp){\n\t\tif (xhttp !== silentErrorMarker){\n\t\t\t//ignore error for dead components\n\t\t\tif (!this.$destructed){\n\t\t\t\tthis.callEvent(\"onAfterLoad\",[]);\n\t\t\t\tthis.callEvent(\"onLoadError\",arguments);\n\t\t\t}\n\n\t\t\tcallEvent(\"onLoadError\", [xhttp, this]);\n\t\t}\n\t\treturn promise.reject(xhttp);\n\t},\n\t_check_data_feed:function(data){\n\t\tif (!this._settings.dataFeed || this._ignore_feed || !data)\n\t\t\treturn true;\n\n\t\tvar url = this._settings.dataFeed;\n\t\tif (typeof url == \"function\")\n\t\t\treturn url.call(this, (data.id||data), data);\n\n\t\turl = url+(url.indexOf(\"?\")==-1?\"?\":\"&\")+\"action=get&id=\"+encodeURIComponent(data.id||data);\n\t\tif(!this.callEvent(\"onBeforeLoad\",[]))\n\t\t\treturn false;\n\n\t\tajax(url, function(text,xml,loader){\n\t\t\tthis._ignore_feed = true;\n\t\t\tvar driver = DataDriver.json;\n\t\t\tvar data = driver.toObject(text, xml);\n\t\t\tif (data)\n\t\t\t\tthis.setValues(driver.getDetails(driver.getRecords(data)[0]));\n\t\t\telse\n\t\t\t\tthis._onLoadError(loader);\n\t\t\tthis._ignore_feed = false;\n\t\t\tthis.callEvent(\"onAfterLoad\",[]);\n\t\t}, this);\n\t\treturn false;\n\t}\n};\n\nexport default AtomDataLoader;","import {isDate, isArray} from \"../webix/helpers\";\n\nconst CodeParser = {\n\t//converts a complex object into an object with primitives properties\n\tcollapseNames:function(base, prefix, data, filter){\n\t\tdata = data || {};\n\t\tprefix = prefix || \"\";\n\t\tfilter = filter || function(){ return true; };\n\n\t\tif(!base || typeof base != \"object\")\n\t\t\treturn null;\n\n\t\tfor(var prop in base){\n\t\t\tlet value = base[prop];\n\t\t\tlet name = prefix+prop;\n\t\t\tif(value && typeof value == \"object\" && !isDate(value) && !isArray(value) && filter(name)){\n\t\t\t\tCodeParser.collapseNames(value, name+\".\", data, filter);\n\t\t\t} else {\n\t\t\t\tdata[name] = value;\n\t\t\t}\n\t\t}\n\t\treturn data;\n\t},\n\n\t//converts an object with primitive properties into an object with complex properties\n\texpandNames:function(base){\n\t\tvar data = {},\n\t\t\ti, lastIndex, name, obj, prop;\n\n\t\tfor(prop in base){\n\t\t\tname = prop.split(\".\");\n\t\t\tlastIndex = name.length-1;\n\t\t\tobj = data;\n\t\t\tfor( i =0; i < lastIndex; i++ ){\n\t\t\t\tif(!obj[name[i]])\n\t\t\t\t\tobj[name[i]] = {};\n\t\t\t\tobj = obj[name[i]];\n\t\t\t}\n\t\t\tobj[name[lastIndex]] = base[prop];\n\t\t}\n\n\t\treturn data;\n\t}\n};\n\nexport default CodeParser;","/*\n\tTemplate - handles html templates\n*/\n\nimport {uid} from \"./helpers\";\nimport {getValue} from \"./html\";\nimport env from \"./env\";\nimport {ajax} from \"../load/ajax\";\nimport {assert} from \"./debug\";\n\nimport CodeParser from \"../core/codeparser\";\n\nvar _cache = {};\nvar _csp_cache = {};\nvar newlines = new RegExp(\"(\\\\r\\\\n|\\\\n)\",\"g\");\nvar quotes = new RegExp(\"(\\\\\\\")\",\"g\");\nvar slashes = new RegExp(\"(\\\\\\\\)\",\"g\");\nvar escape = {\n\t\"&\": \"&\",\n\t\"<\": \"<\",\n\t\">\": \">\",\n\t\"\\\"\": \""\",\n\t\"'\": \"'\",\n\t\"`\": \"`\"\n};\nvar badChars = /[&<>\"'`]/g;\nvar escapeChar = function(chr) {\n\treturn escape[chr] || \"&\";\n};\n\n\nfunction template(str){\n\tif (typeof str == \"function\") return str;\n\tif (_cache[str])\n\t\treturn _cache[str];\n\t\t\n\tstr=(str||\"\").toString();\t\t\t\n\tif (str.indexOf(\"->\")!=-1){\n\t\tvar teststr = str.split(\"->\");\n\t\tswitch(teststr[0]){\n\t\t\tcase \"html\": \t//load from some container on the page\n\t\t\t\tstr = getValue(teststr[1]);\n\t\t\t\tbreak;\n\t\t\tcase \"http\": \t//load from external file\n\t\t\t\tstr = new ajax().sync().get(teststr[1],{uid:uid()}).responseText;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t//do nothing, will use template as is\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t\t\n\t//supported idioms\n\t// {obj.attr} => named attribute or value of sub-tag in case of xml\n\tstr=(str||\"\").toString();\t\t\n\n\t// Content Security Policy enabled\n\tif(env.strict){\n\t\tif (!_csp_cache[str]){\n\t\t\t_csp_cache[str] = [];\n\n\t\t\t// get an array of objects (not sorted by position)\n\t\t\tvar temp_res = [];\n\t\t\tstr.replace(/\\{obj\\.([^}?]+)\\?([^:]*):([^}]*)\\}/g,function(search,s1,s2,s3,pos){\n\t\t\t\ttemp_res.push({pos: pos, str: search, fn: function(obj){\n\t\t\t\t\treturn obj[s1]?s2:s3;\n\t\t\t\t}});\n\t\t\t});\n\t\t\tstr.replace(/\\{common\\.([^}(]*)\\}/g,function(search,s,pos){\n\t\t\t\ttemp_res.push({pos: pos, str: search, fn: function(_,common){\n\t\t\t\t\treturn common[s]||\"\";\n\t\t\t\t}});\n\t\t\t});\n\t\t\tstr.replace(/\\{common\\.([^}(]*)\\(\\)\\}/g,function(search,s,pos){\n\t\t\t\ttemp_res.push({pos: pos, str: search, fn: function(obj,common){\n\t\t\t\t\treturn (common[s]?common[s].apply(this, arguments):\"\");\n\t\t\t\t}});\n\t\t\t});\n\t\t\tstr.replace(/\\{obj\\.([^:}]*)\\}/g,function(search,s,pos){\n\t\t\t\ttemp_res.push({pos: pos, str: search, fn: function(obj){\n\t\t\t\t\treturn obj[s];\n\t\t\t\t}});\n\t\t\t});\n\t\t\tstr.replace(\"{obj}\",function(search,pos){\n\t\t\t\ttemp_res.push({pos: pos, str: search, fn: function(obj){\n\t\t\t\t\treturn obj;\n\t\t\t\t}});\n\t\t\t});\n\t\t\tstr.replace(/#([^#'\";, ]+)#/gi,function(search,s,pos){\n\t\t\t\tif(s.charAt(0)==\"!\"){\n\t\t\t\t\ts = s.substr(1);\n\t\t\t\t\ttemp_res.push({pos: pos, str: search, fn: function(obj){\n\t\t\t\t\t\tif(s.indexOf(\".\")!= -1)\n\t\t\t\t\t\t\tobj = CodeParser.collapseNames(obj); // apply complex properties\n\t\t\t\t\t\treturn template.escape(obj[s]);\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\ttemp_res.push({pos: pos, str: search, fn: function(obj){\n\t\t\t\t\t\tif(s.indexOf(\".\")!= -1)\n\t\t\t\t\t\t\tobj = CodeParser.collapseNames(obj); // apply complex properties\n\t\t\t\t\t\treturn obj[s];\n\t\t\t\t\t}});\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t// sort template parts by position\n\t\t\ttemp_res.sort(function(a,b){\n\t\t\t\treturn (a.pos > b.pos)?1:-1;\n\t\t\t});\n\n\t\t\t// create an array of functions that return parts of html string\n\t\t\tif(temp_res.length){\n\t\t\t\tvar lastPos = 0;\n\t\t\t\tvar addStr = function(str,n0,n1){\n\t\t\t\t\t_csp_cache[str].push(function(){\n\t\t\t\t\t\treturn str.slice(n0,n1);\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tfor(var i = 0; i< temp_res.length; i++){\n\t\t\t\t\tvar pos = temp_res[i].pos;\n\t\t\t\t\taddStr(str,lastPos,pos);\n\t\t\t\t\t_csp_cache[str].push(temp_res[i].fn);\n\t\t\t\t\tlastPos = pos + temp_res[i].str.length;\n\t\t\t\t}\n\t\t\t\taddStr(str,lastPos,str.length);\n\t\t\t}\n\t\t\telse\n\t\t\t\t_csp_cache[str].push(function(){return str;});\n\t\t}\n\t\treturn function(){\n\t\t\tvar s = \"\";\n\t\t\tfor(var i=0; i < _csp_cache[str].length;i++){\n\t\t\t\ts += _csp_cache[str][i].apply(this,arguments);\n\t\t\t}\n\t\t\treturn s;\n\t\t};\n\t}\n\n\tlet helpers = false;\n\tstr=str.replace(slashes,\"\\\\\\\\\");\n\tstr=str.replace(newlines,\"\\\\n\");\n\tstr=str.replace(quotes,\"\\\\\\\"\");\n\n\tstr=str.replace(/\\{obj\\.([^}?]+)\\?([^:]*):([^}]*)\\}/g,\"\\\"+(obj.$1?\\\"$2\\\":\\\"$3\\\")+\\\"\");\n\tstr=str.replace(/\\{common\\.([^}(]*)\\}/g,\"\\\"+(common.$1||'')+\\\"\");\n\tstr=str.replace(/\\{common\\.([^}(]*)\\(\\)\\}/g,\"\\\"+(common.$1?common.$1.apply(this, arguments):\\\"\\\")+\\\"\");\n\tstr=str.replace(/\\{obj\\.([^}]*)\\}/g,\"\\\"+(obj.$1)+\\\"\");\n\tstr=str.replace(\"{obj}\",\"\\\"+obj+\\\"\");\n\tstr=str.replace(/#([^#'\";, ]+)#/gi,function(str, key){\n\t\tif (key.charAt(0)==\"!\"){\n\t\t\thelpers = true;\n\t\t\treturn \"\\\"+template.escape(obj.\"+key.substr(1)+\")+\\\"\";\n\t\t} else\n\t\t\treturn \"\\\"+(obj.\"+key+\")+\\\"\";\n\t});\n\n\ttry {\n\t\tif (helpers){\n\t\t\tconst temp = Function(\"obj\",\"common\",\"marks\", \"value\", \"template\", \"return \\\"\"+str+\"\\\";\");\n\t\t\t_cache[str] = function(a,b,c,d){ \n\t\t\t\treturn temp(a,b,c,d,template);\n\t\t\t};\n\t\t} else {\n\t\t\t_cache[str] = Function(\"obj\",\"common\",\"return \\\"\"+str+\"\\\";\");\n\t\t}\n\t} catch(e){\n\t\tassert(0, \"Invalid template:\"+str);\n\t}\n\n\treturn _cache[str];\n}\n\n\n\ntemplate.escape = function(str){\n\tif (str === undefined || str === null) return \"\";\n\treturn (str.toString() || \"\" ).replace(badChars, escapeChar);\n};\ntemplate.empty=function(){\treturn \"\";\t};\n\nexport default template;","import {bind} from \"../webix/helpers\";\nimport template from \"../webix/template\";\n\n\nconst AtomRender={\n\t//convert item to the HTML text\n\t_toHTML:function(obj){\n\t\tif (obj.$empty )\n\t\t\treturn \"\";\n\t\treturn this._settings.template(obj, this);\n\t},\n\t//render self, by templating data object\n\trender:function(){\n\t\tvar cfg = this._settings;\n\t\tif (this.isVisible(cfg.id)){\n\t\t\tif (!this.callEvent || this.callEvent(\"onBeforeRender\",[this.data])){\n\t\t\t\tif (this.data && !cfg.content){\n\t\t\t\t\t//it is critical to have this as two commands\n\t\t\t\t\t//its prevent destruction race in Chrome\n\t\t\t\t\tthis._dataobj.innerHTML = \"\";\n\t\t\t\t\tthis._dataobj.innerHTML = this._toHTML(this.data);\n\t\t\t\t}\n\t\t\t\tif (this.callEvent) this.callEvent(\"onAfterRender\",[]);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\tsync:function(source){\n\t\tthis._backbone_sync = false;\n\t\tif (source.name != \"DataStore\"){\n\t\t\tif (source.data && source.name == \"DataStore\"){\n\t\t\t\tsource = source.data;\n\t\t\t} else {\n\t\t\t\tthis._backbone_sync = true;\n\t\t\t}\n\t\t}\n\t\t\t\n\n\t\tif (this._backbone_sync)\n\t\t\tsource.bind(\"change\", bind(function(data){\n\t\t\t\tif (data.id == this.data.id){\n\t\t\t\t\tthis.data = data.attributes;\n\t\t\t\t\tthis.refresh();\n\t\t\t\t}\n\t\t\t}, this));\n\t\telse\n\t\t\tsource.attachEvent(\"onStoreUpdated\", bind(function(id){\n\t\t\t\tif (!id || id == this.data.id){\n\t\t\t\t\tthis.data = source.pull[id];\n\t\t\t\t\tthis.refresh();\n\t\t\t\t}\n\t\t\t}, this));\n\t},\n\ttemplate_setter:template\n};\n\nexport default AtomRender;","import {offset} from \"../webix/html\";\nimport {delay} from \"../webix/helpers\";\n\n\nconst AutoScroll = {\n\t_auto_scroll:function(pos){\n\t\tlet yScroll, xScroll;\n\t\tlet mode = this._settings.dragscroll;\n\n\t\tif (typeof mode !== \"string\")\n\t\t\tmode = this._settings.layout||\"xy\";\n\t\txScroll = mode.indexOf(\"x\") !== -1;\n\t\tyScroll = mode.indexOf(\"y\") !== -1;\n\n\t\tconst data = this._body || this.$view;\n\t\tconst box = offset(data);\n\n\t\tconst sense = Math.max((this._settings.rowHeight||(this.type&&!isNaN(parseFloat(this.type.height))?this.type.height:0))+5, 40); //dnd auto-scroll sensivity\n\t\tlet reset = false;\n\n\t\tif (yScroll && this._auto_y_scroll(pos, box, sense) ) reset = true;\n\t\tif (xScroll && this._auto_x_scroll(pos, box, sense) ) reset = true;\n\n\t\tif (reset)\n\t\t\tthis._auto_scroll_delay = delay(this._auto_scroll, this, [pos], 100);\n\t},\n\t_auto_scroll_column:function(pos){\n\t\tconst mode = this._settings.dragscroll;\n\t\tif (typeof mode === \"string\" && mode.indexOf(\"x\") === -1)\n\t\t\treturn;\n\n\t\tconst data = this._header || this.$view;\n\t\tconst box = offset(data);\n\n\t\tconst sense = Math.max(this._settings.headerRowHeight||0, 40);\n\t\tif ( this._auto_x_scroll(pos, box, sense) )\n\t\t\tthis._auto_scroll_delay = delay(this._auto_scroll_column, this, [pos], 100);\n\t},\n\t_auto_y_scroll:function(pos, box, sense){\n\t\tlet top = box.y;\n\t\tlet bottom = top + box.height;\n\t\tconst scroll = this.getScrollState();\n\n\t\tconst config = this._settings;\n\t\tif(config.topSplit){\n\t\t\tconst topSplitPos = this._cellPosition(this.getIdByIndex(config.topSplit-1), this.columnId(0));\n\t\t\ttop += topSplitPos.top + topSplitPos.height;\n\t\t}\n\n\t\tif (pos.y < (top + sense)){\n\t\t\tthis._auto_scrollTo(scroll.x, scroll.y-sense*2, pos);\n\t\t\treturn true;\n\t\t} else if (pos.y > bottom - sense){\n\t\t\tthis._auto_scrollTo(scroll.x, scroll.y+sense*2, pos);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\t_auto_x_scroll:function(pos, box, sense){\n\t\tlet left = box.x;\n\t\tlet right = left + box.width;\n\t\tconst scroll = this.getScrollState();\n\n\t\tif (pos.x < (left + sense)){\n\t\t\tthis._auto_scrollTo(scroll.x-sense*2, scroll.y, pos);\n\t\t\treturn true;\n\t\t} else if (pos.x > right - sense){\n\t\t\tthis._auto_scrollTo(scroll.x+sense*2, scroll.y, pos);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\t_auto_scrollTo:function(x,y,pos){\n\t\tif(this.callEvent(\"onBeforeAutoScroll\",[pos]))\n\t\t\tthis.scrollTo(x,y);\n\t}\n};\n\nexport default AutoScroll;","import { assert } from \"./debug\";\nimport { toNode, uid, bind, isUndefined } from \"./helpers\";\nimport env from \"./env\";\n\n//hash of attached events\nconst _events = {};\n\nexport function _events_final_destructor(){\n\t//detach all known DOM events\n\tfor (var a in _events)\n\t\teventRemove(a);\n}\n\n//private version of API, do not register ID for event detaching\nexport function _event(a,b,c,d){\n\td = d || {};\n\td.inner = true;\n\tevent(a,b,c,d);\n}\n\n//attach event to the DOM element\nexport function event(node,event,handler,context){\n\tcontext = context || {};\n\tnode = toNode(node);\n\tassert(node, \"Invalid node as target for webix.event\");\n\t\n\tvar id = context.id || uid();\n\n\tif(context.bind)\n\t\thandler=bind(handler,context.bind);\n\n\tvar info = [node,event,handler,context.capture];\n\tif (!context.inner)\n\t\t_events[id]=info;\t//store event info, for detaching\n\n\tvar capture = !!context.capture;\n\tif(!isUndefined(context.passive) && env.passiveEventListeners)//blockable touch events\n\t\tcapture = { passive:context.passive, capture:capture };\n\t\t\n\t//use IE's of FF's way of event's attaching\n\tif (node.addEventListener)\n\t\tnode.addEventListener(event, handler, capture);\n\telse if (node.attachEvent)\n\t\tnode.attachEvent(\"on\"+event, info[2] = function(){\n\t\t\treturn handler.apply(node, arguments);\t//IE8 fix\n\t\t});\n\n\treturn id;\t//return id of newly created event, can be used in eventRemove\n}\n\n//remove previously attached event\nexport function eventRemove(id){\n\t\n\tif (!id) return;\n\tassert(_events[id],\"Removing non-existing event\");\n\t\t\n\tvar ev = _events[id];\n\t//browser specific event removing\n\tif (ev[0].removeEventListener)\n\t\tev[0].removeEventListener(ev[1],ev[2],!!ev[3]);\n\telse if (ev[0].detachEvent)\n\t\tev[0].detachEvent(\"on\"+ev[1],ev[2]);\n\n\t\t\n\tdelete _events[id];\t//delete all traces\n}\n","import template from \"./template\";\nimport {clone} from \"./helpers\";\n\n/*\n\tadds new template-type\n\tobj - object to which template will be added\n\tdata - properties of template\n*/\nexport default function type(obj, data){ \n\tif (obj.$protoWait){\n\t\tif (!obj._webix_type_wait)\n\t\t\tobj._webix_type_wait = [];\n\t\tobj._webix_type_wait.push(data);\n\t\treturn;\n\t}\n\t\t\n\t//auto switch to prototype, if name of class was provided\n\tif (typeof obj == \"function\")\n\t\tobj = obj.prototype;\n\tif (!obj.types){\n\t\tobj.types = { \"default\" : obj.type };\n\t\tobj.type.name = \"default\";\n\t}\n\t\n\tvar name = data.name;\n\tvar type = obj.type;\n\tif (name)\n\t\ttype = obj.types[name] = clone(data.baseType?obj.types[data.baseType]:obj.type);\n\t\n\tfor(var key in data){\n\t\tif (key.indexOf(\"template\")===0)\n\t\t\ttype[key] = template(data[key]);\n\t\telse\n\t\t\ttype[key]=data[key];\n\t}\n\n\treturn name;\n}","const state = {\n\tcodebase:\"./\",\n\tcdn:\"//cdn.webix.com\",\n\ttop_views:[],\n\n\t_global_scope:null,\n\t_global_collection:null,\n\t_child_sizing_active:null,\n\t_responsive_exception:null,\n\t_responsive_tinkery:null,\n\t_freeze_resize:null,\n\t_parent_cell:null,\n\t_focus_time:null,\n\t_ui_creation:0,\n\t_edit_open_time:null,\n\n\t_final_destruction:null,\n\t_events:[],\n\n\tdestructors:[],\n\n\t_noselect_element:null,\n\n\t_modality:0,\n\n\t_wait_animate:null\n};\n\nexport default state;","import {assert} from \"../webix/debug\";\n\nimport {uid, isArray, toNode, isUndefined, toFunctor} from \"../webix/helpers\";\nimport {attachEvent} from \"../webix/customevents\";\nimport {locate} from \"../webix/html\";\nimport {use} from \"../services\";\n\nimport type from \"../webix/type\";\nimport state from \"../core/state\";\n\n//global click events for UI\nimport \"./click\";\n\nconst views = {};\n\nfunction ui(config, parent, id){\n\tvar res;\n\tstate._ui_creation++;\n\t// save old value of global scope\n\tconst temp = state._global_scope;\n\t// set global scope to the scope of new UI or to previous value\n\t// as result inner webix.ui calls will have access the scope of master view\n\t// mainly necessary for suggests\n\tstate._global_scope = config.$scope || temp;\n\ttry {\n\t\tres = _ui_creator(config, parent, id);\n\t} finally {\n\t\tstate._ui_creation--;\n\t\t// restore global scope\n\t\tstate._global_scope = temp;\n\t}\n\treturn res;\n}\nui.views = views;\n\n\nfunction _ui_creator(config, parent, id){\n\tvar multiset = isArray(config);\n\tvar node = toNode((config.container||parent)||document.body);\n\n\t// solve problem with non-unique ids\n\tif(node._settings)\n\t\tid = _correctId(node, multiset, id);\n\n\tvar top_node;\n\tvar moving = false;\n\tvar body_child = (node == document.body);\n\tif (config._settings || (node && multiset)){\n\t\ttop_node = config;\n\t\tmoving = true;\n\t} else {\n\t\tif (node && body_child)\n\t\t\tconfig.$topView = true;\n\t\tif (!config._inner)\n\t\t\tconfig._inner = {};\n\n\t\tif (parent && parent.getParentView){\n\t\t\tstate._parent_cell = (!id && id!==0) ? parent.getParentView() : parent;\n\t\t}\n\n\t\ttop_node = _view(config);\n\t}\n\n\tif (body_child && !top_node.setPosition && !top_node.$apiOnly)\n\t\tuse(\"_fixHeight\")();\n\n\tif (top_node._settings && top_node._settings._hidden && !node.$view){\n\t\ttop_node._settings._container = node;\n\t} else if (!top_node.$apiOnly){\n\t\tif (node.appendChild)\n\t\t\t_appendDom(node, top_node, config);\n\t\telse if (node.destructor){\n\t\t\tvar target = node;\n\n\t\t\t//addView or view moving with target id\n\t\t\tif (!id && id!==0 && !isArray(top_node)){\n\t\t\t\tid = node;\n\t\t\t\tnode = node.getParentView();\n\t\t\t}\n\n\t\t\t//if target supports view adding\n\t\t\tif (node && node._replace){\n\t\t\t\tif (moving && top_node.getParentView){\n\t\t\t\t\t//if source supports view removing\n\t\t\t\t\tlet parent = top_node.getParentView();\n\t\t\t\t\tif (parent && parent._remove){\n\t\t\t\t\t\tparent._remove(top_node);\n\t\t\t\t\t}\n\t\t\t\t\t//adjust parent link and scope\n\t\t\t\t\ttop_node._parent_cell = node;\n\t\t\t\t\ttop_node.$scope = node.$scope;\n\t\t\t\t}\n\n\t\t\t\tnode._replace(top_node, id);\n\t\t\t} else {\n\t\t\t\tlet parent = target.$view.parentNode;\n\t\t\t\ttarget.destructor();\n\t\t\t\t_appendDom(parent, top_node, config);\n\t\t\t}\n\t\t} else\n\t\t\tassert(0, \"Not existing parent:\"+config.container);\n\t}\n\n\treturn top_node;\n}\n\nfunction _appendDom(node, top_node, config){\n\tnode.appendChild(top_node._viewobj);\n\tif (top_node.getParentView()) return;\n\n\t//resize window with position center or top\n\t//do not resize other windows and elements\n\t// which are attached to custom html containers\n\tif (((!top_node.setPosition || top_node._settings.fullscreen) && node == document.body) || top_node._settings.position )\n\t\tstate.top_views.push(top_node._destructor_handler);\n\tif (!config.skipResize)\n\t\ttop_node.adjust();\n}\n\nfunction _correctId(target, multiset, id){\n\t//replace view\n\tvar views = [target];\n\t//replace content of layout\n\tif (multiset)\n\t\tviews = target.getChildViews();\n\t//replace content of window\n\telse if (target._body_cell)\n\t\tviews = [target._body_cell];\n\t//add cell in layout by number\n\telse if (typeof id == \"number\"){\n\t\treturn id;\n\t//replace cell in layout by id\n\t} else if (id){\n\t\tviews = [$$(id)];\n\t\t_deleteIds(views);\n\t\treturn views[0].config.id;\n\t}\n\n\t_deleteIds(views);\n\treturn id;\n}\n\nfunction _deleteIds(uis){\n\tfor (var i = uis.length - 1; i >= 0; i--){\n\t\tlet current = uis[i];\n\t\t//remove original id\n\t\tdelete views[current.config.id];\n\t\t//create temp id\n\t\tcurrent.config.id = \"x\"+uid();\n\t\tviews[current.config.id] = current;\n\t\t//process childs\n\t\tif (current.getChildViews)\n\t\t\t_deleteIds(current.getChildViews());\n\t\t//process related UI\n\t\tif (current._destroy_with_me)\n\t\t\t_deleteIds(current._destroy_with_me);\n\t}\n}\n\n\nfunction _view(config){\n\n\tif (DEBUG){\n\t\t// check for trailing comma\n\t\tvar coll = config.cells || config.rows || config.elements || config.cols;\n\t\tif (coll)\n\t\t\tfor (let i=0; i0; i--) {\n\t\tassert(origins[i],\"Invalid mixing source\");\n\t\tif (typeof origins[i]== \"function\")\n\t\t\torigins[i]=origins[i].prototype;\n\t\tif (origins[i].$init) \n\t\t\tconstruct.push(origins[i].$init);\n\t\tif (origins[i].defaults){ \n\t\t\tvar defaults = origins[i].defaults;\n\t\t\tif (!compilation.defaults)\n\t\t\t\tcompilation.defaults = {};\n\t\t\tfor (let def in defaults)\n\t\t\t\tif (isUndefined(compilation.defaults[def]))\n\t\t\t\t\tcompilation.defaults[def] = defaults[def];\n\t\t}\n\t\tif (origins[i].type && compilation.type){\n\t\t\tfor (let def in origins[i].type)\n\t\t\t\tif (!compilation.type[def])\n\t\t\t\t\tcompilation.type[def] = origins[i].type[def];\n\t\t}\n\t\t\t\n\t\tfor (var key in origins[i]){\n\t\t\tif (!compilation[key] && compilation[key] !== false)\n\t\t\t\tcompilation[key] = origins[i][key];\n\t\t}\n\t}\n\t\n\tif (has_constructor)\n\t\tconstruct.push(compilation.$init);\n\t\n\t\n\tcompilation.$init = function(){\n\t\tfor (var i=0; i { this._hide_tooltip(); });\n\t\t\tthis._click_event = attachEvent(\"onClick\", () => { this._hide_tooltip(); });\n\t\t}\n\t},\n\tgetTooltip:function(){\n\t\treturn this._tooltip;\n\t},\n\t_move_tooltip:function(e){\n\t\tlet node = e.target || e.srcElement;\n\t\tlet text;\n\t\twhile (node instanceof Element && node.tagName != \"HTML\"){\n\t\t\tif ( this._tooltip_masters[node.webix_tooltip] ){\n\t\t\t\tif(this._last && this._last != node){\n\t\t\t\t\tthis.$tooltipOut(this._last,node,e);\n\t\t\t\t\tthis._last = null;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif(!this._last)\n\t\t\t\t\tthis._last = this.$tooltipIn(node,e);\n\t\t\t\tthis.$tooltipMove(node,e,text);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttext = text || node.getAttribute(\"webix_tooltip\");\n\t\t\tnode = node.parentElement;\n\t\t}\n\t\tif (this._last)\n\t\t\tthis._last = this.$tooltipOut(this._last,null,e);\n\t},\n\t_hide_tooltip:function(){\n\t\tclearTimeout(this._before_show_delay);\n\t\tthis._tooltip.hide();\n\t},\n\tgetMaster:function(t){\n\t\treturn this._tooltip_masters[t.webix_tooltip];\n\t},\n\tremoveTooltip:function(target){\n\t\tlet node;\n\t\tassert(target, \"Target isn't defined\");\n\n\t\ttarget = toNode(target);\n\t\tif (target instanceof Element)\n\t\t\tnode = target;\n\t\telse node = target.$view;\n\n\t\tconst tip = node.webix_tooltip;\n\t\tif (tip){\n\t\t\tif (this._last == node){\n\t\t\t\tthis._hide_tooltip();\n\t\t\t\tthis._last = null;\n\t\t\t}\n\t\t\tdelete node.webix_tooltip;\n\t\t\tthis._tooltip_exist--;\n\n\t\t\tthis._tooltip_masters[tip] = null;\n\t\t}\n\n\t\tif (!this._tooltip_exist && this._tooltip){\n\t\t\t// detach events first\n\t\t\tthis._webix_tooltip_mm = eventRemove(this._webix_tooltip_mm);\n\t\t\tthis._webix_tooltip_ml = eventRemove(this._webix_tooltip_ml);\n\t\t\tthis._drag_event = detachEvent(this._drag_event);\n\t\t\tthis._click_event = detachEvent(this._click_event);\n\n\t\t\t// then destroy the tooltip\n\t\t\tthis._tooltip.destructor();\n\t\t\tthis._tooltip = this._last = null;\n\t\t\tthis._tooltip_masters = _to_array([\"dummy\"]);\n\t\t}\n\t},\n\n\t$tooltipIn:function(t,e){\n\t\tlet m = this._tooltip_masters[t.webix_tooltip];\n\t\tif (m.$tooltipIn && m!=this) return m.$tooltipIn(t,e);\n\t\tthis._tooltip.define( { dx:20, dy:0, template:t.getAttribute(\"webix_tooltip\")||\"\", css:\"\"} );\n\t\treturn t;\n\t},\n\t$tooltipOut:function(t,n,e){\n\t\tlet m = this._tooltip_masters[t.webix_tooltip];\n\t\tif (m.$tooltipOut && m!=this) return m.$tooltipOut(t,n,e);\n\t\tthis._hide_tooltip();\n\t\treturn null;\n\t},\n\t$tooltipMove:function(t,e,text){\n\t\tlet m = this._tooltip_masters[t.webix_tooltip];\n\t\tif (m.$tooltipMove && m!=this) return m.$tooltipMove(t,e,text);\n\t\tthis._tooltip.hide();\n\t\tclearTimeout(this._before_show_delay);\n\t\tthis._before_show_delay = delay(this._tooltip.show,this._tooltip,[text||{},getPos(e)],this.delay);\n\t}\n\n};\n\nexport default TooltipControl;","import env from \"../webix/env\";\nimport state from \"../core/state\";\n\nimport {event} from \"../webix/htmlevents\";\nimport {callEvent} from \"../webix/customevents\";\n\nimport {use} from \"../services\";\n\nexport function _uid(name){\n\treturn \"$\"+name+(_namecount[name] = (_namecount[name]||0)+1);\n}\nconst _namecount = {};\n\nvar _freeze_resize = false;\nexport function freeze(handler, trigger){\n\t_freeze_resize = true;\n\tvar res = handler();\n\tif (res && res.then){\n\t\tres = res.then(function(any){\n\t\t\t_freeze_resize = false;\n\t\t\tif (trigger !== false)\n\t\t\t\tresize();\n\t\t\treturn any;\n\t\t});\n\t} else {\n\t\t_freeze_resize = false;\n\t\tif (trigger !== false)\n\t\t\tresize();\n\t}\n\treturn res;\n}\n\nexport function resize(){\n\tuse(\"UIManager\").applyChanges();\n\tcallEvent(\"onClick\",[]);\n\tstate._force_resize = true;\n\tif (!_freeze_resize)\n\t\tfor (var i=state.top_views.length - 1; i>=0; i--){\n\t\t\tif (state.top_views[i].obj)\n\t\t\t\tstate.top_views[i].obj.resize();\n\t\t}\n\tstate._force_resize = false;\n}\n\nexport function _each(parent, logic, master, include){\n\tif (parent){\n\t\tvar children = include ? [parent] : parent.getChildViews();\n\t\tfor (var i = 0; i < children.length; i++){\n\t\t\tif (logic.call((master), children[i]) !== false)\n\t\t\t\t_each(children[i], logic, master);\n\t\t}\n\t}\n}\n\nexport function zIndex(){\n\treturn env.zIndexBase++;\n}\n\nevent(window, \"resize\", function() {\n\t// check for virtual keyboard\n\tif(env.touch && ( state._edit_open_time && (new Date())-state._edit_open_time < 1000 || state._focus_time && (new Date())-state._focus_time < 1000)){\n\t\treturn;\n\t} else {\n\t\tresize();\n\t}\n});","import {assert} from \"./debug\";\nimport {event} from \"./htmlevents\";\nimport env from \"./env.js\";\nimport {isArray, delay} from \"./helpers.js\";\n\nimport {callEvent, attachEvent} from \"./customevents.js\";\n\nfunction ready(code){\n\tif (_ready) code.call();\n\telse _ready_code.push(code);\n}\nlet _ready = false;\nlet _ready_code = [];\n\n//autodetect codebase folder\nvar temp = document.getElementsByTagName(\"SCRIPT\");\t//current script, most probably\nassert(temp.length,\"Can't locate codebase\");\nif (temp.length){\n\t//full path to script\n\ttemp = (temp[temp.length-1].getAttribute(\"src\")||\"\").split(\"/\");\n\t//get folder name\n\ttemp.splice(temp.length-1, 1);\n\tenv.codebase = temp.slice(0, temp.length).join(\"/\")+\"/\";\n}\n\nvar handler = function(){\n\tif(env.isIE)\n\t\tdocument.body.className += \" webix_ie\";\n\tcallEvent(\"onReady\",[]);\n};\n\nvar doit = function(){\n\t_ready = true;\n\n\t/* global webix_ready */ \n\tif (window.webix_ready && isArray(webix_ready))\n\t\t_ready_code = webix_ready.concat(_ready_code);\n\n\tfor (var i=0; i < _ready_code.length; i++)\n\t\t_ready_code[i].call();\n\t_ready_code=[];\n};\n\nattachEvent(\"onReady\", function(force){\n\tif (force) \n\t\tdoit();\n\telse \n\t\tdelay(doit);\n});\n\nif (document.readyState == \"complete\") handler();\nelse event(window, \"load\", handler);\n\nready(function(){\n\tevent(document.body,\"click\", function(e){\n\t\tcallEvent(\"onClick\",[e||window.event]);\n\t});\n});\n\n\nexport default ready;","import ready from \"../webix/ready\";\n\nimport {assert} from \"../webix/debug\";\nimport {event, _event} from \"../webix/htmlevents\";\nimport {bind,delay,uid,_power_array,isUndefined,isArray} from \"../webix/helpers\";\nimport {callEvent} from \"../webix/customevents\";\nimport {locate,preventEvent} from \"../webix/html\";\n\nimport {$$} from \"../ui/core\";\nimport state from \"../core/state\";\n\nimport {define} from \"../services\";\n\n\nconst UIManager = {\n\t_view: null,\n\t_hotkeys: {},\n\t_focus_time:0,\n\t_tab_time:0,\n\t_mouse_time:0,\n\t_controls: {\n\t\t\"enter\": 13,\n\t\t\"tab\": 9,\n\t\t\"esc\": 27,\n\t\t\"escape\": 27,\n\t\t\"up\": 38,\n\t\t\"down\": 40,\n\t\t\"left\": 37,\n\t\t\"right\": 39,\n\t\t\"pgdown\": 34,\n\t\t\"pagedown\": 34,\n\t\t\"pgup\": 33,\n\t\t\"pageup\": 33,\n\t\t\"end\": 35,\n\t\t\"home\": 36,\n\t\t\"insert\": 45,\n\t\t\"delete\": 46,\n\t\t\"backspace\": 8,\n\t\t\"space\": 32,\n\t\t\"meta\": 91,\n\t\t\"win\": 91,\n\t\t\"mac\": 91,\n\t\t\"multiply\": 106,\n\t\t\"add\": 107,\n\t\t\"subtract\": 109,\n\t\t\"decimal\": 110,\n\t\t\"divide\": 111,\n\t\t\"scrollock\":145,\n\t\t\"pausebreak\":19,\n\t\t\"numlock\":144,\n\t\t\"5numlocked\":12,\n\t\t\"shift\":16,\n\t\t\"capslock\":20\n\t},\n\t_inputs:{\n\t\t\"input\": 1,\n\t\t\"button\":1,\n\t\t\"textarea\":1,\n\t\t\"select\":1\n\t},\n\t_enable: function() {\n\t\t// attaching events here\n\t\tevent(document.body, \"click\", bind(this._focus_click, this));\n\t\tevent(document, \"keydown\", bind(this._keypress, this));\n\t\t_event(document.body, \"mousedown\", bind(function(){ this._mouse_time = new Date();}, this));\n\n\t\tif (document.body.addEventListener)\n\t\t\tevent(document.body, \"focus\", this._focus_tab, { capture:true, bind: this });\n\n\t\tstate.destructors.push({obj:this});\n\t},\n\tdestructor:function(){\n\t\tUIManager._view = null;\n\t},\n\tgetFocus: function() {\n\t\treturn this._view;\n\t},\n\t_focus_action:function(view){\n\t\tthis._focus_was_there = this._focus_was_there || view._settings.id;\n\t},\n\tsetFocus: function(view, only_api, tab){\n\t\t//view can be empty\n\t\tview = $$(view);\n\t\t//unfocus if view is hidden\n\t\tif (view && !view.$view) view = null;\n\n\t\t//store last click time, it is necessary to prevent refocusing\n\t\t//for example when user moves focus from onclick handler somewher\n\t\t//and we want to prevent autofocusing, when event will reach document.body\n\t\tthis._focus_time = state._focus_time = new Date();\n\n\t\tif (this._view === view) return true;\n\t\tif (this._view && this._view.callEvent)\n\t\t\tthis._view.callEvent(\"onBlur\", [this._view]);\n\n\t\tif (view && view.callEvent){\n\t\t\tview.callEvent(\"onFocus\", [view, this._view]);\n\t\t\tif(tab) view.callEvent(\"onTabFocus\", [view, this._view]);\n\t\t}\n\t\tcallEvent(\"onFocusChange\", [view, this._view]);\n\n\t\tif (this._view && this._view.blur && !only_api) this._view.blur();\n\t\tthis._view = view;\n\t\tif (view && view.focus && !only_api) view.focus();\n\t\treturn true;\n\t},\n\tapplyChanges: function(element){\n\t\tvar view = this.getFocus();\n\t\tif (view && view != element && view._applyChanges)\n\t\t\tview._applyChanges(element);\n\t},\n\thasFocus: function(view) {\n\t\treturn (view === this._view) ? true : false;\n\t},\n\t_focus: function(e, dont_clear) {\n\t\tvar view = locate(e, /*@attr*/\"view_id\") || this._focus_was_there;\n\n\t\t//if html was repainted we can miss the view, so checking last processed one\n\t\tview = $$(view);\n\t\tthis._focus_was_there = null;\n\n\t\t//set timer, to fix issue with Android input focusin\n\t\tstate._focus_time = new Date();\n\n\t\tif (view == this._view) return;\n\n\t\tif (!dont_clear)\n\t\t\tthis._focus_was_there = null;\n\t\t\n\t\tif (view){\n\t\t\tview = $$(view);\n\t\t\tif (this.canFocus(view)){\n\t\t\t\tthis.setFocus(view);\n\t\t\t}\n\t\t} else if (!dont_clear)\n\t\t\tthis.setFocus(null);\n\n\t\treturn true;\n\t},\n\t_focus_click:function(e){\n\t\t// if it was onfocus/onclick less then 100ms behore then we ignore it\n\t\tif ((new Date())-this._focus_time < 100) {\n\t\t\tthis._focus_was_there = null;\n\t\t\treturn false;\n\t\t}\n\t\treturn this._focus(e);\n\t},\n\t_focus_tab: function(e) {\n\t\tif(!this._inputs[e.target.nodeName.toLowerCase()])\n\t\t\treturn false;\n\t\treturn this._focus(e, true);\n\t},\n\t_top_modal: function(view){\n\t\tif(!document.querySelector(\".webix_modal\"))\n\t\t\treturn true;\n\n\t\tconst win = view.queryView(a => a.config.modal, \"parent\");\n\t\treturn (win && win.$view.style.zIndex >= state._modality);\n\t},\n\tcanFocus:function(view){\n\t\treturn view.isVisible() && view.isEnabled() && !view.config.disabled && this._top_modal(view) && !view.queryView({disabled:true}, \"parent\");\n\t},\n\n\t_moveChildFocus: function(check_view){\n\t\tvar focus = this.getFocus();\n\t\t//we have not focus inside of closing item\n\t\tif (check_view && !this._is_child_of(check_view, focus))\n\t\t\treturn false;\n\n\t\tif (!this._focus_logic(\"getPrev\", check_view))\n\t\t\tthis._view = null;\n\t},\n\t_translation_table:{\n\t},\n\t_is_child_of: function(parent, child) {\n\t\tif (!parent) return false;\n\t\tif (!child) return false;\n\t\twhile (child) {\n\t\t\tif (child === parent) return true;\n\t\t\tchild = child.getParentView();\n\t\t}\n\t\treturn false;\n\t},\n\t_keypress_timed:function(){\n\t\tif (this && this.callEvent)\n\t\t\tthis.callEvent(\"onTimedKeyPress\",[]);\n\t},\n\t_isNumPad: function(code){\n\t\treturn code < 112 && code>105;\n\t},\n\t_keypress: function(e) {\n\t\tvar code = e.which || e.keyCode;\n\t\tif(code>95 && code< 106)\n\t\t\tcode -= 48; //numpad support (numbers)\n\t\tcode = this._translation_table[code] || code;\n\t\t\n\t\tvar ctrl = e.ctrlKey;\n\t\tvar shift = e.shiftKey;\n\t\tvar alt = e.altKey;\n\t\tvar meta = e.metaKey;\n\t\tvar codeid = this._keycode(code, ctrl, shift, alt, meta);\n\t\tvar view = this.getFocus();\n\t\tif (view && view.callEvent) {\n\t\t\tif (view.callEvent(\"onKeyPress\", [code,e]) === false)\n\t\t\t\tpreventEvent(e);\n\t\t\tif (view.hasEvent(\"onTimedKeyPress\")){\n\t\t\t\tclearTimeout(view._key_press_timeout);\n\t\t\t\tview._key_press_timeout = delay(this._keypress_timed, view, [], (view._settings.keyPressTimeout||250));\n\t\t\t}\n\t\t}\n\n\t\tif(!this._isNumPad(code))\n\t\t\tcodeid = this._keycode(String.fromCharCode(code), ctrl, shift, alt, meta);\n\t\t//flag, that some non-special key was pressed\n\t\tvar is_any = !ctrl && !alt && !meta && (code!=9)&&(code!=27)&&(code!=13);\n\n\t\tif (this._check_keycode(codeid, is_any, e) === false) {\n\t\t\tpreventEvent(e);\n\t\t\treturn false;\n\t\t}\n\t},\n\n\t// dir - getNext or getPrev\n\t_focus_logic: function(dir, focus) {\n\t\tvar next = focus||this.getFocus();\n\t\tif(next){\n\t\t\tdir = dir || \"getNext\";\n\t\t\tvar start = next;\n\t\t\tvar marker = uid();\n\n\t\t\twhile (true) { // eslint-disable-line\n\t\t\t\tnext = this[dir](next);\n\t\t\t\t// view with focus ability\n\t\t\t\tif (next && this.canFocus(next))\n\t\t\t\t\treturn this.setFocus(next);\n\n\t\t\t\t// elements with focus ability not found\n\t\t\t\tif (next === start || next.$fmarker == marker){\n\t\t\t\t\tif(focus)\n\t\t\t\t\t\tdocument.activeElement.blur();\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t//prevents infinity loop\n\t\t\t\tnext.$fmarker = marker;\n\t\t\t}\n\t\t}\n\t},\n\t_tab_logic:function(view, e){\n\t\tvar mode = !e.shiftKey;\n\t\tUIManager._tab_time = new Date();\n\t\tif (view && view._custom_tab_handler && !view._custom_tab_handler(mode, e))\n\t\t\treturn false;\n\n\t\tif (view && view._in_edit_mode){\n\t\t\tif (view.editNext)\n\t\t\t\treturn view.editNext(mode);\n\t\t\telse if (view.editStop){\n\t\t\t\tview.editStop();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else\n\t\t\tdelay(function(){\n\t\t\t\tview = $$(document.activeElement);\n\t\t\t\tif(view && !UIManager.canFocus(view))\n\t\t\t\t\treturn UIManager._focus_logic(mode ? \"getNext\" : \"getPrev\", view);\n\t\t\t\tUIManager.setFocus(view, true, true);\n\t\t\t});\n\t},\n\tgetTop: function(id) {\n\t\tvar next, view = $$(id);\n\n\t\twhile (view && (next = view.getParentView()))\n\t\t\tview = next;\n\t\treturn view;\n\t},\n\n\tgetNext: function(view, _inner_call) {\n\t\tvar cells = view.getChildViews();\n\t\t//tab to first children\n\t\tif (cells.length && !_inner_call)\n\t\t\tfor (var i = 0; i < cells.length; i++)\n\t\t\t\tif(this.canFocus(cells[i]))\n\t\t\t\t\treturn cells[i];\n\n\t\t//unique case - single view without child and parent\n\t\tvar parent = view.getParentView();\n\t\tif (!parent)\n\t\t\treturn view;\n\n\t\tvar p_cells = parent.getChildViews();\n\t\tif (p_cells.length){\n\t\t\tvar index = _power_array.find.call(p_cells, view)+1;\n\t\t\twhile (index < p_cells.length) {\n\t\t\t\t//next visible child\n\t\t\t\tif (this.canFocus(p_cells[index])) \n\t\t\t\t\treturn p_cells[index];\n\n\t\t\t\tindex++;\n\t\t\t}\n\t\t} \n\n\t\t//sibling of parent\n\t\treturn this.getNext(parent, true);\n\t},\n\n\tgetPrev: function(view, _inner_call) {\n\t\tvar cells = view.getChildViews();\n\t\t//last child of last child\n\t\tif (cells.length && _inner_call)\n\t\t\tfor (var i = cells.length - 1; i >= 0; i--)\n\t\t\t\tif(this.canFocus(cells[i]))\n\t\t\t\t\treturn this.getPrev(cells[i], true);\n\n\t\tif (_inner_call && this.canFocus(view)) return view;\n\n\t\t//fallback from top to bottom\n\t\tvar parent = view.getParentView();\n\t\tif (!parent)\n\t\t\treturn this.canFocus(view) ? this.getPrev(view, true) : view;\n\n\t\tvar p_cells = parent.getChildViews();\n\t\tif (p_cells) {\n\t\t\tvar index = _power_array.find.call(p_cells, view)-1;\n\t\t\twhile (index >= 0) {\n\t\t\t\tif (this.canFocus(p_cells[index]))\n\t\t\t\t\treturn this.getPrev(p_cells[index], true);\n\t\t\t\tindex--;\n\t\t\t}\n\t\t}\n\n\t\treturn this.getPrev(parent, true);\n\t},\n\taddHotKey: function(keys, handler, view) {\n\t\tassert(handler, \"Hot key handler is not defined\");\n\t\tvar pack = this._parse_keys(keys);\n\t\tassert(pack.letter, \"Unknown key code\");\n\t\tif (!view) view = null;\n\t\tpack.handler = handler;\n\t\tpack.view = view;\n\t\t\n\n\t\tvar code = this._keycode(pack.letter, pack.ctrl, pack.shift, pack.alt, pack.meta);\n\t\tif (!this._hotkeys[code]) this._hotkeys[code] = [];\n\t\tthis._hotkeys[code].push(pack);\n\n\t\treturn keys;\n\t},\n\tremoveHotKey: function(keys, func, view){\n\t\tvar pack = this._parse_keys(keys);\n\t\tvar code = this._keycode(pack.letter, pack.ctrl, pack.shift, pack.alt, pack.meta);\n\t\tif (!func && !view)\n\t\t\tdelete this._hotkeys[code];\n\t\telse {\n\t\t\tvar t = this._hotkeys[code];\n\t\t\tif (t){\n\t\t\t\tfor (var i = t.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (view && t[i].view !== view) continue;\n\t\t\t\t\tif (func && t[i].handler !== func) continue;\n\t\t\t\t\tt.splice(i,1);\n\t\t\t\t}\n\t\t\t\tif (!t.length)\n\t\t\t\t\tdelete this._hotkeys[code];\n\t\t\t}\n\n\t\t}\n\t},\n\t_keycode: function(code, ctrl, shift, alt, meta) {\n\t\treturn code+\"_\"+[\"\", (ctrl ? \"1\" : \"0\"), (shift ? \"1\" : \"0\"), (alt ? \"1\" : \"0\"), (meta ? \"1\" : \"0\")].join(\"\");\n\t},\n\n\t_check_keycode: function(code, is_any, e){\n\t\tvar focus = this.getFocus();\n\t\tif (this._hotkeys[code])\n\t\t\treturn this._process_calls(this._hotkeys[code], focus, e);\n\t\telse if (is_any && this._hotkeys[\"ANY_0000\"])\n\t\t\treturn this._process_calls(this._hotkeys[\"ANY_0000\"], focus, e);\n\n\t\treturn true;\n\t},\n\t_process_calls:function(calls, focus, e){\n\t\tfor (var i = 0; i < calls.length; i++) {\n\t\t\tvar key = calls[i];\n\t\t\tif ((key.view !== null) &&\t\t//common hot-key\n\t\t\t\t(focus !== key.view) &&\t\t//hot-key for current view\n\t\t\t\t//hotkey for current type of view\n\t\t\t\t(typeof(key.view) !== \"string\" || !focus || focus.name !== key.view)) continue;\n\n\t\t\tvar temp_result = key.handler(focus, e);\n\t\t\tif (!!temp_result === temp_result) return temp_result;\n\t\t}\n\t\treturn true;\n\t},\n\t_parse_keys: function(keys) {\n\t\tvar controls = this._controls;\n\t\tvar parts = keys.toLowerCase().split(/[+\\-_]/);\n\t\tvar ctrl, shift, alt, meta;\n\t\tctrl = shift = alt = meta = 0;\n\t\tvar letter = \"\";\n\t\tfor (var i = 0; i < parts.length; i++) {\n\t\t\tif (parts[i] === \"ctrl\") ctrl = 1;\n\t\t\telse if (parts[i] === \"shift\") shift = 1;\n\t\t\telse if (parts[i] === \"alt\") alt = 1;\n\t\t\telse if (parts[i] === \"command\") meta = 1;\n\t\t\telse {\n\t\t\t\tif (controls[parts[i]]) {\n\t\t\t\t\tvar code = controls[parts[i]];\n\t\t\t\t\tif(this._isNumPad(code))\n\t\t\t\t\t\tletter = code.toString();\n\t\t\t\t\telse\n\t\t\t\t\t\tletter = String.fromCharCode(code);\n\t\t\t\t} else {\n\t\t\t\t\tletter = parts[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tletter: letter.toUpperCase(),\n\t\t\tctrl: ctrl,\n\t\t\tshift: shift,\n\t\t\talt: alt,\n\t\t\tmeta: meta,\n\t\t\tdebug:keys\n\t\t};\n\t},\n\tgetState:function(node, children) {\n\t\tchildren = (children||false);\n\t\tnode = $$(node);\n\t\tvar state = {\n\t\t\tid: node.config.id,\n\t\t\twidth: node.config.width,\n\t\t\theight: node.config.height,\n\t\t\tgravity: node.config.gravity\n\t\t};\n\t\tif (!isUndefined(node.config.collapsed)) state.collapsed = node.config.collapsed;\n\t\tif (node.name === \"tabs\" || node.name === \"tabbar\") state.activeCell = node.getValue();\n\t\t\n\t\tif (children) {\n\t\t\tstate = [state];\n\t\t\tif (node._cells) {\n\t\t\t\tfor (var i = 0; i < node._cells.length; i++)\n\t\t\t\t\tstate = state.concat(this.getState(node._cells[i], children));\n\t\t\t}\n\t\t}\n\t\treturn state;\n\t},\n\tsetState:function(states) {\n\t\tif (!isArray(states)) states = [states];\n\t\n\t\tfor (var i = 0; i < states.length; i++) {\n\t\t\tvar state = states[i];\n\t\t\tvar node = $$(state.id);\n\t\t\tif (!node) continue;\n\t\n\t\t\tif (!isUndefined(state.collapsed)) node.define(\"collapsed\", state.collapsed);\n\t\t\tif (!isUndefined(state.activeCell)) node.setValue(state.activeCell);\n\t\n\t\t\tnode.define(\"width\", state.width);\n\t\t\tnode.define(\"height\", state.height);\n\t\t\tnode.define(\"gravity\", state.gravity);\n\t\t}\n\t\tvar top = $$(states[0].id);\n\t\tif (top) top.resize();\n\t}\n};\n\nready(function() {\n\tUIManager._enable();\n\n\tUIManager.addHotKey(\"enter\", function(view, ev){\n\t\tif (view && view.callEvent)\n\t\t\tview.callEvent(\"onEnter\", [ev]);\n\t\tif (view && view.editStop && view._in_edit_mode){\n\t\t\tview.editStop();\n\t\t\treturn true;\n\t\t} else if (view && view.touchable){\n\t\t\tvar form = view.getFormView();\n\t\t\tif (form && !view._skipSubmit)\n\t\t\t\tform.callEvent(\"onSubmit\",[view,ev]);\n\t\t}\n\t});\n\tUIManager.addHotKey(\"esc\", function(view){\n\t\tif (view){\n\t\t\tif (view.editCancel && view._in_edit_mode){\n\t\t\t\tview.editCancel();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvar top = view.getTopParentView();\n\t\t\tif (top && top.setPosition)\n\t\t\t\ttop._hide();\n\t\t}\n\t});\n\tUIManager.addHotKey(\"shift+tab\", UIManager._tab_logic);\n\tUIManager.addHotKey(\"tab\", UIManager._tab_logic);\n});\n\ndefine(\"UIManager\", UIManager);\n\nexport default UIManager;","import {extend} from \"../webix/helpers\";\n\nconst Settings={\n\t$init:function(){\n\t\t/* \n\t\t\tproperty can be accessed as this.config.some\n\t\t\tin same time for inner call it have sense to use _settings\n\t\t\tbecause it will be minified in final version\n\t\t*/\n\t\tthis._settings = this.config= {}; \n\t},\n\tdefine:function(property, value){\n\t\tif (typeof property == \"object\")\n\t\t\treturn this._parseSeetingColl(property);\n\t\treturn this._define(property, value);\n\t},\n\t_define:function(property,value){\n\t\t//method with name {prop}_setter will be used as property setter\n\t\t//setter is optional\n\t\tvar setter = this[property+\"_setter\"];\n\t\treturn (this._settings[property]=setter?setter.call(this,value,property):value);\n\t},\n\t//process configuration object\n\t_parseSeetingColl:function(coll){\n\t\tif (coll){\n\t\t\tfor (var a in coll)\t\t\t\t//for each setting\n\t\t\t\tthis._define(a,coll[a]);\t\t//set value through config\n\t\t}\n\t},\n\t//helper for object initialization\n\t_parseSettings:function(obj,initial){\n\t\t//initial - set of default values\n\t\tvar settings = {}; \n\t\tif (initial)\n\t\t\tsettings = extend(settings,initial);\n\t\t\t\t\t\n\t\t//code below will copy all properties over default one\n\t\tif (typeof obj == \"object\" && !obj.tagName)\n\t\t\textend(settings,obj, true);\t\n\t\t//call config for each setting\n\t\tthis._parseSeetingColl(settings);\n\t},\n\t_mergeSettings:function(config, defaults){\n\t\tfor (var key in defaults)\n\t\t\tswitch(typeof config[key]){\n\t\t\t\tcase \"object\": \n\t\t\t\t\tconfig[key] = this._mergeSettings((config[key]||{}), defaults[key]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"undefined\":\n\t\t\t\t\tconfig[key] = defaults[key];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\t//do nothing\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\treturn config;\n\t}\n};\n\nexport default Settings;","import state from \"./state\";\n\nimport {_to_array} from \"../webix/helpers\";\nimport {event, _events_final_destructor} from \"../webix/htmlevents\";\nimport {callEvent} from \"../webix/customevents\";\n\nimport {ui} from \"../ui/core\";\nimport UIManager from \"../core/uimanager\";\n\n\nconst Destruction = {\n\t$init:function(){\n\t\t//wrap in object to simplify removing self-reference\n\t\tvar t = this._destructor_handler = { obj: this};\n\n\t\t//register self in global list of destructors\n\t\tstate.destructors.push(t);\n\t},\n\t//will be called automatically on unload, can be called manually\n\t//simplifies job of GC\n\tdestructor:function(){\n\t\tvar config = this._settings;\n\n\t\tif (this._last_editor)\n\t\t\tthis.editCancel();\n\n\t\tif(this.callEvent)\n\t\t\tthis.callEvent(\"onDestruct\",[]);\n\n\t\t//destructor can be called only once\n\t\tthis.destructor=function(){};\n\t\t//remove self reference from global destructions collection\n\t\tthis._destructor_handler.obj = null;\n\n\t\t//destroy child and related cells\n\t\tif (this.getChildViews){\n\t\t\tvar cells = this.getChildViews();\n\t\t\tif (cells)\n\t\t\t\tfor (let i=0; i < cells.length; i++)\n\t\t\t\t\tcells[i].destructor();\n\n\t\t\tif (this._destroy_with_me)\n\t\t\t\tfor (let i=0; i < this._destroy_with_me.length; i++)\n\t\t\t\t\tthis._destroy_with_me[i].destructor();\n\t\t}\n\n\t\tdelete ui.views[config.id];\n\n\t\tif (config.$id){\n\t\t\tvar top = this.getTopParentView();\n\t\t\tif (top && top._destroy_child)\n\t\t\t\ttop._destroy_child(config.$id);\n\t\t}\n\n\t\t//html collection\n\t\tthis._htmlmap = null;\n\t\tthis._htmlrows = null;\n\t\tthis._html = null;\n\n\n\t\tif (this._contentobj) {\n\t\t\tthis._contentobj.innerHTML=\"\";\n\t\t\tthis._contentobj._htmlmap = null;\n\t\t}\n\n\t\t//removes view container\n\t\tif (this._viewobj&&this._viewobj.parentNode){\n\t\t\tthis._viewobj.parentNode.removeChild(this._viewobj);\n\t\t}\n\n\t\tif (this.data && this.data.destructor)\n\t\t\tthis.data.destructor();\n\n\t\tif (this.unbind)\n\t\t\tthis.unbind();\n\n\t\tthis.data = null;\n\t\tthis._viewobj = this.$view = this._contentobj = this._dataobj = null;\n\t\tthis._evs_events = this._evs_handlers = {};\n\n\t\t//remove focus from destructed view\n\t\tif (UIManager._view == this)\n\t\t\tUIManager._view = null;\n\n\t\tvar url = config.url;\n\t\tif (url && url.$proxy && url.release)\n\t\t\turl.release();\n\n\t\tthis.$scope = null;\n\t\t// this flag is checked in delay method\n\t\tthis.$destructed = true;\n\t}\n};\n//global list of destructors\nevent(window,\"unload\",function(){\n\tcallEvent(\"unload\", []);\n\tstate._final_destruction = true;\n\t\n\t//call all registered destructors\n\tfor (var i=0; ix) x = sizes[0];\n\t\t//minHeight\n\t\tif (sizes[2]>y) y = sizes[2];\n\n\t\t//maxWidth rule\n\t\tif ((!fullscreen || this._settings.width) && x>sizes[1]) x = sizes[1];\n\t\t//maxHeight rule\n\t\tif ((!fullscreen || this._settings.height) && y>sizes[3]) y = sizes[3];\n\n\t\tthis.$setSize(x,y);\n\t\tif (state._responsive_exception){\n\t\t\tstate._responsive_exception = false;\n\t\t\tthis.adjust();\n\t\t}\n\t},\n\tresize:function(){\n\t\tif (state._child_sizing_active || state._freeze_resize || state._responsive_tinkery ) return;\n\n\t\tvar parent = this.getParentView();\n\t\tif (parent){\n\t\t\tif (parent.resizeChildren)\n\t\t\t\tparent.resizeChildren();\n\t\t\telse\n\t\t\t\tparent.resize();\n\t\t} else {\n\t\t\tthis.adjust();\n\t\t\tcallEvent(\"onResize\",[]);\n\t\t}\n\t}\n};\n\nconst view = protoUI(api, Settings, Destruction, BaseBind, UIExtension);\nexport default { api, view };","import {isUndefined} from \"../webix/helpers\";\nimport {debug_size_box} from \"../webix/debug\";\nimport {protoUI} from \"../ui/core\";\n\nimport base from \"./baseview\";\n\nconst api = {\n\tname:\"view\",\n\t$init:function(config){\n\t\tthis._set_inner(config);\n\t},\n\n\t//deside, will component use borders or not\n\t_set_inner:function(config){\n\t\tvar border_not_set = isUndefined(config.borderless);\n\t\tif (border_not_set && !this.setPosition && config.$topView){\n\t\t\tconfig.borderless = true;\n\t\t\tborder_not_set = false;\n\t\t}\n\n\t\tif ((border_not_set && this.defaults.borderless) || config.borderless){\n\t\t\t//button and custom borderless\n\t\t\tconfig._inner = { top:true, left:true, bottom:true, right:true };\n\t\t} else {\n\t\t\t//default borders\n\t\t\tif (!config._inner)\n\t\t\t\tconfig._inner = {};\n\t\t\tthis._contentobj.style.borderWidth=\"1px\";\n\t\t}\n\t},\n\n\t$getSize:function(dx, dy){\n\n\t\tvar _borders = this._settings._inner;\n\t\tif (_borders){\n\t\t\tdx += (_borders.left?0:1)+(_borders.right?0:1);\n\t\t\tdy += (_borders.top?0:1)+(_borders.bottom?0:1);\n\t\t}\n\t\t\n\t\tvar size = base.api.$getSize.call(this, dx, dy);\n\t\t\n\t\tif (DEBUG) debug_size_box(this, size, true);\n\t\treturn size;\n\t},\n\t$setSize:function(x,y){\n\t\tif (DEBUG) debug_size_box(this, [x,y]);\n\t\t\t\n\t\tvar _borders = this._settings._inner;\n\t\tif (_borders){\n\t\t\tx -= (_borders.left?0:1)+(_borders.right?0:1);\n\t\t\ty -= (_borders.top?0:1)+(_borders.bottom?0:1);\n\t\t}\n\t\t\t\n\t\treturn base.api.$setSize.call(this,x,y);\n\t}\n};\n\nconst view = protoUI(api, base.view);\nexport default { api, view };\n\n//not necessary anymore\n//preserving for backward compatibility\nview.call(-1);\n","import AtomRender from \"../core/atomrender\";\nimport {proto} from \"../ui/core\";\nimport template from \"../webix/template\";\n\nimport type from \"../webix/type\";\n/*\n\tREnders single item. \n\tCan be used for elements without datastore, or with complex custom rendering logic\n\t\n\t@export\n\t\trender\n*/\n\nconst SingleRender = proto({\n\ttemplate_setter:function(value){\n\t\tthis.type.template=template(value);\n\t},\n\t//convert item to the HTML text\n\t_toHTML:function(obj){\n\t\tvar type = this.type;\n\t\treturn (type.templateStart?type.templateStart(obj,type):\"\") + type.template(obj,type) + (type.templateEnd?type.templateEnd(obj,type):\"\");\n\t},\n\tcustomize:function(obj){\n\t\ttype(this,obj);\n\t}\n}, AtomRender);\n\n\nexport default SingleRender;","import base from \"../views/view\";\nimport SingleRender from \"../core/singlerender\";\nimport Settings from \"../core/settings\";\nimport EventSystem from \"../core/eventsystem\";\nimport {create, createCss, insertBefore} from \"../webix/html\";\nimport {protoUI} from \"../ui/core\";\nimport {extend} from \"../webix/helpers\";\nimport template from \"../webix/template\";\n\n\n/*\n\tUI: Tooltip\n\t\n\t@export\n\t\tshow\n\t\thide\n*/\n\n// #include core/template.js\n// #include core/single_render.js\n\nconst api = {\n\tname:\"tooltip\",\n\tdefaults:{\n\t\tdy:0,\n\t\tdx:20\n\t},\n\t$init:function(config){\n\t\tif (typeof config == \"string\"){\n\t\t\tconfig = { template:config };\n\t\t}\n\n\t\t//create container for future tooltip\n\t\tthis.$view = this._viewobj = this._contentobj = this._dataobj = create(\"DIV\", {role:\"alert\", \"aria-atomic\":\"true\"});\n\t\tthis._contentobj.className = \"webix_tooltip\";\n\t\tinsertBefore(this._contentobj,document.body.firstChild,document.body);\n\t},\n\tadjust:function(){ },\n\tisVisible:function(){\n\t\treturn this._visible;\n\t},\n\t_alt_render:function(text){\n\t\tif (this.callEvent(\"onBeforeRender\",[text])){\n\t\t\t//it is critical to have this as two commands\n\t\t\t//its prevent destruction race in Chrome\n\t\t\tthis._dataobj.innerHTML = \"\";\n\t\t\tthis._dataobj.innerHTML = text;\n\t\t\tthis.callEvent(\"onAfterRender\",[]);\n\t\t}\n\t},\n\tcss_setter:function(value){\n\t\tif (typeof value === \"object\")\n\t\t\tvalue = createCss(value);\n\n\t\tthis._viewobj.className = \"webix_tooltip \"+value;\n\t\treturn value;\n\t},\n\t//show tooltip\n\t//pos - object, pos.x - left, pox.y - top\n\tshow:function(data,pos){\n\t\tif (this._disabled) return;\n\n\t\tthis._visible = true;\n\t\tif (typeof data === \"string\")\n\t\t\tthis._alt_render(data);\n\t\telse {\n\t\t\tthis.data = extend({}, data);\n\t\t\tthis.render();\n\t\t}\n\n\t\tif (this._dataobj.firstChild){\n\t\t\t//show at specified position\n\t\t\tvar w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n\t\t\tvar h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n\t\t\tvar positionX = w - pos.x;\n\t\t\tvar positionY = h - pos.y;\n\n\t\t\tthis._contentobj.style.display = \"block\";\n\t\t\t\n\t\t\tif (positionX - this._settings.dx > this._contentobj.offsetWidth)\n\t\t\t\tpositionX = pos.x;\n\t\t\telse {\n\t\t\t\tpositionX = (pos.x - (this._settings.dx * 2)) - this._contentobj.offsetWidth;\n\t\t\t\tif (positionX < 0) positionX = 0;\n\t\t\t}\n\n\t\t\tif (positionY - this._settings.dy > this._contentobj.offsetHeight)\n\t\t\t\tpositionY = pos.y;\n\t\t\telse {\n\t\t\t\tpositionY = (pos.y - (this._settings.dy * 2)) - this._contentobj.offsetHeight;\n\t\t\t\tif (positionY < 0) positionY = 0;\n\t\t\t}\n\t\t\tthis._contentobj.style.left = positionX+this._settings.dx+\"px\";\n\t\t\tthis._contentobj.style.top = positionY+this._settings.dy+\"px\";\n\t\t} else this.hide();\n\t},\n\t//hide tooltip\n\thide:function(){\n\t\tif (this._visible){\n\t\t\tthis.data = null; //nulify, to be sure that on next show it will be fresh-rendered\n\t\t\tthis._contentobj.style.display = \"none\";\n\t\t\tthis._visible = false;\n\t\t}\n\t},\n\tdisable:function(){\n\t\tthis._disabled = true;\n\t},\n\tenable:function(){\n\t\tthis._disabled = false;\n\t},\n\ttype:{\n\t\ttemplate:template(\"{obj.value}\"),\n\t\ttemplateStart:template.empty,\n\t\ttemplateEnd:template.empty\n\t}\n\n};\n\n\nconst view = protoUI(api, SingleRender, Settings, EventSystem, base.view);\nexport default {api, view};","import {pos as getPos} from \"../webix/html\";\nimport {delay, extend} from \"../webix/helpers\";\nimport TooltipControl from \"../core/tooltipcontrol\";\n\n//indirect UI import\nimport \"../views/tooltip\";\n\n/*\n\tBehavior: AutoTooltip - links tooltip to data driven item\n*/\n\nconst AutoTooltip = {\n\ttooltip_setter:function(value){\n\t\tif (value){\n\t\t\tif (typeof value === \"function\" || typeof value === \"string\")\n\t\t\t\tvalue = { template:value };\n\t\t\tif (typeof value !== \"object\")\n\t\t\t\tvalue = {};\n\n\t\t\tthis._init_tooltip_once();\n\t\t\treturn value;\n\t\t}\n\t},\n\t_init_tooltip_once:function(){\n\t\tTooltipControl.addTooltip(this);\n\t\tthis.attachEvent(\"onDestruct\",function(){\n\t\t\tTooltipControl.removeTooltip(this);\n\t\t});\n\t\tthis.attachEvent(\"onAfterScroll\", function(){\n\t\t\tif (TooltipControl._tooltip_exist)\n\t\t\t\tTooltipControl._hide_tooltip();\n\t\t});\n\n\t\tthis._init_tooltip_once = function(){};\n\t},\n\t$tooltipIn:function(t){\n\t\tlet tooltip = TooltipControl._tooltip;\n\t\tlet def = extend({dx:20, dy:0, template:\"{obj.value}\", css:\"\"}, this._settings.tooltip, true);\n\n\t\ttooltip.define( def );\n\t\treturn t;\n\t},\n\t$tooltipOut:function(){\n\t\tTooltipControl._hide_tooltip();\n\t\treturn null;\n\t},\n\t$tooltipMove:function(t,e,text){\n\t\tTooltipControl._tooltip.hide();\n\n\t\tclearTimeout(TooltipControl._before_show_delay);\n\t\tTooltipControl._before_show_delay = delay(this._show_tooltip,this,[t,e,text],TooltipControl.delay);\n\t},\n\t_show_tooltip:function(t,e,text){\n\t\tlet data = text || this._get_tooltip_data(t,e);\n\t\tif (!data || !this.isVisible())\n\t\t\treturn;\n\n\t\tTooltipControl._tooltip.show(data,getPos(e));\n\t},\n\t_get_tooltip_data:function(t,e){\n\t\tif (this.locate && this.getItem){\n\t\t\tlet id = this.locate(e);\n\t\t\tif (!id) return null;\n\n\t\t\treturn this.getItem(id);\n\t\t}\n\t\treturn this._settings;\n\t}\n};\n\nexport default AutoTooltip;","import {create, remove} from \"../webix/html\";\nimport {isUndefined, toNode} from \"../webix/helpers\";\nimport {proto} from \"../ui/core\";\n\nconst Canvas = proto({\n\t$init:function(container){\n\t\tthis._canvas_labels = [];\n\t\tthis._canvas_series = (!isUndefined(container.series)?container.series:container.name);\n\t\tthis._obj = toNode(container.container||container);\n\t\tvar width = container.width*(window.devicePixelRatio||1);\n\t\tvar height = container.height*(window.devicePixelRatio||1);\n\t\tvar style = container.style||\"\";\n\t\tstyle += \";width:\"+container.width+\"px;height:\"+container.height+\"px;\";\n\t\tthis._prepareCanvas(container.name, style ,width, height, container.title);\n\t},\n\t_prepareCanvas:function(name,style,x,y, title){\n\t\t//canvas has the same size as master object\n\t\tthis._canvas = create(\"canvas\",{ title:title, width:x, height:y, canvas_id:name, style:(style||\"\")});\n\t\tthis._obj.appendChild(this._canvas);\n\t\treturn this._canvas;\n\t}, \n\tgetCanvas:function(context){\n\t\tvar ctx = (this._canvas||this._prepareCanvas(this._contentobj)).getContext(context||\"2d\");\n\t\tif(!this._webixDevicePixelRatio){\n\t\t\tthis._webixDevicePixelRatio = true;\n\t\t\tctx.scale(window.devicePixelRatio||1, window.devicePixelRatio||1);\n\t\t}\n\t\treturn ctx;\n\t},\n\t_resizeCanvas:function(x, y){\n\t\tif (this._canvas){\n\t\t\tthis._canvas.setAttribute(\"width\", x*(window.devicePixelRatio||1));\n\t\t\tthis._canvas.setAttribute(\"height\", y*(window.devicePixelRatio||1));\n\t\t\tthis._canvas.style.width = x+\"px\";\n\t\t\tthis._canvas.style.height = y+\"px\";\n\t\t\tthis._webixDevicePixelRatio = false;\n\t\t}\n\t},\n\trenderText:function(x,y,text,css,w){\n\t\tif (!text) return; //ignore empty text\n\t\tif (w) w = Math.max(w,0);\n\t\tif (y) y = Math.max(y,0);\n\t\tvar t = create(\"DIV\",{\n\t\t\t\"class\":\"webix_canvas_text\"+(css?(\" \"+css):\"\"),\n\t\t\t\"style\":\"left:\"+x+\"px; top:\"+y+\"px;\",\n\t\t\t\"aria-hidden\":\"true\"\n\t\t},text);\n\t\tthis._obj.appendChild(t);\n\t\tthis._canvas_labels.push(t); //destructor?\n\t\tif (w)\n\t\t\tt.style.width = w+\"px\";\n\t\treturn t;\n\t},\n\trenderTextAt:function(valign,align, x,y,t,c,w){\n\t\tvar text=this.renderText.call(this,x,y,t,c,w);\n\t\tif (text){\n\t\t\tif (valign){\n\t\t\t\tif(valign == \"middle\")\n\t\t\t\t\ttext.style.top = parseInt(y-text.offsetHeight/2,10) + \"px\";\n\t\t\t\telse\n\t\t\t\t\ttext.style.top = y-text.offsetHeight + \"px\";\n\t\t\t}\n\t\t\tif (align){\n\t\t\t\tif(align == \"left\")\n\t\t\t\t\ttext.style.left = x-text.offsetWidth + \"px\";\n\t\t\t\telse\n\t\t\t\t\ttext.style.left = parseInt(x-text.offsetWidth/2,10) + \"px\";\n\t\t\t}\n\t\t}\n\t\treturn text;\n\t},\n\tclearCanvas:function(skipMap){\n\t\tvar areas=[];\n\n\t\tremove(this._canvas_labels);\n\t\tthis._canvas_labels = [];\n\n\t\tif (!skipMap&&this._obj._htmlmap){\n\n\t\t\t//areas that correspond this canvas layer\n\t\t\tareas = this._getMapAreas();\n\t\t\t//removes areas of this canvas\n\t\t\twhile(areas.length){\n\t\t\t\tareas[0].parentNode.removeChild(areas[0]);\n\t\t\t\tareas.splice(0,1);\n\t\t\t}\n\t\t\tareas = null;\n\n\t\t\t//removes _htmlmap object if all its child nodes are removed\n\t\t\tif(!this._obj._htmlmap.getElementsByTagName(\"AREA\").length){\n\t\t\t\tthis._obj._htmlmap.parentNode.removeChild(this._obj._htmlmap);\n\t\t\t\tthis._obj._htmlmap = null;\n\t\t\t}\n\t\t}\n\t\t//FF breaks, when we are using clear canvas and call clearRect without parameters\n\t\t//width|height are used insead of offsetWidth|offsetHeight for hidden canvas (series)\n\t\tthis.getCanvas().clearRect(0,0,\n\t\t\tthis._canvas.offsetWidth||Math.floor(this._canvas.width/(window.devicePixelRatio||1)), \n\t\t\tthis._canvas.offsetHeight||Math.floor(this._canvas.height/(window.devicePixelRatio||1))\n\t\t);\n\t},\n\ttoggleCanvas:function(){\n\t\tthis._toggleCanvas(this._canvas.style.display==\"none\");\n\t},\n\tshowCanvas:function(){\n\t\tthis._toggleCanvas(true);\n\t},\n\thideCanvas:function(){\n\t\tthis._toggleCanvas(false);\n\t},\n\t_toggleCanvas:function(show){\n\t\tvar areas, i;\n\n\t\tfor(i=0; i < this._canvas_labels.length;i++)\n\t\t\tthis._canvas_labels[i].style.display = (show?\"\":\"none\");\n\n\t\tif (this._obj._htmlmap){\n\t\t\tareas = this._getMapAreas();\n\t\t\tfor( i = 0; i < areas.length; i++){\n\t\t\t\tif(show)\n\t\t\t\t\tareas[i].removeAttribute(\"disabled\");\n\t\t\t\telse\n\t\t\t\t\tareas[i].setAttribute(\"disabled\",\"true\");\n\t\t\t}\n\t\t}\n\t\t//FF breaks, when we are using clear canvas and call clearRect without parameters\n\t\tthis._canvas.style.display = (show?\"\":\"none\");\n\t},\n\t_getMapAreas:function(){\n\t\tvar res = [], areas, i;\n\t\tareas = this._obj._htmlmap.getElementsByTagName(\"AREA\");\n\t\tfor(i = 0; i < areas.length; i++){\n\t\t\tif(areas[i].getAttribute(\"userdata\") == this._canvas_series){\n\t\t\t\tres.push(areas[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn res;\n\t}\n});\n\nexport default Canvas;","import {insertBefore, remove} from \"../webix/html\";\nimport state from \"../core/state\";\nimport env from \"../webix/env\";\nimport {isArray, clone, toNode, delay} from \"../webix/helpers\";\nimport {event, eventRemove} from \"../webix/htmlevents\";\nimport Settings from \"../core/settings\";\n\n\nconst animate = function(html_element, config){\n\tvar animation = config;\n\tif (isArray(html_element)){\n\t\tfor (var i=0; i < html_element.length; i++) {\n\t\t\tif(isArray(config))\n\t\t\t\tanimation = config[i];\n\n\t\t\tif(animation.type == \"slide\"){\n\t\t\t\tif(animation.subtype == \"out\" && i===0) { // next\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif(animation.subtype == \"in\" && i==1) { // current\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(animation.type == \"flip\"){\n\t\t\t\tvar animation_copy = clone(animation);\n\t\t\t\tif(i===0) { // next\n\t\t\t\t\tanimation_copy.type = \"flipback\";\n\t\t\t\t}\n\t\t\t\tif(i==1) { // current\n\t\t\t\t\tanimation_copy.callback = null;\n\t\t\t\t}\n\t\t\t\tanimate(html_element[i], animation_copy);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tanimate(html_element[i], animation);\n\t\t}\n\t\treturn;\n\t}\n\tvar node = toNode(html_element);\n\tif (node._has_animation)\n\t\tanimate.end(node, animation);\n\telse\n\t\tanimate.start(node, animation);\n};\nanimate.end = function(node, animation){\n\t//stop animation\n\tnode.style[env.transitionDuration] = \"1ms\";\n\tnode._has_animation = null;\n\t//clear animation wait order, if any\n\tif (state._wait_animate)\n\t\twindow.clearTimeout(state._wait_animate);\n\n\t//plan next animation, if any\n\tstate._wait_animate = delay(animate, this, [node,animation],10);\n};\nanimate.isSupported=function(){\n\treturn !state.$testmode && env.transform && env.transition && !env.isOpera;\n};\nanimate.formLine=function(next, current, animation){\n\tvar direction = animation.direction;\n\n\t//sometimes user can initiate animation multiple times ( fast clicking )\n\t//as result animation may be called against already removed from the dom node\n\tif(current.parentNode)\n\t\tcurrent.parentNode.style.position = \"relative\";\n\t\n\tcurrent.style.position = \"absolute\";\n\tnext.style.position = \"absolute\";\n\n\t//this is initial shift of second view in animation\n\t//normally we need to have this value as 0\n\t//but FF has bug with animation initially invisible elements\n\t//so we are adjusting this value, to make 1px of second view visible\n\tvar defAniPos = env.isFF ? ( direction == \"top\" || direction == \"left\" ? -1 : 1) : 0;\n\n\tif(direction==\"top\"||direction==\"bottom\"){\n\t\tnext.style.left=\"0px\";\n\t\tnext.style.top = (animation.top || defAniPos) + (direction==\"top\"?1:-1)*current.offsetHeight+\"px\";\n\t}\n\telse{\n\t\tnext.style.top = (animation.top || 0) + \"px\";\n\t\tnext.style.left = defAniPos + (direction==\"left\"?1:-1)*current.offsetWidth+\"px\";\n\t}\n\n\t// apply 'keepViews' mode, iframe, datatable with x scroll solution\n\t//( keepViews won't work in case of \"in\" and \"out\" subtypes )\n\tif(current.parentNode == next.parentNode && animation.keepViews)\n\t\tnext.style.display = \"\";\n\telse\n\t\tinsertBefore(next, current.nextSibling, current.parentNode);\n\n\tif(animation.type == \"slide\" && animation.subtype == \"out\") {\n\t\tnext.style.left = \"0px\";\n\t\tnext.style.top = (animation.top || 0)+\"px\";\n\t\tcurrent.parentNode.removeChild(current);\n\t\tinsertBefore(current, next.nextSibling, next.parentNode);\n\t}\n\treturn [next, current];\n};\nanimate.breakLine=function(line){\n\tif(arguments[1])\n\t\tline[1].style.display = \"none\"; // 'keepViews' multiview mode\n\telse\n\t\tremove(line[1]); // 1 = current\n\tanimate.clear(line[0]);\n\tanimate.clear(line[1]);\n\tline[0].style.position=\"\";\n};\nanimate.clear=function(node){\n\tnode.style[env.transform] = \"none\";\n\tnode.style[env.transition] = \"none\";\n\tnode.style.top = node.style.left = \"\";\n};\nanimate.defaults = {\n\ttype: \"slide\",\n\tdelay: \"0\",\n\tduration: \"500\",\n\ttiming: \"ease-in-out\",\n\tx: 0,\n\ty: 0\n};\nanimate.start = function(node, animation){\n\t//getting config object by merging specified and default options\n\tif (typeof animation == \"string\")\n\t\tanimation = {type: animation};\n\n\tanimation = Settings._mergeSettings(animation,animate.defaults);\n\n\tvar prefix = env.cssPrefix;\n\tvar settings = node._has_animation = animation;\n\tvar skew_options, scale_type;\n\n\t//jshint -W086:true\n\tswitch(settings.type == \"slide\" && settings.direction) { // getting new x, y in case it is slide with direction\n\t\tcase \"right\":\n\t\t\tsettings.x = node.offsetWidth;\n\t\t\tbreak;\n\t\tcase \"left\":\n\t\t\tsettings.x = -node.offsetWidth;\n\t\t\tbreak;\n\t\tcase \"top\":\n\t\t\tsettings.y = -node.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"bottom\":\n\t\tdefault:\n\t\t\tsettings.y = settings.y||node.offsetHeight;\n\t\t\tbreak;\n\t}\n\n\tif(settings.type == \"flip\" || settings.type == \"flipback\") {\n\t\tskew_options = [0, 0];\n\t\tscale_type = \"scaleX\";\n\t\tif(settings.subtype == \"vertical\") {\n\t\t\tskew_options[0] = 20;\n\t\t\tscale_type = \"scaleY\";\n\t\t}\n\t\telse\n\t\t\tskew_options[1] = 20;\n\t\tif(settings.direction == \"right\" || settings.direction == \"bottom\") {\n\t\t\tskew_options[0] *= -1; skew_options[1] *= -1;\n\t\t}\n\t}\n\n\tvar duration = settings.duration + \"ms \" + settings.timing + \" \" + settings.delay+\"ms\";\n\tvar css_general = prefix+\"TransformStyle: preserve-3d;\"; // general css rules\n\tvar css_transition = \"\";\n\tvar css_transform = \"\";\n\n\tswitch(settings.type) {\n\t\tcase \"fade\": // changes opacity to 0\n\t\t\tcss_transition = \"opacity \" + duration;\n\t\t\tcss_general = \"opacity: 0;\";\n\t\t\tbreak;\n\t\tcase \"show\": // changes opacity to 1\n\t\t\tcss_transition = \"opacity \" + duration;\n\t\t\tcss_general = \"opacity: 1;\";\n\t\t\tbreak;\n\t\tcase \"flip\":\n\t\t\tduration = (settings.duration/2) + \"ms \" + settings.timing + \" \" + settings.delay+\"ms\";\n\t\t\tcss_transform = \"skew(\"+skew_options[0]+\"deg, \"+skew_options[1]+\"deg) \"+scale_type+\"(0.00001)\";\n\t\t\tcss_transition = \"all \"+(duration);\n\t\t\tbreak;\n\t\tcase \"flipback\":\n\t\t\tsettings.delay += settings.duration/2;\n\t\t\tduration = (settings.duration/2) + \"ms \" + settings.timing + \" \" + settings.delay+\"ms\";\n\t\t\tnode.style[env.transform] = \"skew(\"+(-1*skew_options[0])+\"deg, \"+(-1*skew_options[1])+\"deg) \"+scale_type+\"(0.00001)\";\n\t\t\tnode.style.left = \"0\";\n\n\t\t\tcss_transform = \"skew(0deg, 0deg) \"+scale_type+\"(1)\";\n\t\t\tcss_transition = \"all \"+(duration);\n\t\t\tbreak;\n\t\tcase \"slide\": // moves object to specified location\n\t\t\tvar x = settings.x +\"px\";\n\t\t\tvar y = settings.y +\"px\";\n\t\t\t// translate(x, y) OR translate3d(x, y, 0)\n\t\t\tcss_transform = env.translate+\"(\"+x+\", \"+y+((env.translate==\"translate3d\")?\", 0\":\"\")+\")\";\n\t\t\tcss_transition = prefix+\"transform \" + duration;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\t//set styles only after applying transition settings\n\tdelay(function(){\n\t\tnode.style[env.transition] = css_transition;\n\t\tdelay(function(){\n\t\t\tif (css_general)\n\t\t\t\tnode.style.cssText += css_general;\n\t\t\tif (css_transform)\n\t\t\t\tnode.style[env.transform] = css_transform;\n\t\t\tvar transitionEnded = false;\n\t\t\tvar tid = event(node, env.transitionEnd, function(ev){\n\t\t\t\tnode._has_animation = null;\n\t\t\t\tif (settings.callback) settings.callback.call((settings.master||window), node,settings,ev);\n\t\t\t\ttransitionEnded = true;\n\t\t\t\teventRemove(tid);\n\t\t\t});\n\t\t\twindow.setTimeout(function(){\n\t\t\t\tif(!transitionEnded){\n\t\t\t\t\tlet master = settings.master||window;\n\t\t\t\t\tnode._has_animation = null;\n\t\t\t\t\tif (!master.$destructed && settings.callback) settings.callback.call(master, node,settings);\n\t\t\t\t\ttransitionEnded = true;\n\t\t\t\t\teventRemove(tid);\n\t\t\t\t}\n\t\t\t}, (settings.duration*1+settings.delay*1)*1.3);\n\t\t});\n\t});\n};\n\nexport default animate;","const skin = {\n\ttopLayout:\"space\",\n\t//bar in accordion\n\tbarHeight:44,\t\t\t//!!!Set the same in skin.less!!!\n\ttabbarHeight: 42,\n\tsidebarTitleHeight: 44,\n\trowHeight:36,\n\ttoolbarHeight:44,\n\tlistItemHeight:36,\t\t//list, grouplist, dataview, etc.\n\tinputHeight: 38,\n\tbuttonHeight: 38,\n\tinputPadding: 3,\n\tmenuHeight: 36,\n\tlabelTopHeight: 22,\n\tpropertyItemHeight: 28,\n\ttimelineItemHeight:70,\n\tunitHeaderHeight:36,\n\n\tinputSpacing: 4,\n\tborderWidth: 1,\n\n\tsliderHandleWidth: 14,\n\tsliderPadding: 10,\n\tsliderBorder: 1,\n\tvSliderPadding:15,\n\tvSliderHeight:100,\n\tswitchHeight:22,\n\tswitchWidth:50,\n\n\t//margin - distance between cells\n\tlayoutMargin:{ space:10, wide:10, clean:0, head:4, line:-1, toolbar:4, form:8, accordion: 2 },\n\t//padding - distance inside cell between cell border and cell content\n\tlayoutPadding:{ space:10, wide:0, clean:0, head:0, line:0, toolbar:2, form:17, accordion: 0 },\n\t//space between tabs in tabbar\n\ttabMargin: 0,\n\ttabOffset: 0,\n\ttabBottomOffset: 0,\n\ttabTopOffset:0,\n\ttabBorder: true,\n\n\tcustomCheckbox: true,\n\tcustomRadio: true,\n\tsidebarMarkAll: true,\n\tpopupNoPoint: true,\n\tborderlessPopup: true,\n\n\tpopupPadding: 0,\n\n\tdataPadding: 12,\n\n\tcalendarWeekHeaderHeight: 18,\n\tpadding:0,\n\taccordionType: \"accordion\",\n\n\toptionHeight: 32,\n\torganogramLineColor: \"#CCD7E6\",\n\ttimelineColor:\"#1CA1C1\"\n};\n\nexport default skin;\n","import {assert} from \"../webix/debug\";\nimport {ui} from \"../ui/core\";\n\nimport material from \"../css/skins/material/config\";\nimport mini from \"../css/skins/mini/config\";\nimport flat from \"../css/skins/flat/config\";\nimport compact from \"../css/skins/compact/config\";\nimport contrast from \"../css/skins/contrast/config\";\n\nexport var $active, $name;\n\nexport function set(name){\n\tassert(skin[name], \"Incorrect skin name: \"+name);\n\tif ($name === name) return;\n\n\tskin.$active = $active = skin[name];\n\tskin.$name = $name = name;\n\n\tif (ui){\n\t\tfor (var key in ui){\n\t\t\tvar view = ui[key];\n\t\t\tif (view && view.prototype && view.prototype.$skin)\n\t\t\t\tview.prototype.$skin(view.prototype);\n\t\t}\n\t}\t\t\n}\n\nconst skin = { set, material, mini, flat, compact, contrast };\n\nset(window.webix_skin || \"material\");\n\n//necessary for skin builder\nexport { skin };","const skin = {\n\ttopLayout:\"space\",\n\t//bar in accordion\n\tbarHeight:36,\t\t\t//!!!Set the same in skin.less!!!\n\ttabbarHeight: 34,\n\tsidebarTitleHeight: 36,\n\trowHeight:28,\n\ttoolbarHeight:36,\n\tlistItemHeight:28,\t//list, grouplist, dataview, etc.\n\tinputHeight: 30,\n\tbuttonHeight: 30,\n\tinputPadding: 3,\n\tmenuHeight: 28,\n\tlabelTopHeight: 16,\n\tpropertyItemHeight: 24,\n\tunitHeaderHeight:28,\n\ttimelineItemHeight:50,\n\n\tinputSpacing: 4,\n\tborderWidth: 1,\n\n\tsliderHandleWidth: 12,\n\tsliderPadding: 10,\n\tsliderBorder: 1,\n\tvSliderPadding:13,\n\tvSliderHeight:100,\n\tswitchHeight:20,\n\tswitchWidth:40,\n\n\t//margin - distance between cells\n\tlayoutMargin:{ space:5, wide:5, clean:0, head:4, line:-1, toolbar:4, form:8, accordion: 2 },\n\t//padding - distance inside cell between cell border and cell content\n\tlayoutPadding:{ space:5, wide:0, clean:0, head:0, line:0, toolbar:2, form:12, accordion: 0 },\n\t//space between tabs in tabbar\n\ttabMargin: 0,\n\ttabOffset: 0,\n\ttabBottomOffset: 0,\n\ttabTopOffset:0,\n\ttabBorder: true,\n\n\tcustomCheckbox: true,\n\tcustomRadio: true,\n\tsidebarMarkAll: true,\n\tpopupNoPoint: true,\n\tborderlessPopup: true,\n\n\tpopupPadding: 0,\n\n\tdataPadding: 12,\n\n\tcalendarWeekHeaderHeight: 18,\n\tpadding:0,\n\taccordionType: \"accordion\",\n\n\toptionHeight: 24,\n\torganogramLineColor: \"#CCD7E6\",\n\ttimelineColor:\"#1CA1C1\"\n};\n\nexport default skin;\n","const skin = {\n\ttopLayout:\"space\",\n\t//bar in accordion\n\tbarHeight:46,\t\t\t//!!!Set the same in skin.less!!!\n\ttabbarHeight: 46,\n\trowHeight:34,\n\ttoolbarHeight:46,\n\tsidebarTitleHeight:45,\n\tlistItemHeight:34,\t\t//list, grouplist, dataview, etc.\n\tinputHeight: 38,\n\tbuttonHeight: 38,\n\tinputPadding: 3,\n\tmenuHeight: 34,\n\tlabelTopHeight: 22,\n\tunitHeaderHeight:20,\n\tpropertyItemHeight: 28,\n\ttimelineItemHeight:70,\n\n\tinputSpacing: 4,\n\tborderWidth: 1,\n\n\tsliderHandleWidth: 14,\n\tsliderPadding: 10,\n\tsliderBorder: 1,\n\tvSliderPadding:15,\n\tvSliderHeight:100,\n\tswitchHeight:22,\n\tswitchWidth:50,\n\n\t//margin - distance between cells\n\tlayoutMargin:{ space:10, wide:10, clean:0, head:4, line:-1, toolbar:4, form:8, accordion: 10 },\n\t//padding - distance insede cell between cell border and cell content\n\tlayoutPadding:{ space:10, wide:0, clean:0, head:0, line:0, toolbar:3, form:17, accordion: 0 },\n\t//space between tabs in tabbar\n\ttabMargin:4,\n\ttabOffset: 0,\n\ttabBottomOffset: 6,\n\ttabTopOffset:1,\n\n\tcustomCheckbox: true,\n\tcustomRadio: true,\n\n\tpopupPadding: 8,\n\n\tdataPadding: 10,\n\n\tcalendarWeekHeaderHeight: 24,\n\tpadding:0,\n\taccordionType: \"accordion\",\n\n\toptionHeight: 32,\n\ttimelineColor:\"#3498db\"\n};\n\nexport default skin;","const skin = {\n\ttopLayout:\"space\",\n\t//bar in accordion\n\tbarHeight:34,\t\t\t//!!!Set the same in skin.less!!!\n\ttabbarHeight: 34,\n\tsidebarTitleHeight: 34,\n\trowHeight:24,\n\ttoolbarHeight:34,\n\tlistItemHeight:28,\t\t//list, grouplist, dataview, etc.\n\tunitHeaderHeight:20,\n\tpropertyItemHeight:24,\n\ttimelineItemHeight:50,\n\tinputHeight: 30,\n\tbuttonHeight: 30,\n\tinputPadding: 3,\n\tmenuHeight: 28,\n\tlabelTopHeight: 16,\n\n\tinputSpacing: 4,\n\tborderWidth: 1,\n\n\tsliderHandleWidth: 12,\n\tsliderPadding: 10,\n\tsliderBorder: 1,\n\tvSliderPadding:13,\n\tvSliderHeight:100,\n\tswitchHeight:20,\n\tswitchWidth:40,\n\n\t//margin - distance between cells\n\tlayoutMargin:{ space:5, wide:5, clean:0, head:4, line:-1, toolbar:4, form:4, accordion: 5 },\n\t//padding - distance inside cell between cell border and cell content\n\tlayoutPadding:{ space:5, wide:0, clean:0, head:0, line:0, toolbar:1, form:12, accordion: 0 },\n\t//space between tabs in tabbar\n\ttabMargin:3,\n\ttabOffset: 0,\n\ttabBottomOffset: 3,\n\ttabTopOffset:1,\n\n\tcustomCheckbox: true,\n\tcustomRadio: true,\n\n\tpopupPadding: 8,\n\n\tdataPadding: 10,\n\n\tcalendarWeekHeaderHeight: 24,\n\tpadding:0,\n\taccordionType: \"accordion\",\n\n\toptionHeight: 23,\n\ttimelineColor:\"#3498db\"\n};\n\nexport default skin;","const skin = {\n\ttopLayout:\"space\",\n\t//bar in accordion\n\tbarHeight:46,\t\t\t// !!!Set the same in skin.less!!!\n\ttabbarHeight: 46,\n\trowHeight:34,\n\ttoolbarHeight:46,\n\tsidebarTitleHeight:45,\n\tlistItemHeight:34,\t\t// list, grouplist, dataview, etc.\n\tunitHeaderHeight:20,\n\tinputHeight: 38,\n\tbuttonHeight: 38,\n\tinputPadding: 3,\n\tmenuHeight: 34,\n\tlabelTopHeight: 22,\n\tpropertyItemHeight: 28,\n\ttimelineItemHeight:70,\n\n\tinputSpacing: 4,\n\tborderWidth: 1,\n\n\tsliderHandleWidth: 14,\n\tsliderPadding: 10,\n\tsliderBorder: 1,\n\tvSliderPadding:15,\n\tvSliderHeight:100,\n\tswitchHeight:22,\n\tswitchWidth:50,\n\n\t//margin - distance between cells\n\tlayoutMargin:{ space:10, wide:10, clean:0, head:4, line:-1, toolbar:8, form:8, accordion: 10 },\n\t//padding - distance inside cell between cell border and cell content\n\tlayoutPadding:{ space:10, wide:0, clean:0, head:0, line:0, toolbar:3, form:17, accordion: 0 },\n\t//space between tabs in tabbar\n\ttabMargin:4,\n\ttabOffset: 0,\n\ttabBottomOffset: 6,\n\ttabTopOffset:1,\n\n\tcustomCheckbox: true,\n\tcustomRadio: true,\n\n\tpopupPadding: 8,\n\tdataPadding: 10,\n\n\tcalendarWeekHeaderHeight: 24,\n\tpadding:0,\n\taccordionType: \"accordion\",\n\n\toptionHeight: 32,\n\ttimelineColor:\"#b300b3\"\n};\n\nexport default skin;","import env from \"../webix/env\";\nimport ready from \"../webix/ready\";\n\nimport {event, eventRemove} from \"../webix/htmlevents\";\nimport {delay} from \"../webix/helpers\";\nimport {callEvent} from \"../webix/customevents\";\nimport {preventEvent, removeCss, create, remove, addCss, addStyle} from \"../webix/html\";\n\n//late binding\nimport {ui, $$} from \"../ui/core\";\n\nconst Touch = {\n\tconfig:{\n\t\tlongTouchDelay:1000,\n\t\tscrollDelay:150,\n\t\tgravity:500,\n\t\tdeltaStep:30,\n\t\tspeed:\"0ms\",\n\t\tfinish:1500,\n\t\tellastic:true,\n\t\tfastClick:true\n\t},\n\tlimit:function(value){\n\t\tTouch._limited = value !== false;\t\n\t},\n\tdisable:function(){\n\t\tTouch._disabled = true;\n\t},\n\tenable:function(){\n\t\tTouch._disabled = false;\n\t},\n\t$init:function(){\n\t\tTouch.$init = function(){};\n\n\t\tevent(document.body, mouse.down,\tTouch._touchstart, {passive:false});\n\t\tevent(document.body, mouse.move, \tTouch._touchmove, {passive:false});\n\t\tevent(document.body, mouse.up, \tTouch._touchend);\n\n\t\tevent(document.body,\"dragstart\",function(e){\n\t\t\tif(Touch._disabled || Touch._limited) return;\n\t\t\treturn preventEvent(e);\n\t\t});\n\t\tevent(document.body,\"touchstart\",function(e){\n\t\t\tif (Touch._disabled || Touch._limited || (!Touch.config.fastClick) ) return;\n\t\t\t//fast click mode for iOS\n\t\t\t//To have working form elements Android must not block event - so there are no fast clicks for Android\n\t\t\t//Selects still don't work with fast clicks\n\t\t\tif (env.isSafari) {\n\t\t\t\tvar tag = e.srcElement.tagName.toLowerCase();\n\t\t\t\tif (tag == \"input\" || tag == \"textarea\" || tag == \"select\" || tag==\"label\")\n\t\t\t\t\treturn true;\n\n\t\t\t\tTouch._fire_fast_event = true;\n\t\t\t\treturn preventEvent(e);\n\t\t\t}\n\t\t}, {passive:false});\n\n\t\tTouch._clear_artefacts();\n\t\tTouch._scroll = [null, null];\n\t\tTouch.$active = true;\n\t},\n\t_clear_artefacts:function(){\n\t\tTouch._start_context = Touch._current_context = Touch._prev_context = Touch._scroll_context = null;\n\t\tTouch._scroll_mode = Touch._scroll_node = Touch._scroll_stat = this._long_touched = null;\n\t\t//remove(Touch._scroll);\n\t\t//Touch._scroll = [null, null];\n\t\tTouch._delta = \t{ _x_moment:0, _y_moment:0, _time:0 };\n\n\t\tif (Touch._css_button_remove){\n\t\t\tremoveCss(Touch._css_button_remove,\"webix_touch\");\n\t\t\tTouch._css_button_remove = null;\n\t\t}\n\t\t\n\t\twindow.clearTimeout(Touch._long_touch_timer);\n\t\tTouch._was_not_moved = true;\n\t\tTouch._axis_x = true;\n\t\tTouch._axis_y = true;\n\t\tif (!Touch._active_transion)\n\t\t\tTouch._scroll_end();\n\t},\n\t_touchend:function(e){\n\t\tif (Touch._start_context) {\n\t\t\tif (!Touch._scroll_mode) {\n\t\t\t\tif (!this._long_touched) {\n\t\t\t\t\tif (Touch._axis_y && !Touch._axis_x) {\n\t\t\t\t\t\tTouch._translate_event(\"onSwipeX\");\n\t\t\t\t\t} else if (Touch._axis_x && !Touch._axis_y) {\n\t\t\t\t\t\tTouch._translate_event(\"onSwipeY\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (env.isSafari && Touch._fire_fast_event) { //need to test for mobile ff and blackbery\n\t\t\t\t\t\t\tTouch._fire_fast_event = false;\n\t\t\t\t\t\t\tvar target = Touch._start_context.target;\n\n\t\t\t\t\t\t\t//dark iOS magic, without delay it can skip repainting\n\t\t\t\t\t\t\tdelay(function () {\n\t\t\t\t\t\t\t\tvar click_event = document.createEvent(\"MouseEvents\");\n\t\t\t\t\t\t\t\tclick_event.initEvent(\"click\", true, true);\n\t\t\t\t\t\t\t\ttarget.dispatchEvent(click_event);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\n\t\t\t\tvar temp = Touch._get_matrix(Touch._scroll_node);\n\t\t\t\tvar x = temp.e;\n\t\t\t\tvar y = temp.f;\n\t\t\t\tvar finish = Touch.config.finish;\n\n\t\t\t\tvar delta = Touch._get_delta(e, true);\n\t\t\t\tvar view = $$(Touch._scroll_node);\n\n\t\t\t\tvar gravity = (view && view.$scroll ? view.$scroll.gravity : Touch.config.gravity);\n\t\t\t\tif (delta._time) {\n\t\t\t\t\tvar nx = x + gravity * delta._x_moment / delta._time;\n\t\t\t\t\tvar ny = y + gravity * delta._y_moment / delta._time;\n\n\t\t\t\t\tvar cnx = Touch._scroll[0] ? Touch._correct_minmax(nx, false, false, Touch._scroll_stat.dx, Touch._scroll_stat.px) : x;\n\t\t\t\t\tvar cny = Touch._scroll[1] ? Touch._correct_minmax(ny, false, false, Touch._scroll_stat.dy, Touch._scroll_stat.py) : y;\n\n\n\t\t\t\t\tvar size = Math.max(Math.abs(cnx - x), Math.abs(cny - y));\n\t\t\t\t\tif (size < 150)\n\t\t\t\t\t\tfinish = finish * size / 150;\n\n\t\t\t\t\tif (cnx != x || cny != y)\n\t\t\t\t\t\tfinish = Math.round(finish * Math.max((cnx - x) / (nx - x), (cny - y) / (ny - y)));\n\n\t\t\t\t\tvar result = {e: cnx, f: cny};\n\n\n\t\t\t\t\tview = $$(Touch._scroll_node);\n\t\t\t\t\tif (view && view.adjustScroll)\n\t\t\t\t\t\tview.adjustScroll(result);\n\n\n\t\t\t\t\t//finish = Math.max(100,(Touch._fast_correction?100:finish));\n\t\t\t\t\tfinish = Math.max(100, finish);\n\n\n\t\t\t\t\tif (x != result.e || y != result.f) {\n\t\t\t\t\t\tTouch._set_matrix(Touch._scroll_node, result.e, result.f, finish + \"ms\");\n\t\t\t\t\t\tif (Touch._scroll_master)\n\t\t\t\t\t\t\tTouch._scroll_master._sync_scroll(result.e, result.f, finish + \"ms\");\n\t\t\t\t\t\tTouch._set_scroll(result.e, result.f, finish + \"ms\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tTouch._scroll_end();\n\t\t\t\t\t}\n\t\t\t\t} else\n\t\t\t\t\tTouch._scroll_end();\n\t\t\t}\n\t\t\tTouch._translate_event(\"onTouchEnd\");\n\t\t\tTouch._clear_artefacts();\n\t\t}\n\t},\n\t_touchmove:function(e){\n\t\tif (!Touch._scroll_context || !Touch._start_context) return;\n\n\t\tvar\tdelta = Touch._get_delta(e);\n\t\tTouch._translate_event(\"onTouchMove\");\n\n\t\tif (Touch._scroll_mode){\n\t\t\tTouch._set_scroll_pos(delta);\n\t\t} else {\n\t\t\tTouch._axis_x = Touch._axis_check(delta._x, \"x\", Touch._axis_x);\n\t\t\tTouch._axis_y = Touch._axis_check(delta._y, \"y\", Touch._axis_y);\n\t\t\tif (Touch._scroll_mode){\n\t\t\t\tvar view = Touch._get_event_view(\"onBeforeScroll\", true);\n\t\t\t\tif (view){\n\t\t\t\t\tvar data = {};\n\t\t\t\t\tview.callEvent(\"onBeforeScroll\",[data]);\n\t\t\t\t\tif (data.update){\n\t\t\t\t\t\tTouch.config.speed = data.speed;\n\t\t\t\t\t\tTouch.config.scale = data.scale;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tTouch._init_scroller(delta); //apply scrolling\n\t\t\t}\n\t\t}\n\n\t\treturn preventEvent(e);\n\t},\n\t_set_scroll_pos:function(){\n\t\tif (!Touch._scroll_node) return;\n\t\tvar temp = Touch._get_matrix(Touch._scroll_node);\n\t\tvar prev = Touch._prev_context || Touch._start_context;\n\n\t\tvar view = $$(Touch._scroll_node);\n\t\tvar ellastic = (view&&view.$scroll)?view.$scroll.ellastic: Touch.config.ellastic;\n\t\tif (Touch._scroll[0])\n\t\t\ttemp.e = Touch._correct_minmax( temp.e - prev.x + Touch._current_context.x , ellastic, temp.e, Touch._scroll_stat.dx, Touch._scroll_stat.px);\n\t\tif (Touch._scroll[1])\n\t\t\ttemp.f = Touch._correct_minmax( temp.f - prev.y + Touch._current_context.y , ellastic, temp.f, Touch._scroll_stat.dy, Touch._scroll_stat.py);\n\n\t\tTouch._set_matrix(Touch._scroll_node, temp.e, temp.f, \"0ms\");\n\t\tif (Touch._scroll_master)\n\t\t\tTouch._scroll_master._sync_scroll(temp.e, temp.f, \"0ms\");\n\t\tTouch._set_scroll(temp.e, temp.f, \"0ms\");\n\t},\n\t_set_scroll:function(dx, dy, speed){\n\t\t\n\t\tvar edx = Touch._scroll_stat.px/Touch._scroll_stat.dx * -dx;\n\t\tvar edy = Touch._scroll_stat.py/Touch._scroll_stat.dy * -dy;\n\t\tif (Touch._scroll[0])\n\t\t\tTouch._set_matrix(Touch._scroll[0], edx, 0 ,speed);\n\t\tif (Touch._scroll[1])\n\t\t\tTouch._set_matrix(Touch._scroll[1], 0, edy ,speed);\n\t},\n\tscrollTo:function(node, x, y, speed){\n\t\tTouch._set_matrix(node,x,y,speed);\n\t},\n\t_set_matrix:function(node, xv, yv, speed){\n\t\tif (!speed){\n\t\t\tnode.style[env.transform] = \"\";\n\t\t\treturn;\n\t\t}\n\n\t\tTouch._active_transion = true;\n\t\tif (node){\n\t\t\tvar trans = Touch.config.translate || env.translate;\n\t\t\tnode.style[env.transform] = trans+\"(\"+Math.round(xv)+\"px, \"+Math.round(yv)+\"px\"+((trans==\"translate3d\")?\", 0\":\"\")+\")\";\n\t\t\tnode.style[env.transitionDuration] = speed;\n\t\t}\n\t},\n\t_get_matrix:function(node){\n\t\tvar matrix = window.getComputedStyle(node)[env.transform];\n\t\tvar tmatrix;\n\n\t\tif (matrix == \"none\")\n\t\t\ttmatrix = {e:0, f:0};\n\t\telse {\n\t\t\tif(window.WebKitCSSMatrix)\n\t\t\t\t/* global WebKitCSSMatrix */\n\t\t\t\ttmatrix = new WebKitCSSMatrix(matrix);\n\t\t\telse if (window.MSCSSMatrix)\n\t\t\t\t/* global MSCSSMatrix */\n\t\t\t\ttmatrix = new MSCSSMatrix(matrix);\n\t\t\telse {\n\t\t\t\t// matrix(1, 0, 0, 1, 0, 0) --> 1, 0, 0, 1, 0, 0\n\t\t\t\tvar _tmatrix = matrix.replace(/(matrix\\()(.*)(\\))/gi, \"$2\");\n\t\t\t\t// 1, 0, 0, 1, 0, 0 --> 1,0,0,1,0,0\n\t\t\t\t_tmatrix = _tmatrix.replace(/\\s/gi, \"\");\n\t\t\t\t_tmatrix = _tmatrix.split(\",\");\n\n\t\t\t\ttmatrix = {};\n\t\t\t\tvar tkey = [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\n\t\t\t\tfor(var i=0; i0) return allow?(current + sign*Math.sqrt(delta)):0;\n\t\t\n\t\tvar max = dx - px;\n\t\tif (max + value < 0)\t\n\t\t\treturn allow?(current - Math.sqrt(-(value-current))):-max;\n\t\t\t\n\t\t//\tTouch._fast_correction = false;\n\t\treturn value;\n\t},\t\n\t_init_scroll_node:function(node){\n\t\tif (!node.scroll_enabled){ \n\t\t\tnode.scroll_enabled = true;\t\n\t\t\tnode.parentNode.style.position=\"relative\";\n\t\t\tvar prefix = env.cssPrefix;\n\t\t\tnode.style.cssText += prefix+\"transition: \"+prefix+\"transform; \"+prefix+\"user-select:none; \"+prefix+\"transform-style:flat;\";\n\t\t\tnode.addEventListener(env.transitionEnd,Touch._scroll_end,false);\n\t\t}\n\t},\n\t_init_scroller:function(){\n\t\tif (Touch._scroll_mode.indexOf(\"x\") != -1)\n\t\t\tTouch._scroll[0] = Touch._create_scroll(\"x\", Touch._scroll_stat.dx, Touch._scroll_stat.px, \"width\");\n\t\tif (Touch._scroll_mode.indexOf(\"y\") != -1)\n\t\t\tTouch._scroll[1] = Touch._create_scroll(\"y\", Touch._scroll_stat.dy, Touch._scroll_stat.py, \"height\");\n\t\t\t\n\t\tTouch._init_scroll_node(Touch._scroll_node);\n\t\twindow.setTimeout(Touch._set_scroll_pos,1);\n\t},\n\t_create_scroll:function(mode, dy, py, dim){\n\t\tif (dy - py <2){\n\t\t\tvar matrix = Touch._get_matrix(Touch._scroll_node);\n\t\t\tvar e = (mode==\"y\"?matrix.e:0);\n\t\t\tvar f = (mode==\"y\"?0:matrix.f);\n\t\t\tif (!Touch._scroll_master)\n\t\t\t\tTouch._set_matrix(Touch._scroll_node, e, f, \"0ms\");\n\t\t\tTouch._scroll_mode = Touch._scroll_mode.replace(mode,\"\");\n\t\t\treturn \"\";\n\t\t}\n\n\t\tvar scroll = create(\"DIV\", {\n\t\t\t\"class\":\"webix_scroll_\"+mode\n\t\t},\"\");\n\n\t\tscroll.style[dim] = Math.max((py*py/dy-7),10) +\"px\";\n\t\tif (Touch._scroll_stat.left) \n\t\t\tif (mode === \"x\")\n\t\t\t\tscroll.style.left = Touch._scroll_stat.left+\"px\";\n\t\t\telse\n\t\t\t\tscroll.style.right = (-Touch._scroll_stat.left)+\"px\";\n\t\tif (Touch._scroll_stat.hidden)\n\t\t\tscroll.style.visibility = \"hidden\";\n\n\t\tTouch._scroll_node.parentNode.appendChild(scroll);\n\t\t\n\t\treturn scroll;\n\t},\n\t_axis_check:function(value, mode, old){\n\t\tif (value > Touch.config.deltaStep){\n\t\t\tif (Touch._was_not_moved){\n\t\t\t\tTouch._long_move(mode);\n\t\t\t\tTouch._locate(mode);\n\t\t\t\tif ((Touch._scroll_mode||\"\").indexOf(mode) == -1) Touch._scroll_mode = \"\";\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn old;\n\t},\n\t_scroll_end:function(){\n\t\t//sending event to the owner of the scroll only\n\t\tvar result,state,view;\n\t\tview = $$(Touch._scroll_node||this);\n\t\tif (view){\n\t\t\tif (Touch._scroll_node)\n\t\t\t\tresult = Touch._get_matrix(Touch._scroll_node);\n\t\t\telse if(view.getScrollState){\n\t\t\t\tstate = view.getScrollState();\n\t\t\t\tresult = {e:state.x, f:state.y};\n\t\t\t}\n\t\t\tcallEvent(\"onAfterScroll\", [result]);\n\t\t\tif (view.callEvent)\n\t\t\t\tview.callEvent(\"onAfterScroll\",[result]);\n\t\t}\n\t\tif (!Touch._scroll_mode){\n\t\t\tremove(Touch._scroll);\n\t\t\tTouch._scroll = [null, null];\n\t\t}\n\t\tTouch._active_transion = false;\n\t},\n\t_long_move:function(){\n\t\twindow.clearTimeout(Touch._long_touch_timer);\n\t\tTouch._was_not_moved = false;\t\n\t},\t\n\t_stop_old_scroll:function(e){\n\t\tif (Touch._scroll[0] || Touch._scroll[1]){\n\t\t\tTouch._stop_scroll(e, Touch._scroll[0]?\"x\":\"y\");\n\t\t}else\n\t\t\treturn true;\n\t},\n\t_touchstart :function(e){\n\t\tvar target = e.target || window.event.srcElement;\n\n\t\tif (Touch._disabled || (target.tagName&&target.tagName.toLowerCase() == \"textarea\" && target.offsetHeight 4){\n\t\t\t\tenv.touch = true;\n\t\t\t\tsetMouse(mouse);\n\t\t\t\ttouchInit();\n\t\t\t\tfor (var key in ui.views){\n\t\t\t\t\tvar view = ui.views[key];\n\t\t\t\t\tif (view && view.$touch)\n\t\t\t\t\t\tview.$touch();\n\t\t\t\t}\n\t\t\t}\n\t\t\teventRemove(id);\n\t\t}, { capture: true });\n\t}\n}\n\nfunction setMouse(mouse){\n\tmouse.down = \"touchstart\";\n\tmouse.move = \"touchmove\";\n\tmouse.up = \"touchend\";\n\tmouse.context = Touch._get_context;\n}\n\nready(touchInit);\n\n\nvar mouse = env.mouse = { down:\"mousedown\", up:\"mouseup\", \n\tmove:\"mousemove\", context:Touch._get_context_m };\n\nif (window.navigator.pointerEnabled){\n\tmouse.down = \"pointerdown\";\n\tmouse.move = \"pointermove\";\n\tmouse.up = \"pointerup\";\n} else if (window.navigator.msPointerEnabled){\n\tmouse.down = \"MSPointerDown\";\n\tmouse.move = \"MSPointerMove\";\n\tmouse.up = \"MSPointerUp\";\n} else if (env.touch)\n\tsetMouse(mouse);\n\t\n\nexport default Touch;","import {preventEvent, addCss, removeCss, pos as getPos, remove} from \"../webix/html\";\nimport env from \"../webix/env\";\nimport Touch from \"../core/touch\";\nimport {zIndex} from \"../ui/helpers\";\nimport {_to_array, toNode} from \"../webix/helpers\";\nimport {_event, event, eventRemove} from \"../webix/htmlevents\";\nimport {attachEvent, callEvent} from \"../webix/customevents\";\n\n\n/*\n\tBehavior:DND - low-level dnd handling\n\t@export\n\t\tgetContext\n\t\taddDrop\n\t\taddDrag\n\t\t\n\tDND master can define next handlers\n\t\tonCreateDrag\n\t\tonDragIng\n\t\tonDragOut\n\t\tonDrag\n\t\tonDrop\n\tall are optional\n*/\n\nconst DragControl ={\n\t//has of known dnd masters\n\t_drag_masters : _to_array([\"dummy\"]),\n\t/*\n\t\tregister drop area\n\t\t@param node \t\t\thtml node or ID\n\t\t@param ctrl \t\t\toptions dnd master\n\t\t@param master_mode \t\ttrue if you have complex drag-area rules\n\t*/\n\taddDrop:function(node,ctrl,master_mode){\n\t\tnode = toNode(node);\n\t\tnode.webix_drop=this._getCtrl(ctrl);\n\t\tif (master_mode) node.webix_master=true;\n\t},\n\t//return index of master in collection\n\t//it done in such way to prevent dnd master duplication\n\t//probably useless, used only by addDrop and addDrag methods\n\t_getCtrl:function(ctrl){\n\t\tctrl = ctrl||DragControl;\n\t\tvar index = this._drag_masters.find(ctrl);\n\t\tif (index<0){\n\t\t\tindex = this._drag_masters.length;\n\t\t\tthis._drag_masters.push(ctrl);\n\t\t\tif (ctrl.attachEvent)\n\t\t\t\tctrl.attachEvent(\"onDestruct\", () => DragControl.unlink(ctrl));\n\t\t}\n\t\treturn index;\n\t},\n\tunlink(ctrl){\n\t\tvar index = this._drag_masters.find(ctrl);\n\t\tif (index > -1)\n\t\t\tthis._drag_masters[index] = null;\n\t},\n\t_createTouchDrag: function(e){\n\t\tvar dragCtrl = DragControl;\n\t\tvar master = this._getActiveDragMaster();\n\t\t// for data items only\n\t\tif(master && master._getDragItemPos){\n\n\t\t\tif(!dragCtrl._html)\n\t\t\t\tdragCtrl.createDrag(e);\n\t\t\tvar ctx = dragCtrl._drag_context;\n\t\t\tdragCtrl._html.style.left= e.x+dragCtrl.left+ (ctx.x_offset||0)+\"px\";\n\t\t\tdragCtrl._html.style.top= e.y+dragCtrl.top+ (ctx.y_offset||0) +\"px\";\n\t\t}\n\t},\n\t/*\n\t\tregister drag area\n\t\t@param node \thtml node or ID\n\t\t@param ctrl \toptions dnd master\n\t*/\n\taddDrag:function(node,ctrl){\n\t\tnode = toNode(node);\n\t\tnode.webix_drag=this._getCtrl(ctrl);\n\t\t_event(node,env.mouse.down,this._preStart,{ bind:node });\n\t\t_event(node,\"dragstart\",preventEvent);\n\t},\n\t//logic of drag - start, we are not creating drag immediately, instead of that we hears mouse moving\n\t_preStart:function(e){\n\t\tif (DragControl._active){\n\t\t\t//if we have nested drag areas, use the top one and ignore the inner one\n\t\t\tif (DragControl._saved_event == e) return;\n\t\t\tDragControl._preStartFalse();\n\t\t\tDragControl.destroyDrag(e);\n\t\t}\n\t\tDragControl._active=this;\n\n\t\tvar evobj = env.mouse.context(e);\n\t\tDragControl._start_pos=evobj;\n\t\tDragControl._saved_event = e;\n\n\t\tDragControl._webix_drag_mm = event(document.body,env.mouse.move,DragControl._startDrag);\n\t\tDragControl._webix_drag_mu = event(document,env.mouse.up,DragControl._preStartFalse);\n\n\t\t//need to run here, or will not work in IE\n\t\taddCss(document.body,\"webix_noselect\", 1);\n\t},\n\t//if mouse was released before moving - this is not a dnd, remove event handlers\n\t_preStartFalse:function(){\n\t\tDragControl._clean_dom_after_drag();\n\t},\n\t//mouse was moved without button released - dnd started, update event handlers\n\t_startDrag:function(e){\n\t\t//prevent unwanted dnd\n\t\tvar pos = env.mouse.context(e);\n\t\tvar master = DragControl._getActiveDragMaster();\n\t\t// only long-touched elements can be dragged\n\n\t\tvar longTouchLimit = (master && env.touch && master._getDragItemPos && !Touch._long_touched);\n\t\tif (longTouchLimit || Math.abs(pos.x-DragControl._start_pos.x)<5 && Math.abs(pos.y-DragControl._start_pos.y)<5)\n\t\t\treturn;\n\n\t\tDragControl._clean_dom_after_drag(true);\n\t\tif(!DragControl._html)\n\t\t\tif (!DragControl.createDrag(DragControl._saved_event)) return;\n\n\t\tDragControl.sendSignal(\"start\"); //useless for now\n\t\tDragControl._webix_drag_mm = event(document.body,env.mouse.move,DragControl._moveDrag);\n\t\tDragControl._webix_drag_mu = event(document,env.mouse.up,DragControl._stopDrag);\n\t\tDragControl._moveDrag(e);\n\n\t\tif (env.touch)\n\t\t\treturn preventEvent(e);\n\t},\n\t//mouse was released while dnd is active - process target\n\t_stopDrag:function(e){\n\t\tDragControl._clean_dom_after_drag();\n\t\tDragControl._saved_event = null;\n\n\t\tif (DragControl._last){\t//if some drop target was confirmed\n\t\t\tDragControl.$drop(DragControl._active, DragControl._last, e);\n\t\t\tDragControl.$dragOut(DragControl._active,DragControl._last,null,e);\n\t\t}\n\t\tDragControl.destroyDrag(e);\n\t\tDragControl.sendSignal(\"stop\");\t//useless for now\n\t},\n\t_clean_dom_after_drag:function(still_drag){\n\t\tthis._webix_drag_mm = eventRemove(this._webix_drag_mm);\n\t\tthis._webix_drag_mu = eventRemove(this._webix_drag_mu);\n\t\tif (!still_drag)\n\t\t\tremoveCss(document.body,\"webix_noselect\");\n\t},\n\t//dnd is active and mouse position was changed\n\t_moveDrag:function(e){\n\t\tvar dragCtrl = DragControl;\n\t\tvar pos = getPos(e);\n\n\t\t//give possibility to customize drag position\n\t\tvar customPos = dragCtrl.$dragPos(pos, e);\n\t\t//adjust drag marker position\n\t\tvar ctx = dragCtrl._drag_context;\n\t\tdragCtrl._html.style.top=pos.y+dragCtrl.top+(customPos||!ctx.y_offset?0:ctx.y_offset) +\"px\";\n\t\tdragCtrl._html.style.left=pos.x+dragCtrl.left+(customPos||!ctx.x_offset?0:ctx.x_offset)+\"px\";\n\n\t\tvar evobj = e;\n\t\tif (dragCtrl._skip)\n\t\t\tdragCtrl._skip=false;\n\t\telse {\n\t\t\tif (env.touch){\n\t\t\t\tvar context = env.mouse.context(e);\n\t\t\t\tvar target = document.elementFromPoint(context.x, context.y);\n\t\t\t\tevobj = new Proxy(e, {\n\t\t\t\t\tget: function(obj, prop){\n\t\t\t\t\t\tif (prop === \"target\"){\n\t\t\t\t\t\t\treturn target;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar res = obj[prop];\n\t\t\t\t\t\tif (typeof res === \"function\"){\n\t\t\t\t\t\t\treturn res.bind(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn res;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tdragCtrl._checkLand((evobj.target || evobj.srcElement), evobj);\n\t\t}\n\t\t\n\t\treturn preventEvent(e);\n\t},\n\t//check if item under mouse can be used as drop landing\n\t_checkLand:function(node,e){\n\t\twhile (node && node.tagName!=\"BODY\"){\n\t\t\tif (node.webix_drop){\t//if drop area registered\n\t\t\t\tif (this._last && (this._last!=node || node.webix_master))\t//if this area with complex dnd master\n\t\t\t\t\tthis.$dragOut(this._active,this._last,node,e);\t\t\t//inform master about possible mouse-out\n\t\t\t\tif (!this._last || this._last!=node || node.webix_master){\t//if this is new are or area with complex dnd master\n\t\t\t\t\tthis._last=null;\t\t\t\t\t\t\t\t\t\t//inform master about possible mouse-in\n\t\t\t\t\tthis._landing=this.$dragIn(DragControl._active,node,e);\n\t\t\t\t\tif (this._landing)\t//landing was rejected\n\t\t\t\t\t\tthis._last=node;\n\t\t\t\t\treturn;\t\t\t\t\n\t\t\t\t} \n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnode=node.parentNode;\n\t\t}\n\t\tif (this._last)\t//mouse was moved out of previous landing, and without finding new one \n\t\t\tthis._last = this._landing = this.$dragOut(this._active,this._last,null,e);\n\t},\n\t//mostly useless for now, can be used to add cross-frame dnd\n\tsendSignal:function(signal){\n\t\tDragControl.active=(signal==\"start\");\n\t\tcallEvent(\"onDragMode\", [signal]);\n\t},\n\t\n\t//return master for html area\n\tgetMaster:function(t){\n\t\treturn this._drag_masters[t.webix_drag||t.webix_drop];\n\t},\n\t//return dhd-context object\n\tgetContext:function(){\n\t\treturn this._drag_context;\n\t},\n\tgetNode:function(){\n\t\treturn this._html;\n\t},\n\t//called when dnd is initiated, must create drag representation\n\tcreateDrag:function(e){ \n\t\tvar dragCtl = DragControl;\n\t\tvar a=dragCtl._active;\n\n\t\tdragCtl._drag_context = {};\n\t\tvar master = this._drag_masters[a.webix_drag];\n\t\tvar drag_container;\n\n\t\t//if custom method is defined - use it\n\t\tif (master.$dragCreate){\n\t\t\tdrag_container=master.$dragCreate(a,e);\n\t\t\tif (!drag_container) return false;\n\t\t\tthis._setDragOffset(e);\n\t\t\tdrag_container.style.position = \"absolute\";\n\t\t} else {\n\t\t//overvise use default one\n\t\t\tvar text = dragCtl.$drag(a,e);\n\t\t\tdragCtl._setDragOffset(e);\n\n\t\t\tif (!text) return false;\n\t\t\tdrag_container = document.createElement(\"DIV\");\n\t\t\tdrag_container.innerHTML=text;\n\t\t\tdrag_container.className=\"webix_drag_zone\";\n\t\t\tdocument.body.appendChild(drag_container);\n\n\t\t\tvar context = dragCtl._drag_context;\n\t\t\tif (context.html && env.pointerevents){\n\t\t\t\tcontext.x_offset = -Math.round(drag_container.offsetWidth * 0.5);\n\t\t\t\tcontext.y_offset = -Math.round(drag_container.offsetHeight * 0.75);\n\t\t\t}\n\t\t}\n\t\t/*\n\t\t\tdragged item must have topmost z-index\n\t\t\tin some cases item already have z-index\n\t\t\tso we will preserve it if possible\n\t\t*/\n\t\tdrag_container.style.zIndex = Math.max(drag_container.style.zIndex,zIndex());\n\n\t\tDragControl._skipDropH = event(drag_container,env.mouse.move,DragControl._skip_mark);\n\n\t\tif (!DragControl._drag_context.from)\n\t\t\tDragControl._drag_context = {source:a, from:a};\n\t\t\n\t\tDragControl._html=drag_container;\n\t\treturn true;\n\t},\n\t//helper, prevents unwanted mouse-out events\n\t_skip_mark:function(){\n\t\tDragControl._skip=true;\n\t},\n\t//after dnd end, remove all traces and used html elements\n\tdestroyDrag:function(e){\n\t\tvar a=DragControl._active;\n\t\tvar master = this._drag_masters[a.webix_drag];\n\n\t\tif (master && master.$dragDestroy){\n\t\t\tDragControl._skipDropH = eventRemove(DragControl._skipDropH);\n\t\t\tif(DragControl._html)\n\t\t\t\tmaster.$dragDestroy(a,DragControl._html,e);\n\t\t} else\n\t\t\tremove(DragControl._html);\n\n\t\tif (master && master._auto_scroll_delay)\n\t\t\tmaster._auto_scroll_delay = window.clearTimeout(master._auto_scroll_delay);\n\n\t\tif (DragControl._dropHTML)\n\t\t\tremove(DragControl._dropHTML);\n\n\t\tDragControl._landing=DragControl._active=DragControl._last=DragControl._html=DragControl._dropHTML=null;\n\t\tDragControl._drag_context = null;\n\t},\n\t_getActiveDragMaster: function(){\n\t\treturn DragControl._drag_masters[DragControl._active.webix_drag];\n\t},\n\ttop:0,\t //relative position of drag marker to mouse cursor\n\tleft:0,\n\t_setDragOffset:function(e){\n\t\tvar dragCtl = DragControl;\n\t\tvar pos = dragCtl._start_pos;\n\t\tvar ctx = dragCtl._drag_context;\n\n\t\tif(typeof ctx.x_offset != \"undefined\" && typeof ctx.y_offset != \"undefined\")\n\t\t\treturn null;\n\n\t\tctx.x_offset = ctx.y_offset = 0;\n\t\tif(env.pointerevents){\n\t\t\tvar m=DragControl._getActiveDragMaster();\n\n\t\t\tif (m._getDragItemPos && m!==this){\n\t\t\t\tvar itemPos = m._getDragItemPos(pos,e);\n\n\t\t\t\tif(itemPos){\n\t\t\t\t\tctx.x_offset = itemPos.x - pos.x;\n\t\t\t\t\tctx.y_offset = itemPos.y - pos.y;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\t},\n\t$dragPos:function(pos, e){\n\t\tvar m=this._drag_masters[DragControl._active.webix_drag];\n\t\tif (m.$dragPos && m!=this){\n\t\t\tm.$dragPos(pos, e, DragControl._html);\n\t\t\treturn true;\n\t\t}\n\t},\n\t//called when mouse was moved in drop area\n\t$dragIn:function(s,t,e){\n\t\tvar m=this._drag_masters[t.webix_drop];\n\t\tif (m.$dragIn && m!=this) return m.$dragIn(s,t,e);\n\t\tt.className=t.className+\" webix_drop_zone\";\n\t\treturn t;\n\t},\n\t//called when mouse was moved out drop area\n\t$dragOut:function(s,t,n,e){\n\t\tvar m=this._drag_masters[t.webix_drop];\n\t\tif (m.$dragOut && m!=this) return m.$dragOut(s,t,n,e);\n\t\tt.className=t.className.replace(\"webix_drop_zone\",\"\");\n\t\treturn null;\n\t},\n\t//called when mouse was released over drop area\n\t$drop:function(s,t,e){\n\t\tvar m=this._drag_masters[t.webix_drop];\n\t\tDragControl._drag_context.from = DragControl.getMaster(s);\n\t\tif (m.$drop && m!=this) return m.$drop(s,t,e);\n\t\tt.appendChild(s);\n\t},\n\t//called when dnd just started\n\t$drag:function(s,e){\n\t\tvar m=this._drag_masters[s.webix_drag];\n\t\tif (m.$drag && m!=this) return m.$drag(s,e);\n\t\treturn \"
\"+s.innerHTML+\"
\";\n\t}\t\n};\n\n//global touch-drag handler\nattachEvent(\"onLongTouch\", function(ev){\n\tif(DragControl._active)\n\t\tDragControl._createTouchDrag(ev);\n});\n\n\nexport default DragControl;","import {offset, pos as getPos} from \"../webix/html\";\nimport {toNode} from \"../webix/helpers\";\nimport DragControl from \"../core/dragcontrol\";\n\nconst Movable = {\n\tmove_setter: function (value) {\n\t\tif (value){\n\t\t\tDragControl.addDrag(this._headobj?this._headobj:this.$view, this);\n\t\t}\n\t\treturn value;\n\t},\n\t$dragCreate:function(object, e){\n\t\tif(this.config.move){\n\t\t\tvar elOffset = offset(object);\n\t\t\tvar elPos = getPos(e);\n\t\t\tDragControl.top = elOffset.y - elPos.y;\n\t\t\tDragControl.left = elOffset.x - elPos.x;\n\n\t\t\treturn toNode(this._viewobj);\n\t\t}\n\t},\n\t$dragDestroy:function(node, drag){\n\t\tvar view = this;\n\t\tif (view._settings){\n\t\t\tview._settings.top = parseInt(drag.style.top,10);\n\t\t\tview._settings.left = parseInt(drag.style.left,10);\n\t\t}\n\n\t\tDragControl.top = DragControl.left = 0;\n\t\tthis.callEvent(\"onViewMoveEnd\", []);\n\t\treturn;\n\t},\n\t$dragPos:function(pos, e){\n\t\tthis.callEvent(\"onViewMove\", [pos, e]);\n\t}\n};\n\nexport default Movable;","import {create, remove} from \"../webix/html\";\nimport {zIndex} from \"../ui/helpers\";\nimport {bind} from \"../webix/helpers\";\nimport {_event} from \"../webix/htmlevents\";\n\nimport state from \"./state\";\n\nconst Modality = {\n\t_modal_set:function(value){\n\t\tif (value){\n\t\t\tif (!this._modal_cover){\n\t\t\t\tthis._modal_cover = create(\"div\",{\n\t\t\t\t\t\"class\":\"webix_modal\"\n\t\t\t\t});\n\t\t\t\t/*\twith below code we will have the same zIndex for modal layer as for the previous \n\t\t\t\t\tabs positioned element, but because of attaching order modal layer will be on top anyway\n\t\t\t\t*/\n\t\t\t\tvar index = this._settings.zIndex||zIndex();\n\n\t\t\t\t//set topmost modal layer\n\t\t\t\tthis._previous_modality = state._modality;\n\t\t\t\tstate._modality = index;\n\n\n\t\t\t\tthis._modal_cover.style.zIndex = index-1;\n\t\t\t\tthis._viewobj.style.zIndex = index;\n\t\t\t\tdocument.body.appendChild(this._modal_cover);\n\t\t\t\tdocument.body.style.overflow = \"hidden\";\n\t\t\t\t_event( this._modal_cover, \"click\", bind(this._ignore_clicks, this));\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (this._modal_cover){\n\t\t\t\tremove(this._modal_cover);\n\t\t\t\tdocument.body.style.overflow = \"\";\n\n\t\t\t\t//restore topmost modal layer\n\t\t\t\t//set delay, as current window closing may have not finished click event\n\t\t\t\t//need to wait while it is not fully processed\n\t\t\t\tvar topmost = this._previous_modality;\n\t\t\t\tsetTimeout(function(){ state._modality = topmost; }, 1);\n\n\t\t\t\tthis._modal_cover = null;\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t}\n};\n\n\nexport default Modality;","import {create, offset, addCss, pos as getPos, remove, removeCss} from \"../webix/html\";\nimport env from \"../webix/env\";\nimport {zIndex} from \"../ui/helpers\";\nimport {_event, event, eventRemove} from \"../webix/htmlevents\";\n\n\nconst ResizeArea = {\n\tresize_setter:function(value){\n\t\tif (value && !this._resizeHandlers)\n\t\t\tthis._renderResizeHandler();\n\n\t\treturn value;\n\t},\n\t_renderResizeHandler: function(){\n\t\tif(!this._rwHandle){\n\t\t\tvar rp = this._viewobj;\n\t\t\tif (rp.firstChild){\n\t\t\t\trp = rp.firstChild;\n\t\t\t\trp.style.position = \"relative\";\n\t\t\t}\n\n\t\t\tthis._rwHandle = create(\"DIV\",{\n\t\t\t\t\"class\"\t: \"webix_resize_handle\",\n\t\t\t\t/*@attr*/\"webix_disable_drag\" : \"true\"\n\t\t\t});\n\t\t\trp.appendChild(this._rwHandle);\n\t\t\t_event(this._rwHandle, env.mouse.down, this._wrDown, {bind:this});\n\t\t}\n\t},\n\t_showResizeFrame: function(width,height){\n\t\tif(!this._resizeFrame){\n\t\t\tthis._resizeFrame = create(\"div\", {\"class\":\"webix_resize_frame\"},\"\");\n\t\t\tdocument.body.appendChild(this._resizeFrame);\n\t\t\tvar elPos = offset(this._viewobj);\n\t\t\tthis._resizeFrame.style.left = elPos.x+\"px\";\n\t\t\tthis._resizeFrame.style.top = elPos.y+\"px\";\n\t\t\tthis._resizeFrame.style.zIndex = zIndex();\n\t\t}\n\n\t\tthis._resizeFrame.style.width = width + \"px\";\n\t\tthis._resizeFrame.style.height = height + \"px\";\n\t},\n\t_wrDown:function(){\n\t\tif (this.config.resize){\n\t\t\taddCss(document.body,\"webix_noselect webix_resize_cursor\");\n\t\t\tthis._wsReady = offset(this._viewobj);\n\n\t\t\tthis._resizeHandlersMove = event(document.body, env.mouse.move, this._wrMove, {bind:this});\n\t\t\tthis._resizeHandlersUp = event(document.body, env.mouse.up, this._wrUp, {bind:this});\n\t\t}\n\t},\n\t_wrMove:function(e){\n\t\tif (this._wsReady !== false){\n\t\t\tvar elPos = getPos(e);\n\t\t\tvar progress = {x:elPos.x - this._wsReady.x, y: elPos.y - this._wsReady.y};\n\n\t\t\tif (this.$resizeMove)\n\t\t\t\tthis.$resizeMove(progress);\n\t\t\telse {\n\t\t\t\tvar config = this.config;\n\t\t\t\tvar minWidth = config.minWidth||100;\n\t\t\t\tvar minHeight = config.minHeight||100;\n\n\t\t\t\tif (progress.x < minWidth)\n\t\t\t\t\tprogress.x = minWidth;\n\t\t\t\telse if(progress.x > config.maxWidth)\n\t\t\t\t\tprogress.x = config.maxWidth;\n\n\t\t\t\tif (progress.y < minHeight)\n\t\t\t\t\tprogress.y = minHeight;\n\t\t\t\telse if(progress.y > config.maxHeight)\n\t\t\t\t\tprogress.y = config.maxHeight;\n\t\t\t}\n\n\t\t\tthis._wsProgress = progress;\n\t\t\tthis._showResizeFrame(progress.x,progress.y);\n\t\t}\n\t},\n\t_wrUp:function(){\n\t\t// remove resize frame and css styles\n\t\tif (this._resizeFrame)\n\t\t\tthis._resizeFrame = remove(this._resizeFrame);\n\t\t\n\t\tremoveCss(document.body,\"webix_resize_cursor\");\n\t\tremoveCss(document.body,\"webix_noselect\");\n\t\teventRemove(this._resizeHandlersMove);\n\t\teventRemove(this._resizeHandlersUp);\n\n\t\t// set Window sizes\n\t\tif (this._wsProgress){\n\t\t\tif (this.$resizeEnd)\n\t\t\t\tthis.$resizeEnd(this._wsProgress);\n\t\t\telse {\n\t\t\t\tthis.config.width = this._wsProgress.x;\n\t\t\t\tthis.config.height = this._wsProgress.y;\n\t\t\t\tthis.resize();\n\t\t\t}\n\t\t}\n\n\t\tthis._wsReady = this._wsProgress = false;\n\t\tthis.callEvent(\"onViewResize\",[]);\n\t}\n};\n\nexport default ResizeArea;","import {pos as getPos, offset} from \"../webix/html\";\nimport {protoUI, ui, $$} from \"../ui/core\";\nimport animate from \"../webix/animate\";\nimport {$active} from \"../webix/skin\";\n\nimport state from \"../core/state\";\nimport env from \"../webix/env\";\nimport UIManager from \"../core/uimanager\";\nimport Destruction from \"../core/destruction\";\n\nimport {zIndex} from \"../ui/helpers\";\nimport {bind, toNode, delay, clone, uid, _to_array, extend} from \"../webix/helpers\";\nimport {_event} from \"../webix/htmlevents\";\nimport {assert} from \"../webix/debug\";\nimport {callEvent} from \"../webix/customevents\";\n\nimport EventSystem from \"../core/eventsystem\";\nimport Movable from \"../core/movable\";\nimport Modality from \"../core/modality\";\nimport ResizeArea from \"../core/resizearea\";\n\nimport baseview from \"./baseview\";\nimport base from \"./view\";\n\nstate._popups = _to_array();\n\nconst api = {\n\tname:\"window\",\n\n\t$init:function(config){\n\t\tthis._viewobj.innerHTML = \"
\";\n\t\t\n\t\tthis._contentobj = this._viewobj.firstChild;\n\t\tthis._headobj = this._contentobj.childNodes[0];\n\t\tthis._dataobj = this._bodyobj = this._contentobj.childNodes[1];\n\t\tthis._viewobj.className +=\" webix_window\";\n\n\t\tthis._viewobj.setAttribute(\"role\", \"dialog\");\n\t\tthis._viewobj.setAttribute(\"tabindex\", \"0\");\n\t\t\n\t\tthis._head_cell = this._body_cell = null;\n\t\tconfig._inner = {top:false, left:false, right:false, bottom:false }; //set border flags\n\t\tif (!config.id) config.id = uid();\n\n\t\t_event(this._contentobj, \"click\", bind(this._ignore_clicks, this));\n\n\t\t// IE8 does not allow to define event capturing\n\t\tif(this._contentobj.addEventListener)\n\t\t\t_event(this._contentobj, \"click\", function(){\n\t\t\t\t// brings a window to the front of other windows\n\t\t\t\tif(!this._settings.zIndex && this._settings.toFront){\n\t\t\t\t\tthis._viewobj.style.zIndex = zIndex();\n\t\t\t\t}\n\t\t\t}, {bind:this, capture: true});\n\n\t\t// hidden_setter handling\n\t\tif(config.modal)\n\t\t\tthis._modal = true;\n\t\t// head_setter handling\n\t\tif(config.close)\n\t\t\tthis._settings.close = config.close;\n\n\t\tthis.attachEvent(\"onViewMoveEnd\", function(){\n\t\t\tif(this._settings.position)\n\t\t\t\tdelete this._settings.position;\n\t\t});\n\t},\n\t_ignore_clicks:function(e){\n\t\tvar popups = state._popups;\n\t\tvar index = popups.find(this);\n\t\tif (index == -1)\n\t\t\tindex = popups.length - 1;\n\n\t\te.click_view = index;\n\t\tif (env.isIE8)\n\t\t\te.srcElement.click_view = index;\n\t},\n\tgetChildViews:function(){\n\t\tif (this._head_cell)\n\t\t\treturn [this._head_cell, this._body_cell];\n\t\telse\n\t\t\treturn [this._body_cell];\n\t},\n\tzIndex_setter:function(value){\n\t\tthis._viewobj.style.zIndex = value;\n\t\treturn value;\n\t},\n\t_remove:function(){ \n\t\tthis.body_setter();\n\t},\n\t_replace:function(new_view, old_view){\n\t\told_view = old_view || this._body_cell;\n\t\tconst isBody = old_view == this._body_cell;\n\n\t\told_view.destructor();\n\n\t\tif(isBody)\n\t\t\tthis._body_cell = new_view;\n\t\telse \n\t\t\tthis._head_cell = new_view;\n\n\t\t(isBody ? this._bodyobj : this._headobj).appendChild(new_view._viewobj);\n\n\t\tconst cell = new_view._viewobj.style;\n\n\t\tlet settings = { top:true, left:true, right:true, bottom:true };\n\t\tlet size = \"0px\";\n\n\t\tif(new_view.config.borderless === false){\n\t\t\tsettings = clone(this._settings._inner);\n\t\t\tsize = \"1px\";\n\t\t}\n\t\tnew_view._settings._inner = settings;\n\t\tcell.borderTopWidth = cell.borderBottomWidth = cell.borderLeftWidth = cell.borderRightWidth = size;\n\n\t\tthis.resize(true);\n\t},\n\tshow:function(node, mode, point){\n\t\tif (node === true){\n\t\t\t//recursive call from some child item\n\t\t\tif (!this._settings.hidden)\n\t\t\t\treturn;\n\t\t\tnode = null;\n\t\t}\n\n\t\tif(!this.callEvent(\"onBeforeShow\",arguments))\n\t\t\treturn false;\n\n\t\tthis._settings.hidden = false;\n\t\tthis._viewobj.style.zIndex = (this._settings.zIndex||zIndex());\n\t\tif (this._settings.modal || this._modal){\n\t\t\tthis._modal_set(true);\n\t\t\tthis._modal = null; // hidden_setter handling\n\t\t}\n\n\t\tvar elPos, dx, dy;\n\t\tmode = mode || {};\n\t\tif (!mode.pos)\n\t\t\tmode.pos = this._settings.relative;\n\n\t\t//get position of source html node\n\t\t//we need to show popup which pointing to that node\n\t\tif (node){\n\t\t\t//if event was provided - get node info from it\n\t\t\tif (typeof node == \"object\" && !node.tagName){\n\t\t\t\t/*below logic is far from ideal*/\n\t\t\t\tif (node.target || node.srcElement){\n\t\t\t\t\telPos = getPos(node);\n\t\t\t\t\tdx = 20;\n\t\t\t\t\tdy = 5;\n\t\t\t\t} else\n\t\t\t\t\telPos = node;\n\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tnode = toNode(node);\n\t\t\t\tassert(node,\"Not existing target for window:show\");\n\t\t\t\telPos = offset(node);\n\t\t\t}\t\n\n\t\t\t//size of body, we need to fit popup inside\n\t\t\tvar x = Math.max(window.innerWidth || 0, document.body.offsetWidth);\n\t\t\tvar y = Math.max(window.innerHeight || 0, document.body.offsetHeight);\n\n\t\t\t//size of node, near which popup will be rendered\n\t\t\tdx = dx || node.offsetWidth || 0;\n\t\t\tdy = dy || node.offsetHeight || 0;\n\t\t\t//size of popup element\n\t\t\tvar size = this._last_size;\n\n\t\t\tvar fin_x = elPos.x;\n\t\t\tvar fin_y = elPos.y;\n\t\t\tvar point_y=0;\n\t\t\tvar point_x = 0;\n\t\t\tvar scrollLeft = 0, scrollTop = 0;\n\t\t\tvar fit = this._settings.autofit;\n\t\t\tif (fit){\n\t\t\t\tvar nochange = (fit === \"node\");\n\t\t\t\tvar delta_x = 6; var delta_y=6; var delta_point = 6;\n\t\t\t\tif (!this._settings.point)\n\t\t\t\t\tdelta_x = delta_y = delta_point = 0;\n\n\t\t\t\t//default pointer position - top \n\t\t\t\tpoint = \"top\";\n\t\t\t\tfin_y=0; fin_x = 0;\n\n\t\t\t\tscrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\t\t//if we want to place menu at righ, but there is no place move it to left instead\n\t\t\t\tif (x - elPos.x - dx < size[0] && mode.pos == \"right\" && !nochange)\n\t\t\t\t\tmode.pos = \"left\";\n\n\t\t\t\tif (mode.pos == \"right\"){\n\t\t\t\t\tfin_x = elPos.x+delta_x+dx; \n\t\t\t\t\tdelta_y = -dy;\n\t\t\t\t\tpoint = \"left\";\n\t\t\t\t\tpoint_y = Math.round(elPos.y+dy/2);\n\t\t\t\t\tpoint_x = fin_x - delta_point;\n\t\t\t\t} else if (mode.pos == \"left\"){\n\t\t\t\t\tfin_x = elPos.x-delta_x-size[0]-1;\n\t\t\t\t\tdelta_y = -dy;\n\t\t\t\t\tpoint = \"right\";\n\t\t\t\t\tpoint_y = Math.round(elPos.y+dy/2);\n\t\t\t\t\tpoint_x = fin_x + size[0]+1;\n\t\t\t\t} else {\n\t\t\t\t\t//left border of screen\n\t\t\t\t\tif (elPos.x < scrollLeft){\n\t\t\t\t\t\tfin_x = scrollLeft;\n\t\t\t\t\t//popup exceed the right border of screen\n\t\t\t\t\t} else if (x+scrollLeft-elPos.x > size[0]){\n\t\t\t\t\t\tfin_x = elPos.x; //aligned\n\t\t\t\t\t} else{\n\t\t\t\t\t\tfin_x = x+scrollLeft-delta_x-size[0]; //not aligned\n\t\t\t\t\t}\n\n\t\t\t\t\tpoint_x = Math.round(elPos.x+dx/2);\n\t\t\t\t\t//when we have a small popup, point need to be rendered at center of popup\n\t\t\t\t\tpoint_x = Math.min(point_x, fin_x + size[0] - delta_point*3);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//if height is not fixed - use default position\n\t\t\t\tscrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\t\tif (((!size[1] || (y+scrollTop-dy-elPos.y-delta_y > size[1])) || nochange) && mode.pos != \"top\"){\n\t\t\t\t\t//bottom\t\n\t\t\t\t\tfin_y = dy+elPos.y+delta_y - (!this._settings.point ? 0: 4);\n\t\t\t\t\tif (!point_y){\n\t\t\t\t\t\tpoint = \"top\";\n\t\t\t\t\t\tpoint_y = fin_y-delta_point;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t//top\n\t\t\t\t\tfin_y = elPos.y-delta_y - size[1];\n\t\t\t\t\tif (fin_y < 0){\n\t\t\t\t\t\tfin_y = 0; \n\t\t\t\t\t\t//left|right point can be used, but there is no place for top point\n\t\t\t\t\t\tif (point == \"top\") point = false;\n\t\t\t\t\t} else if (!point_y){\n\t\t\t\t\t\tpoint = \"bottom\";\n\t\t\t\t\t\tfin_y --;\n\t\t\t\t\t\tpoint_y = fin_y+size[1]+1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar deltax = (mode.x || 0);\n\t\t\tvar deltay = (mode.y || 0);\n\n\t\t\tvar fixed = this._checkFixedPosition();\n\t\t\tif (fixed){\n\t\t\t\tfin_y = fin_y - scrollTop;\n\t\t\t\tpoint_y = point_y - scrollTop;\n\t\t\t}\n\n\t\t\tthis.setPosition(fin_x+deltax, fin_y+deltay);\n\t\t\tif (this._set_point){\n\t\t\t\tif (point && this._settings.point)\n\t\t\t\t\tthis._set_point(point,point_x+deltax, point_y+deltay, fixed);\n\t\t\t\telse\n\t\t\t\t\tthis._hide_point();\n\t\t\t}\n\t\t} else\n\t\t\tthis._setPosition(this._settings.left, this._settings.top);\n\n\t\tthis._viewobj.style.display = \"block\";\n\t\tthis._hide_timer = 1;\n\t\tdelay(function(){ this._hide_timer = 0; }, this, [], (env.touch ? 400 : 100 ));\n\t\t\n\t\tthis._render_hidden_views();\n\t\t\n\t\t\n\t\tif (this.config.autofocus){\n\t\t\tthis._prev_focus = UIManager.getFocus();\n\t\t\tUIManager.setFocus(this);\n\t\t}\n\n\t\tif (-1 == state._popups.find(this))\n\t\t\tstate._popups.push(this);\n\n\t\tthis.callEvent(\"onShow\",[]);\n\t}, \n\t_hide:function(e){\n\t\t//do not hide modal windows\n\t\tif (this._settings.hidden || this._settings.modal || this._hide_timer || (e && e.showpopup)) return;\n\t\t//do not hide popup, when we have modal layer above the popup\n\t\tif (state._modality && this._settings.zIndex <= state._modality) return;\n\n\t\t//ignore inside clicks and clicks in child-popups\n\n\t\tif (e){\n\t\t\tvar index = env.isIE8 ? e.srcElement.click_view : e.click_view;\n\t\t\tif (!index && index !== 0) index = -1;\n\n\t\t\tvar myindex = state._popups.find(this);\n\n\t\t\tif (myindex <= index) return;\n\t\t}\n\n\t\tthis._hide_single();\n\t},\n\thidden_setter:function(value){\n\t\tif(value) \n\t\t\tthis.hide();\n\t\telse\n\t\t\tthis.show();\n\t\treturn !!value;\n\t},\n\thide:function(){\n\t\tconst index = this._hide_single();\n\t\tthis._hide_sub_popups(index);\n\t},\n\t_hide_single:function(){\n\t\tif (this.$destructed || this._settings.hidden) return;\n\n\t\tif (this._settings.modal)\n\t\t\tthis._modal_set(false);\n\t\t\t\n\t\tthis._hiding_process();\n\n\t\tif (this._settings.autofocus){\n\t\t\tvar el = document.activeElement;\n\t\t\t//as result of hotkey, we can have a activeElement set to document.body\n\t\t\tif (el && this._viewobj && (this._viewobj.contains(el) || el === document.body)){\n\t\t\t\tUIManager.setFocus(this._prev_focus);\n\t\t\t\tthis._prev_focus = null;\n\t\t\t}\n\t\t}\n\n\t\t//clean state\n\t\tconst index = state._popups.find(this);\n\t\tif (index > -1)\n\t\t\tstate._popups.removeAt(index);\n\n\t\treturn index;\n\t},\n\t_hiding_process:function(){\n\t\tif (this._settings.position == \"top\"){\n\t\t\tanimate(this._viewobj, {type: \"slide\", x:0, y:-(this._content_height+20), duration: 300,\n\t\t\t\tcallback:this._hide_callback, master:this});\n\t\t} else \n\t\t\tthis._hide_callback();\n\t},\n\t//hide all child-popups\n\t_hide_sub_popups:function(index){\n\t\tif (index > -1){\n\t\t\tconst order = state._popups;\n\t\t\tfor (let i=order.length-1; i>=index; i--)\n\t\t\t\tif (order[i]._hide_point)\t//hide only popups, skip windows\n\t\t\t\t\torder[i]._hide_single();\n\t\t}\n\t},\n\tdestructor: function() {\n\t\tthis.hide();\n\t\tDestruction.destructor.apply(this, []);\n\t},\n\t_hide_callback:function(){\n\t\tif (!this.$destructed){\n\t\t\tthis._viewobj.style.display = \"none\";\n\t\t\tthis._settings.hidden = true;\n\t\t\tthis.callEvent(\"onHide\",[]);\n\t\t}\n\t},\n\tclose:function(){\n\t\tthis.destructor(); \n\t},\n\t_inner_body_set:function(value){\n\t\tif (typeof value.borderless == \"undefined\")\n\t\t\tvalue.borderless = true;\n\t},\n\tbody_setter:function(value){\n\t\tif (typeof value != \"object\")\n\t\t\tvalue = {template:value };\n\t\tthis._inner_body_set(value);\n\n\t\tstate._parent_cell = this;\n\t\tthis._body_cell = ui._view(value);\n\n\t\tthis._bodyobj.appendChild(this._body_cell._viewobj);\n\t\treturn value;\n\t},\n\thead_setter:function(value){\n\t\tif (value === false) return value;\n\n\t\tconst text = typeof value == \"string\";\n\t\tconst config = { padding:0, css: \"webix_win_title\", type:\"header\", borderless:true };\n\t\tif(text){\n\t\t\tthis._viewobj.setAttribute(\"aria-label\", value);\n\t\t\tvalue = { template:value };\n\t\t}\n\t\tif(value.view == \"template\" || (!value.view && value.template)){\n\t\t\textend(value, config);\n\t\t}\n\t\tif(text && this.config.close){\n\t\t\tvalue = { padding:{ left: $active.inputHeight+2, right:2 }, cols:[\n\t\t\t\tvalue,\n\t\t\t\t{ view:\"icon\", icon:\"wxi-close\", click:()=>{\n\t\t\t\t\tthis.hide();\n\t\t\t\t}}\n\t\t\t]};\n\t\t}\n\t\telse\n\t\t\textend(value, {borderless:true});\n\n\t\tstate._parent_cell = this;\n\t\tthis._head_cell = ui._view(value);\n\n\t\tthis._headobj.appendChild(this._head_cell._viewobj);\n\t\treturn value;\n\t},\n\tgetBody:function(){\n\t\treturn this._body_cell;\n\t},\n\tgetHead:function(){\n\t\treturn this._head_cell;\n\t},\n\tadjust:function(){ return this.resize(); },\n\tresizeChildren:function(){\n\t\tif (this._body_cell)\n\t\t\tthis.resize();\n\t},\n\tresize:function(){\n\t\tbaseview.api.adjust.call(this);\n\t\tcallEvent(\"onResize\", []);\n\t\tif (this.isVisible()){\n\t\t\tthis._setPosition(this._settings.left, this._settings.top);\n\t\t}\n\t},\n\t_checkFixedPosition: function() {\n\t\tif(this._settings.master) {\n\t\t\tvar top = $$(this._settings.master).getTopParentView().$view;\n\t\t\treturn top && top.style.position === \"fixed\";\n\t\t}\n\t\treturn false;\n\t},\n\t_setPosition:function(x,y){\n\t\tif ((this._settings.position || this._checkFixedPosition())){\n\t\t\tthis.$view.style.position = \"fixed\";\n\n\t\t\tvar width = this._content_width;\n\t\t\tvar height = this._content_height;\n\t\t\tif (width <= 0 || height <= 0) return;\n\n\t\t\tvar maxWidth = (window.innerWidth||document.documentElement.offsetWidth);\n\t\t\tvar maxHeight = (window.innerHeight||document.documentElement.offsetHeight);\n\t\t\tvar left = Math.round((maxWidth-width)/2);\n\t\t\tvar top = Math.round((maxHeight-height)/2);\n\n\t\t\tif (typeof this._settings.position == \"function\"){\n\t\t\t\tvar state = { \tleft:left, top:top, \n\t\t\t\t\twidth:width, height:height, \n\t\t\t\t\tmaxWidth:maxWidth, maxHeight:maxHeight };\n\t\t\t\tthis._settings.position.call(this, state);\n\n\t\t\t\tif (state.width != width || state.height != height)\n\t\t\t\t\tthis.$setSize(state.width, state.height);\n\n\t\t\t\tthis.setPosition(state.left, state.top);\n\t\t\t} else {\n\t\t\t\tif (this._settings.position == \"top\"){\n\t\t\t\t\tif (animate.isSupported())\n\t\t\t\t\t\ttop = -1*height;\n\t\t\t\t\telse\n\t\t\t\t\t\ttop = 10;\n\t\t\t\t}\n\t\t\t\t//popup inside a fixed win\n\t\t\t\tif(!this._settings.position){\n\t\t\t\t\tleft = this._settings.left || left;\n\t\t\t\t\ttop = this._settings.top || top;\n\t\t\t\t}\n\t\t\t\tthis.setPosition(left, top);\n\t\t\t}\n\t\t\t\n\t\t\tif (this._settings.position == \"top\")\n\t\t\t\tanimate(this._viewobj, {type: \"slide\", x:0, y:height-((this._settings.padding||0)*2), duration: 300 ,callback:this._topPositionCallback, master:this});\n\t\t} else \n\t\t\tthis.setPosition(x,y);\n\t},\n\t_topPositionCallback:function(node){\n\t\tanimate.clear(node);\n\t\tthis._settings.top=-((this._settings.padding||0)*2);\n\t\tthis.setPosition(this._settings.left, this._settings.top);\n\t},\n\tsetPosition:function(x,y){\n\t\tthis._viewobj.style.top = y+\"px\";\n\t\tthis._viewobj.style.left = x+\"px\";\n\t\tthis._settings.left = x; this._settings.top=y;\n\t},\n\t$getSize:function(dx, dy){\n\t\tvar _borders = this._settings._inner;\n\t\tif (_borders){\n\t\t\tdx += (_borders.left?0:1)+(_borders.right?0:1);\n\t\t\tdy += (_borders.top?0:1)+(_borders.bottom?0:1);\n\t\t}\n\t\t//line between head and body\n\t\tif (this._settings.head)\n\t\t\tdy += 1;\n\n\t\tvar size = this._body_cell.$getSize(0,0);\n\t\tvar headMinWidth = 0;\n\t\tif (this._head_cell){\n\t\t\tvar head_size = this._head_cell.$getSize(0,0);\n\t\t\tif (head_size[3]==head_size[2])\n\t\t\t\tthis._settings.headHeight = head_size[3];\n\t\t\tdy += this._settings.headHeight;\n\t\t\theadMinWidth = head_size[0];\n\t\t}\n\n\t\tif (this._settings.fullscreen){\n\t\t\tvar width = window.innerWidth || document.body.clientWidth;\n\t\t\tvar height = window.innerHeight || document.body.clientHeight;\n\t\t\treturn [width, width, height, height];\n\t\t}\n\n\t\t//get layout sizes\n\t\tvar self_size = base.api.$getSize.call(this, 0, 0);\n\n\t\t//use child settings if layout's one was not defined\n\t\tif (headMinWidth && size[1] > 100000)\n\t\t\tsize[0] = Math.max(headMinWidth, size[0]);\n\n\t\tself_size[1] = Math.min(self_size[1],(size[1]>=100000&&self_size[1]>=100000?Math.max(size[0], self_size[0]):size[1])+dx);\n\t\tself_size[3] = Math.min(self_size[3],(size[3]>=100000&&self_size[3]>=100000?Math.max(size[2], self_size[2]):size[3])+dy);\n\n\t\tself_size[0] = Math.min(Math.max(self_size[0],size[0] + dx), self_size[1]);\n\t\tself_size[2] = Math.min(Math.max(self_size[2],size[2] + dy), self_size[3]);\n\n\t\treturn self_size;\n\t},\n\t$setSize:function(x,y){\n\t\tbase.api.$setSize.call(this,x,y);\n\t\tx = this._content_width;\n\t\ty = this._content_height;\n\t\tif (this._settings.head === false) {\n\t\t\tthis._headobj.style.display=\"none\";\n\t\t\tthis._body_cell.$setSize(x,y);\n\t\t} else { \n\t\t\tthis._head_cell.$setSize(x,this._settings.headHeight);\n\t\t\tthis._body_cell.$setSize(x,y-this._settings.headHeight);\n\t\t}\n\t},\n\t$skin:function(){\n\t\tthis.defaults.headHeight = $active.barHeight;\n\t},\n\tdefaults:{\n\t\ttop:0,\n\t\tleft:0,\n\t\tautofit:true,\n\t\trelative:\"bottom\",\n\t\tbody:\"\",\n\t\thead:\"\",\n\t\thidden: true,\n\t\tautofocus:true,\n\t\tminWidth:300,\n\t\tminHeight:200\n\t}\n};\n\nconst view = protoUI(api, base.view, Movable, Modality, EventSystem, ResizeArea);\nexport default {api, view};","import {preventEvent} from \"../webix/html\";\nimport {bind, toNode} from \"../webix/helpers\";\nimport window from \"../views/window\";\nimport {$$} from \"../ui/core\";\nimport {event, eventRemove} from \"../webix/htmlevents\";\nimport {assert} from \"../webix/debug\";\nimport {callEvent} from \"../webix/customevents\";\n\n\nconst ContextHelper = {\n\tdefaults:{\n\t\tpadding:\"4\",\n\t\thidden:true\n\t},\n\tbody_setter:function(value){\n\t\tvalue = window.api.body_setter.call(this, value);\n\t\tthis._body_cell._viewobj.style.borderWidth = \"0px\";\n\t\treturn value;\n\t},\n\tattachTo:function(obj){\n\t\tassert(obj, \"Invalid target for Context::attach\");\n\t\tvar id;\n\t\tif (obj.on_context)\n\t\t\tid = obj.attachEvent(\"onAfterContextMenu\", bind(this._show_at_ui, this));\n\t\telse \n\t\t\tid = event(obj, \"contextmenu\", this._show_at_node, {bind:this});\n\n\t\tthis.attachEvent(\"onDestruct\", function(){\n\t\t\tif (obj.callEvent)\n\t\t\t\tobj.detachEvent(id);\n\t\t\telse\n\t\t\t\teventRemove(id);\n\t\t\tobj = null;\t\t\t\n\t\t});\n\t},\n\tgetContext:function(){\n\t\treturn this._area;\n\t},\n\tsetContext:function(area){\n\t\tthis._area = area;\n\t},\n\t_show_at_node:function(e){\n\t\tthis._area = toNode(e||window.event);\n\t\treturn this._show_at(e);\n\t},\n\t_show_at_ui:function(id, e){\n\t\tthis._area = { obj:$$(e), id:id };\n\t\treturn this._show_at(e);\n\t},\n\t_show_at:function(e){\n\t\tvar result = this.show(e, null, true);\n\t\tif (result === false) return result;\n\n\t\t//event forced to close other popups|context menus\n\t\tcallEvent(\"onClick\", []);\t\t\n\t\treturn preventEvent(e);\n\t},\n\t_show_on_mouse_out:true,\n\tmaster_setter:function(value){\n\t\tthis.attachTo(value);\n\t\treturn null;\n\t}\n};\n\nexport default ContextHelper;","import state from \"../core/state\";\nimport UIManager from \"../core/uimanager\";\nimport {bind, delay} from \"../webix/helpers\";\nimport {event} from \"../webix/htmlevents\";\n\n\nconst clipbuffer = {\n\n\t_area: null,\n\t_blur_id: null,\n\t_ctrl: 0,\n\n\t/*! create textarea or returns existing\n\t **/\n\tinit: function() {\n\t\t// returns existing textarea\n\t\tif (this._area !== null)\n\t\t\treturn this._area;\n\n\t\tstate.destructors.push({ obj: this });\n\t\t// creates new textarea\n\t\tthis._area = document.createElement(\"textarea\");\n\t\tthis._area.className = \"webix_clipbuffer\";\n\t\tthis._area.setAttribute(/*@attr*/\"webixignore\", 1);\n\t\tthis._area.setAttribute(\"spellcheck\", \"false\");\n\t\tthis._area.setAttribute(\"autocapitalize\", \"off\");\n\t\tthis._area.setAttribute(\"autocorrect\", \"off\");\n\t\tthis._area.setAttribute(\"autocomplete\", \"off\");\n\t\tdocument.body.appendChild(this._area);\n\n\t\tevent(document.body, \"keydown\", bind(function(e){\n\t\t\tvar key = e.keyCode;\n\t\t\tvar ctrl = !!(e.ctrlKey || e.metaKey);\n\t\t\tif (key === 86 && ctrl){\n\t\t\t\tthis._area.value = \"\";\n\t\t\t\tdelay(this._paste, this, [e], 100);\n\t\t\t}\n\t\t}, this));\n\n\t\treturn this._area;\n\t},\n\tdestructor: function(){\n\t\tthis._area = null;\n\t},\n\t/*! set text into buffer\n\t **/\n\tset: function(text) {\n\t\tthis.init();\n\t\ttext = text === \"\" ? \"\\n\" : text;\n\t\tthis._area.value = text;\n\t\tthis.focus();\n\t},\n\t/*! select text in textarea\n\t **/\n\tfocus: function() {\n\t\t// if there is native browser selection, skip focus\n\t\tif(!this._isSelectRange()){\n\t\t\tthis.init();\n\t\t\tthis._area.focus();\n\t\t\tthis._area.select();\n\t\t}\n\n\t},\n\t/*! checks document selection\n\t **/\n\t_isSelectRange: function() {\n\t\tvar text = \"\";\n\t\tif (typeof window.getSelection != \"undefined\") {\n\t\t\ttext = window.getSelection().toString();\n\t\t} else if (typeof document.selection != \"undefined\" && document.selection.type == \"Text\") {\n\t\t\ttext = document.selection.createRange().text;\n\t\t}\n\t\treturn !!text;\n\t},\n\t/*! process ctrl+V pressing\n\t **/\n\t_paste: function(e) {\n\t\tvar trg = e.target || e.srcElement;\n\t\tif (trg === this._area) {\n\t\t\tvar text = this._area.value;\n\t\t\tvar last_active = UIManager.getFocus();\n\t\t\tif (last_active && (!last_active.getEditor || !last_active.getEditor())){\n\t\t\t\tlast_active.callEvent(\"onPaste\", [text]);\n\t\t\t\tthis._area.select();\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport default clipbuffer;","import UIManager from \"../core/uimanager\";\nimport {isUndefined} from \"../webix/helpers\";\nimport template from \"../webix/template\";\n\nimport clipbuffer from \"../webix/clipbuffer\";\n\nconst CopyPaste = {\n\tclipboard_setter: function(value) {\n\t\tif (value === true || value === 1) value = \"modify\";\n\t\tthis.attachEvent(\"onAfterSelect\", function(id) {\n\t\t\tvar item = this.getItem(id);\n\t\t\tvar text = this.type.templateCopy(item);\n\t\t\tclipbuffer.set(text, this);\n\t\t\tclipbuffer.focus();\n\t\t\tUIManager.setFocus(this);\n\t\t});\n\t\tthis.attachEvent(\"onPaste\", function(text) {\n\t\t\tif (!isUndefined(this._paste[this._settings.clipboard]))\n\t\t\t\tthis._paste[this._settings.clipboard].call(this, text);\n\t\t});\n\t\tthis.attachEvent(\"onFocus\", function() {\n\t\t\tclipbuffer.focus();\n\t\t});\n\t\t// solution for clicks on selected items\n\t\tthis.attachEvent(\"onItemClick\",function(id){\n\t\t\tif(!this._selected || this._selected.find(id)!==-1){\n\t\t\t\tclipbuffer.focus();\n\t\t\t\tUIManager.setFocus(this);\n\t\t\t}\n\t\t});\n\t\treturn value;\n\t},\n\t_paste: {\n\t\t// insert new item with pasted value\n\t\tinsert: function(text) {\n\t\t\tthis.add({ value: text });\n\t\t},\n\t\t// change value of each selected item\n\t\tmodify: function(text) {\n\t\t\tvar sel = this.getSelectedId(true);\n\t\t\tfor (var i = 0; i < sel.length; i++) {\n\t\t\t\tthis.getItem(sel[i]).value = text;\n\t\t\t\tthis.refresh(sel[i]);\n\t\t\t}\n\t\t},\n\t\t// do nothing\n\t\tcustom: function() {}\n\t},\n\ttemplateCopy_setter: function(value) {\n\t\tthis.type.templateCopy = template(value);\n\t},\n\ttype:{\n\t\ttemplateCopy: function(item) {\n\t\t\treturn this.template(item);\n\t\t}\n\t}\n};\n\nexport default CopyPaste;","import {create, insertBefore, remove} from \"../webix/html\";\nimport env from \"../webix/env\";\nimport {extend, bind} from \"../webix/helpers\";\n\n\nconst CustomPrint = {\n\t$customPrint:function(options, htmlOnly){\n\t\tif(this._prePrint(options, htmlOnly))\n\t\t\treturn true;\n\n\t\tvar tableData = this._getTableArray(options);\n\t\tvar table = this._getTableHTML(tableData, options);\n\n\t\tif(htmlOnly)\n\t\t\treturn table;\n\n\t\tvar doc = create(\"div\", { \"class\":\"webix_ui_print\"});\n\t\tdoc.appendChild(table);\n\n\t\tinsertBefore(doc, options.docFooter, document.body);\n\t\twindow.print();\n\t\t\n\t\tremove(doc);\n\t},\n\t_prePrint:function(options, htmlOnly){\n\t\tif(!htmlOnly && (this.config.layout ==\"y\" || options.scroll || this.config.prerender || this.config.autoheight)) return true;\n\t\t\n\t\tif(this.config.layout ==\"x\")\n\t\t\textend(options || {}, {xCount:this.count(), nobreaks:true}, true);\n\t},\n\t_getPageWidth:function(options){\n\t\tif(options.fit ==\"page\") return Infinity;\n\n\t\tvar size = options.size;\n\t\tvar width = size[options.mode == \"portrait\"?\"width\":\"height\"];\n\t\t\n\t\treturn Math.min(width*env.printPPI-2*env.printMargin);\n\t},\n\t_getTableArray:function(options, base, start){\n\t\tvar maxWidth = this._getPageWidth(options);\n\t\tvar xCount = options.xCount || this._getVisibleRange()._dx;\n\n\t\tvar tableArray = [];\n\t\tvar colrow = [];\n\t\tvar width = 0;\n\t\t\n\t\tvar newTableStart, rownum, colnum;\n\n\t\tstart = start || 0;\n\t\tbase = base || [];\n\n\t\tfor(var i = 0; i=start){\n\t\t\t\twidth += this.type.width;\n\t\t\t\t\n\t\t\t\t//start a new table, if cells do not fit page width\n\t\t\t\tif(width > maxWidth && colnum>start){ // 'colnum>start' ensures that a single long cell will have to fit the page\n\t\t\t\t\tnewTableStart = colrow.length+start;\n\t\t\t\t\ttableArray.push(colrow);\n\t\t\t\t\ti = i+(xCount-colrow.length);\n\t\t\t\t\tcolrow = [];\n\t\t\t\t\twidth = 0;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar cellValue = this.type.template(obj, this.type);\n\t\t\t\tvar className = this._itemClassName;\n\t\t\t\t\n\t\t\t\tvar style = {\n\t\t\t\t\tdisplay:\"table-cell\",\n\t\t\t\t\theight:this.type.height + \"px\",\n\t\t\t\t\twidth:this.type.width + \"px\"\n\t\t\t\t};\n\t\t\t\t//push a cell to a row\n\t\t\t\tcolrow.push({\n\t\t\t\t\ttxt: cellValue,\n\t\t\t\t\tclassName: className+\" \"+(obj.$css || \"\"),\n\t\t\t\t\tstyle: style\n\t\t\t\t});\n\t\t\t\t//push a row to a table and start a new row\n\t\t\t\tif((i+1)%xCount === 0){\n\t\t\t\t\ttableArray.push(colrow);\n\t\t\t\t\tcolrow = [];\n\t\t\t\t\twidth = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\n\t\tbase.push(tableArray);\n\n\t\tif(newTableStart)\n\t\t\tthis._getTableArray(options, base, newTableStart);\t\n\n\t\treturn base;\n\t},\n\t_getTableHTML:function(tableData, options){\n\t\t\n\t\tvar container = create(\"div\");\n\n\t\ttableData.forEach(bind(function(table, i){\n\n\t\t\tvar tableHTML = create(\"table\", {\n\t\t\t\t\"class\":\"webix_table_print \"+this.$view.className,\n\t\t\t\t\"style\":\"border-collapse:collapse\"\n\t\t\t});\n\n\t\t\ttable.forEach(function(row){\n\t\t\t\tvar tr = create(\"tr\");\n\n\t\t\t\trow.forEach(function(column){\n\t\t\t\t\tvar td = create(\"td\");\n\n\n\t\t\t\t\tif (column.txt) td.innerHTML = column.txt;\n\t\t\t\t\tif (column.className) td.className = column.className;\n\t\t\t\t\tif (column.style) {\n\t\t\t\t\t\tvar keys = Object.keys(column.style);\n\t\t\t\t\t\tkeys.forEach(function(key){\n\t\t\t\t\t\t\tif (column.style[key])\n\t\t\t\t\t\t\t\ttd.style[key] = column.style[key];\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tif(column.span){\n\t\t\t\t\t\tif(column.span.colspan > 1)\n\t\t\t\t\t\t\ttd.colSpan = column.span.colspan;\n\t\t\t\t\t\tif(column.span.rowspan > 1)\n\t\t\t\t\t\t\ttd.rowSpan = column.span.rowspan;\n\t\t\t\t\t}\n\t\t\t\t\ttr.appendChild(td);\n\t\t\t\t});\n\t\t\t\ttableHTML.appendChild(tr);\n\t\t\t});\n\t\t\tcontainer.appendChild(tableHTML);\n\n\t\t\tif(!options.nobreaks && i+1 < tableData.length){\n\t\t\t\tvar br = create(\"DIV\", {\"class\":\"webix_print_pagebreak\"});\n\t\t\t\tcontainer.appendChild(br);\n\t\t\t}\n\t\t\t\n\t\t}, this));\n\n\t\treturn container;\n\t}\n};\n\nexport default CustomPrint;","import {pos as getPos, create, remove, removeCss, preventEvent, addCss} from \"../webix/html\";\nimport state from \"../core/state\";\nimport {$$} from \"../ui/core\";\nimport {delay, isUndefined, bind} from \"../webix/helpers\";\n\nimport env from \"../webix/env\";\nimport {_event, event, eventRemove} from \"../webix/htmlevents\";\nimport {attachEvent} from \"../webix/customevents\";\n\n\nconst CustomScroll= {\n\tscrollStep:40,\n\tinit:function(){\n\t\tthis._init_once();\n\t\tenv.$customScroll = true;\n\t\tenv.scrollSize = 0;\n\t\tstate.destructors.push({\n\t\t\tobj:{\n\t\t\t\tdestructor:function(){\n\t\t\t\t\tthis._last_active_node = null;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tattachEvent(\"onReconstruct\", CustomScroll._on_reconstruct);\n\t\tattachEvent(\"onResize\", CustomScroll._on_reconstruct);\n\n\t\t//adjusts scroll after view repainting\n\t\t//for example, opening a branch in the tree\n\t\t//it will be better to handle onAfterRender of the related view\n\t\tattachEvent(\"onClick\", CustomScroll._on_reconstruct);\n\t},\n\tresize:function(){\n\t\tthis._on_reconstruct();\n\t},\n\t_enable_datatable:function(view){\n\t\tview._body._custom_scroll_view = view._settings.id;\n\t\tview.attachEvent(\"onAfterRender\", function(){\n\t\t\tvar scroll = CustomScroll._get_datatable_sizes(this);\n\t\t\tvar y = Math.max(scroll.dy - scroll.py, 0);\n\t\t\tvar x = Math.max(scroll.dx - scroll.px, 0);\n\n\t\t\tif (this._y_scroll && this._scrollTop > y){\n\t\t\t\tthis._y_scroll.scrollTo(y);\n\t\t\t}\n\t\t\telse if (this._x_scroll && this._scrollLeft > x){\n\t\t\t\tthis._x_scroll.scrollTo(x);\n\t\t\t}\n\n\t\t\tif ( CustomScroll._last_active_node == this._body)\n\t\t\t\tCustomScroll._on_reconstruct();\n\t\t});\n\t\t_event(view._body, \"mouseover\", \tCustomScroll._mouse_in \t\t);\n\t\t_event(view._body, \"mouseout\", \tCustomScroll._mouse_out\t\t);\n\t},\n\tenable:function(view, mode){ \n\t\tCustomScroll._init_once();\n\t\tif (view.mapCells)\n\t\t\treturn this._enable_datatable(view);\n\n\t\tvar node = view;\n\t\tif (view._dataobj)\n\t\t\tnode = view._dataobj.parentNode;\n\t\t\n\t\tnode._custom_scroll_mode = mode||\"xy\";\n\t\t_event(node, \"mouseover\", \tCustomScroll._mouse_in \t\t);\n\t\t_event(node, \"mouseout\", \tCustomScroll._mouse_out\t\t);\n\t\t_event(node, \"mousewheel\", \tCustomScroll._mouse_wheel, {passive:false});\n\t\t_event(node, \"DOMMouseScroll\", \tCustomScroll._mouse_wheel, {passive:false});\n\n\t\tthis._set_additional_handlers(view);\n\t},\n\t_on_reconstruct:function(){\n\t\tvar last = CustomScroll._last_active_node;\n\t\tif (last && last._custom_scroll_size){\n\t\t\tCustomScroll._mouse_out_timed.call(last);\n\t\t\tCustomScroll._mouse_in.call(last);\n\t\t}\t\t\t\n\t},\n\t_init_once:function(){\n\t\tevent(document.body, \"mousemove\", \tfunction(e){\n\t\t\tif (CustomScroll._active_drag_area)\n\t\t\t\tCustomScroll._adjust_scroll(CustomScroll._active_drag_area, CustomScroll._active_drag_area._scroll_drag_pos, getPos(e));\n\t\t});\n\t\tCustomScroll._init_once = function(){};\n\t},\n\t_mouse_in:function(){\n\t\tCustomScroll._last_active_node = this;\n\n\t\tclearTimeout(this._mouse_out_timer);\n\n\t\tif (this._custom_scroll_size || CustomScroll._active_drag_area) return;\n\t\tvar view = $$(this);\n\t\tif (view && !view.isEnabled()) return;\n\t\t\n\t\tvar sizes;\n\t\tif (this._custom_scroll_view){\n\t\t\t//ger related view\n\t\t\tview = $$(this._custom_scroll_view);\n\t\t\t//if view was removed, we need not scroll anymore\n\t\t\tif (!view) return;\n\t\t\tsizes = CustomScroll._get_datatable_sizes(view);\n\t\t} else{\n\t\t\tsizes = {\n\t\t\t\tdx:this.scrollWidth,\n\t\t\t\tdy:this.scrollHeight,\n\t\t\t\tpx:this.clientWidth,\n\t\t\t\tpy:this.clientHeight\n\t\t\t};\n\t\t\tsizes._scroll_x = sizes.dx > sizes.px && this._custom_scroll_mode.indexOf(\"x\") != -1;\n\t\t\tsizes._scroll_y = sizes.dy > sizes.py && this._custom_scroll_mode.indexOf(\"y\") != -1;\n\t\t}\n\n\t\tthis._custom_scroll_size = sizes;\n\t\tif (sizes._scroll_x){\n\t\t\tsizes._scroll_x_node = CustomScroll._create_scroll(this, \"x\", sizes.dx, sizes.px, \"width\", \"height\");\n\t\t\tsizes._sx = (sizes.px - sizes._scroll_x_node.offsetWidth - 4);\n\t\t\tsizes._vx = sizes.dx - sizes.px;\n\t\t\tif(CustomScroll.trackBar)\n\t\t\t\tsizes._bar_x = CustomScroll._create_bar(this,\"x\");\n\t\t}\n\t\tif (sizes._scroll_y){\n\t\t\tsizes._scroll_y_node = CustomScroll._create_scroll(this, \"y\", sizes.dy, sizes.py, \"height\", \"width\");\n\t\t\tsizes._sy = (sizes.py - sizes._scroll_y_node.offsetHeight - 4);\n\t\t\tsizes._vy = sizes.dy - sizes.py;\n\n\t\t\tif(CustomScroll.trackBar)\n\t\t\t\tsizes._bar_y = CustomScroll._create_bar(this,\"y\");\n\t\t}\n\n\t\tCustomScroll._update_scroll(this);\n\t},\n\t_create_bar: function(node, mode){\n\t\tvar bar = create(\"DIV\", {\n\t\t\t/*@attr*/\"webixignore\":\"1\",\n\t\t\t\"class\":\"webix_c_scroll_bar_\"+mode\n\t\t},\"\");\n\n\t\tnode.appendChild(bar);\n\t\treturn bar;\n\t},\n\t_adjust_scroll:function(node, old, pos){\n\t\tvar config = node._custom_scroll_size;\n\t\tvar view = node._custom_scroll_view;\n\t\tif (view) view = $$(view);\n\n\t\tif (config._scroll_x_node == node._scroll_drag_enabled){\n\t\t\tlet next = (pos.x - old.x)*config._vx/config._sx;\n\t\t\tif (view)\n\t\t\t\tview._x_scroll.scrollTo(view._scrollLeft+next);\n\t\t\telse\n\t\t\t\tCustomScroll._set_scroll_value(node, \"scrollLeft\", next);\n\t\t}\n\t\tif (config._scroll_y_node == node._scroll_drag_enabled){\n\t\t\tlet next = (pos.y - old.y)*config._vy/config._sy;\n\t\t\tif (view)\n\t\t\t\tview._y_scroll.scrollTo(view._scrollTop+next);\n\t\t\telse\n\t\t\t\tCustomScroll._set_scroll_value(node, \"scrollTop\", next);\n\t\t}\n\n\t\tnode._scroll_drag_pos = pos;\n\t\tCustomScroll._update_scroll(node);\n\t},\n\t_get_datatable_sizes:function(view){\n\t\tvar sizes = {};\n\t\tif (view._x_scroll && view._settings.scrollX){\n\t\t\tsizes.dx = view._x_scroll.getSize();\n\t\t\tsizes.px = view._x_scroll._last_set_size || 1;\n\t\t\tsizes._scroll_x = sizes.dx - sizes.px > 1;\n\t\t}\n\t\tif (view._y_scroll && view._settings.scrollY){\n\t\t\tsizes.dy = view._y_scroll.getSize();\n\t\t\tsizes.py = view._y_scroll._last_set_size || 1;\n\t\t\tsizes._scroll_y = sizes.dy - sizes.py > 1;\n\t\t}\n\t\treturn sizes;\n\t},\n\t_mouse_out:function(){\n\t\tclearTimeout(this._mouse_out_timer);\n\t\tthis._mouse_out_timer = delay(CustomScroll._mouse_out_timed, this, [], 200);\n\t},\n\t_removeScroll:function(scroll){\n\t\tif (scroll){\n\t\t\tremove(scroll);\n\t\t\tif (scroll._webix_event_sc1){\n\t\t\t\teventRemove(scroll._webix_event_sc1);\n\t\t\t\teventRemove(scroll._webix_event_sc2);\n\t\t\t\teventRemove(scroll._webix_event_sc3);\n\t\t\t}\n\t\t}\n\t},\n\t_mouse_out_timed:function(){\n\t\tif (this._custom_scroll_size){\n\t\t\tif (this._scroll_drag_enabled){\n\t\t\t\tthis._scroll_drag_released = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar sizes = this._custom_scroll_size;\n\t\t\tCustomScroll._removeScroll(sizes._scroll_x_node);\n\t\t\tCustomScroll._removeScroll(sizes._scroll_y_node);\n\t\t\tremoveCss(document.body,\"webix_noselect\");\n\t\t\tif(sizes._bar_x){\n\t\t\t\tremove(sizes._bar_x);\n\t\t\t}\n\t\t\tif(sizes._bar_y){\n\t\t\t\tremove(sizes._bar_y);\n\t\t\t}\n\t\t\tthis._custom_scroll_size = null;\n\t\t}\n\t},\n\t_mouse_wheel:function(e){\n\t\tvar sizes = this._custom_scroll_size;\n\t\tvar delta = e.wheelDelta/-40;\n\t\tvar toblock = false;\n\t\tif (!delta && e.detail && isUndefined(e.wheelDelta))\n\t\t\tdelta = e.detail;\n\t\tif (sizes){\n\t\t\tif(!e.scrolledBy)\n\t\t\t\te.scrolledBy = sizes._scroll_y ? \"y\" : \"x\";\n\n\t\t\tconst touchpadMoveX = e.wheelDeltaX && Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY);\n\t\t\tif (sizes._scroll_x_node && ((e.scrolledBy !== \"y\" && (e.wheelDeltaX || delta)) || touchpadMoveX)){\n\t\t\t\tvar x_dir = (e.wheelDeltaX/-40)||delta;\n\t\t\t\t//see below\n\t\t\t\ttoblock = CustomScroll._set_scroll_value(this, \"scrollLeft\", x_dir*CustomScroll.scrollStep);\n\t\t\t} else if (!touchpadMoveX && delta && sizes._scroll_y_node){\n\t\t\t\t//lesser flickering of scroll in IE\n\t\t\t\t//also prevent scrolling outside of borders because of scroll-html-elements\n\t\t\t\ttoblock = CustomScroll._set_scroll_value(this, \"scrollTop\", delta*CustomScroll.scrollStep);\n\t\t\t}\n\t\t}\n\n\t\tCustomScroll._update_scroll(this);\n\t\tif (toblock !== false){\n\t\t\treturn preventEvent(e);\n\t\t}\n\t},\n\t_set_scroll_value:function(node, pose, value){\n\t\tvar sizes = node._custom_scroll_size;\n\t\tvar max_scroll = (pose == \"scrollLeft\") ? (sizes.dx - sizes.px) : (sizes.dy - sizes.py);\n\t\tvar now = node[pose];\n\n\t\tif (now+value > max_scroll)\n\t\t\tvalue = max_scroll - now;\n\t\tif (!value || (now+value < 0 && now === 0))\n\t\t\treturn false;\n\t\t\n\t\t\n\t\tif (env.isIE){\n\t\t\tCustomScroll._update_scroll(node, pose, value + now);\n\t\t\tnode[pose] += value;\n\t\t} else\n\t\t\tnode[pose] += value;\n\n\t\treturn true;\n\t},\n\t_create_scroll:function(node, mode, dy, py, dim){\n\t\tvar scroll = create(\"DIV\", {\n\t\t\t/*@attr*/\"webixignore\":\"1\",\n\t\t\t\"class\":\"webix_c_scroll_\"+mode\n\t\t},\"
\");\n\n\t\tscroll.style[dim] = Math.max((py*py/dy-7),40)+\"px\";\n\t\tscroll.style[dim == \"height\"?\"top\":\"left\"] = \"0px\";\n\t\tnode.style.position = \"relative\";\n\t\tnode.appendChild(scroll);\n\t\tnode._webix_event_sc1 = event(scroll, \"mousedown\", CustomScroll._scroll_drag(node));\n\t\tnode._webix_event_sc2 = event(document.body, \"mouseup\", bind(CustomScroll._scroll_drop, node));\n\t\tnode._webix_event_sc3 = event(document.body, \"mouseleave\", bind(CustomScroll._scroll_drop, node));\n\t\treturn scroll;\n\t},\n\t_scroll_drag:function(node){\n\t\treturn function(e){\n\t\t\taddCss(document.body,\"webix_noselect\",1);\n\t\t\tthis.className += \" webix_scroll_active\";\n\t\t\tCustomScroll._active_drag_area = node;\n\t\t\tnode._scroll_drag_enabled = this;\n\t\t\tnode._scroll_drag_pos = getPos(e);\n\t\t};\n\t},\n\t_scroll_drop:function(){\n\t\tif (this._scroll_drag_enabled){\n\t\t\tremoveCss(document.body,\"webix_noselect\");\n\t\t\tthis._scroll_drag_enabled.className = this._scroll_drag_enabled.className.toString().replace(\" webix_scroll_active\",\"\");\n\t\t\tthis._scroll_drag_enabled = false;\n\t\t\tCustomScroll._active_drag_area = 0;\n\t\t\tif (this._scroll_drag_released){\n\t\t\t\tCustomScroll._mouse_out_timed.call(this);\n\t\t\t\tthis._scroll_drag_released = false;\n\t\t\t}\n\t\t}\n\t},\n\t_update_scroll:function(node, pose, value){\n\t\tvar sizes = node._custom_scroll_size;\n\t\tif (sizes && (sizes._scroll_x_node||sizes._scroll_y_node)){\n\t\t\tvar view = node._custom_scroll_view;\n\n\t\t\tvar left_scroll = pose == \"scrollLeft\" ? value : node.scrollLeft;\n\t\t\tvar left = view?$$(view)._scrollLeft:left_scroll;\n\t\t\tvar shift_left = view?0:left;\n\n\t\t\tvar top_scroll = pose == \"scrollTop\" ? value : node.scrollTop;\n\t\t\tvar top = view?($$(view)._scrollTop):top_scroll;\n\t\t\tvar shift_top = view?0:top;\n\n\t\t\tif (sizes._scroll_x_node){\n\t\t\t\tsizes._scroll_x_node.style.bottom = 1 - shift_top + \"px\";\n\t\t\t\tsizes._scroll_x_node.style.left = Math.round(sizes._sx*left/(sizes.dx-sizes.px)) + shift_left + 1 +\"px\";\n\t\t\t\tif(sizes._bar_x){\n\t\t\t\t\tsizes._bar_x.style.bottom = 1 - shift_top + \"px\";\n\t\t\t\t\tsizes._bar_x.style.left = shift_left + \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (sizes._scroll_y_node){\n\t\t\t\tsizes._scroll_y_node.style.right = 0 - shift_left + \"px\";\n\t\t\t\tsizes._scroll_y_node.style.top = Math.round(sizes._sy*top/(sizes.dy-sizes.py)) + shift_top + 1 + \"px\";\n\t\t\t\tif(sizes._bar_y){\n\t\t\t\t\tsizes._bar_y.style.right = 0 - shift_left + \"px\";\n\t\t\t\t\tsizes._bar_y.style.top = shift_top + \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t_set_additional_handlers:function(view){\n\t\t// update scroll when showing view\n\t\tif (view.attachEvent)\n\t\t\tview.attachEvent(\"onViewShow\", () => this._resize_scroll(view));\n\n\t\t// update scroll on data change\n\t\tif (view.data && view.data.attachEvent)\n\t\t\tview.data.attachEvent(\"onStoreUpdated\", () => this._resize_scroll(view));\n\t},\n\t_resize_scroll:function(view){\n\t\tconst node = CustomScroll._last_active_node;\n\t\tif (node && view.$view.contains(node))\n\t\t\tCustomScroll._on_reconstruct();\n\t\telse\n\t\t\tCustomScroll._mouse_out_timed.call(view.$view);\n\t}\n};\n\nexport default CustomScroll;","const DataMarks = {\n\taddCss:function(id, css, silent){\n\t\tif (!this.addRowCss && !silent){\n\t\t\tif (!this.hasCss(id, css)){\n\t\t\t\tvar node = this.getItemNode(id);\n\t\t\t\tif (node){\n\t\t\t\t\tnode.className += \" \"+css;\n\t\t\t\t\tsilent = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.data.addMark(id, css, 1, 1, silent);\n\t},\n\tremoveCss:function(id, css, silent){\n\t\tif (!this.addRowCss && !silent){\n\t\t\tif (this.hasCss(id, css)){\n\t\t\t\tvar node = this.getItemNode(id);\n\t\t\t\tif (node){\n\t\t\t\t\tnode.className = node.className.replace(css,\"\").replace(\" \",\" \");\n\t\t\t\t\tsilent = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.data.removeMark(id, css, 1, silent);\n\t},\n\thasCss:function(id, mark){\n\t\treturn this.data.getMark(id, mark);\n\t},\n\tclearCss:function(css, silent){\n\t\treturn this.data.clearMark(css, 1, silent);\n\t}\n};\n\nexport default DataMarks;","import {isArray, extend, uid} from \"../webix/helpers\";\nimport {assert} from \"../webix/debug\";\n\n\n/*\n\tBehavior:DataMove - allows to move and copy elements, heavily relays on DataStore.move\n\t@export\n\t\tcopy\n\t\tmove\n*/\nconst DataMove ={\n\t//creates a copy of the item\n\tcopy:function(sid,tindex,tobj, details){\n\t\tdetails = details || {};\n\t\tvar new_id = details.newId || sid;\n\t\ttobj = tobj||this;\n\n\t\tvar data = this.getItem(sid);\n\t\tassert(data,\"Incorrect ID in DataMove::copy\");\n\t\t\n\t\t//make data conversion between objects\n\t\tif (tobj)\n\t\t\tdata = tobj._externalData(data);\n\t\t\n\t\t//adds new element same as original\n\t\treturn tobj.data.add(tobj._externalData(data,new_id),tindex,(details.parent || 0));\n\t},\n\t_next_move_index:function(nid, next, source){\n\t\tif (next && nid){\n\t\t\tvar new_index = this.getIndexById(nid);\n\t\t\treturn new_index + ((source == this && source.getIndexById(next) < new_index) ? 0 : 1);\n\t\t}\n\t},\n\t//move item to the new position\n\tmove:function(sid,tindex,tobj, details){\n\t\tdetails = details || {};\n\t\tvar new_id = details.newId || sid;\n\n\t\ttobj = tobj||this;\n\t\tassert(tobj.data, \"moving attempt to component without datastore\");\n\t\tif (!tobj.data) return;\n\n\t\t//can process an arrya - it allows to use it from onDrag \n\t\tif (isArray(sid)){\n\t\t\t//block separate repaint operations\n\t\t\tif (sid.length > 3) //heuristic value, duplicated below\n\t\t\t\tthis.$blockRender = tobj.$blockRender = true;\n\n\t\t\tfor (var i=0; i < sid.length; i++) {\n\t\t\t\t//increase index for each next item in the set, so order of insertion will be equal to order in the array\n\t\t\t\tconst nid = this.move(sid[i], tindex, tobj, details);\n\t\t\t\ttindex = tobj._next_move_index(nid, sid[i+1], this);\n\t\t\t}\n\n\t\t\tthis.$blockRender = tobj.$blockRender = false;\n\t\t\tif (sid.length > 3){\n\t\t\t\t//repaint whole component\n\t\t\t\tthis.refresh();\n\t\t\t\tif (tobj != this)\n\t\t\t\t\ttobj.refresh();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tlet nid = sid; //id after moving\n\n\t\tvar data = this.getItem(sid);\n\t\tassert(data,\"Incorrect ID in DataMove::move\");\n\t\t\n\t\tif (!tobj || tobj == this){\n\t\t\tif (tindex < 0) tindex = this.data.order.length - 1;\n\t\t\tthis.data.move(this.getIndexById(sid),tindex);\t//move inside the same object\n\t\t\tthis.data.callEvent(\"onDataMove\", [sid, tindex, null, this.data.order[tindex+1]]);\n\t\t} else {\n\t\t\t//copy to the new object\n\t\t\tnid = tobj.data.add(tobj._externalData(data,new_id),tindex, (details.parent || 0));\n\t\t\tthis.data.remove(sid);//delete in old object\n\t\t}\n\t\treturn nid;\t//return ID of item after moving\n\t},\n\t//move item on one position up\n\tmoveUp:function(id,step){\n\t\tconst index = this.getIndexById(id)-(step||1);\n\t\treturn this.move(id,(index<0)?0:index);\n\t},\n\t//move item on one position down\n\tmoveDown:function(id,step){\n\t\treturn this.moveUp(id, (step||1)*-1);\n\t},\n\t//move item to the first position\n\tmoveTop:function(id){\n\t\treturn this.move(id,0);\n\t},\n\t//move item to the last position\n\tmoveBottom:function(id){\n\t\treturn this.move(id,this.data.count()-1);\n\t},\n\t/*\n\t\tthis is a stub for future functionality\n\t\tcurrently it just makes a copy of data object, which is enough for current situation\n\t*/\n\t_externalData:function(data,id){\n\t\tvar newdata = extend({},data);\n\t\tnewdata.id = (!id || this.data.pull[id])?uid():id;\n\t\t\n\n\t\tnewdata.$template=null;\n\n\t\tif (this._settings.externalData)\n\t\t\tnewdata = this._settings.externalData.call(this, newdata, id, data);\n\t\treturn newdata;\n\t}\n};\n\nexport default DataMove;","const rules = {\n\tisEmail: function(value){\n\t\treturn (/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/).test((value || \"\").toString());\n\t},\n\tisNumber: function(value){\n\t\treturn (parseFloat(value) == value);\n\t},\n\tisChecked: function(value){\n\t\treturn (!!value) || value === \"0\";\n\t},\n\tisNotEmpty: function(value){\n\t\treturn (value === 0 || value);\n\t}\n};\n\nexport default rules;","import {assert} from \"../webix/debug\";\nimport CodeParser from \"../core/codeparser\";\nimport rules from \"../webix/rules\";\n\n\n\nconst ValidateData = {\n\t$init:function(){\n\t\tif(this._events)\n\t\t\tthis.attachEvent(\"onChange\",this.clearValidation);\n\t},\n\tclearValidation:function(){\n\t\tif(this.elements){\n\t\t\tfor(var id in this.elements){\n\t\t\t\tthis._clear_invalid(id);\n\t\t\t}\n\t\t}\n\t},\n\tvalidate:function(mode, obj) {\n\t\tassert(this.callEvent, \"using validate for eventless object\");\n\t\t\n\t\tthis.callEvent(\"onBeforeValidate\", []);\n\n\t\tvar failed = this._validate_details = {};\n\n\t\t//optimistic by default :) \n\t\tvar result =true;\n\t\tvar rules = this._settings.rules;\n\t\t\n\t\tvar isHidden = this.isVisible && !this.isVisible();\n\t\tvar validateHidden = mode && mode.hidden;\n\t\tvar validateDisabled = mode && mode.disabled;\n\n\t\t//prevent validation of hidden elements\n\t\tvar elements = {}, hidden = {};\n\t\tfor(var i in this.elements){\n\t\t\tvar name = this.elements[i].config.name;\n\t\t\t//we are ignoring hidden and disabled fields during validation\n\t\t\t//if mode doesn not instruct us otherwise\n\t\t\t//if form itself is hidden, we can't separate hidden fiels,\n\t\t\t//so we will vaidate all fields\n\t\t\tif((isHidden || this.elements[i].isVisible() || validateHidden) && (this.elements[i].isEnabled() || validateDisabled))\n\t\t\t\telements[name] = this.elements[i];\n\t\t\telse{\n\t\t\t\thidden[name]=true;\n\t\t\t}\n\t\t}\n\t\tif (rules || elements)\n\t\t\tif(!obj && this.getValues)\n\t\t\t\tobj = this.getValues();\n\n\t\tif (rules){\n\t\t\t//complex rule, which may chcek all properties of object\n\t\t\tif (rules.$obj)\n\t\t\t\tresult = this._validate(rules.$obj, obj, obj, \"\") && result;\n\t\t\t\n\t\t\t//all - applied to all fields\n\t\t\tvar all = rules.$all;\n\t\t\tvar data = obj;\n\n\t\t\tif (this._settings.complexData)\n\t\t\t\tdata = CodeParser.collapseNames(obj, \"\", {}, (v) => !rules[v]);\n\n\t\t\tif (all)\n\t\t\t\tfor (let key in obj){\n\t\t\t\t\tif(hidden[key]) continue;\n\t\t\t\t\tlet subresult = this._validate(all, data[key], obj, key);\n\t\t\t\t\tif (!subresult)\n\t\t\t\t\t\tfailed[key] = true;\n\t\t\t\t\tresult = subresult && result;\n\t\t\t\t}\n\n\n\t\t\t//per-field rules\n\t\t\tfor (let key in rules){\n\t\t\t\tif(hidden[key]) continue;\n\t\t\t\tif (key.indexOf(\"$\")!==0 && !failed[key]){\n\t\t\t\t\tassert(rules[key], \"Invalid rule for:\"+key);\n\t\t\t\t\tlet subresult = this._validate(rules[key], data[key], obj, key);\n\t\t\t\t\tif (!subresult)\n\t\t\t\t\t\tfailed[key] = true;\n\t\t\t\t\tresult = subresult && result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//check personal validation rules\n\t\tif (elements){\n\t\t\tfor (var key in elements){\n\t\t\t\tif (failed[key]) continue;\n\n\t\t\t\tvar subview = elements[key];\n\t\t\t\tif (subview.validate){\n\t\t\t\t\tlet subresult = subview.validate();\n\t\t\t\t\tresult = subresult && result;\n\t\t\t\t\tif (!subresult)\n\t\t\t\t\t\tfailed[key] = true;\n\t\t\t\t} else {\n\t\t\t\t\tvar input = subview._settings;\n\t\t\t\t\tif (input){\t//ignore non webix inputs\n\t\t\t\t\t\tvar validator = input.validate;\n\t\t\t\t\t\tif (!validator && input.required)\n\t\t\t\t\t\t\tvalidator = rules.isNotEmpty;\n\n\t\t\t\t\t\tif (validator){\n\t\t\t\t\t\t\tlet subresult = this._validate(validator, obj[key], obj, key);\n\t\t\t\t\t\t\tif (!subresult)\n\t\t\t\t\t\t\t\tfailed[key] = true;\n\t\t\t\t\t\t\tresult = subresult && result;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\tthis.callEvent(\"onAfterValidation\", [result, this._validate_details]);\n\t\treturn result;\n\t},\n\t_validate:function(rule, data, obj, key){\n\t\tif (typeof rule == \"string\")\n\t\t\trule = rules[rule];\n\t\tif (rule.call(this, data, obj, key)){\n\t\t\tif(this.callEvent(\"onValidationSuccess\",[key, obj]) && this._clear_invalid)\n\t\t\t\tthis._clear_invalid(key);\n\t\t\treturn true;\n\t\t}\n\t\telse {\n\t\t\tif(this.callEvent(\"onValidationError\",[key, obj]) && this._mark_invalid)\n\t\t\t\tthis._mark_invalid(key);\n\t\t}\n\t\treturn false;\n\t}\n};\n\nexport default ValidateData;","import {assert} from \"../webix/debug\";\nimport {copy, isUndefined, bind, isArray} from \"../webix/helpers\";\nimport {callEvent} from \"../webix/customevents\";\nimport {define} from \"../services\";\n\nimport {$$, proto} from \"../ui/core\";\n\nimport {ajax} from \"../load/ajax\";\nimport proxy from \"../load/proxy\";\nimport promise from \"../thirdparty/promiz\";\n\nimport Settings from \"../core/settings\";\nimport EventSystem from \"../core/eventsystem\";\nimport ValidateData from \"../core/validatedata\";\n\nconst _pull = {};\n\nexport function dp(name,getOnly){\n\tif (typeof name == \"object\" && name._settings)\n\t\tname = name._settings.id;\n\tif (_pull[name] || getOnly)\n\t\treturn _pull[name];\n\n\tif (typeof name == \"string\"||typeof name == \"number\")\n\t\tname = { master:$$(name) };\n\n\tvar dp = new DataProcessor(name);\n\tvar masterId = dp._settings.master._settings.id;\n\t_pull[masterId]=dp;\n\n\t$$(masterId).attachEvent(\"onDestruct\",function(){\n\t\t_pull[this._settings.id] = null;\n\t\tdelete _pull[this._settings.id];\n\t});\n\n\treturn dp;\n}\n\ndefine(\"dp\", dp);\n\ndp.$$ = function(id){\n\treturn _pull[id];\n};\n\n\nexport const DataProcessor = proto({\n\tdefaults: {\n\t\tautoupdate:true,\n\t\tupdateFromResponse:false,\n\t\tmode:\"post\",\n\t\toperationName:\"webix_operation\",\n\t\ttrackMove:false\n\t},\n\n\n\t/*! constructor\n\t **/\n\t$init: function() {\n\t\tthis.reset();\n\t\tthis._ignore = false;\n\t\tthis.name = \"DataProcessor\";\n\t\tthis.$ready.push(this._after_init_call);\n\t},\n\treset:function(){\n\t\tthis._updates = [];\n\t},\n\turl_setter:function(value){\n\t\t/*\n\t\t\twe can use simple url or mode->url\n\t\t*/\n\t\tvar mode = \"\";\n\t\tif (typeof value == \"string\"){\n\t\t\tvar parts = value.split(\"->\");\n\t\t\tif (parts.length > 1){\n\t\t\t\tvalue = parts[1];\n\t\t\t\tmode = parts[0];\n\t\t\t}\n\t\t} else if (value && value.mode){\n\t\t\tmode = value.mode;\n\t\t\tvalue = value.url;\n\t\t}\n\n\t\tif (mode)\n\t\t\treturn proxy(mode, value);\n\n\t\treturn value;\n\t},\n\tmaster_setter:function(value){\n\t\tvar store = value;\n\t\tif (value.name != \"DataStore\")\n\t\t\tstore = value.data;\n\n\t\tthis._settings.store = store;\n\t\treturn value;\n\t},\n\t_promise:function(handler){\n\t\tconst prev = this._waitSave;\n\t\tthis._waitSave = [];\n\t\t\n\t\thandler();\n\t\tconst result = Promise.all(this._waitSave);\n\n\t\tthis._waitSave = prev;\n\t\tif (prev)\n\t\t\tprev.push(result);\n\n\t\treturn result;\n\t},\n\t/*! attaching onStoreUpdated event\n\t **/\n\t_after_init_call: function(){\n\t\tconst store = this._settings.store;\n\t\tif (store){\n\t\t\tstore.attachEvent(\"onStoreUpdated\", bind(this._onStoreUpdated, this));\n\t\t\tstore.attachEvent(\"onDataMove\", bind(this._onDataMove, this));\n\t\t}\n\t},\n\tignore:function(code,master){\n\t\tvar temp = this._ignore;\n\t\tthis._ignore = true;\n\t\tcode.call((master||this));\n\t\tthis._ignore = temp;\n\t},\n\toff:function(){\n\t\tthis._ignore = true;\n\t},\n\ton:function(){\n\t\tthis._ignore = false;\n\t},\n\n\t_copy_data:function(source){\n\t\tvar obj = {};\n\t\tfor (var key in source)\t\n\t\t\tif (key.indexOf(\"$\")!==0)\n\t\t\t\tobj[key]=source[key];\n\t\treturn obj;\n\t},\n\tsave:function(id, operation, obj){\n\t\toperation = operation || \"update\";\n\t\treturn this._save_inner(id, obj, operation, true);\n\t},\n\t_save_inner:function(id, obj, operation, now){\n\t\tif (typeof id == \"object\") id = id.toString();\n\t\tif (!id || this._ignore === true || !operation || operation == \"paint\") return;\n\n\t\tvar store = this._settings.store;\n\t\tif (store){\n\t\t\tobj = obj || this._settings.store.getItem(id);\n\t\t\tif (store._scheme_serialize)\n\t\t\t\tobj = store._scheme_serialize(obj);\n\t\t}\n\n\t\tvar update = { id: id, data:this._copy_data(obj), operation:operation };\n\t\t//save parent id\n\t\tif (!isUndefined(obj.$parent)) update.data.parent = obj.$parent;\n\n\t\tif (update.operation != \"delete\"){\n\t\t\t//prevent saving of not-validated records\n\t\t\tvar master = this._settings.master;\n\t\t\tif (master && master.data && master.data.getMark && master.data.getMark(id, \"webix_invalid\"))\n\t\t\t\tupdate._invalid = true;\n\n\t\t\tif (!this.validate(null, update.data))\n\t\t\t\tupdate._invalid = true;\n\t\t}\n\n\t\tif (this._check_unique(update))\n\t\t\tthis._updates.push(update);\n\n\t\tif (this._settings.autoupdate || now)\n\t\t\treturn this._sendData(id);\n\t\t\t\n\t\treturn;\n\t},\n\t_onDataMove:function(sid, tindex, parent, targetid){\n\t\tif (this._settings.trackMove){\n\t\t\tvar obj = copy(this._settings.store.getItem(sid));\n\n\t\t\tobj.webix_move_index = tindex;\n\t\t\tobj.webix_move_id = targetid;\n\t\t\tobj.webix_move_parent = parent;\n\t\t\tthis._save_inner(sid, obj, \"order\");\n\t\t}\n\t},\n\t_onStoreUpdated: function(id, obj, operation){\n\t\tswitch (operation) {\n\t\t\tcase \"save\":\n\t\t\t\toperation = \"update\";\n\t\t\t\tbreak;\n\t\t\tcase \"update\":\n\t\t\t\toperation = \"update\";\n\t\t\t\tbreak;\n\t\t\tcase \"add\":\n\t\t\t\toperation = \"insert\";\n\t\t\t\tbreak;\n\t\t\tcase \"delete\":\n\t\t\t\toperation = \"delete\";\t\t\t\t\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn this._save_inner(id, obj, operation);\n\t},\n\t_check_unique:function(check){\n\t\tfor (var i = 0; i < this._updates.length; i++){\n\t\t\tvar one = this._updates[i];\n\t\t\tif (one.id == check.id && !one._in_progress){\n\t\t\t\tif (check.operation == \"delete\"){\n\t\t\t\t\tif (one.operation == \"insert\")\n\t\t\t\t\t\tthis._updates.splice(i,1);\n\t\t\t\t\telse \n\t\t\t\t\t\tone.operation = \"delete\";\n\t\t\t\t}\n\t\t\t\tone.data = check.data;\n\t\t\t\tone._invalid = check._invalid;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\tsend:function(){\n\t\treturn this._sendData();\n\t},\n\t_sendData: function(triggerId){\n\t\tif (!this._settings.url)\n\t\t\treturn;\n\n\t\tvar wait;\n\t\tvar marked = this._updates;\n\t\tvar to_send = [];\n\t\tvar url = this._settings.url;\n\n\t\tfor (let i = 0; i < marked.length; i++) {\n\t\t\tvar tosave = marked[i];\n\n\t\t\tif (tosave._in_progress) continue;\n\t\t\tif (tosave._invalid) continue;\n\n\t\t\tvar id = tosave.id;\n\t\t\t// call to .save(id) without autoupdate mode will send the specific object only\n\t\t\tif (!this._settings.autoupdate && triggerId && triggerId != id)\n\t\t\t\tcontinue;\n\n\t\t\tvar operation = tosave.operation;\n\t\t\tvar precise_url = proxy.$parse((typeof url == \"object\" && !url.$proxy) ? url[operation] : url);\n\t\t\tvar custom = precise_url && (precise_url.$proxy || typeof precise_url === \"function\");\n\n\t\t\tif (!precise_url) continue;\n\n\t\t\tconst store = this._settings.store;\n\t\t\tif (store && store._scheme_save)\n\t\t\t\tstore._scheme_save(tosave.data);\n\n\t\t\tif (!this.callEvent(\"onBefore\"+operation, [id, tosave]))\n\t\t\t\tcontinue;\n\t\t\ttosave._in_progress = true;\n\n\t\t\tif (!this.callEvent(\"onBeforeDataSend\", [tosave])) return;\n\n\t\t\ttosave.data = this._updatesData(tosave.data);\n\n\t\t\tlet result;\n\t\t\tif (precise_url.$proxy){\n\t\t\t\tif (precise_url.save){\n\t\t\t\t\t//proxy\n\t\t\t\t\tresult = precise_url.save(this.config.master, tosave, this);\n\t\t\t\t}\n\t\t\t\tto_send.push(tosave);\n\t\t\t} else {\n\t\t\t\tif (operation == \"insert\")\n\t\t\t\t\tdelete tosave.data.id;\n\t\t\t\t\n\t\t\t\tif (custom){\n\t\t\t\t\t//save function\n\t\t\t\t\tresult = precise_url.call(this.config.master, tosave.id, tosave.operation, tosave.data);\n\t\t\t\t} else {\n\t\t\t\t\t//normal url\n\t\t\t\t\ttosave.data[this._settings.operationName] = operation;\n\n\t\t\t\t\tresult = this._send(precise_url, tosave.data, this._settings.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (result){\n\t\t\t\tresult = this._proxy_on_save(result, { id: tosave.id, status: tosave.operation });\n\t\t\t\tif (triggerId && id === triggerId){\n\t\t\t\t\twait = result;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.callEvent(\"onAfterDataSend\", [tosave]);\n\t\t}\n\n\t\tif (url.$proxy && url.saveAll && to_send.length){\n\t\t\tlet result = url.saveAll(this.config.master, to_send, this);\n\t\t\tif (result){\n\t\t\t\tresult = this._proxy_on_save(result, null);\n\t\t\t\tif (!wait)\n\t\t\t\t\twait = result;\n\t\t\t}\n\t\t}\n\n\t\treturn wait;\n\t},\n\t_proxy_on_save:function(result, state){\n\t\tif(result){\n\t\t\tif(!result.then)\n\t\t\t\tresult = promise.resolve(result);\n\n\t\t\tresult = result.then((data) => {\n\t\t\t\tif (data && typeof data.json == \"function\")\n\t\t\t\t\tdata = data.json();\n\n\t\t\t\tvar processed;\n\t\t\t\tif (state === null){\n\t\t\t\t\tprocessed = this._processResult(data); //array of responses\n\t\t\t\t} else {\n\t\t\t\t\tprocessed = this._processResult(state, \"\", data, -1); //text, data, loader\n\t\t\t\t}\n\n\t\t\t\tif (!processed)\n\t\t\t\t\tthrow processed; // trigger rejection\n\n\t\t\t\treturn processed;\n\t\t\t}, (x) => {\n\t\t\t\tthis._processError(state, \"\", null, x);\n\t\t\t\tthrow x;\n\t\t\t});\n\n\t\t\tif (this._waitSave)\n\t\t\t\tthis._waitSave.push(result);\n\n\t\t\treturn result;\n\t\t}\n\t},\n\n\t/*! process updates list to POST and GET params according dataprocessor protocol\n\t *\t@param updates\n\t *\t\tlist of objects { id: \"item id\", data: \"data hash\", operation: \"type of operation\"}\n\t *\t@return\n\t *\t\tobject { post: { hash of post params as name: value }, get: { hash of get params as name: value } }\n\t **/\n\n\n\n\t_updatesData:function(source){\n\t\tvar target = {};\n\t\tfor (var j in source){\n\t\t\tif (j.indexOf(\"$\")!==0)\n\t\t\t\ttarget[j] = source[j];\n\t\t}\n\t\treturn target;\n\t},\n\n\n\n\t/*! send dataprocessor query to server\n\t *\tand attach event to process result\n\t *\t@param url\n\t *\t\tserver url\n\t *\t@param get\n\t *\t\thash of get params\n\t *\t@param post\n\t *\t\thash of post params\n\t *\t@mode\n\t *\t\t'post' or 'get'\n\t **/\n\t_send: function(url, post, mode) {\n\t\tassert(url, \"url was not set for DataProcessor\");\n\t\treturn ajax()[mode](url, post);\n\t},\n\tattachProgress:function(start, end, error){\n\t\tthis.attachEvent(\"onBeforeDataSend\", start);\n\t\tthis.attachEvent(\"onAfterSync\", end);\n\t\tthis.attachEvent(\"onAfterSaveError\", error);\n\t\tthis.attachEvent(\"onLoadError\", error);\n\t},\n\t_processError:function(id, text, data, loader){\n\t\tif (id)\n\t\t\tthis._innerProcessResult(true, id.id, false, id.status, false, {text:text, data:data, loader:loader});\n\t\telse {\n\t\t\tthis.callEvent(\"onLoadError\", arguments);\n\t\t\tcallEvent(\"onLoadError\", [text, data, loader, this]);\n\t\t}\n\t},\n\t_innerProcessResult:function(error, id, newid, status, obj, details){\n\t\tvar master = this._settings.master;\n\t\tvar update = this.getItemState(id);\n\t\tupdate._in_progress = false;\n\n\n\n\t\tif (error){\n\t\t\tif (this.callEvent(\"onBeforeSaveError\", [id, status, obj, details])){\n\t\t\t\tupdate._invalid = true;\n\t\t\t\tif(this._settings.undoOnError && master._settings.undo){\n\t\t\t\t\tthis.ignore(function(){\n\t\t\t\t\t\tmaster.undo(id);\n\t\t\t\t\t});\n\t\t\t\t\tthis.setItemState(id, false);\n\t\t\t\t}\n\t\t\t\tthis.callEvent(\"onAfterSaveError\", [id, status, obj, details]);\n\t\t\t}\n\t\t\treturn;\n\t\t} else\n\t\t\tthis.setItemState(id, false);\n\n\t\tconst store = this._settings.store;\n\t\tif (store && store.exists(id)){\n\t\t\t//update from response\n\t\t\tif (newid && id != newid)\n\t\t\t\tstore.changeId(id, newid);\n\n\t\t\tif (obj && status != \"delete\" && this._settings.updateFromResponse)\n\t\t\t\tthis.ignore(function(){\t\t\t\t\n\t\t\t\t\tstore.updateItem(newid || id, obj);\n\t\t\t\t});\n\t\t}\n\t\t\t\n\n\t\t//clean undo history, for the saved record\n\t\tif(this._settings.undoOnError && master._settings.undo)\n\t\t\tmaster.removeUndo(newid||id);\n\n\t\tthis.callEvent(\"onAfterSave\",[obj, id, details]);\n\t\tthis.callEvent(\"onAfter\"+status, [obj, id, details]);\n\n\t\treturn obj || {};\n\t},\n\tprocessResult: function(state, hash, details){\n\t\t//compatibility with custom json response\n\t\tvar error = (hash && (hash.status == \"error\" || hash.status == \"invalid\"));\n\t\tvar newid = (hash ? ( hash.newid || hash.id ) : false);\n\n\t\treturn this._innerProcessResult(error, state.id, newid, state.status, hash, details);\n\t},\n\t// process saving from result\n\t_processResult: function(state, text, data, loader){\n\t\tvar finalResult;\n\t\tthis.callEvent(\"onBeforeSync\", [state, text, data, loader]);\n\n\t\tif(isArray(state)){ //saveAll results\n\t\t\tfinalResult = [];\n\t\t\tstate.forEach((one) => {\n\t\t\t\tfinalResult.push(this.processResult(one, one, {}));\n\t\t\t});\n\t\t}\n\t\telse{\n\t\t\tif (loader === -1){\n\t\t\t\t//callback from promise\n\t\t\t\tfinalResult = this.processResult(state, data, {});\n\t\t\t} else {\n\t\t\t\tvar proxy = this._settings.url;\n\t\t\t\tif (proxy.$proxy && proxy.result){\n\t\t\t\t\tfinalResult = proxy.result(state, this._settings.master, this, text, data, loader) || {};\n\t\t\t\t} else {\n\t\t\t\t\tvar hash;\n\t\t\t\t\tif (text){\n\t\t\t\t\t\thash = data.json();\n\t\t\t\t\t\t//invalid response\n\t\t\t\t\t\tif (text && (hash === null || typeof hash == \"undefined\"))\n\t\t\t\t\t\t\thash = { status:\"error\" };\n\t\t\t\t\t}\n\t\t\t\t\tfinalResult = this.processResult(state, hash, {text:text, data:data, loader:loader});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.callEvent(\"onAfterSync\", [state, text, data, loader]);\n\t\treturn finalResult;\n\t},\n\n\n\t/*! if it's defined escape function - call it\n\t *\t@param value\n\t *\t\tvalue to escape\n\t *\t@return\n\t *\t\tescaped value\n\t **/\n\tescape: function(value) {\n\t\tif (this._settings.escape)\n\t\t\treturn this._settings.escape(value);\n\t\telse\n\t\t\treturn encodeURIComponent(value);\n\t},\n\tgetState:function(){\n\t\tif (!this._updates.length) return false;\n\t\tfor (var i = this._updates.length - 1; i >= 0; i--)\n\t\t\tif (this._updates[i]._in_progress)\n\t\t\t\treturn \"saving\";\n\n\t\treturn true;\n\t},\n\tgetItemState:function(id){\n\t\tvar index = this._get_stack_index(id);\n\t\treturn this._updates[index] || null;\n\t},\n\tsetItemState:function(id, state){\n\t\tif (state){\n\t\t\tthis._save_inner(id, null, \"update\");\n\t\t} else{\n\t\t\tvar index = this._get_stack_index(id);\n\t\t\tif (index > -1)\n\t\t\t\tthis._updates.splice(index, 1);\n\t\t}\n\t},\n\t_get_stack_index: function(id) {\n\t\tvar index = -1;\n\t\tfor (var i=0; i < this._updates.length; i++)\n\t\t\tif (this._updates[i].id == id) {\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\treturn index;\n\t}\n\n}, Settings, EventSystem, ValidateData);","import {extend, _to_array, uid, isUndefined, copy, isArray, bind} from \"../webix/helpers\";\nimport {$$} from \"../ui/core\";\nimport {assert} from \"../webix/debug\";\nimport {callEvent} from \"../webix/customevents\";\n\nimport EventSystem from \"./eventsystem\";\nimport DataDriver from \"../load/drivers/index\";\n\n\n\n\n/*\n\tDataStore is not a behavior, it standalone object, which represents collection of data.\n\tCall provideAPI to map data API\n\n\t@export\n\t\texists\n\t\tgetIdByIndex\n\t\tgetIndexById\n\t\tget\n\t\tset\n\t\trefresh\n\t\tcount\n\t\tsort\n\t\tfilter\n\t\tnext\n\t\tprevious\n\t\tclearAll\n\t\tfirst\n\t\tlast\n*/\n\nfunction DataStore(){\n\tthis.name = \"DataStore\";\n\t\n\textend(this, EventSystem);\n\n\tthis.setDriver(\"json\");\t//default data source is an\n\tthis.pull = {};\t\t\t\t\t\t//hash of IDs\n\tthis.order = _to_array();\t\t//order of IDs\n\tthis._marks = {};\n}\n\nDataStore.prototype={\n\t//defines type of used data driver\n\t//data driver is an abstraction other different data formats - xml, json, csv, etc.\n\tsetDriver:function(type){\n\t\tassert(DataDriver[type],\"incorrect DataDriver\");\n\t\tthis.driver = DataDriver[type];\n\t},\n\t//process incoming raw data\n\t_parse:function(data){\n\t\tthis.callEvent(\"onParse\", [this.driver, data]);\n\n\t\tif (this._filter_order)\n\t\t\tthis.filter();\n\t\n\t\t//get size and position of data\n\t\tvar info = this.driver.getInfo(data);\n\n\t\tif (info.config)\n\t\t\tthis.callEvent(\"onServerConfig\",[info.config]);\n\n\t\tvar options = this.driver.getOptions(data);\n\t\tif (options)\n\t\t\tthis.callEvent(\"onServerOptions\", [options]);\n\n\t\t//get array of records\n\t\tvar recs = this.driver.getRecords(data);\n\n\t\tthis._inner_parse(info, recs);\n\n\t\t//in case of tree store we may want to group data\n\t\tif (this._scheme_group && this._group_processing && !this._not_grouped_order)\n\t\t\tthis._group_processing(this._scheme_group);\n\n\t\t//optional data sorting\n\t\tif (this._scheme_sort){\n\t\t\tthis.blockEvent();\n\t\t\tthis.sort(this._scheme_sort);\n\t\t\tthis.unblockEvent();\n\t\t}\n\n\t\tthis.callEvent(\"onStoreLoad\",[this.driver, data]);\n\t\t//repaint self after data loading\n\t\tthis.refresh();\n\t},\n\t_inner_parse:function(info, recs){\n\t\tvar from = info.from;\n\t\tvar subload = true;\n\t\tvar marks = false;\n\n\t\t//some data is loaded and new data doesn't have \"pos\" - assuming update\n\t\tif (!from && from !== 0 && this.order[0]){\n\t\t\tif (this._removeMissed){\n\t\t\t\t//update mode, create kill list\n\t\t\t\tmarks = {};\n\t\t\t\tfor (let i=0; ito){ //can be in case of backward shift-selection\n\t\t\tvar a=to; to=from; from=a;\n\t\t}\n\n\t\treturn this.getIndexRange(from,to);\n\t},\n\t//converts range of indexes to array of all IDs between them\n\tgetIndexRange:function(from,to){\n\t\tto=Math.min((to === 0 ? 0 :(to||Infinity)),this.count()-1);\n\t\t\n\t\tvar ret=_to_array(); //result of method is rich-array\n\t\tfor (var i=(from||0); i <= to; i++)\n\t\t\tret.push(this.getItem(this.order[i]));\n\t\treturn ret;\n\t},\n\t//returns total count of elements\n\tcount:function(){\n\t\treturn this.order.length;\n\t},\n\t//returns truy if item with such ID exists\n\texists:function(id){\n\t\treturn !!(this.pull[id]);\n\t},\n\t//nextmethod is not visible on component level, check DataMove.move\n\t//moves item from source index to the target index\n\tmove:function(sindex,tindex){\n\t\tassert(sindex>=0 && tindex>=0, \"DataStore::move\",\"Incorrect indexes\");\n\t\tif (sindex == tindex) return;\n\n\t\tvar id = this.getIdByIndex(sindex);\n\t\tvar obj = this.getItem(id);\n\n\t\tif (this._filter_order)\n\t\t\tthis._move_inner(this._filter_order, 0, 0, this.getIdByIndex(sindex), this.getIdByIndex(tindex));\n\n\t\tthis._move_inner(this.order, sindex, tindex);\n\t\t\n\t\t\n\t\t//repaint signal\n\t\tthis.callEvent(\"onStoreUpdated\",[id,obj,\"move\"]);\n\t},\n\t_move_inner:function(col, sindex, tindex, sid, tid){\n\t\tif (sid||tid){\n\t\t\tsindex = tindex = -1;\n\t\t\tfor (var i=0; i data_size){\n\t\t\tassert(0, \"Warning\",\"DataStore:add\",\"Index of out of bounds\");\n\t\t\tindex = Math.min(order.length,index);\n\t\t}\n\t\tif (this.callEvent(\"onBeforeAdd\", [id, obj, index]) === false) return false;\n\n\t\tassert(!this.exists(id), \"Not unique ID\");\n\t\t\n\t\tthis.pull[id]=obj;\n\t\torder.insertAt(id,index);\n\t\tif (this._filter_order){\t//adding during filtering\n\t\t\t//we can't know the location of new item in full dataset, making suggestion\n\t\t\t//put at end of original dataset by default\n\t\t\tvar original_index = this._filter_order.length;\n\t\t\t//if some data exists, put at the same position in original and filtered lists\n\t\t\tif (this.order.length)\n\t\t\t\toriginal_index = Math.min((index || 0), original_index);\n\n\t\t\tthis._filter_order.insertAt(id,original_index);\n\t\t}\n\t\t\n\t\t//repaint signal\n\t\tthis.callEvent(\"onStoreUpdated\",[id,obj,\"add\"]);\n\t\tthis.callEvent(\"onAfterAdd\",[id,index]);\n\n\t\treturn obj.id;\n\t},\n\t\n\t//removes element from datastore\n\tremove:function(id){\n\t\t//id can be an array of IDs - result of getSelect, for example\n\t\tif (isArray(id)){\n\t\t\tfor (var i=0; i < id.length; i++)\n\t\t\t\tthis.remove(id[i]);\n\t\t\treturn;\n\t\t}\n\t\tif (this.callEvent(\"onBeforeDelete\",[id]) === false) return false;\n\t\t\n\t\tassert(this.exists(id), \"Not existing ID in remove command\"+id);\n\n\t\tvar obj = this.getItem(id);\t//save for later event\n\t\t//clear from collections\n\t\tthis.order.remove(id);\n\t\tif (this._filter_order) \n\t\t\tthis._filter_order.remove(id);\n\t\t\t\n\t\tdelete this.pull[id];\n\t\tif (this._marks[id])\n\t\t\tdelete this._marks[id];\n\n\t\t//repaint signal\n\t\tthis.callEvent(\"onStoreUpdated\",[id,obj,\"delete\"]);\n\t\tthis.callEvent(\"onAfterDelete\",[id]);\n\t},\n\t//deletes all records in datastore\n\tclearAll:function(soft){\n\t\t//instead of deleting one by one - just reset inner collections\n\t\tthis.pull = {};\n\t\tthis._marks = {};\n\t\tthis.order = _to_array();\n\t\t//this.feed = null;\n\t\tthis._filter_order = null;\n\t\tif (!soft)\n\t\t\tthis.url = null;\n\t\tthis.callEvent(\"onClearAll\",[soft]);\n\t\tthis.refresh();\n\t},\n\t//converts id to index\n\tgetIdByIndex:function(index){\n\t\tassert(index >= 0,\"DataStore::getIdByIndex Incorrect index\");\n\t\treturn this.order[index];\n\t},\n\t//converts index to id\n\tgetIndexById:function(id){\n\t\tif (!this.pull[id])\n\t\t\treturn -1;\n\t\telse\n\t\t\treturn this.order.find(id);\t//slower than getIdByIndex\n\t},\n\t//returns ID of next element\n\tgetNextId:function(id,step){\n\t\treturn this.order[this.getIndexById(id)+(step||1)];\n\t},\n\t//returns ID of first element\n\tgetFirstId:function(){\n\t\treturn this.order[0];\n\t},\n\t//returns ID of last element\n\tgetLastId:function(){\n\t\treturn this.order[this.order.length-1];\n\t},\n\t//returns ID of previous element\n\tgetPrevId:function(id,step){\n\t\treturn this.order[this.getIndexById(id)-(step||1)];\n\t},\n\t/*\n\t\tsort data in collection\n\t\t\tby - settings of sorting\n\t\t\n\t\tor\n\t\t\n\t\t\tby - sorting function\n\t\t\tdir - \"asc\" or \"desc\"\n\t\t\t\n\t\tor\n\t\t\n\t\t\tby - property\n\t\t\tdir - \"asc\" or \"desc\"\n\t\t\tas - type of sortings\n\t\t\n\t\tSorting function will accept 2 parameters and must return 1,0,-1, based on desired order\n\t*/\n\tsort:function(by, dir, as){\n\t\tvar sort = by;\t\n\t\tif (typeof by == \"function\")\n\t\t\tsort = {as:by, dir:dir};\n\t\telse if (typeof by == \"string\")\n\t\t\tsort = {by:by, dir:dir, as:as};\n\n\t\tif(typeof sort.by == \"string\")\n\t\t\tsort.by = sort.by.replace(/#/g,\"\");\n\n\t\t\n\t\tvar parameters = [sort.by, sort.dir, sort.as, sort];\n\t\tif (!this.callEvent(\"onBeforeSort\",parameters)) return;\t\n\t\t\n\t\tthis.order = this._sort_core(sort, this.order);\n\t\tif (this._filter_order && this._filter_order.length != this.order.length)\n\t\t\tthis._filter_order = this._sort_core(sort, this._filter_order);\n\t\t\n\t\t//repaint self\n\t\tthis.refresh();\n\t\t\n\t\tthis.callEvent(\"onAfterSort\",parameters);\n\t},\n\t_sort_core:function(sort, order){\n\t\tvar sorter = this.sorting.create(sort);\n\t\tif (this.order.length){\n\t\t\tvar pre = order.splice(0, this.$freeze);\n\t\t\t//get array of IDs\n\t\t\tvar neworder = _to_array();\n\t\t\tfor (var i=order.length-1; i>=0; i--)\n\t\t\t\tneworder[i] = this.pull[order[i]];\n\t\t\t\n\t\t\tneworder.sort(sorter);\n\t\t\treturn _to_array(pre.concat(neworder.map(function(obj){ \n\t\t\t\tassert(obj, \"Client sorting can't be used with dynamic loading\");\n\t\t\t\treturn this.id(obj);\n\t\t\t},this)));\n\t\t}\n\t\treturn order;\n\t},\n\t/*\n\t\tFilter datasource\n\t\t\n\t\ttext - property, by which filter\n\t\tvalue - filter mask\n\t\t\n\t\tor\n\t\t\n\t\ttext - filter method\n\t\t\n\t\tFilter method will receive data object and must return true or false\n\t*/\n\t_filter_reset:function(preserve){\n\t\t//remove previous filtering , if any\n\t\tif (this._filter_order && !preserve){\n\t\t\tthis.order = this._filter_order;\n\t\t\tdelete this._filter_order;\n\t\t}\n\t},\n\t_filter_core:function(filter, value, preserve){\n\t\tvar neworder = _to_array();\n\t\tvar freeze = this.$freeze || 0;\n\t\t\n\t\tfor (var i=0; i < this.order.length; i++){\n\t\t\tvar id = this.order[i];\n\t\t\tif (i < freeze || filter(this.getItem(id),value))\n\t\t\t\tneworder.push(id);\n\t\t}\n\t\t//set new order of items, store original\n\t\tif (!preserve || !this._filter_order)\n\t\t\tthis._filter_order = this.order;\n\t\tthis.order = neworder;\n\t},\n\tfind:function(config, first){\n\t\tvar result = [];\n\n\t\tfor(var i in this.pull){\n\t\t\tvar data = this.pull[i];\n\n\t\t\tvar match = true;\n\t\t\tif (typeof config == \"object\"){\n\t\t\t\tfor (var key in config)\n\t\t\t\t\tif (data[key] != config[key]){\n\t\t\t\t\t\tmatch = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t} else if (!config(data))\n\t\t\t\tmatch = false;\n\n\t\t\tif (match)\n\t\t\t\tresult.push(data);\n\t\t\t\n\t\t\tif (first && result.length)\n\t\t\t\treturn result[0];\n\t\t}\n\n\t\treturn first ? null : result;\n\t},\n\tfilter:function(text,value,preserve){\n\t\t//unfilter call but we already in not-filtered state\n\t\tif (!text && !this._filter_order && !this._filter_branch) return;\n\t\tif (!this.callEvent(\"onBeforeFilter\", [text, value])) return;\n\t\t\n\t\tthis._filter_reset(preserve);\n\t\tif (!this.order.length) return;\n\t\t\n\t\t//if text not define -just unfilter previous state and exit\n\t\tif (text){\n\t\t\tvar filter = text;\n\t\t\tvalue = value||\"\";\n\t\t\tif (typeof text == \"string\"){\n\t\t\t\ttext = text.replace(/#/g,\"\");\n\t\t\t\tif (typeof value == \"function\")\n\t\t\t\t\tfilter = function(obj){\n\t\t\t\t\t\treturn value(obj[text]);\n\t\t\t\t\t};\n\t\t\t\telse{\n\t\t\t\t\tvalue = value.toString().toLowerCase();\n\t\t\t\t\tfilter = function(obj,value){\t//default filter - string start from, case in-sensitive\n\t\t\t\t\t\tassert(obj, \"Client side filtering can't be used with dynamic loading\");\n\t\t\t\t\t\treturn (obj[text]||\"\").toString().toLowerCase().indexOf(value)!=-1;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis._filter_core(filter, value, preserve, this._filterMode);\n\t\t}\n\t\t//repaint self\n\t\tthis.refresh();\n\t\t\n\t\tthis.callEvent(\"onAfterFilter\", []);\n\t},\n\t/*\n\t\tIterate through collection\n\t*/\n\t_obj_array:function(){\n\t\tvar data = [];\n\t\tfor (var i = this.order.length - 1; i >= 0; i--)\n\t\t\tdata[i]=this.pull[this.order[i]];\n\n\t\treturn data;\n\t},\n\teach:function(method, master, all){\n\t\tvar order = this.order;\n\t\tif (all)\n\t\t\torder = this._filter_order || order;\n\n\t\tfor (var i=0; ib?1:(ab?1:(ab?1:(ab?1:(ab?1:(a this._feed_on_load(data, callback, defer),\n\t\t\t\t() => this._feed_callback()\n\t\t\t);\n\t\t} else { // GET\n\t\t\turl = url+((url.indexOf(\"?\")==-1)?\"?\":\"&\");\n\n\t\t\tvar params = [];\n\t\t\tfor(var d in details){\n\t\t\t\tparams.push(d+\"=\"+details[d]);\n\t\t\t}\n\t\t\tif (state){\n\t\t\t\tif (state.sort)\n\t\t\t\t\tparams.push(\"sort[\"+state.sort.id+\"]=\"+encodeURIComponent(state.sort.dir));\n\t\t\t\tif (state.filter)\n\t\t\t\t\tfor (var key in state.filter){\n\t\t\t\t\t\tvar filterValue = state.filter[key];\n\t\t\t\t\t\tif(typeof filterValue == \"object\")\n\t\t\t\t\t\t\tfilterValue = ajax().stringify(filterValue); //server daterangefilter\n\t\t\t\t\t\tparams.push(\"filter[\"+key+\"]=\"+encodeURIComponent(filterValue));\n\t\t\t\t\t}\n\t\t\t}\n\n\t\t\turl += params.join(\"&\");\n\t\t\tif (this._feed_last.url !== url){\n\t\t\t\tthis._feed_last.url = url;\n\t\t\t\treturn this.load(url).then(\n\t\t\t\t\tdata => this._feed_on_load(data, callback, defer),\n\t\t\t\t\t() => this._feed_callback()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis._load_count = false;\n\t\t\t\treturn promise.reject();\n\t\t\t}\n\t\t}\n\t},\n\t_feed_on_load:function(data, callback, defer){\n\t\tdelay(()=> this._feed_callback(), \"\", \"\", 100);\n\t\tif(callback)\n\t\t\tajax.$callback(this, callback, data);\n\t\tif(defer)\n\t\t\tdefer.resolve(data);\n\t\treturn data;\n\t},\n\t_feed_callback:function(){\n\t\t//after loading check if we have some ignored requests\n\t\tvar temp = this._load_count;\n\t\tthis._load_count = false;\n\t\tif (typeof temp ==\"object\")\n\t\t\tthis.data.feed.apply(this, temp);\t//load last ignored request\n\t},\n\t//loads data from external URL\n\tload:function(url){\n\t\turl = proxy.$parse(url);\n\t\tvar ajax = AtomDataLoader.load.apply(this, arguments);\n\n\t\t//prepare data feed for dyn. loading\n\t\tif (!this.data.url)\n\t\t\tthis.data.url = url;\n\n\t\treturn ajax;\n\t},\n\t//load next set of data rows\n\tloadNext:function(count, start, callback, url, now){\n\t\tvar config = this._settings;\n\t\tif (config.datathrottle && !now){\n\t\t\tif (this._throttle_request)\n\t\t\t\twindow.clearTimeout(this._throttle_request);\n\n\t\t\tlet defer = promise.defer();\n\t\t\tthis._throttle_request = delay(function(){\n\t\t\t\tdefer.resolve(this.loadNext(count, start, callback, url, true));\n\t\t\t},this, 0, config.datathrottle);\n\t\t\treturn defer;\n\t\t}\n\n\t\tif (!start && start !== 0) start = this.count();\n\t\tif (!count)\n\t\t\tcount = config.datafetch || this.count();\n\n\t\tthis.data.url = this.data.url || url;\n\t\tif (this.callEvent(\"onDataRequest\", [start,count,callback,url]) && this.data.url)\n\t\t\treturn this.data.feed.call(this, start, count, callback);\n\t\treturn promise.reject();\n\t},\n\t_maybe_loading_already:function(count, from){\n\t\tvar last = this._feed_last;\n\t\tif(this._load_count && last.url){\n\t\t\tif (last.from<=from && (last.count+last.from >= count + from )) return true;\n\t\t}\n\t\treturn false;\n\t},\n\tremoveMissed_setter:function(value){\n\t\treturn (this.data._removeMissed = value);\n\t},\n\t//init of dataprocessor delayed after all settings processing\n\t//because it need to be the last in the event processing chain\n\t//to get valid validation state\n\t_init_dataprocessor:function(){\n\t\tvar url = this._settings.save;\n\n\t\tif (url === true)\n\t\t\turl = this._settings.save = this._settings.url;\n\n\t\tvar obj = { master: this };\n\t\t\n\t\tif (url && url.url)\n\t\t\textend(obj, url);\n\t\telse\n\t\t\tobj.url = url;\n\n\t\tdp(obj);\n\t},\n\tsave_setter:function(value){\n\t\tif (value)\n\t\t\tthis.$ready.push(this._init_dataprocessor);\n\n\t\treturn value;\n\t},\n\twaitSave:function(handler){\n\t\treturn dp(this)._promise(() => {\n\t\t\thandler.call(this);\n\t\t}).then(many => many.length == 1 ? many[0] : many);\n\t},\n\tscheme_setter:function(value){\n\t\tthis.data.scheme(value);\n\t},\n\tdataFeed_setter:function(value){\n\t\tvalue = proxy.$parse(value);\n\n\t\tthis.data.attachEvent(\"onBeforeFilter\", bind(function(text, filtervalue){\n\t\t\tvar result;\n\n\t\t\t//complex filtering, can't be routed to dataFeed\n\t\t\tif (typeof text == \"function\") return true;\n\n\t\t\t//we have dataFeed and some text\n\t\t\tif (this._settings.dataFeed && (text || filtervalue)){\n\t\t\t\ttext = text || \"id\";\n\t\t\t\tif (filtervalue && typeof filtervalue == \"object\")\n\t\t\t\t\tfiltervalue = filtervalue.id;\n\n\t\t\t\tvar url = this._settings.dataFeed;\n\n\t\t\t\t//url data feed\n\t\t\t\tif(typeof url ==\"string\"){\n\t\t\t\t\tvar urldata = \"filter[\"+text+\"]=\"+encodeURIComponent(filtervalue);\n\t\t\t\t\tresult = this._fetch(\n\t\t\t\t\t\turl+(url.indexOf(\"?\")<0?\"?\":\"&\")+urldata,\n\t\t\t\t\t\tthis._settings.datatype\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t//js data feed\n\t\t\t\telse{\n\t\t\t\t\tvar filter = {};\n\t\t\t\t\tfilter[text] = filtervalue;\n\t\t\t\t\tif (typeof url == \"function\"){\n\t\t\t\t\t\tresult = url.call(this, filtervalue, filter);\n\t\t\t\t\t} else if (url.$proxy && url.load) {\n\t\t\t\t\t\tresult = url.load(this, { filter });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (result){\n\t\t\t\t\tif (!result.then)\n\t\t\t\t\t\tresult = promise.resolve(result);\n\n\t\t\t\t\tresult.then(\n\t\t\t\t\t\tdata => {\n\t\t\t\t\t\t\tthis.clearAll();\n\t\t\t\t\t\t\tthis._onLoad(data);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tx => this._onLoadError(x)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},this));\n\t\treturn value;\n\t},\n\t_call_onready:function(){\n\t\tif (this._settings.ready && !this._ready_was_used){\n\t\t\tvar code = toFunctor(this._settings.ready, this.$scope);\n\t\t\tif (code)\n\t\t\t\tdelay(code, this, arguments);\n\t\t\tif (this.callEvent)\n\t\t\t\tdelay(this.callEvent, this, [\"onReady\", []]);\n\t\t\tthis._ready_was_used = true;\n\t\t}\n\t},\n\t_call_onclearall:function(soft){\n\t\tthis._data_generation++;\n\t\tif (!soft){\n\t\t\tthis._load_count = false;\n\t\t\tthis._feed_last = {};\n\t\t\tthis.waitData = promise.defer();\n\t\t}\n\t},\n\t_call_on_config:function(config){\n\t\tthis._parseSeetingColl(config);\n\t}\n},AtomDataLoader);\n\n\n\nexport default DataLoader;","\n\nconst DataState = {\n\tgetState:function(){\n\t\tvar cols_n = this.config.columns.length;\n\t\tvar columns = this.config.columns;\n\t\tvar settings = { \n\t\t\tids:[],\n\t\t\tsize:[],\n\t\t\tselect:this.getSelectedId(true),\n\t\t\tscroll:this.getScrollState()\n\t\t};\n\t\tfor(var i = 0; i < cols_n; i++){\n\t\t\tvar col = columns[i];\n\t\t\tsettings.ids.push(col.id);\n\t\t\tsettings.size.push((col.fillspace || col.adjust) ? -1 : col.width);\n\t\t}\n\n\t\tsettings.order = [].concat(this._hidden_column_order.length ? this._hidden_column_order : settings.ids);\n\n\t\tif(this._last_sorted){\n\t\t\tsettings.sort={\n\t\t\t\tid:this._last_sorted,\n\t\t\t\tdir:this._last_order\n\t\t\t};\n\t\t}\n\n\t\t//this method will try to access the rendered values\n\t\t//just ignore it if grid is not rendered yet\n\t\tif (this._filter_elements && this._dtable_fully_ready) {\n\t\t\tvar filter = {};\n\t\t\tvar any_filter = 0;\n\t\t\tfor (let key in this._filter_elements) {\n\t\t\t\tif (this._hidden_column_hash[key]) continue;\n\n\t\t\t\tvar f = this._filter_elements[key];\n\t\t\t\tf[1].value = filter[key] = f[2].getValue(f[0]);\n\t\t\t\tany_filter = 1;\n\t\t\t}\n\t\t\tif (any_filter)\n\t\t\t\tsettings.filter=filter;\n\t\t}\n\n\t\tsettings.hidden = [];\n\t\tfor (let key in this._hidden_column_hash)\n\t\t\tsettings.hidden.push(key);\n\t\t\n\t\treturn settings;\n\t},\n\tsetState:function(obj){\n\t\tvar columns = this.config.columns;\n\t\tif(!obj) return;\n\n\t\tthis._last_sorted = null; \n\t\tthis.blockEvent();\n\n\t\tif (obj.order && obj.order.length){\n\t\t\tthis._hidden_column_order = [].concat(obj.order);\n\t\t\tthis._hidden_split = [ this._settings.leftSplit, obj.order.length - this._settings.rightSplit ];\n\t\t}\n\n\t\tif (obj.hidden){\n\t\t\tvar hihash = {};\n\t\t\tfor (let i=0; i 0 && col.width != obj.size[i]){\n\t\t\t\t\tdelete col.fillspace;\n\t\t\t\t\tdelete col.adjust;\n\t\t\t\t\tthis._setColumnWidth( i, obj.size[i], true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.unblockEvent();\n\n\t\tvar silent = !(this._settings.leftSplit || this._settings.rightSplit);\n\t\tthis._updateColsSizeSettings(silent);\n\t\tthis.callEvent(\"onStructureUpdate\", []);\n\n\t\tif(obj.sort){\n\t\t\tvar column = columns[this.getColumnIndex(obj.sort.id)];\n\t\t\tif (column)\n\t\t\t\tthis._sort(obj.sort.id, obj.sort.dir, column.sort);\t\n\t\t}\n\t\t\t\t\n\t\tif (obj.filter){\n\t\t\t//temporary disable filtering \n\t\t\tlet temp = this.filterByAll;\n\t\t\tthis.filterByAll = function(){};\n\n\t\t\t//apply defined filters\n\t\t\tfor (let key in obj.filter) {\n\t\t\t\tlet value = obj.filter[key];\n\t\t\t\tif (!value) continue;\n\n\t\t\t\tif (!this._filter_elements[key]) continue;\n\t\t\t\tlet f = this._filter_elements[key];\n\t\t\t\tf[2].setValue(f[0], value);\n\t\t\t\tvar contentid = f[1].contentId;\n\t\t\t\tif (contentid)\n\t\t\t\t\tthis._active_headers[contentid].value = value;\n\t\t\t}\n\n\t\t\t//remove old filters\n\t\t\tfor (let key in this._filter_elements){\n\t\t\t\tif (!obj.filter[key]){\n\t\t\t\t\tlet f = this._filter_elements[key];\n\t\t\t\t\tf[2].setValue(f[0], \"\");\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t//restore and apply filtering\n\t\t\tthis.filterByAll = temp;\n\t\t\tthis.filterByAll();\n\t\t}\n\n\t\tif (obj.select && this.select){\n\t\t\tlet select = obj.select;\n\t\t\tthis.unselect();\n\t\t\tfor (let i = 0; i < select.length; i++)\n\t\t\t\tif (!select[i].row || this.exists(select[i].row))\n\t\t\t\t\tthis._select(select[i], true);\n\t\t}\n\n\t\tif(obj.scroll)\n\t\t\tthis.scrollTo(obj.scroll.x, obj.scroll.y);\n\t}\n};\n\nexport default DataState;","import {pos, offset} from \"../webix/html\";\nimport {use} from \"../services\";\nimport env from \"../webix/env\";\nimport Touch from \"../core/touch\";\nimport {extend, delay, _power_array, isArray} from \"../webix/helpers\";\nimport {assert} from \"../webix/debug\";\nimport DragControl from \"../core/dragcontrol\";\nimport AutoScroll from \"../core/autoscroll\";\n\n\n/*\n\tBehavior:DragItem - adds ability to move items by dnd\n\t\n\tdnd context can have next properties\n\t\tfrom - source object\n\t\tto - target object\n\t\tsource - id of dragged item(s)\n\t\ttarget - id of drop target, null for drop on empty space\n\t\tstart - id from which DND was started\n*/\n\nconst DragItem ={\n\t//helper - defines component's container as active zone for dragging and for dropping\n\t_initHandlers:function(obj, source, target){\n\t\tif (!source) DragControl.addDrop(obj._contentobj,obj,true);\n\t\tif (!target) DragControl.addDrag(obj._contentobj,obj);\n\t\tthis.attachEvent(\"onDragOut\",function(a,b){ this.$dragMark(a,b); });\n\t\tthis.attachEvent(\"onBeforeAutoScroll\",function(){\n\t\t\tvar context = DragControl.getContext();\n\t\t\treturn !!(DragControl._active && context && (context.to === this || this._auto_scroll_force));\n\t\t});\n\t},\n\tdrag_setter:function(value){\n\t\tif (value){\n\t\t\textend(this, AutoScroll, true);\n\t\t\tif (value == \"order\" || value == \"move\")\n\t\t\t\textend(this, use(\"DragOrder\"), true);\n\t\t\tif (value == \"inner\" || value == \"order\")\n\t\t\t\tthis._inner_drag_only = true;\n\n\t\t\tthis._initHandlers(this, value == \"source\", value == \"target\");\n\t\t\tdelete this.drag_setter;\t//prevent double initialization\n\t\t}\n\t\treturn value;\n\t},\n\t/*\n\t\ts - source html element\n\t\tt - target html element\n\t\td - drop-on html element ( can be not equal to the target )\n\t\te - native html event \n\t*/\n\t//called when drag moved over possible target\n\t$dragIn:function(s,t,e){\n\t\tvar id = this.locate(e) || null;\n\t\tvar context = DragControl._drag_context;\n\n\t\t//in inner drag mode - ignore dnd from other components\n\t\tif ((this._inner_drag_only || context.from._inner_drag_only) && context.from !== this) return false;\n\n\t\tvar to = DragControl.getMaster(t);\n\t\t//previous target\n\t\tvar html = (this.getItemNode(id, e)||this._dataobj);\n\t\t//prevent double processing of same target\n\t\tif (html == DragControl._landing) return html;\n\t\tcontext.target = id;\n\t\tcontext.to = to;\n\n\t\tif (this._auto_scroll_delay)\n\t\t\tthis._auto_scroll_delay = window.clearTimeout(this._auto_scroll_delay);\n\n\t\tif (this._settings.dragscroll !== false)\n\t\t\tthis._auto_scroll_delay = delay(function(pos,id){\n\t\t\t\tthis._drag_pause(id);\n\t\t\t\tthis._auto_scroll(pos,id);\n\t\t\t}, this, [pos(e), id], 250);\n\n\t\tif (!this.$dropAllow(context, e) || !this.callEvent(\"onBeforeDragIn\",[context, e])){\n\t\t\tcontext.to = context.target = null;\n\t\t\tif (this._auto_scroll_delay)\n\t\t\t\tthis._auto_scroll_delay = window.clearTimeout(this._auto_scroll_delay);\n\t\t\treturn null;\n\t\t}\n\t\t//mark target only when landing confirmed\n\t\tthis.$dragMark(context,e);\n\t\treturn html;\n\t},\n\t$dropAllow:function(){\n\t\treturn true;\n\t},\n\t_drag_pause:function(){\n\t\t//may be reimplemented in some components\n\t\t// tree for example\n\t},\n\t_target_to_id:function(target){\n\t\treturn target && typeof target === \"object\" ? target.toString() : target;\n\t},\n\t//called when drag moved out from possible target\n\t$dragOut:function(s,t,n,e){ \n\t\tvar id = (this._viewobj.contains(n) ? this.locate(e): null) || null;\n\t\tvar context = DragControl._drag_context;\n\n\t\t//still over previous target\n\t\tif ((context.target||\"\").toString() == (id||\"\").toString()) return null;\n\t\tif (this._auto_scroll_delay)\n\t\t\tthis._auto_scroll_delay = window.clearTimeout(this._auto_scroll_delay);\n\n\t\t//unmark previous target\n\t\tcontext.target = context.to = null;\n\t\tthis.callEvent(\"onDragOut\",[context,e]);\n\t\treturn null;\n\t},\n\t//called when drag moved on target and button is released\n\t$drop:function(s,t,e){\n\t\tvar context = DragControl._drag_context;\n\t\t//finalize context details\n\t\tcontext.to = this;\n\t\tthis._define_index(s,t,context);\n\n\t\t//unmark last target\n\t\tthis.$dragMark({}, e);\n\n\t\tif( context.from && context.from != context.to && context.from.callEvent ){\n\t\t\tif(!context.from.callEvent(\"onBeforeDropOut\", [context,e]))\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (!this.callEvent(\"onBeforeDrop\",[context,e])) return;\n\t\t//moving\n\t\tthis._context_to_move(context,e);\n\t\t\n\t\tthis.callEvent(\"onAfterDrop\",[context,e]);\n\t},\n\t_define_index:function(s,t,context){\n\t\tvar target = this._target_to_id(context.target);\n\n\t\tif (this.getBranchIndex){\n\t\t\tif (target){\n\t\t\t\tcontext.parent = this.getParentId(target);\n\t\t\t\tcontext.index = this.getBranchIndex(target);\n\t\t\t} else context.index = -1;\n\t\t} else\n\t\t\tcontext.index = target?this.getIndexById(target):this.count();\n\t},\n\t_context_to_move:function(context){\n\t\tassert(context.from, \"Unsopported d-n-d combination\");\n\t\tif (context.from && context.from.move){\t//from different component with item dnd\n\t\t\tvar details = { parent: context.parent, mode: context.pos };\n\t\t\tcontext.from.move(context.source,context.index,context.to, details);\n\t\t}\n\t},\n\t_getDragItemPos: function(pos,e){\n\t\tif (this.getItemNode){\n\t\t\tvar id = this.locate(e, true);\n\t\t\t//in some case, node may be outiside of dom ( spans in datatable for example )\n\t\t\t//so getItemNode can return null\n\t\t\tvar node = id ? this.getItemNode(id) : null;\n\t\t\treturn node ? offset(node) : node;\n\t\t}\n\t},\n\t//called when drag action started\n\t$drag:function(s,e){\n\t\tvar id = this.locate(e, true);\n\t\tif (id){\n\t\t\tvar list = [id];\n\n\t\t\tif (this.getSelectedId){ //has selection model\n\t\t\t\t//if dragged item is one of selected - drag all selected\n\t\t\t\tvar selection = this.getSelectedId(true, true);\t\n\n\t\t\t\tif (selection && selection.length > 1 && _power_array.find.call(selection,id)!=-1){\n\t\t\t\t\tvar hash = {}; \n\t\t\t\t\tlist = [];\n\t\t\t\t\tfor (let i=0;i 1 )\n\t\t\thtml = this._toMultipleHTML(html, context.source.length);\n\t\treturn html;\n\t},\n\t_toMultipleHTML:function(html, len){\n\t\thtml = \"
\"+html+\"
\";\n\t\tlet multiple = \"
\";\n\t\tif ( len > 2 )\n\t\t\tmultiple = \"
\" + multiple;\n\t\treturn multiple+html+\"\"+len+\"\";\n\t},\n\t$dragMark:function(context){\n\t\tvar target = null;\n\t\tif (context.target)\n\t\t\ttarget = this._target_to_id(context.target);\n\n\t\t//touch webkit will stop touchmove event if source node removed\n\t\tif (this._marked && this._marked != target){\n\t\t\tif (!context.fragile) this._remove_css([this._marked], \"webix_drag_over\", true);\n\t\t\tthis._marked = null;\n\t\t}\n\n\t\tif (!this._marked && target){\n\t\t\tthis._marked = target;\n\t\t\tif (!context.fragile) this._add_css([target], \"webix_drag_over\", true);\n\t\t\treturn target;\n\t\t}\n\t\t\n\t\tif (context.to){\n\t\t\treturn true;\n\t\t}else\n\t\t\treturn false;\n\t},\n\t_add_css:function(source, css){\n\t\tfor (let i=0; i ofs[settings[settings.direction]] )\n\t\t\t\ttarget = this.getNextId(target) || \"$webix-last\";\n\t\t}\n\n\t\tif (target == this._marked_item_id || target == \"$webix-drop\")\n\t\t\treturn html;\n\n\t\tthis._marked_item_id = target;\n\t\tthis._set_drop_area(target, t);\n\n\t\treturn html;\n\t},\n\t$dragPos:function(pos){\n\t\tif (!this._inner_drag_only){\n\t\t\tlet context = DragControl._drag_context;\n\t\t\tpos.y += context.y_offset;\n\t\t\tpos.x += context.x_offset;\n\t\t\treturn;\n\t\t}\n\n\t\tlet box = offset(this.$view);\n\t\tlet xdrag = (this._settings.layout == \"x\");\n\n\t\tif (xdrag){\n\t\t\tbox.x -= 12;\n\t\t\tpos.y = box.y - 8;\n\t\t\tpos.x = pos.x - 18;\n\n\t\t\tif (pos.x < box.x)\n\t\t\t\tpos.x = box.x;\n\t\t\telse {\n\t\t\t\tlet max = box.x + box.width;\n\t\t\t\tif (pos.x > max)\n\t\t\t\t\tpos.x = max;\n\t\t\t}\n\t\t} else {\n\t\t\tbox.y += (this._header_height||0) - 12;\n\t\t\tpos.x = box.x + 8 + (this._drag_order_stored_left||0);\n\t\t\tpos.y = pos.y - 18;\n\n\t\t\tif (pos.y < box.y)\n\t\t\t\tpos.y = box.y;\n\t\t\telse {\n\t\t\t\tlet max = box.y + box.height - (this._header_height||0);\n\t\t\t\tif (pos.y > max)\n\t\t\t\t\tpos.y = max;\n\t\t\t}\n\t\t}\n\t},\n\t$dragOut:function(s,ot,nt){\n\t\tif (ot != nt){\n\t\t\tremove(DragControl._dropHTML);\n\t\t\tthis._marked_item_id = DragControl._dropHTML = null;\n\t\t}\n\t\treturn DragItem.$dragOut.apply(this, arguments);\n\t},\n\t_define_index:function(s,t,context){\n\t\tvar target = this._marked_item_id == \"$webix-last\" ? null : this._marked_item_id;\n\n\t\tif (this.getBranchIndex){\n\t\t\tif (target){\n\t\t\t\tcontext.parent = this.getParentId(target);\n\t\t\t\tcontext.index = this.getBranchIndex(target);\n\t\t\t\tif (s == t && this.getParentId(context.start) == context.parent && this.getBranchIndex(context.start) < context.index)\n\t\t\t\t\tcontext.index -= 1;\n\t\t\t} else context.index = -1;\n\t\t} else {\n\t\t\tcontext.index = target?this.getIndexById(target):this.count();\n\t\t\tcontext.index -= (s == t && this.getIndexById(context.start)=0; i--){\n\t\t\tif(this._undoHistory[i].id == id){\n\t\t\t\tif(this._undoHistory[i].action == \"id\"){\n\t\t\t\t\tid = this._undoHistory[i].data;\n\t\t\t\t}\n\t\t\t\tthis._undoHistory.removeAt(i);\n\t\t\t}\n\t\t}\n\t\tthis._undoCursor = this._undoHistory.length - 1;\n\t},\n\tundo: function(id){\n\t\tif(id){\n\t\t\tthis.ignoreUndo(function(){\n\t\t\t\tvar data, i;\n\t\t\t\tfor( i = this._undoHistory.length-1; !data && i >=0; i--){\n\t\t\t\t\tif(this._undoHistory[i].id == id)\n\t\t\t\t\t\tdata = this._undoHistory[i];\n\t\t\t\t}\n\n\t\t\t\tif(data){\n\t\t\t\t\t/*if(data.action == \"id\")\n\t\t\t\t\t\tid = data.data;*/\n\t\t\t\t\tthis._undoAction(data);\n\t\t\t\t\tthis._undoHistory.removeAt(i+1);\n\t\t\t\t\tthis._undoCursor = this._undoHistory.length - 1;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse{\n\t\t\tvar data = this._undoHistory[this._undoCursor];\n\t\t\tif(data){\n\t\t\t\tthis.ignoreUndo(function(){\n\t\t\t\t\tthis._undoAction(data);\n\t\t\t\t\tthis._undoHistory.removeAt(this._undoCursor);\n\t\t\t\t});\n\t\t\t\tthis._undoCursor--;\n\t\t\t\t/*if(data.action == \"id\")\n\t\t\t\t\tthis.undo();*/\n\t\t\t}\n\t\t}\n\t},\n\t_undoAction: function(obj){\n\t\tif(obj.action == \"delete\"){\n\t\t\tvar branch = null,\n\t\t\t\tparentId = obj.data.$parent;\n\n\t\t\tif(obj.data.$branch){\n\t\t\t\tbranch = {\n\t\t\t\t\tparent: obj.id,\n\t\t\t\t\tdata: copy(obj.data.$branch)\n\t\t\t\t};\n\t\t\t\tdelete obj.data.$branch;\n\t\t\t\tif(parentId && !this.data.branch[parentId])\n\t\t\t\t\tparentId = 0;\n\t\t\t}\n\n\t\t\tthis.add(obj.data, obj.data.$index, parentId);\n\t\t\tif(branch){\n\t\t\t\tthis.parse(branch);\n\t\t\t}\n\t\t}\n\t\telse if(obj.action == \"add\"){\n\t\t\tthis.remove(obj.id);\n\t\t}\n\t\telse if(obj.action == \"update\"){\n\t\t\tthis.updateItem(obj.id, obj.data);\n\t\t}\n\t\telse if(obj.action == \"move\"){\n\t\t\tif(obj.data.$parent){\n\t\t\t\tif(this.getItem(obj.data.$parent))\n\t\t\t\t\tthis.move(obj.id, obj.data.$index, null, {parent: obj.data.$parent});\n\t\t\t}\n\t\t\telse\n\t\t\t\tthis.move(obj.id, obj.data.$index);\n\t\t}\n\t\t/*else if(obj.action == \"id\"){\n\t\t\tthis.data.changeId(obj.id, obj.data);\n\t\t}*/\n\t}\n};\n\nexport default Undo;","\n\nimport {create} from \"../webix/html\";\nimport {isArray, isUndefined, copy, toNode, bind, extend} from \"../webix/helpers\";\nimport {ui, $$} from \"../ui/core\";\nimport i18n from \"../webix/i18n\";\nimport {_event} from \"../webix/htmlevents\";\nimport {assert} from \"../webix/debug\";\nimport {callEvent} from \"../webix/customevents\";\n\n\nfunction init_suggest(editor, input){\n\tvar suggest = editor.config.suggest;\n\tif (suggest){\n\t\tvar box = editor.config.suggest = create_suggest(suggest);\n\t\tvar boxobj = $$(box);\n\t\tif (boxobj && input)\n\t\t\tboxobj.linkInput(input);\n\t}\n}\n\nfunction create_suggest(config){\n\tif (typeof config == \"string\") return config;\n\tif (config.linkInput) return config._settings.id;\n\n\n\tif (typeof config == \"object\"){\n\t\tif (isArray(config))\n\t\t\tconfig = { data: config };\n\t\tconfig.view = config.view || \"suggest\";\n\t} else if (config === true)\n\t\tconfig = { view:\"suggest\" };\n\n\tvar obj = ui(config);\n\treturn obj.config.id;\n}\n\nfunction getLabel(config){\n\tvar text = config.header && config.header[0]?config.header[0].text:config.editValue || config.label;\n\treturn (text || \"\").toString().replace(/<[^>]*>/g, \"\");\n}\n\n/*\nthis.node - html node, available after render call\nthis.config - editor config\nthis.value - original value\nthis.popup - id of popup \n*/\nconst editors = {\n\t\"text\":{\n\t\tfocus:function(){\n\t\t\tthis.getInputNode(this.node).focus();\n\t\t\tthis.getInputNode(this.node).select();\n\t\t},\n\t\tgetValue:function(){\n\t\t\treturn this.getInputNode(this.node).value;\n\t\t},\n\t\tsetValue:function(value){\n\t\t\tvar input = this.getInputNode(this.node);\n\t\t\tinput.value = value;\n\n\t\t\tinit_suggest(this, input);\n\t\t},\n\t\tgetInputNode:function(){\n\t\t\treturn this.node.firstChild;\n\t\t},\n\t\trender:function(){\n\t\t\treturn create(\"div\", {\n\t\t\t\t\"class\":\"webix_dt_editor\"\n\t\t\t}, \"\");\n\t\t}\n\t},\n\t\"inline-checkbox\":{\n\t\trender:function(){ return {}; },\n\t\tgetValue:function(){\n\t\t\treturn this.node.checked;\n\t\t},\n\t\tsetValue:function(){},\n\t\tfocus:function(){\n\t\t\tthis.node.focus();\n\t\t},\n\t\tgetInputNode:function(){},\n\t\t$inline:true\n\t},\n\t\"inline-text\":{\n\t\trender:function(){ return {}; },\n\t\tgetValue:function(){\n\t\t\treturn this.node.value;\n\t\t},\n\t\tsetValue:function(){},\n\t\tfocus:function(){\n\t\t\ttry{\t//IE9\n\t\t\t\tthis.node.select();\n\t\t\t\tthis.node.focus();\n\t\t\t} catch(e){} //eslint-disable-line\n\t\t},\n\t\tgetInputNode:function(){},\n\t\t$inline:true\n\t},\n\t\"checkbox\":{\n\t\tfocus:function(){\n\t\t\tthis.getInputNode().focus();\n\t\t},\n\t\tgetValue:function(){\n\t\t\treturn this.getInputNode().checked;\n\t\t},\n\t\tsetValue:function(value){\n\t\t\tthis.getInputNode().checked = !!value;\n\t\t},\n\t\tgetInputNode:function(){\n\t\t\treturn this.node.firstChild.firstChild;\n\t\t},\n\t\trender:function(){\n\t\t\treturn create(\"div\", {\n\t\t\t\t\"class\":\"webix_dt_editor\"\n\t\t\t}, \"
\");\n\t\t}\n\t},\n\t\"select\":{\n\t\tfocus:function(){\n\t\t\tthis.getInputNode().focus();\n\t\t},\n\t\tgetValue:function(){\n\t\t\treturn this.getInputNode().value;\n\t\t},\n\t\tsetValue:function(value){\n\t\t\tthis.getInputNode().value = value;\n\t\t},\n\t\tgetInputNode:function(){\n\t\t\treturn this.node.firstChild;\n\t\t},\n\t\trender:function(){\n\t\t\tvar html = \"\";\n\t\t\tvar options = this.config.options || this.config.collection;\n\t\t\tassert(options,\"options not defined for select editor\");\n\n\t\t\tif (options.data && options.data.each)\n\t\t\t\toptions.data.each(function(obj){\n\t\t\t\t\thtml +=\"\";\n\t\t\t\t});\n\t\t\telse {\n\t\t\t\tif (isArray(options)){\n\t\t\t\t\tfor (var i=0; i\"+label+\"\";\n\t\t\t\t\t}\n\t\t\t\t} else for (var key in options){\n\t\t\t\t\thtml +=\"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn create(\"div\", {\n\t\t\t\t\"class\":\"webix_dt_editor\"\n\t\t\t}, \"\");\n\t\t}\n\t},\n\tpopup:{\n\t\tfocus:function(){\n\t\t\tthis.getInputNode().focus();\n\t\t},\n\t\tdestroy:function(){\n\t\t\tthis.getPopup().hide();\n\t\t},\n\t\tgetValue:function(){\n\t\t\treturn this.getInputNode().getValue()||\"\";\n\t\t},\n\t\tsetValue:function(value){\n\t\t\tthis.getPopup().show(this.node);\n\t\t\tthis.getInputNode().setValue(value);\n\t\t},\n\t\tgetInputNode:function(){\n\t\t\treturn this.getPopup().getChildViews()[0];\n\t\t},\n\t\tgetPopup:function(){\n\t\t\tif (!this.config.$popup)\n\t\t\t\tthis.config.$popup = this.createPopup();\n\n\t\t\treturn $$(this.config.$popup);\n\t\t},\n\t\tcreatePopup:function(){\n\t\t\tvar popup = this.config.popup || this.config.suggest;\n\t\t\tif (popup){\n\t\t\t\tvar pobj;\n\t\t\t\tif (typeof popup == \"object\" && !popup.name){\n\t\t\t\t\tpopup.view = popup.view || \"suggest\";\n\t\t\t\t\tpobj = ui(copy(popup));\n\t\t\t\t} else\n\t\t\t\t\tpobj = $$(popup);\n\n\t\t\t\t//custom popup may be linked already\n\t\t\t\tif(!pobj._linked){\n\t\t\t\t\tif (pobj.linkInput)\n\t\t\t\t\t\tpobj.linkInput(document.body);\n\t\t\t\t\telse if(this.linkInput)\n\t\t\t\t\t\tthis.linkInput(document.body);\n\t\t\t\t\tpobj._linked = true;\n\t\t\t\t}\n\n\t\t\t\treturn pobj;\n\t\t\t}\n\n\t\t\tvar type = editors.$popup[this.popupType];\n\t\t\tif (typeof type != \"string\" && !type.name){\n\t\t\t\ttype = editors.$popup[this.popupType] = ui(type);\n\t\t\t\tthis.popupInit(type);\n\n\t\t\t\tif(!type.linkInput)\n\t\t\t\t\tthis.linkInput(document.body);\n\t\t\t\n\t\t\t}\n\t\t\treturn type._settings.id;\n\t\t},\n\t\tlinkInput:function(node){\n\t\t\t_event(toNode(node), \"keydown\", bind(function(e){\n\t\t\t//abort, when editor was not initialized yet\n\t\t\t\tif (!this.config.$popup) return;\n\n\t\t\t\tvar code = e.which || e.keyCode, list = this.getInputNode();\n\t\t\t\tif(!list.isVisible()) return;\n\n\t\t\t\tif(list.moveSelection && code < 41 && code > 32){\n\t\t\t\t\tvar dir;\n\t\t\t\t\tif(code == 33) dir = \"pgup\";\n\t\t\t\t\tif(code == 34) dir = \"pgdown\";\n\t\t\t\t\tif(code == 35) dir = \"bottom\";\n\t\t\t\t\tif(code == 36) dir = \"top\";\n\t\t\t\t\tif(code == 37) dir = \"left\";\n\t\t\t\t\tif(code == 38) dir = \"up\";\n\t\t\t\t\tif(code == 39) dir = \"right\";\n\t\t\t\t\tif(code == 40) dir = \"down\";\n\n\t\t\t\t\tlist.moveSelection(dir);\n\t\t\t\t} \n\t\t\t\t// shift+enter support for 'popup' editor\n\t\t\t\telse if(code === 13 && ( e.target.nodeName !==\"TEXTAREA\" || !e.shiftKey))\n\t\t\t\t\tcallEvent(\"onEditEnd\", []);\n\t\t\t\n\t\t\t}, this));\n\t\t},\n\n\t\tpopupInit:function(){},\n\t\tpopupType:\"text\",\n\t\trender\t:function(){ return {}; },\n\t\t$inline:true\n\t}\n};\n\neditors.color = extend({\n\tfocus\t:function(){},\n\tpopupType:\"color\",\n\tpopupInit:function(popup){\n\t\tpopup.getChildViews()[0].attachEvent(\"onItemClick\", function(value){\n\t\t\tcallEvent(\"onEditEnd\",[value]);\n\t\t});\n\t}\n}, editors.popup);\n\neditors.date = extend({\n\tfocus\t:function(){},\n\tpopupType:\"date\",\n\tsetValue:function(value){\n\t\tthis._is_string = this.config.stringResult || (value && typeof value == \"string\");\n\t\teditors.popup.setValue.call(this, value);\n\t},\n\tgetValue:function(){\n\t\treturn this.getInputNode().getValue(this._is_string?i18n.parseFormatStr:\"\")||\"\";\n\t},\n\tpopupInit:function(popup){\n\t\tpopup.getChildViews()[0].attachEvent(\"onDateSelect\", function(value){\n\t\t\tcallEvent(\"onEditEnd\",[value]);\n\t\t});\n\t}\n}, editors.popup);\n\neditors.combo = extend({\n\t_create_suggest:function(config){\n\t\tif(this.config.popup){\n\t\t\treturn this.config.popup.config.id;\n\t\t}\n\t\telse if (config){\n\t\t\treturn create_suggest(config);\n\t\t} else\n\t\t\treturn this._shared_suggest(config);\n\t},\n\t_shared_suggest:function(){\n\t\tvar e = editors.combo;\n\t\treturn (e._suggest = e._suggest || this._create_suggest(true));\n\t},\n\trender:function(){\n\t\tvar node = create(\"div\", {\n\t\t\t\"class\":\"webix_dt_editor\"\n\t\t}, \"\");\n\n\t\t//save suggest id for future reference\t\t\n\t\tvar suggest = this.config.suggest = this._create_suggest(this.config.suggest);\n\n\t\tif (suggest){\n\t\t\t$$(suggest).linkInput(node.firstChild, true);\n\t\t\t_event(node.firstChild, \"click\",bind(this.showPopup, this));\n\t\t}\n\t\treturn node;\n\t},\n\tgetPopup:function(){\n\t\treturn $$(this.config.suggest);\n\t},\n\tshowPopup:function(){\n\t\tvar popup = this.getPopup();\n\t\tvar list = popup.getList();\n\t\tvar input = this.getInputNode();\n\t\tvar value = this._initial_value;\n\n\t\tpopup.show(input);\n\t\tinput.setAttribute(\"aria-expanded\", \"true\");\n\t\tif(value ){\n\t\t\tassert(list.exists(value), \"Option with ID \"+value+\" doesn't exist\");\n\t\t\tif(list.exists(value)){\n\t\t\t\tlist.select(value);\n\t\t\t\tlist.showItem(value);\n\t\t\t}\n\t\t}else{\n\t\t\tlist.unselect();\n\t\t\tlist.showItem(list.getFirstId());\n\t\t}\n\t\tpopup._last_input_target = input;\n\t},\n\tafterRender:function(){\n\t\tthis.showPopup();\n\t},\n\tsetValue:function(value){\n\t\tthis._initial_value = value;\n\t\tif (this.config.suggest){\n\t\t\tvar sobj = $$(this.config.suggest);\n\t\t\tvar data = this.config.collection || this.config.options;\n\t\t\tif (data)\n\t\t\t\tsobj.getList().data.importData(data);\n\n\t\t\tthis.getInputNode(this.node).value = sobj.getItemText(value);\n\t\t}\n\t},\n\tgetValue:function(){\n\t\tvar value = this.getInputNode().value;\n\t\tif (this.config.suggest){\n\t\t\tvar suggest = $$(this.config.suggest),\n\t\t\t\tlist = suggest.getList();\n\t\t\tif (value || (list.getSelectedId && list.getSelectedId()))\t\n\t\t\t\tvalue = suggest.getSuggestion(value);\n\t\t}\n\t\n\t\treturn value;\n\t}\n}, editors.text);\n\n\neditors.richselect = extend({\n\tfocus:function(){},\n\tgetValue:function(){\n\t\treturn this.getPopup().getValue();\n\t},\n\tsetValue:function(value){\n\t\tvar suggest = this.config.collection || this.config.options;\n\t\tthis.getInputNode();\n\t\tif (suggest)\n\t\t\tthis.getPopup().getList().data.importData(suggest);\n\n\t\tthis.getPopup().show(this.node);\n\t\tthis.getPopup().setValue(value);\n\t},\n\tgetInputNode:function(){\n\t\treturn this.getPopup().getList();\n\t},\n\tpopupInit:function(popup){\n\t\tpopup.linkInput(document.body);\n\t},\n\tpopupType:\"richselect\"\n}, editors.popup);\n\neditors.password = extend({\n\trender:function(){\n\t\treturn create(\"div\", {\n\t\t\t\"class\":\"webix_dt_editor\"\n\t\t}, \"\");\n\t}\n}, editors.text);\n\neditors.$popup = {\n\ttext:{\n\t\tview:\"popup\", width:250, height:150,\n\t\tbody:{ view:\"textarea\" }\n\t},\n\tcolor:{\n\t\tview:\"popup\",\n\t\tbody:{ view:\"colorboard\" }\n\t},\n\tdate:{\n\t\tview:\"popup\", width:250, height:250, padding:0,\n\t\tbody:{ view:\"calendar\", icons:true, borderless:true }\n\t},\n\trichselect:{\n\t\tview:\"suggest\",\n\t\tbody:{ view:\"list\", select:true }\n\t},\n\tmultiselect:{\n\t\tview:\"multisuggest\",\n\t\tsuggest:{\n\t\t\tbutton:true\n\t\t}\n\t}\n};\n\nexport default editors;","import {remove, removeCss, addCss} from \"../webix/html\";\nimport UIManager from \"../core/uimanager\";\nimport {extend, bind, delay, isUndefined} from \"../webix/helpers\";\nimport {ui, $$} from \"../ui/core\";\nimport {_event} from \"../webix/htmlevents\";\nimport {assert} from \"../webix/debug\";\nimport {attachEvent, callEvent} from \"../webix/customevents\";\nimport Undo from \"../core/undo\";\n\n\nimport globalState from \"../core/state\";\nimport editors from \"../webix/editors\";\n/*\n\tBehavior:EditAbility - enables item operation for the items\n\t\n\t@export\n\t\tedit\n\t\tstopEdit\n*/\n\nconst EditAbility ={\n\tdefaults:{\n\t\teditaction:\"click\"\n\t},\n\t$init:function(config){\n\t\tthis._editors = {};\n\t\tthis._in_edit_mode = 0;\n\t\tthis._edit_open_time = 0;\n\t\tthis._contentobj.style.position = \"relative\";\n\t\tif (config)\n\t\t\tconfig.onDblClick = config.onDblClick || {};\n\n\t\tthis.attachEvent(\"onAfterRender\", this._refocus_inline_editor);\n\n\t\t//when we call extend the editable prop can be already set\n\t\tif (this._settings.editable)\n\t\t\tthis._init_edit_events_once();\n\n\t\textend(this,Undo);\n\t},\n\t_refocus_try:function(newnode){\n\t\ttry{ //Chrome throws an error if selectionStart is not accessible\n\t\t\tif (typeof newnode.selectionStart == \"number\") {\n\t\t\t\tnewnode.selectionStart = newnode.selectionEnd = newnode.value.length;\n\t\t\t} else if (typeof newnode.createTextRange != \"undefined\") {\n\t\t\t\tvar range = newnode.createTextRange();\n\t\t\t\trange.collapse(false);\n\t\t\t\trange.select();\n\t\t\t}\n\t\t} catch(e){} // eslint-disable-line\n\t},\n\t_refocus_inline_editor:function(){\n\t\tvar editor = this.getEditor();\n\t\tif (editor && editor.$inline && !editor.getPopup){\n\t\t\tvar newnode = this._locateInput(editor);\n\t\t\tif (newnode && newnode != editor.node){\n\t\t\t\tvar text = editor.node.value;\n\t\t\t\teditor.node = newnode;\n\t\t\t\tnewnode.value = text;\n\t\t\t\tnewnode.focus();\n\n\t\t\t\tthis._refocus_try(newnode);\n\t\t\t} else \n\t\t\t\tthis.editStop();\n\t\t}\n\t},\n\teditable_setter:function(value){\n\t\tif (value)\n\t\t\tthis._init_edit_events_once();\n\t\treturn value;\n\t},\n\t_init_edit_events_once:function(){\n\t\t//will close editor on any click outside\n\t\tattachEvent(\"onEditEnd\", bind(function(){\n\t\t\tif (this._in_edit_mode)\n\t\t\t\tthis.editStop();\n\t\t}, this));\n\t\tattachEvent(\"onClick\", bind(function(e){\n\t\t\t//but ignore click which opens editor\n\t\t\tif (this._in_edit_mode && (new Date())-this._edit_open_time > 200){\n\t\t\t\tif (!this._last_editor || this._last_editor.popupType || !e || ( !this._last_editor.node || !this._last_editor.node.contains(e.target || e.srcElement)))\n\t\t\t\t\tthis.editStop();\n\t\t\t}\n\t\t}, this));\n\t\t\n\t\t//property sheet has simple data object, without events\n\t\tif (this.data.attachEvent)\n\t\t\tthis.data.attachEvent(\"onIdChange\", bind(function(oldid, newid){\n\t\t\t\tthis._changeEditorId(oldid, newid);\n\t\t\t}, this));\n\n\t\t//when clicking on row - will start editor\n\t\tthis.attachEvent(\"onItemClick\", function(id){\n\t\t\tif (this._settings.editable && this._settings.editaction == \"click\")\n\t\t\t\tthis.edit(id);\n\t\t});\n\t\tthis.attachEvent(\"onItemDblClick\", function(id){\n\t\t\tif (this._settings.editable && this._settings.editaction == \"dblclick\")\n\t\t\t\tthis.edit(id);\n\t\t});\n\t\t//each time when we clicking on input, reset timer to prevent self-closing\n\t\tthis._reset_active_editor = bind(function(){\n\t\t\tthis._edit_open_time = new Date();\n\t\t},this);\n\n\t\tthis._init_edit_events_once = function(){};\n\n\t\tif (this._component_specific_edit_init)\n\t\t\tthis._component_specific_edit_init();\n\t},\n\t_handle_live_edits:function(){\n\t\tdelay(function(){\n\t\t\tvar editor = this.getEditor();\n\t\t\tif (editor && editor.config.liveEdit){\n\t\t\t\tvar state = { value:editor.getValue(), old: editor.value };\n\t\t\t\tif (state.value == state.old) return;\n\n\t\t\t\teditor.value = state.value;\n\t\t\t\tthis._set_new_value(editor, state.value, false);\n\t\t\t\tthis.callEvent(\"onLiveEdit\", [state, editor]);\n\t\t\t}\n\t\t}, this);\n\t},\n\t_show_editor_form:function(id){\n\t\tvar form = this._settings.form;\n\t\tif (typeof form != \"string\")\n\t\t\tthis._settings.form = form = ui(form).config.id;\n\n\t\tform = $$(form);\n\t\tvar realform = form.setValues?form:form.getChildViews()[0];\n\n\t\t\n\t\trealform.setValues(this.getItem(id.row || id));\n\t\tform.config.master = this.config.id;\n\t\tform.show( this.getItemNode(id) );\n\n\t\tvar first = realform.getChildViews()[0];\n\t\tif (first.focus)\n\t\t\tfirst.focus();\n\t},\n\tedit:function(id, preserve, show){\n\t\tif (!this._settings.editable || !this.callEvent(\"onBeforeEditStart\", [id])) return;\n\t\tif (this._settings.form)\n\t\t\treturn this._show_editor_form(id);\n\n\t\tvar editor = this._get_editor_type(id);\n\t\tif (editor){\n\t\t\tif (this.getEditor(id)) return;\n\t\t\tif (!preserve) this.editStop();\n\n\t\t\t//render html input\n\t\t\tassert(editors[editor], \"Invalid editor type: \"+editor);\n\t\t\tvar type = extend({}, editors[editor]);\n\t\t\t\n\t\t\tvar node = this._init_editor(id, type, show);\n\t\t\tif (type.config.liveEdit)\n\t\t\t\tthis._live_edits_handler = this.attachEvent(\"onKeyPress\", this._handle_live_edits);\n\n\t\t\tvar area = type.getPopup?type.getPopup(node)._viewobj:node;\n\n\t\t\tif (area)\n\t\t\t\t_event(area, \"click\", this._reset_active_editor);\n\t\t\tif (node)\n\t\t\t\t_event(node, \"change\", this._on_editor_change, { bind:{ view:this, id:id }});\n\t\t\tif (show !== false)\n\t\t\t\ttype.focus();\n\n\t\t\tif (this.$fixEditor)\n\t\t\t\tthis.$fixEditor(type);\n\n\t\t\t//save time of creation to prevent instant closing from the same click\n\t\t\tthis._edit_open_time = globalState.edit_open_time = new Date();\n\n\t\t\tUIManager.setFocus(this, true);\n\t\t\tthis.callEvent(\"onAfterEditStart\", [id]);\n\t\t\treturn type;\n\t\t}\n\t\treturn null;\n\t},\n\tgetEditor:function(id){\n\t\tif (!id)\n\t\t\treturn this._last_editor;\n\n\t\treturn this._editors[id];\n\t},\n\t_changeEditorId:function(oldid, newid)\t{\n\t\tvar editor = this._editors[oldid];\n\t\tif (editor){\n\t\t\tthis._editors[newid] = editor;\n\t\t\teditor.id = newid;\n\t\t\tdelete this._editors[oldid];\n\t\t}\n\t},\n\t_on_editor_change:function(){\n\t\tif (this.view.hasEvent(\"onEditorChange\"))\n\t\t\tthis.view.callEvent(\"onEditorChange\", [this.id, this.view.getEditorValue(this.id) ]);\n\t},\n\t_get_edit_config:function(){\n\t\treturn this._settings;\n\t},\n\t_init_editor:function(id, type, show){\n\t\ttype.config = this._get_edit_config(id);\n\t\tvar node = type.render();\n\n\t\tif (type.$inline)\n\t\t\tnode = this._locateInput(id);\n\t\ttype.node = node;\n\n\t\tvar item = this.getItem(id);\n\t\t//value can be configured by editValue option\n\t\tvar value = item[this._settings.editValue||\"value\"];\n\t\t//if property was not defined - use empty value\n\t\tif (isUndefined(value))\n\t\t\tvalue = \"\";\n\n\t\ttype.setValue(value, item);\n\t\ttype.value = value;\n\n\t\tthis._addEditor(id, type);\n\n\t\t//show it over cell\n\t\tif (show !== false)\n\t\t\tthis.showItem(id);\n\t\tif (!type.$inline)\n\t\t\tthis._sizeToCell(id, node, true);\n\n\t\tif (type.afterRender)\n\t\t\ttype.afterRender();\n\n\t\treturn node;\n\t},\n\t_locate_cell:function(id){\n\t\treturn this.getItemNode(id);\n\t},\n\t_locateInput:function(id){\n\t\tvar cell = this._locate_cell(id);\n\t\tif (cell)\n\t\t\tcell = cell.getElementsByTagName(\"input\")[0] || cell;\n\n\t\treturn cell;\n\t},\n\t_get_editor_type:function(){\n\t\treturn this._settings.editor;\n\t},\n\t_addEditor:function(id, type){\n\t\ttype.id = id;\n\t\tthis._editors[id]= this._last_editor = type;\n\t\tthis._in_edit_mode++;\n\t},\n\t_removeEditor:function(editor){\n\t\tif (this._last_editor == editor)\n\t\t\tthis._last_editor = 0;\n\t\t\n\t\tif (editor.destroy)\n\t\t\teditor.destroy();\n\n\t\tdelete editor.popup;\n\t\tdelete editor.node;\n\n\t\tdelete this._editors[editor.id];\n\t\tthis._in_edit_mode--;\n\t},\n\tfocusEditor:function(){\n\t\tvar editor = this.getEditor.apply(this, arguments);\n\t\tif (editor && editor.focus)\n\t\t\teditor.focus();\n\t},\n\teditCancel:function(){\n\t\tthis.editStop(null, null, true);\n\t},\n\t_applyChanges: function(el){\n\t\tif (el){\n\t\t\tvar ed = this.getEditor();\n\t\t\tif (ed && ed.getPopup && ed.getPopup() == el.getTopParentView()) return;\n\t\t}\n\t\tthis.editStop();\n\t},\n\teditStop:function(id){\n\t\tif (this._edit_stop) return;\n\t\tthis._edit_stop = 1;\n\n\n\t\tvar cancel = arguments[2];\n\t\tvar result = 1;\n\t\tif (!id){\n\t\t\tthis._for_each_editor(function(editor){\n\t\t\t\tresult = result * this._editStop(editor, cancel);\n\t\t\t});\n\t\t} else \n\t\t\tresult = this._editStop(this._editors[id], cancel);\n\n\t\tthis._edit_stop = 0;\n\t\treturn result;\n\t},\n\t_cellPosition:function(id){\n\t\tvar html = this.getItemNode(id);\n\t\treturn {\n\t\t\tleft:html.offsetLeft, \n\t\t\ttop:html.offsetTop,\n\t\t\theight:html.offsetHeight,\n\t\t\twidth:html.offsetWidth,\n\t\t\tparent:this._contentobj\n\t\t};\n\t},\n\t_sizeToCell:function(id, node, inline){\n\t\t//fake inputs\n\t\tif (!node.style) return;\n\n\t\tvar pos = this._cellPosition(id);\n\n\t\tnode.style.top = pos.top + \"px\";\n\t\tnode.style.left = pos.left + \"px\";\n\n\t\tnode.style.width = pos.width-1+\"px\";\n\t\tnode.style.height = pos.height-1+\"px\";\n\n\t\tnode.top = pos.top; //later will be used during y-scrolling\n\n\t\tif (inline) pos.parent.appendChild(node);\n\t\treturn pos;\n\t},\n\t_for_each_editor:function(handler){\n\t\tfor (var editor in this._editors)\n\t\t\thandler.call(this, this._editors[editor]);\n\t},\n\t_editStop:function(editor, ignore){\n\t\tif (!editor || globalState._final_destruction) return;\n\t\tvar state = { \n\t\t\tvalue : this._get_new_value(editor), \n\t\t\told : editor.value\n\t\t};\n\t\tif (this.callEvent(\"onBeforeEditStop\", [state, editor, ignore])){\n\t\t\tif (!ignore){\n\t\t\t\t//special case, state.old = 0, state.value = \"\"\n\t\t\t\t//we need to state.old to string, to detect the change\n\t\t\t\tvar old = state.old;\n\t\t\t\tif (typeof state.value == \"string\") old += \"\";\n\n\t\t\t\tif (old != state.value || editor.config.liveEdit){\n\t\t\t\t\tvar item = this._set_new_value(editor, state.value, true);\t\n\t\t\t\t\tthis.updateItem(editor.row || editor.id, item);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (editor.$inline)\n\t\t\t\teditor.node = null;\n\t\t\telse\n\t\t\t\tremove(editor.node);\n\n\t\t\tvar popup = editor.config.suggest;\n\t\t\tif (popup && typeof popup == \"string\")\n\t\t\t\t$$(popup).hide();\n\n\t\t\tthis._removeEditor(editor);\n\t\t\tif (this._live_edits_handler)\n\t\t\t\tthis.detachEvent(this._live_edits_handler);\n\n\t\t\tthis.callEvent(\"onAfterEditStop\", [state, editor, ignore]);\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t},\n\tvalidateEditor:function(id){\n\t\tvar result = true;\n\t\tif (this._settings.rules){\n\t\t\tvar editor = this.getEditor(id);\n\t\t\tvar key = editor.column||this._settings.editValue||\"value\";\n\t\t\tvar rule = this._settings.rules[key];\n\t\t\tvar all = this._settings.rules.$all;\n\n\t\t\tif (rule || all){\n\t\t\t\tvar obj = this.data.getItem(editor.row||editor.id);\n\t\t\t\tvar value = editor.getValue();\n\t\t\t\tvar input = editor.getInputNode();\n\n\t\t\t\tif (rule)\n\t\t\t\t\tresult = rule.call(this, value, obj, key);\n\t\t\t\tif (all)\n\t\t\t\t\tresult = all.call(this, value, obj, key) && result;\n\t\t\t\n\t\t\t\tif (result)\n\t\t\t\t\tremoveCss(input, \"webix_invalid\");\n\t\t\t\telse\n\t\t\t\t\taddCss(input, \"webix_invalid\");\n\n\t\t\t\tcallEvent(\"onLiveValidation\", [editor, result, obj, value]);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t},\n\tgetEditorValue:function(id){\n\t\tvar editor;\n\t\tif (arguments.length === 0)\n\t\t\teditor = this._last_editor;\n\t\telse\n\t\t\teditor = this.getEditor(id);\n\n\t\tif (editor)\n\t\t\treturn editor.getValue();\n\t},\n\tgetEditState:function(){\n\t\treturn this._last_editor || false;\n\t},\n\teditNext:function(next, from){ \n\t\tnext = next !== false; //true by default\n\t\tif (this._in_edit_mode == 1 || from){\n\t\t\t//only if one editor is active\n\t\t\tvar editor_next = this._find_cell_next((this._last_editor || from), function(id){\n\t\t\t\tif (this._get_editor_type(id))\n\t\t\t\t\treturn true;\n\t\t\t\treturn false;\n\t\t\t}, next);\n\n\t\t\tif (this.editStop()){\t//if we was able to close previous editor\n\t\t\t\tif (editor_next){\t//and there is a new target\n\t\t\t\t\tthis.edit(editor_next);\t//init new editor\n\t\t\t\t\tthis._after_edit_next(editor_next);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\t//stab, used in datatable\n\t_after_edit_next:function(){},\n\t_find_cell_next:function(start, check, direction){\n\t\tvar row = this.getIndexById(start.id);\n\t\tvar order = this.data.order;\n\t\t\n\t\tif (direction){\n\t\t\tfor (let i=row+1; i=0; i--){\n\t\t\t\tif (check.call(this, order[i]))\n\t\t\t\t\treturn order[i];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t},\n\t_get_new_value(editor){\n\t\treturn editor.getValue();\n\t},\n\t_set_new_value:function(editor, new_value, copy){\n\t\tvar item = copy ? {} : this.getItem(editor.id);\n\t\titem[this._settings.editValue||\"value\"] = new_value;\n\t\treturn item;\n\t}\n};\n\nexport default EditAbility;","import {debug_size_box_start, debug_size_box_end} from \"../webix/debug\";\n\n\nconst FlexLayout = {\n\t$init:function(){\n\t\tthis.$view.className += \" webix_flexlayout\";\n\t},\n\t_fix_vertical_layout:function(){\n\n\t},\n\t_beforeResetBorders:function(){\n\n\t},\n\t_afterResetBorders:function(){\n\n\t},\n\t$getSize:function(){\n\t\tif (DEBUG) debug_size_box_start(this, true);\n\t\t\n\t\tvar w=0, h=0, g = this._settings.gravity;\n\t\tthis._sizes = [];\n\n\t\tfor (var i=0; i max) max = num;\n\t\t}\n\n\t\treturn max === -Infinity ? 0 : max*1;\n\t},\n\tcount:function(property, data){\n\t\tvar count = 0;\n\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\tvar some = property(data[i]);\n\t\t\tif (some !== null && typeof some !== \"undefined\")\n\t\t\t\tcount++;\n\t\t}\n\t\treturn count;\n\t},\n\tany:function(property, data){\n\t\treturn property(data[0]);\n\t},\n\tstring:function(property){\n\t\treturn property.$name;\n\t}\n};\n\nexport default GroupMethods;","import {_to_array, uid} from \"../webix/helpers\";\nimport {assert} from \"../webix/debug\";\nimport GroupMethods from \"../core/groupmethods\";\n\n\nconst GroupStore = {\n\t$init:function(){\n\t\tthis.attachEvent(\"onClearAll\", () => this._not_grouped_order = null);\n\t\tthis.attachEvent(\"onSyncApply\", () => this._not_grouped_order = null);\n\t},\n\tungroup:function(target){\n\t\tif (this.getBranchIndex){\n\t\t\tif (!this._ungroupLevel(target)) return;\n\t\t} else {\n\t\t\tif (!this._not_grouped_order) return;\n\n\t\t\tthis.order = this._not_grouped_order;\n\t\t\tthis.pull = this._not_grouped_pull;\n\t\t}\n\t\t\n\t\tthis.callEvent(\"onStoreUpdated\",[]);\n\t},\n\t_ungroupLevel(target){\n\t\tconst parent = target || 0;\n\t\tconst level = parent == \"0\" ? 1 : this.getItem(parent).$level + 1;\n\t\tlet changed = false;\n\t\tconst top = this.branch[parent];\n\t\tlet order = [];\n\n\t\tfor (var i=0; i {\n\t\t\t\t\t\tif (!this.pull[a].$footer)\n\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\tthis._unregisterItem(a);\n\t\t\t\t\t});\n\t\t\t\torder = order.concat(this.branch[id] || []);\n\t\t\t\tthis._unregisterItem(id);\n\t\t\t} else\n\t\t\t\torder.push(id);\n\t\t}\n\n\t\tif (!changed) return false;\n\t\tthis.branch[parent] = order;\n\t\tthis._fix_group_levels(this.branch[parent], parent, level);\n\n\t\tif (typeof target === \"undefined\")\n\t\t\tthis._ungroupLevel();\n\n\t\treturn true;\n\t},\n\t_unregisterItem(id){\n\t\tdelete this.pull[id];\n\t\tdelete this.branch[id];\n\t},\n\t_group_processing:function(scheme){\n\t\tthis.blockEvent();\n\t\tthis.group(scheme);\n\t\tthis.unblockEvent();\n\t},\n\t_group_prop_accessor:function(val){\n\t\tif (typeof val == \"function\")\n\t\t\treturn val;\n\t\tconst acc = function(obj){ return obj[val]; };\n\t\tacc.$name = val;\n\t\treturn acc;\n\t},\t\n\tgroup:function(config, target){\n\t\tassert(config, \"Empty config\");\n\t\tlet input;\n\n\t\tif (typeof config === \"string\"){\n\t\t\tinput = config;\n\t\t\tconfig = { by:this._group_prop_accessor(config), map:{} };\n\t\t} else if (typeof config === \"function\"){\n\t\t\tconfig = { by:config, map:{} };\n\t\t} else if (typeof config.by === \"string\"){\n\t\t\tinput = config.by;\n\t\t\tconfig.by = this._group_prop_accessor(config.by);\n\t\t}\n\t\tconfig.map = config.map || {};\n\t\tif (input && !config.map[input])\n\t\t\tconfig.map[input] = [input];\n\t\tconfig.missing = (config.missing === undefined) ? true : config.missing;\n\n\t\tif (this.getBranchIndex)\n\t\t\treturn this._group_tree(config, target);\n\t\t\n\t\tif (!this._not_grouped_order){\n\t\t\tthis._not_grouped_order = this.order;\n\t\t\tthis._not_grouped_pull = this.pull;\n\t\t}\n\n\t\tconst groups = {};\n\t\tconst labels = [];\n\t\tconst missed = [];\n\t\tconst misGroup = config.missing;\n\t\tthis.each(function(data){\n\t\t\tlet current = config.by(data);\n\t\t\tif (!current && current !== 0){\n\t\t\t\tif (misGroup === false) return;\n\t\t\t\tif (misGroup === true){\n\t\t\t\t\tmissed.push(data);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcurrent = misGroup;\n\t\t\t}\n\n\t\t\tif (!groups[current]){\n\t\t\t\tlabels.push({ id:current, value:current, $group:true, $row:config.row });\n\t\t\t\tgroups[current] = _to_array();\n\t\t\t}\n\t\t\tgroups[current].push(data);\n\t\t});\n\n\t\tfor (let i=0; i{\n\t\t\tif(!this.customRadio_setter || this.config.customRadio)\n\t\t\t\t_event( this.$view, \"keydown\", this._moveSelection, {bind:this});\n\t\t});\n\t},\n\t_focus: function(){\n\t\tif(!UIManager.canFocus(this))\n\t\t\treturn false;\n\n\t\tconst input = this._getInputNode();\n\t\tif (input)\n\t\t\tfor (let i=0; i34 && code <41){\n\t\t\tconst inp = this._getInputNode();\n\t\t\tlet index = false;\n\n\t\t\tif (!inp.length) return;\n\t\t\tpreventEvent(e);\n\n\t\t\tconst dir = (code === 37 || code === 38 || code === 35)?-1:1;\n\t\t\tif (code === 35) index = inp.length-1;\n\t\t\telse if (code === 36 ) index = 0;\n\t\t\telse {\n\t\t\t\tfor (let i=0; i= inp.length) i = 0;\n\t\t\t\t\tif (i < 0) i = inp.length-1;\n\n\t\t\t\t\tif (!inp[i].getAttribute(\"webix_disabled\")){\n\t\t\t\t\t\tconst id = inp[i].getAttribute(/*@attr*/\"button_id\");\n\n\t\t\t\t\t\tthis.setValue(id);\n\t\t\t\t\t\tinp[i].focus();\n\t\t\t\t\t\ti = \"success\";\n\t\t\t\t\t}\n\t\t\t\t\telse i += dir;\n\n\t\t\t\t} while(i !== \"success\" && i !== index);\n\t\t\t}\n\t\t}\n\t},\n\t_get_tooltip_data: function(t,e){\n\t\tlet id,\n\t\t\tnode = e.target || e.srcElement;\n\t\twhile (node && !node.webix_tooltip){\n\t\t\tid = node.getAttribute(\"webix_t_id\");\n\t\t\tif (id)\n\t\t\t\treturn this.getOption(id);\n\t\t\tnode = node.parentNode;\n\t\t}\n\t\treturn null;\n\t},\n\toptionIndex: function(id){\n\t\tconst options = this._settings.options;\n\t\tfor (let i=0; i=0; i--)\n\t\t\t\tif (!options[i].hidden)\n\t\t\t\t\treturn this.setValue(options[i].id);\n\t\t}\n\n\t\t//nothing found\t\t\n\t\tthis.setValue(\"\");\n\t},\n\t_getFirstActive(first){\n\t\tconst options = this._settings.options;\n\n\t\tif (options.length){\n\t\t\tfor (let i=0; i\");\n\t\tthis._areas.push({index: userdata, points:coords});\n\n\t},\n\taddSector:function(id,alpha0,alpha1,x,y,R,ky,userdata){\n\t\tvar points = [];\n\t\tpoints.push(x);\n\t\tpoints.push(Math.floor(y*ky)); \n\t\tfor(var i = alpha0; i < alpha1; i+=Math.PI/18){\n\t\t\tpoints.push(Math.floor(x+R*Math.cos(i)));\n\t\t\tpoints.push(Math.floor((y+R*Math.sin(i))*ky));\n\t\t}\n\t\tpoints.push(Math.floor(x+R*Math.cos(alpha1)));\n\t\tpoints.push(Math.floor((y+R*Math.sin(alpha1))*ky));\n\t\tpoints.push(x);\n\t\tpoints.push(Math.floor(y*ky)); \n\t\t\n\t\treturn this.addPoly(id,points,userdata);\n\t},\n\thide:function(obj, data, mode){\n\t\tif (obj.querySelectorAll){\n\t\t\tvar nodes = obj.querySelectorAll(\"area[userdata=\\\"\"+data+\"\\\"]\");\n\t\t\tfor (var i = 0; i < nodes.length; i++){\n\t\t\t\tvar nod = nodes[i];\n\t\t\t\tif (mode){\n\t\t\t\t\tif (nod.getAttribute(\"coords\")){\n\t\t\t\t\t\tnod.coordsdis = nod.getAttribute(\"coords\");\n\t\t\t\t\t\tnod.setAttribute(\"coords\", \"\");\n\t\t\t\t\t\tnod.coords = \"\";\n\t\t\t\t\t}\n\t\t\t\t} else if (!mode){\n\t\t\t\t\tif (nod.coordsdis){\n\t\t\t\t\t\tnod.setAttribute(\"coords\", nod.coordsdis);\n\t\t\t\t\t\tnod.coords = nod.coordsdis;\n\t\t\t\t\t\tnod.coordsdis = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnodes[i].style.display = mode?\"none\":\"\";\n\t\t\t}\n\t\t}\n\t},\n\trender:function(obj){\n\t\tvar d = create(\"DIV\");\n\t\td.style.cssText=\"position:absolute; width:100%; height:100%; top:0px; left:0px;\";\n\t\tobj.appendChild(d);\n\t\tvar src = env.isIE?\"\":\"src='data:image/gif;base64,R0lGODlhEgASAIAAAP///////yH5BAUUAAEALAAAAAASABIAAAIPjI+py+0Po5y02ouz3pwXADs='\";\n\t\td.innerHTML=\"\"+this._map.join(\"\\n\")+\"\";\n\t\t\n\t\tobj._htmlmap = d; //for clearing routine\n\t\t\n\t\tthis._map = [];\n\t}\n});\n\nexport default HtmlMap;","import {bind} from \"../webix/helpers\";\nimport {ui} from \"../ui/core\";\nimport state from \"./state\";\n\nconst IdSpace = {\n\t$init:function(){\n\t\tthis._elements = {};\n\t\tthis._translate_ids = {};\n\t\tthis.getTopParentView = this._get_self = bind(function(){ return this;}, this);\n\n\t\tthis._run_inner_init_logic();\n\t\tthis.$ready.push(this._run_after_inner_init_logic);\n\t},\n\t$$:function(id){\n\t\treturn this._elements[id];\n\t},\n\tinnerId:function(id){\n\t\treturn this._translate_ids[id];\n\t},\n\t_run_inner_init_logic:function(){\n\t\tthis._prev_global_col = state._global_collection;\n\t\tstate._global_collection = this;\n\t},\n\t_run_after_inner_init_logic:function(){\n\t\tfor (var name in this._elements){\n\t\t\tvar input = this._elements[name];\n\t\t\tif (this.callEvent && input.mapEvent && !input._evs_map.onitemclick)\n\t\t\t\tinput.mapEvent({\n\t\t\t\t\tonitemclick:this\n\t\t\t\t});\n\t\t\tinput.getTopParentView = this._get_self;\n\t\t}\n\n\t\tstate._global_collection = this._prev_global_col;\n\t\tthis._prev_global_col = 0;\n\t},\n\t_destroy_child:function(id){\n\t\tdelete this._elements[id];\n\t},\n\tui:function(){\n\t\tthis._run_inner_init_logic();\n\t\tvar temp = ui.apply(this, arguments);\n\t\tthis._run_after_inner_init_logic();\n\t\treturn temp;\n\t}\n};\n\n\nexport default IdSpace;","import {preventEvent} from \"../webix/html\";\nimport UIManager from \"../core/uimanager\";\nimport {$$} from \"../ui/core\";\nimport {assert} from \"../webix/debug\";\n\n\nconst KeysNavigation = {\n\t$init:function(){\n\t\tif(this.getSelectedId)\n\t\t\tthis.attachEvent(\"onAfterRender\", this._set_focusable_item);\n\t\tif(this.moveSelection)\n\t\t\tthis.attachEvent(\"onTabFocus\", this._set_item_focus);\n\t},\n\t_set_item_focus:function(){\n\t\tif(this.getSelectedId){\n\t\t\tvar sel = this.getSelectedId(true);\n\t\t\tif(!sel.length || !this.getItemNode(sel[0]))\n\t\t\t\tthis.moveSelection(\"down\"); //select and show\n\t\t}\n\t},\n\t_set_focusable_item:function(){\n\t\tvar sel = this.getSelectedId(true);\n\t\tif(!sel.length || !this.getItemNode(sel[0])){\n\t\t\tvar node = this._dataobj.querySelector(\"[\"+this._id+\"]\");\n\t\t\tif(node)\n\t\t\t\tnode.setAttribute(\"tabindex\", \"0\");\n\t\t}\n\t},\n\t_navigation_helper:function(mode){\n\t\treturn function(view, e){\n\t\t\tvar tag = (e.srcElement || e.target);\n\n\t\t\t//ignore clipboard listener\n\t\t\tif (!tag.getAttribute(/*@attr*/\"webixignore\")){\n\t\t\t\t//ignore hotkeys if focus in the common input\n\t\t\t\t//to allow normal text edit operations\n\t\t\t\tvar name = tag.tagName;\n\t\t\t\tif (name == \"INPUT\" || name == \"TEXTAREA\" || name == \"SELECT\") return true;\n\t\t\t}\n\n\t\t\tif (view && view.moveSelection && view.config.navigation && !view._in_edit_mode){\n\t\t\t\tpreventEvent(e);\n\t\t\t\treturn view.moveSelection(mode, {shift:e.shiftKey, ctrl:e.ctrlKey});\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t},\n\tmoveSelection:function(mode, details, focus){\n\t\tvar config = this._settings;\n\t\tif(config.disabled) return;\n\t\t//get existing selection\n\t\tvar selected = this.getSelectedId(true);\n\t\tvar x_layout = (this.count && (config.layout ==\"x\" || config.xCount > 1));\n\n\t\tif((mode == \"right\" || mode == \"left\") && this._parent_menu){\n\t\t\tvar parent = $$(this._parent_menu);\n\n\t\t\tparent._hide_sub_menu(true);\n\t\t\tif(parent.config.layout === \"x\")\n\t\t\t\tparent.moveSelection(mode);\n\t\t\telse\n\t\t\t\tUIManager.setFocus(parent);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!selected.length && this.count()){\n\t\t\tif (mode == \"down\" || (mode == \"right\" && x_layout)) mode = \"top\";\n\t\t\telse if (mode == \"up\" || (mode == \"left\" && x_layout)) mode = \"bottom\";\n\t\t\telse return;\n\t\t\tselected = [this.getFirstId()];\n\t\t}\n\n\t\tif (selected.length == 1){ //if we have a selection\n\t\t\tselected = selected[0];\n\t\t\tvar prev = selected;\n\n\t\t\tif (mode == \"left\" && this.close)\n\t\t\t\treturn this.close(selected);\n\t\t\tif (mode == \"right\" && this.open)\n\t\t\t\treturn this.open(selected);\n\n\t\t\telse if (mode == \"top\") {\n\t\t\t\tselected = this.getFirstId();\n\t\t\t} else if (mode == \"bottom\") {\n\t\t\t\tselected = this.getLastId();\n\t\t\t} else if (mode == \"up\" || mode == \"left\" || mode == \"pgup\") {\n\t\t\t\tlet index = this.getIndexById(selected);\n\t\t\t\tlet step = mode == \"pgup\" ? 10 : 1;\n\t\t\t\tselected = this.getIdByIndex(Math.max(0, index-step));\n\t\t\t} else if (mode == \"down\" || mode == \"right\" || mode == \"pgdown\") {\n\t\t\t\tlet index = this.getIndexById(selected);\n\t\t\t\tlet step = mode == \"pgdown\" ? 10 : 1;\n\t\t\t\tselected = this.getIdByIndex(Math.min(this.count()-1, index+step));\n\t\t\t} else {\n\t\t\t\tassert(false, \"Not supported selection moving mode\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst dir = (mode == \"up\" || mode == \"left\" || mode == \"pgdown\" || mode == \"bottom\")?-1:1;\n\t\t\tif(this._skip_item)\n\t\t\t\tselected = this._skip_item(selected, prev, dir);\n\n\t\t\tthis.showItem(selected);\n\t\t\tthis.select(selected);\n\n\t\t\tif(this.getSubMenu && this.getSubMenu(selected))\n\t\t\t\tthis._mouse_move_activation(selected, this.getItemNode(selected));\n\n\t\t\tif(!this.config.clipboard && focus !== false){\n\t\t\t\tvar node = this.getItemNode(selected);\n\t\t\t\tif(node) node.focus();\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tnavigation_setter:function(value){\n\t\t//using global flag to apply hotkey only once\n\t\tif (value && !UIManager._global_nav_grid_hotkeys){\n\t\t\tUIManager._global_nav_grid_hotkeys = true;\n\t\t\t//hotkeys will react on any component but will not work in edit mode\n\t\t\t//you can define moveSelection method to handle navigation keys\n\t\t\tUIManager.addHotKey(\"up\", this._navigation_helper(\"up\"));\n\t\t\tUIManager.addHotKey(\"down\", this._navigation_helper(\"down\"));\n\t\t\tUIManager.addHotKey(\"right\", this._navigation_helper(\"right\"));\n\t\t\tUIManager.addHotKey(\"left\", this._navigation_helper(\"left\"));\n\n\t\t\tUIManager.addHotKey(\"shift+up\", this._navigation_helper(\"up\"));\n\t\t\tUIManager.addHotKey(\"shift+down\", this._navigation_helper(\"down\"));\n\t\t\tUIManager.addHotKey(\"shift+right\", this._navigation_helper(\"right\"));\n\t\t\tUIManager.addHotKey(\"shift+left\", this._navigation_helper(\"left\"));\n\n\t\t\tUIManager.addHotKey(\"ctrl+shift+up\", this._navigation_helper(\"up\"));\n\t\t\tUIManager.addHotKey(\"ctrl+shift+down\", this._navigation_helper(\"down\"));\n\t\t\tUIManager.addHotKey(\"ctrl+shift+right\", this._navigation_helper(\"right\"));\n\t\t\tUIManager.addHotKey(\"ctrl+shift+left\", this._navigation_helper(\"left\"));\n\n\t\t\tUIManager.addHotKey(\"pageup\", \tthis._navigation_helper(\"pgup\"));\n\t\t\tUIManager.addHotKey(\"pagedown\", this._navigation_helper(\"pgdown\"));\n\t\t\tUIManager.addHotKey(\"home\", \t this._navigation_helper(\"top\"));\n\t\t\tUIManager.addHotKey(\"end\", \t\tthis._navigation_helper(\"bottom\"));\n\n\t\t\t\n\n\t\t}\n\n\t\treturn value;\n\t}\n};\n\nexport default KeysNavigation;","import {uid, isArray} from \"../webix/helpers\";\nimport {$$} from \"../ui/core\";\n\nimport i18n from \"../webix/i18n\";\nimport {use} from \"../services\";\n\nimport template from \"../webix/template\";\n\n\n\n/*Data collection mapping logic */\n\nconst MapCollection = {\n\t$init:function(){\n\t\tthis.$ready.push(this._create_scheme_init);\n\t\tthis.attachEvent(\"onStructureUpdate\", this._create_scheme_init);\n\t\tthis.attachEvent(\"onStructureLoad\", function(){\n\t\t\tif(!this._scheme_init_order.length)\n\t\t\t\tthis._create_scheme_init();\n\t\t});\n\t},\n\t_create_scheme_init:function(){\n\t\tvar stack = this._scheme_init_order = [];\n\t\tvar config = this._settings;\n\n\t\tif (config.columns)\n\t\t\tthis._build_data_map(config.columns);\n\t\tif (this._settings.map)\n\t\t\tthis._process_field_map(config.map);\n\n\t\tif (stack.length){\n\t\t\tthis.data._scheme_init = function(obj){\n\t\t\t\tfor (var i=0; i a[target];\n\t\t} else {\n\t\t\tif (source.indexOf(\"#\") === -1 && source.indexOf(\"{\") === -1){\n\t\t\t\tsource = \"#\"+source+\"#\";\n\t\t\t}\n\t\t\tgetSource = template(source);\n\t\t}\n\n\t\tif (map.indexOf(\"(date)\")===0){\n\t\t\tif (extra && !extra.format) extra.format = i18n.dateFormatStr;\n\n\t\t\treturn function(obj){\n\t\t\t\tconst dateStr = (getSource(obj) || \"\").toString();\n\t\t\t\tobj[target] = i18n.parseFormatDate(dateStr);\n\t\t\t};\n\t\t} else if (map.indexOf(\"(number)\")===0){\n\t\t\treturn function(obj){\n\t\t\t\tobj[target] = getSource(obj)*1;\n\t\t\t};\n\t\t} else {\n\t\t\treturn function(obj){\n\t\t\t\tobj[target] = getSource(obj) || \"\";\n\t\t\t};\n\t\t}\n\t},\n\t_build_data_map:function(columns){ //for datatable\n\t\tfor (var i=0; i {\n\t\t\t\t\tif(this.refreshFilter)\n\t\t\t\t\t\tthis.refreshFilter(config.columnId);\n\t\t\t\t});\n\t\t\t\tthis.attachEvent(\"onDestruct\", function(){\n\t\t\t\t\tif (!options.$destructed) options.data.detachEvent(id);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\t_bind_collection:function(options, column){\n\t\tif (column){\n\t\t\tdelete column.options;\n\t\t\tcolumn.collection = options;\n\t\t\tcolumn.template = column.template || this._bind_template(options, column.id, column.optionslist);\n\t\t\tlet id = options.data.attachEvent(\"onStoreUpdated\", () => {\n\t\t\t\tthis.refresh();\n\t\t\t\tif(this.refreshFilter)\n\t\t\t\t\tthis.refreshFilter(column.id);\n\t\t\t});\n\t\t\tthis.attachEvent(\"onDestruct\", function(){\n\t\t\t\tif (!options.$destructed) options.data.detachEvent(id);\n\t\t\t});\n\t\t}\n\t},\n\t_bind_template:function(options, columnId, multi){\n\t\tcolumnId = this.getColumnConfig ? columnId : \"value\";\n\t\tif (multi) {\n\t\t\tlet separator = typeof multi==\"string\" ? multi : \",\";\n\t\t\treturn function(obj){\n\t\t\t\tlet value = obj[columnId];\n\t\t\t\tif (!value) return \"\";\n\n\t\t\t\tlet ids = value.toString().split(separator);\n\t\t\t\tfor (let i = 0; i < ids.length; i++){\n\t\t\t\t\tlet data = options.data.pull[ids[i]];\n\t\t\t\t\tids[i] = data ? (data.value || \"\") : \"\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn ids.join(\", \");\n\t\t\t};\n\t\t} else {\n\t\t\treturn function(obj){\n\t\t\t\tlet data = options.data.pull[ obj[columnId] ];\n\t\t\t\tif (data && (data.value || data.value === 0))\n\t\t\t\t\treturn data.value;\n\t\t\t\treturn \"\";\n\t\t\t};\n\t\t}\n\t}\n};\n\nexport default MapCollection;","import {_getClassName, locate} from \"../webix/html\";\nimport UIManager from \"../core/uimanager\";\nimport {extend, delay, toFunctor} from \"../webix/helpers\";\nimport env from \"../webix/env\";\nimport {_event} from \"../webix/htmlevents\";\n\n\nconst MouseEvents={\n\t$init: function(config){\n\t\tconfig = config || {};\n\n\t\tthis._clickstamp = 0;\n\t\tthis._dbl_sensetive = 300;\n\t\tthis._item_clicked = null;\n\n\t\tthis._mouse_action_extend(config.onClick, \"on_click\");\n\t\tthis._mouse_action_extend(config.onContext, \"on_context\");\n\t\tthis._mouse_action_extend(config.onDblClick, \"on_dblclick\");\n\t\tthis._mouse_action_extend(config.onMouseMove, \"on_mouse_move\");\n\n\t\t//attach dom events if related collection is defined\n\t\tif (this.on_click){\n\t\t\t_event(this._contentobj,\"click\",this._onClick,{bind:this});\n\t\t\tif (env.isIE8 && this.on_dblclick)\n\t\t\t\t_event(this._contentobj, \"dblclick\", this._onDblClick, {bind:this});\n\t\t}\n\t\tif (this.on_context)\n\t\t\t_event(this._contentobj,\"contextmenu\",this._onContext,{bind:this});\n\n\t\tif (this.on_mouse_move)\n\t\t\tthis._enable_mouse_move();\n\t},\n\n\t_enable_mouse_move:function(){\n\t\tif (!this._mouse_move_enabled){\n\t\t\tthis.on_mouse_move = this.on_mouse_move || {};\n\t\t\t_event(this._contentobj,\"mousemove\",this._onMouse,{bind:this});\n\t\t\t_event(this._contentobj,(env.isIE?\"mouseleave\":\"mouseout\"),this._onMouse,{bind:this});\n\t\t\tthis._mouse_move_enabled = 1;\n\t\t\tthis.attachEvent(\"onDestruct\", function(){\n\t\t\t\tif (this._mouse_move_timer)\n\t\t\t\t\twindow.clearTimeout(this._mouse_move_timer);\n\t\t\t});\n\t\t}\n\n\t},\n\n\t_mouse_action_extend:function(config, key){\n\t\tif (config){\n\t\t\tvar now = this[key];\n\t\t\tvar step = now ? extend({}, now) : {};\n\t\t\tthis[key] = extend(step, config);\n\t\t}\n\t},\n\n\t//inner onclick object handler\n\t_onClick: function(e){\n\t\tif(!this.isEnabled())\n\t\t\treturn false;\n\n\t\tUIManager._focus_action(this);\n\t\tif(this.on_dblclick){\n\t\t\t// emulates double click\n\t\t\tvar stamp = (new Date()).valueOf();\n\n\t\t\tif (stamp - this._clickstamp <= this._dbl_sensetive && this.locate){\n\t\t\t\tvar item = this.locate(e);\n\t\t\t\tif (\"\"+item == \"\"+this._item_clicked) {\n\t\t\t\t\tthis._clickstamp = 0;\n\t\t\t\t\treturn this._onDblClick(e);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._clickstamp = stamp;\n\t\t}\n\n\t\tvar result = this._mouseEvent(e,this.on_click,\"ItemClick\");\n\t\treturn result;\n\t},\n\t//inner ondblclick object handler\n\t_onDblClick: function(e) {\n\t\treturn this._mouseEvent(e,this.on_dblclick,\"ItemDblClick\");\n\t},\n\t//process oncontextmenu events\n\t_onContext: function(e) {\n\t\tthis._mouseEvent(e, this.on_context, \"BeforeContextMenu\", \"AfterContextMenu\");\n\t},\n\t/*\n\t\tevent throttler - ignore events which occurs too fast\n\t\tduring mouse moving there are a lot of event firing - we need no so much\n\t\talso, mouseout can fire when moving inside the same html container - we need to ignore such fake calls\n\t*/\n\t_onMouse:function(e){\n\t\tif (this.$destructed) return;\n\t\tif (document.createEventObject)\t//make a copy of event, will be used in timed call\n\t\t\te = document.createEventObject(event);\n\n\t\tif (this._mouse_move_timer)\t//clear old event timer\n\t\t\twindow.clearTimeout(this._mouse_move_timer);\n\n\t\t//this event just inform about moving operation, we don't care about details\n\t\tthis.callEvent(\"onMouseMoving\",[e]);\n\t\t//set new event timer\n\t\tthis._mouse_move_timer = delay(function(e){\n\t\t\t//called only when we have at least 100ms after previous event\n\t\t\tif (e.type == \"mousemove\")\n\t\t\t\tthis._onMouseMove(e);\n\t\t\telse\n\t\t\t\tthis._onMouseOut(e);\n\t\t}, this, [e], (this._settings.mouseEventDelay||500));\n\t},\n\n\t//inner mousemove object handler\n\t_onMouseMove: function(e) {\n\t\tif (!this._mouseEvent(e,this.on_mouse_move,\"MouseMove\"))\n\t\t\tthis._onMouseOut(e);\n\t},\n\t//inner mouseout object handler\n\t_onMouseOut: function(e) {\n\t\tthis.callEvent(\"onMouseOut\",[e||event]);\n\t},\n\t//common logic for click and dbl-click processing\n\t_mouseEvent:function(e,hash,name, pair){\n\t\te=e||event;\n\n\t\tif (e.processed || !this._viewobj) return;\n\t\te.processed = true;\n\n\t\tvar trg=e.target||e.srcElement;\n\n\t\t//IE8 can't modify event object\n\t\t//so we need to stop event bubbling to prevent double processing\n\t\tif (env.isIE8){\n\t\t\tvar vid = this._settings.id;\n\t\t\tvar wid = trg.w_view;\n\n\t\t\tif (!wid) trg.w_view = vid; else if (wid !== vid) return;\n\t\t}\n\n\t\tvar css = \"\";\n\t\tvar id = null;\n\t\tvar found = false;\n\t\t//loop through all parents\n\t\t//we need to check for this._viewobj as some handler can destroy the view\n\t\twhile (trg && trg.parentNode && this._viewobj && trg != this._viewobj.parentNode){\n\t\t\tif (!found && trg.getAttribute){\t\t\t\t\t\t\t\t\t\t\t\t\t//if element with ID mark is not detected yet\n\t\t\t\tid = trg.getAttribute(this._id);\t\t\t\t\t\t\t//check id of current one\n\t\t\t\tif (id){\n\t\t\t\t\t// prevent clicking on disabled items\n\t\t\t\t\tif (trg.getAttribute(\"webix_disabled\")){\n\t\t\t\t\t\tthis._item_clicked = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._item_clicked = id;\n\t\t\t\t\tif (this.callEvent){\n\t\t\t\t\t\t//it will be triggered only for first detected ID, in case of nested elements\n\t\t\t\t\t\tif (!this.callEvent(\"on\"+name,[id,e,trg])) return;\n\t\t\t\t\t\tif (pair) this.callEvent(\"on\"+pair,[id,e,trg]);\n\t\t\t\t\t}\n\t\t\t\t\t//set found flag\n\t\t\t\t\tfound = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcss=_getClassName(trg);\n\t\t\tif (css){\t\t//check if pre-defined reaction for element's css name exists\n\t\t\t\tcss = css.toString().split(\" \");\n\t\t\t\tfor (var i=0; i= this._cells.length || index < 0){\n\t\t\t\tindex = (index < 0?this._cells.length-1:0);\n\t\t\t}\n\t\t\tthis.setActiveIndex(index);\n\t\t}\n\t},\n\t_showPanelBind: function(id){\n\t\tif(this._cells)\n\t\t\t$$(id).show();\n\t},\n\t_renderNavItems:function(){\n\t\tvar item, config;\n\t\tconfig = this._settings.navigation;\n\t\tif(config.items){\n\t\t\tthis._linkAttr = config.linkAttr || /*@attr*/\"bind_id\";\n\n\t\t\tif(!this._navPanel)\n\t\t\t\tthis._renderPanel();\n\t\t\telse\n\t\t\t\tthis._clearPanel();\n\n\t\t\tvar data = (this._cells?this._cells:this.data.order);\n\t\t\tif(data.length>1){\n\t\t\t\tfor (var i=0; i < data.length; i++){\n\n\t\t\t\t\titem = create(\"DIV\",{\n\t\t\t\t\t\t\"class\":\"webix_nav_item webix_nav_\"+(i==this._active_cell?\"active\":\"inactive\"),\n\t\t\t\t\t\t\"role\":\"tab\",\n\t\t\t\t\t\t\"tabindex\":(i==this._active_cell?\"0\":\"-1\")\n\t\t\t\t\t});\n\t\t\t\t\tvar id = this._cells?this._cells[i]._settings.id:data[i];\n\t\t\t\t\tif(id)\n\t\t\t\t\t\titem.setAttribute(this._linkAttr, id);\n\t\t\t\t\tthis._navPanel.appendChild(item);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t_clearPanel:function(){\n\t\tif (this._navPanel){\n\t\t\tvar coll = this._navPanel.childNodes;\n\t\t\tfor (var i = coll.length - 1; i >= 0; i--)\n\t\t\t\tremove(coll[i]);\n\t\t}\n\t},\n\t_renderNavButtons: function(){\n\t\tvar config = this._settings.navigation;\n\t\tif(config.buttons){\n\n\t\t\tif(this._prevNavButton)\n\t\t\t\tremove(this._prevNavButton);\n\t\t\tif(this._prevNavButton)\n\t\t\t\tremove(this._nextNavButton);\n\n\n\t\t\tthis._prevNavButton = create(\n\t\t\t\t\"DIV\",\n\t\t\t\t{\n\t\t\t\t\t\"class\":\"webix_nav_button_\"+config.type+\" webix_nav_button_prev \"\n\t\t\t\t},\n\t\t\t\t\"
\"\n\t\t\t);\n\t\t\tthis._viewobj.appendChild(this._prevNavButton);\n\n\t\t\tthis._nextNavButton = create(\n\t\t\t\t\"DIV\",\n\t\t\t\t{\n\t\t\t\t\t\"class\":\"webix_nav_button_\"+config.type+\" webix_nav_button_next \"\n\t\t\t\t},\n\t\t\t\t\"
\"\n\t\t\t);\n\t\t\tthis._viewobj.appendChild(this._nextNavButton);\n\t\t}\n\t}\n};\n\nexport default NavigationButtons;","import {create, insertBefore, remove} from \"../webix/html\";\n\n\nconst OverlayBox = {\n\tshowOverlay:function(message){\n\t\tif (!this._overlay){\n\t\t\tthis._overlay = create(\"DIV\",{ \"class\":\"webix_overlay\" },(message||\"\"));\n\t\t\tinsertBefore(this._overlay, this._viewobj.firstChild, this._viewobj);\n\t\t\tthis._viewobj.style.position = \"relative\";\n\t\t} else \n\t\t\tthis._overlay.innerHTML = message;\n\t},\n\thideOverlay:function(){\n\t\tif (this._overlay){\n\t\t\tremove(this._overlay);\n\t\t\tthis._overlay = null;\n\t\t}\n\t}\n};\n\nexport default OverlayBox;","import {delay} from \"../webix/helpers\";\nimport {ui, $$} from \"../ui/core\";\n\n\nconst PagingAbility = {\n\tpager_setter:function(pager){\n\t\tif (typeof pager == \"string\"){\n\t\t\tvar ui_pager = $$(pager);\n\t\t\tif (!ui_pager){\n\t\t\t\tthis.$blockRender = true;\n\t\t\t\tdelay(function(){\n\t\t\t\t\tvar obj = $$(pager);\n\n\t\t\t\t\tthis._settings.pager = this.pager_setter(obj);\n\t\t\t\t\tvar s = obj._settings;\n\t\t\t\t\ts.count = this.data._count_pager_total(s.level);\n\t\t\t\t\tobj.refresh();\n\n\t\t\t\t\tthis.$blockRender = false;\n\t\t\t\t\tthis.render();\n\t\t\t\t}, this);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tpager = ui_pager;\n\t\t}\n\n\t\tfunction check_pager_sizes(repeat){\n\t\t\tif (pager.config.autosize && this.getVisibleCount){\n\t\t\t\tvar count = this.getVisibleCount();\n\t\t\t\tif (isNaN(count)){\n\t\t\t\t\tpager.config.size = 1;\n\t\t\t\t\tdelay(check_pager_sizes, this, [true]);\n\t\t\t\t} else if (count != pager.config.size){\n\t\t\t\t\tpager.config.size = count;\n\t\t\t\t\tpager.refresh();\n\t\t\t\t\tif (repeat === true)\n\t\t\t\t\t\tthis.refresh();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar s = this._settings.pager;\n\t\t\t//initial value of pager = -1, waiting for real value\n\t\t\tif (s.page == -1) return false;\t\n\t\t\t\n\t\t\tthis.data.$min = this._count_pager_index(0, s.page*s.size);\t//affect data.getRange\n\t\t\tthis.data.$max = this._count_pager_index(this.data.$min, s.size);\n\t\t\tthis.data.$pagesize = this.data.$max - this.data.$min;\n\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.attachEvent(\"onBeforeRender\",check_pager_sizes);\n\n\t\tif (!pager.$view){\n\t\t\tpager.view = \"pager\";\n\t\t\tpager = ui(pager);\n\t\t}\n\t\tthis._pager = pager;\n\t\tpager.$master = this;\n\n\t\tthis.data.attachEvent(\"onStoreUpdated\", function(){\n\t\t\tvar s = pager._settings;\n\t\t\ts.count = this._count_pager_total(s.level);\n\t\t\tpager.refresh();\n\t\t});\n\t\tthis.data._count_pager_total = this._count_pager_total;\n\n\t\treturn pager._settings;\n\t},\n\t_count_pager_total:function(level){\n\t\tif (level && level !== 0){\n\t\t\tvar count = 0; \n\t\t\tthis.each(function(obj){\n\t\t\t\tif (obj.$level == level) count++;\n\t\t\t});\n\t\t\treturn count;\n\t\t} else\n\t\t\treturn this.count();\n\t},\n\t_count_pager_index:function(start, count){\n\t\tvar s = this._settings.pager;\n\n\t\tif (s.level && s.level !== 0){\n\t\t\tvar end = start;\n\t\t\tvar max = this.data.order.length;\n\n\t\t\tif (count)\n\t\t\t\twhile (end < max){\n\t\t\t\t\tif (this.data.order[end] && this.data.getItem(this.data.order[end]).$level == s.level){\n\t\t\t\t\t\tif (count === 0)\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tcount--;\n\t\t\t\t\t}\n\t\t\t\t\tend++;\n\t\t\t\t}\n\n\t\t\treturn end;\n\t\t} else\n\t\t\treturn start+count;\n\t},\n\tsetPage:function(value){\n\t\tif (this._pager)\n\t\t\tthis._pager.select(value);\n\t},\n\tgetPage:function(){\n\t\treturn this._pager._settings.page;\n\t},\n\tgetPager:function(){\n\t\treturn this._pager;\n\t}\n};\n\nexport default PagingAbility;","import {create, insertBefore, remove} from \"../webix/html\";\nimport Touch from \"../core/touch\";\nimport env from \"../webix/env\";\nimport {isUndefined, extend, delay} from \"../webix/helpers\";\n\n\nconst ProgressBar = {\n\t$init:function(){\n\t\tif (isUndefined(this._progress) && this.attachEvent){\n\t\t\tthis.attachEvent(\"onBeforeLoad\", () => this.showProgress());\n\t\t\tthis.attachEvent(\"onAfterLoad\", () => this.hideProgress());\n\t\t\tthis._progress = null;\n\t\t}\n\t},\n\tshowProgress:function(config){\n\t\t// { position: 0 - 1, delay: 2000ms by default, css : name of css class to use }\n\t\tvar width;\n\t\tif (!this._progress){\n\n\t\t\tconfig = extend({\n\t\t\t\tposition:0,\n\t\t\t\tdelay: 2000,\n\t\t\t\ttype:\"icon\",\n\t\t\t\ticon:\"wxi-sync\",\n\t\t\t\thide:false\n\t\t\t}, (config||{}), true);\n\n\t\t\tvar incss = (config.type == \"icon\") ? (config.icon+\" webix_spin\") : \"\";\n\n\t\t\tthis._progress = create(\n\t\t\t\t\"DIV\",\n\t\t\t\t{\n\t\t\t\t\t\"class\":\"webix_progress_\"+config.type,\n\t\t\t\t\t\"role\":\"progressbar\",\n\t\t\t\t\t\"aria-valuemin\":\"0\",\n\t\t\t\t\t\"aria-valuemax\":\"100\",\n\t\t\t\t\t\"tabindex\":\"0\"\n\t\t\t\t},\n\t\t\t\t\"
\"\n\t\t\t);\n\n\t\t\tif(!this.setPosition)\n\t\t\t\tthis._viewobj.style.position = \"relative\";\n\n\t\t\tinsertBefore(this._progress, this._viewobj.firstChild, this._viewobj);\n\t\t\tthis._viewobj.setAttribute(\"aria-busy\", \"true\");\n\n\t\t\tif(!Touch.$active){\n\t\t\t\tif(this.getScrollState){\n\t\t\t\t\tvar scroll = this.getScrollState();\n\t\t\t\t\tif(this._viewobj.scrollWidth != this.$width){\n\t\t\t\t\t\tthis._progress.style.left = scroll.x +\"px\";\n\t\t\t\t\t}\n\t\t\t\t\tif(this._viewobj.scrollHeight != this.$height){\n\t\t\t\t\t\tif(config.type != \"bottom\"){\n\t\t\t\t\t\t\tthis._progress.style.top = scroll.y +\"px\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._progress.style.top = scroll.y + this.$height - this._progress.offsetHeight +\"px\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._progress_animate = config.type != \"icon\";\n\t\t}\n\n\t\tif (!config) return;\n\n\t\tif (this._progress_animate){\n\t\t\tvar position = config.position || 1;\n\t\t\t//check for css-transition support\n\t\t\tif(this._progress.style[env.transitionDuration] !== undefined || !config.delay){\n\t\t\t\tif (config.delay){\n\t\t\t\t\t// force reflow\n\t\t\t\t\twidth = this._viewobj.firstChild.offsetWidth;\n\t\t\t\t\tthis._progress.firstChild.style[env.transitionDuration] = config.delay+\"ms\";\n\t\t\t\t}\n\n\t\t\t\t// animate to new value\n\t\t\t\tthis._progress.firstChild.style.width = position*100+\"%\";\n\t\t\t} else{\n\t\t\t\t//if animation is not supported fallback to timeouts [IE9]\n\t\t\t\tvar count = 0,\n\t\t\t\t\tstart = 0,\n\t\t\t\t\tstep = position/config.delay*30,\n\t\t\t\t\tview = this;\n\n\t\t\t\tif(this._progressTimer){\n\t\t\t\t\t//reset the existing progress\n\t\t\t\t\twindow.clearInterval(this._progressTimer);\n\t\t\t\t\tstart = this._progress.firstChild.offsetWidth/this._progress.offsetWidth*100;\n\t\t\t\t}\n\t\t\t\tthis._progressTimer = window.setInterval(function(){\n\t\t\t\t\tif(count*30 == config.delay){\n\t\t\t\t\t\twindow.clearInterval(view._progressTimer);\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tif(view._progress && view._progress.firstChild)\n\t\t\t\t\t\t\tview._progress.firstChild.style.width = start+count*step*position*100+\"%\";\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t},30);\n\t\t\t}\n\t\t}\n\n\t\tif (this._progress_hide)\n\t\t\tclearTimeout(this._progress_hide);\n\n\t\tif(config.hide)\n\t\t\tthis._progress_hide = delay(this.hideProgress, this, [1], config.delay);\n\n\t\t// necessary to prevent code optimization\n\t\treturn width;\n\t},\n\thideProgress:function(now){\n\t\tif (this._progress){\n\t\t\tif (now || !this._progress_animate){\n\t\t\t\tif(this._progressTimer)\n\t\t\t\t\twindow.clearInterval(this._progressTimer);\n\t\t\t\tremove(this._progress);\n\t\t\t\tthis._progress = null;\n\t\t\t\tthis._viewobj.removeAttribute(\"aria-busy\");\n\t\t\t} else {\n\t\t\t\tthis.showProgress({ position:1.1, delay:300 , hide:true });\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport default ProgressBar;","import {locate, insertBefore, remove} from \"../webix/html\";\nimport {bind, clone, extend, toFunctor} from \"../webix/helpers\";\nimport {assert} from \"../webix/debug\";\nimport template from \"../webix/template\";\n\nimport type from \"../webix/type\";\n\nconst RenderStack ={\n\t$init:function(){\n\t\tassert(this.data,\"RenderStack :: Component doesn't have DataStore\");\n\t\tassert(template,\"template :: template is not accessible\");\n\n\t\t//used for temporary HTML elements\n\t\t//automatically nulified during destruction\n\t\tthis._html = document.createElement(\"DIV\");\n\t\t\t\t\n\t\tthis.data.attachEvent(\"onIdChange\", bind(this._render_change_id, this));\n\t\tthis.attachEvent(\"onItemClick\", this._call_onclick);\n\t\t\n\t\t//create copy of default type, and set it as active one\n\t\tif (!this.types){ \n\t\t\tthis.types = { \"default\" : this.type };\n\t\t\tthis.type.name = \"default\";\n\t\t}\n\n\t\tthis.type = clone(this.type);\n\t},\n\t\n\tcustomize:function(obj){ \n\t\ttype(this,obj);\n\t},\n\titem_setter:function(value){\n\t\treturn this.type_setter(value);\n\t},\n\ttype_setter:function(value){\n\t\tif(!this.types[value])\n\t\t\tthis.customize(value);\n\t\telse {\n\t\t\tthis.type = clone(this.types[value]);\n\t\t\tif (this.type.css) \n\t\t\t\tthis._contentobj.className+=\" \"+this.type.css;\n\t\t}\n\t\tif (this.type.on_click)\n\t\t\textend(this.on_click, this.type.on_click);\n\n\t\treturn value;\n\t},\n\t\n\ttemplate_setter:function(value){\n\t\tthis.type.template=template(value);\n\t},\n\t//convert single item to HTML text (templating)\n\t_toHTML:function(obj){\n\t\tvar mark = this.data._marks[obj.id];\n\t\t//check if related template exist\n\t\tassert((!obj.$template || this.type[\"template\"+obj.$template]),\"RenderStack :: Unknown template: \"+obj.$template);\n\t\tthis.callEvent(\"onItemRender\",[obj]);\n\t\treturn this.type.templateStart(obj,this.type, mark)+(obj.$template?this.type[\"template\"+obj.$template]:this.type.template)(obj,this.type,mark)+this.type.templateEnd(obj, this.type,mark);\n\t},\n\t//convert item to HTML object (templating)\n\t_toHTMLObject:function(obj){\n\t\tthis._html.innerHTML = this._toHTML(obj);\n\t\treturn this._html.firstChild;\n\t},\n\t_render_change_id:function(old, newid){\n\t\tvar obj = this.getItemNode(old);\n\t\tif (obj) {\n\t\t\tobj.setAttribute(this._id, newid);\n\t\t\tthis._htmlmap[newid] = this._htmlmap[old];\n\t\t\tdelete this._htmlmap[old];\n\t\t}\n\t},\n\t//calls function that is set in onclick property\n\t_call_onclick:function(){\n\t\tif (this._settings.click){\n\t\t\tvar code = toFunctor(this._settings.click, this.$scope);\n\t\t\tif (code && code.call) code.apply(this,arguments);\n\t\t}\n\t},\n\t//return html container by its ID\n\t//can return undefined if container doesn't exists\n\tgetItemNode:function(search_id){\n\t\tif (this._htmlmap)\n\t\t\treturn this._htmlmap[search_id];\n\t\t\t\n\t\t//fill map if it doesn't created yet\n\t\tthis._htmlmap={};\n\t\t\n\t\tvar t = this._dataobj.childNodes;\n\t\tfor (var i=0; i < t.length; i++){\n\t\t\tvar id = t[i].getAttribute(this._id); //get item's\n\t\t\tif (id)\n\t\t\t\tthis._htmlmap[id]=t[i];\n\t\t}\n\t\t//call locator again, when map is filled\n\t\treturn this.getItemNode(search_id);\n\t},\n\t//return id of item from html event\n\tlocate:function(e){ return locate(e,this._id); },\n\t/*change scrolling state of top level container, so related item will be in visible part*/\n\tshowItem:function(id){\n\n\t\tvar html = this.getItemNode(id);\n\t\tif (html&&this.scrollTo){\n\t\t\tvar txmin = html.offsetLeft;\n\t\t\tvar txmax = txmin + html.offsetWidth;\n\t\t\tvar tymin = html.offsetTop;\n\n\t\t\tvar tymax = tymin + html.offsetHeight;\n\t\t\tvar state = this.getScrollState();\n\n\t\t\tvar x = state.x;\n\t\t\tif (x > txmin || x + this._content_width < txmax )\n\t\t\t\tx = txmin;\n\t\t\tvar y = state.y;\n\t\t\tif (y > tymin || y + this._content_height < tymax )\n\t\t\t\ty = tymin;\n\n\t\t\tthis.scrollTo(x,y);\n\t\t\tif(this._setItemActive)\n\t\t\t\tthis._setItemActive(id);\n\t\t}\n\t},\n\t//update view after data update\n\t//method calls low-level rendering for related items\n\t//when called without parameters - all view refreshed\n\trender:function(id,data,type){\n\t\tif (!this.isVisible(this._settings.id) || this.$blockRender)\n\t\t\treturn;\n\t\t\n\t\tif (id){\n\t\t\tvar cont = this.getItemNode(id); //get html element of updated item\n\t\t\tswitch(type){\n\t\t\t\tcase \"paint\":\n\t\t\t\tcase \"update\":\n\t\t\t\t\t//in case of update - replace existing html with updated one\n\t\t\t\t\tif (!cont) return;\n\t\t\t\t\tvar t1 = this._htmlmap[id] = this._toHTMLObject(data);\n\t\t\t\t\tinsertBefore(t1, cont); \n\t\t\t\t\tremove(cont);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"delete\":\n\t\t\t\t\t//in case of delete - remove related html\n\t\t\t\t\tif (!cont) return;\n\t\t\t\t\tremove(cont);\n\t\t\t\t\tdelete this._htmlmap[id];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"add\":\n\t\t\t\t\t//in case of add - put new html at necessary position\n\t\t\t\t\tvar t2 = this._htmlmap[id] = this._toHTMLObject(data);\n\t\t\t\t\tinsertBefore(t2, this.getItemNode(this.data.getNextId(id)), this._dataobj);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"move\":\n\t\t\t\t\t//moving without repainting the item\n\t\t\t\t\tinsertBefore(this.getItemNode(id), this.getItemNode(this.data.getNextId(id)), this._dataobj);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tassert(0, \"Unknown render command: \"+type);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\t//full reset\n\t\t\tif (this.callEvent(\"onBeforeRender\",[this.data])){\n\t\t\t\t//getRange - returns all elements\n\t\t\t\t(this._renderobj||this._dataobj).innerHTML = this.data.getRange().map(this._toHTML,this).join(\"\");\n\t\t\t\tthis._htmlmap = null; //clear map, it will be filled at first getItemNode\n\t\t\t\tthis.callEvent(\"onAfterRender\",[]);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport default RenderStack;","import {create} from \"../webix/html\";\nimport {bind, delay} from \"../webix/helpers\";\nimport env from \"../webix/env\";\nimport {_event} from \"../webix/htmlevents\";\n\nimport Touch from \"../core/touch\";\nimport CustomScroll from \"../core/customscroll\";\n\nconst Scrollable= {\n\t$init:function(config){\n\t\t//do not spam unwanted scroll containers for templates \n\t\tif (config && !config.scroll && this._one_time_scroll) \n\t\t\treturn (this._dataobj = (this._dataobj||this._contentobj));\n\t\t\n\t\t(this._dataobj||this._contentobj).appendChild(create(\"DIV\",{ \"class\" : \"webix_scroll_cont\" },\"\"));\n\t\tthis._dataobj=(this._dataobj||this._contentobj).firstChild;\n\n\t\tif(!env.touch || env.touch === \"native\")\n\t\t\t_event(this._viewobj,\"scroll\", bind(function(){\n\t\t\t\tif(this.callEvent)\n\t\t\t\t\tdelay(function(){\n\t\t\t\t\t\tthis.callEvent(\"onAfterScroll\", []);\n\t\t\t\t\t}, this);\n\t\t\t},this));\n\t},\n\t/*defaults:{\n\t\tscroll:true\n\t},*/\n\tscroll_setter:function(value){\n\t\tif (!value) return false;\n\t\tvar auto = value === \"auto\";\n\t\tvar marker = (value ==\"x\"?\"x\":(value==\"xy\"?\"xy\":(auto?\"xy\":\"y\")));\n\t\tif (Touch.$active && env.touch != \"native\"){\n\t\t\tthis._dataobj.setAttribute(\"touch_scroll\",marker);\n\t\t\tif (this.attachEvent)\n\t\t\t\tthis.attachEvent(\"onAfterRender\", bind(this._refresh_scroll,this));\n\t\t\tthis._touch_scroll = true;\n\t\t} else {\n\t\t\tif (env.$customScroll){\n\t\t\t\tCustomScroll.enable(this, marker);\n\t\t\t} else {\n\t\t\t\tvar node = this._dataobj.parentNode.style;\n\t\t\t\tif (auto){\n\t\t\t\t\tnode.overflowX = node.overflowY = \"auto\";\n\t\t\t\t} else {\n\t\t\t\t\tif (marker.indexOf(\"x\")!=-1){\n\t\t\t\t\t\tthis._scroll_x = true;\n\t\t\t\t\t\tnode.overflowX = \"scroll\";\n\t\t\t\t\t}\n\t\t\t\t\tif (marker.indexOf(\"y\")!=-1){\n\t\t\t\t\t\tthis._scroll_y = true;\n\t\t\t\t\t\tnode.overflowY = \"scroll\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn marker;\n\t},\n\t_onoff_scroll:function(mode, dir){\n\t\tif (!!this._settings.scroll == !!mode) return;\n\n\t\tif (!env.$customScroll){\n\t\t\tvar style = this._dataobj.parentNode.style;\n\t\t\tstyle[dir === \"x\" ? \"overflowX\" : \"overflowY\"] = mode ? \"auto\" : \"hidden\";\n\t\t}\n\n\t\t\n\t\tif (dir === \"x\"){\n\t\t\tthis._scroll_x = mode;\n\t\t} else {\n\t\t\tthis._scroll_y = mode;\n\t\t}\n\t\tthis._settings.scroll = mode?dir:false;\n\t},\n\tgetScrollState:function(){\n\t\tif (Touch.$active){\n\t\t\tvar temp = Touch._get_matrix(this._dataobj);\n\t\t\treturn { x : -temp.e, y : -temp.f };\n\t\t} else\n\t\t\treturn { x : this._dataobj.parentNode.scrollLeft, y : this._dataobj.parentNode.scrollTop };\n\t},\n\tscrollTo:function(x,y){\n\t\tif (Touch.$active && env.touch != \"native\"){\n\t\t\ty = Math.max(0, Math.min(y, this._dataobj.offsetHeight - this._content_height));\n\t\t\tx = Math.max(0, Math.min(x, this._dataobj.offsetWidth - this._content_width));\n\t\t\tTouch._set_matrix(this._dataobj, -x, -y, this._settings.scrollSpeed||\"100ms\");\n\t\t} else {\n\t\t\tthis._dataobj.parentNode.scrollLeft=x;\n\t\t\tthis._dataobj.parentNode.scrollTop=y;\n\t\t}\n\t},\n\t_refresh_scroll:function(){\n\t\tif (this._settings.scroll.toString().indexOf(\"x\")!=-1){\n\t\t\tlet x = this._dataobj.scrollWidth;\n\t\t\tif (x){ //in hidden state we will have a Zero scrollWidth\n\t\t\t\tthis._dataobj.style.width = \"100%\";\n\t\t\t\tthis._dataobj.style.width = this._dataobj.scrollWidth + \"px\";\n\t\t\t}\n\t\t}\n\t\t\t\n\t\tif(Touch.$active && this._touch_scroll){\n\t\t\tTouch._clear_artefacts();\n\t\t\tTouch._scroll_end();\n\t\t\tvar s = this.getScrollState();\n\t\t\tvar dx = this._dataobj.offsetWidth - this.$width - s.x;\n\t\t\tvar dy = this._dataobj.offsetHeight - this.$height - s.y;\n\n\t\t\t//if current scroll is outside of data area\n\t\t\tif(dx<0 || dy < 0){\n\t\t\t\t//scroll to the end of data area\n\t\t\t\tlet x = (dx<0?Math.min(-dx - s.x,0):- s.x);\n\t\t\t\tlet y = (dy<0?Math.min(-dy - s.y,0):- s.y);\n\t\t\t\tTouch._set_matrix(this._dataobj, x, y, 0);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport default Scrollable;","import {addCss, removeCss} from \"../webix/html\";\nimport {_to_array, bind, isArray} from \"../webix/helpers\";\nimport {_event, event} from \"../webix/htmlevents\";\nimport {assert} from \"../webix/debug\";\n\nimport ready from \"../webix/ready\";\nimport state from \"../core/state\";\n\n\n/*\n\tBehavior:SelectionModel - manage selection states\n\t@export\n\t\tselect\n\t\tunselect\n\t\tselectAll\n\t\tunselectAll\n\t\tisSelected\n\t\tgetSelectedId\n*/\nconst SelectionModel ={\n\t$init:function(){\n\t\t//collection of selected IDs\n\t\tthis._selected = _to_array();\n\t\tassert(this.data, \"SelectionModel :: Component doesn't have DataStore\");\n\n\t\t//remove selection from deleted items\n\t\tthis.data.attachEvent(\"onStoreUpdated\",bind(this._data_updated,this));\n\t\tthis.data.attachEvent(\"onStoreLoad\", bind(this._data_loaded,this));\n\t\tthis.data.attachEvent(\"onAfterFilter\", bind(this._data_filtered,this));\n\t\tthis.data.attachEvent(\"onSyncApply\", bind(this._select_check,this));\n\t\tthis.data.attachEvent(\"onIdChange\", bind(this._id_changed,this));\n\t\tthis.$ready.push(this._set_noselect);\n\t},\n\t_set_noselect: function(){\n\t\tif (this._settings.select==\"multiselect\" || this._settings.multiselect || this._settings.select==\"area\")\n\t\t\t_event(this.$view,\"mousedown\", function(e){\n\t\t\t\tvar shiftKey = (e||window.event).shiftKey;\n\t\t\t\tif(shiftKey){\n\t\t\t\t\tstate._noselect_element = this;\n\t\t\t\t\taddCss(this,\"webix_noselect\",1);\n\t\t\t\t}\n\t\t\t});\n\t},\n\t_id_changed:function(oldid, newid){\n\t\tfor (var i = this._selected.length - 1; i >= 0; i--)\n\t\t\tif (this._selected[i]==oldid)\n\t\t\t\tthis._selected[i]=newid;\n\t},\n\t_data_filtered:function(){\n\t\tfor (var i = this._selected.length - 1; i >= 0; i--){\n\t\t\tif (this.data.getIndexById(this._selected[i]) < 0) {\n\t\t\t\tvar id = this._selected[i];\n\t\t\t\tthis.removeCss(id, \"webix_selected\", true);\n\t\t\t\tthis._selected.splice(i,1);\n\t\t\t\tthis.callEvent(\"onSelectChange\",[id]);\n\t\t\t}\n\t\t}\n\t},\n\t//helper - linked to onStoreUpdated\n\t_data_updated:function(id,obj,type){\n\t\tif (type == \"delete\"){\t\t\t\t//remove selection from deleted items\n\t\t\tif (this.loadBranch){\n\t\t\t\t//hierarchy, need to check all\n\t\t\t\tthis._select_check();\n\t\t\t} else\n\t\t\t\tthis._selected.remove(id);\n\t\t}\n\t\telse if (!id && !this.data.count() && !this.data._filter_order){\t//remove selection for clearAll\n\t\t\tthis._selected = _to_array();\n\t\t}\n\t},\n\t_data_loaded:function(){\n\t\tif (this._settings.select)\n\t\t\tthis.data.each(function(obj){\n\t\t\t\tif (obj && obj.$selected) this.select(obj.id);\n\t\t\t}, this);\n\t},\n\t_select_check:function(){\n\t\tfor (var i = this._selected.length - 1; i >= 0; i--)\n\t\t\tif (!this.exists(this._selected[i]))\n\t\t\t\tthis._selected.splice(i,1);\n\t},\n\t//helper - changes state of selection for some item\n\t_select_mark:function(id,state,refresh,need_unselect){\n\t\tvar sname = state ? \"onBeforeSelect\" : \"onBeforeUnSelect\";\n\t\tif (!this.callEvent(sname,[id,state])) return false;\n\n\t\tif (need_unselect){\n\t\t\tthis._silent_selection = true;\n\t\t\tthis.unselectAll();\n\t\t\tthis._silent_selection = false;\n\t\t}\n\t\t\n\t\tif (state)\n\t\t\tthis.addCss(id, \"webix_selected\", true);\n\t\telse\n\t\t\tthis.removeCss(id, \"webix_selected\", true);\n\n\t\tif (refresh)\n\t\t\trefresh.push(id);\t\t\t\t//if we in the mass-select mode - collect all changed IDs\n\t\telse{\n\t\t\tif (state)\n\t\t\t\tthis._selected.push(id);\t\t//then add to list of selected items\n\t\t\telse\n\t\t\t\tthis._selected.remove(id);\n\t\t\tthis._refresh_selection(id);\t//othervise trigger repainting\n\t\t}\n\n\t\tvar ename = state ? \"onAfterSelect\" : \"onAfterUnSelect\";\n\t\tthis.callEvent(ename,[id]);\n\n\t\treturn true;\n\t},\n\t//select some item\n\tselect:function(id,preserve){\n\t\tvar ctrlKey = arguments[2];\n\t\tvar shiftKey = arguments[3];\n\t\t//if id not provide - works as selectAll\n\t\tif (!id) return this.selectAll();\n\n\t\t//allow an array of ids as parameter\n\t\tif (isArray(id)){\n\t\t\tfor (var i=0; i < id.length; i++)\n\t\t\t\tthis.select(id[i], (i?1:preserve), ctrlKey, shiftKey);\n\t\t\treturn;\n\t\t}\n\n\t\tassert(this.data.exists(id), \"Incorrect id in select command: \"+id);\n\t\t\n\t\t//block selection mode\n\t\tif (shiftKey && this._selected.length)\n\t\t\treturn this.selectAll(this._selected[this._selected.length-1],id);\n\n\t\t//single selection mode\n\t\tvar need_unselect = false;\n\t\tif (!ctrlKey && !preserve && (this._selected.length!=1 || this._selected[0]!=id))\n\t\t\tneed_unselect = true;\n\n\t\tif (!need_unselect && this.isSelected(id)){\n\t\t\tif (ctrlKey) this.unselect(id);\t//ctrl-selection of already selected item\n\t\t\treturn;\n\t\t}\n\n\t\tthis._select_mark(id, true, null, need_unselect);\n\t},\n\t//unselect some item\n\tunselect:function(id){\n\t\t//if id is not provided - unselect all items\n\t\tif (!id) return this.unselectAll();\n\t\tif (!this.isSelected(id)) return;\n\t\t\n\t\tthis._select_mark(id,false);\n\t},\n\t//select all items, or all in defined range\n\tselectAll:function(from,to){\n\t\tvar range;\n\t\tvar refresh=[];\n\t\t\n\t\tif (from||to)\n\t\t\trange = this.data.getRange(from||null,to||null);\t//get limited set if bounds defined\n\t\telse\n\t\t\trange = this.data.getRange();\t\t\t//get all items in other case\n\t\t//in case of paging - it will be current page only\n\t\trange.each(function(obj){ \n\t\t\tif (!this.data.getMark(obj.id, \"webix_selected\")){\n\t\t\t\tthis._selected.push(obj.id);\t\n\t\t\t\tthis._select_mark(obj.id,true,refresh);\n\t\t\t}\n\t\t},this);\n\t\t//repaint self\n\t\tthis._refresh_selection(refresh);\n\t},\n\t//remove selection from all items\n\tunselectAll:function(){\n\t\tvar refresh=[];\n\t\t\n\t\tthis._selected.each(function(id){\n\t\t\tthis._select_mark(id,false,refresh);\t//unmark selected only\n\t\t},this);\n\t\t\n\t\tthis._selected=_to_array();\n\t\tthis._refresh_selection(refresh);\t//repaint self\n\t},\n\t//returns true if item is selected\n\tisSelected:function(id){\n\t\treturn this._selected.find(id)!=-1;\n\t},\n\t/*\n\t\treturns ID of selected items or array of IDs\n\t\tto make result predictable - as_array can be used, \n\t\t\twith such flag command will always return an array \n\t\t\tempty array in case when no item was selected\n\t*/\n\tgetSelectedId:function(as_array){\t\n\t\tswitch(this._selected.length){\n\t\t\tcase 0: return as_array?[]:\"\";\n\t\t\tcase 1: return as_array?[this._selected[0]]:this._selected[0];\n\t\t\tdefault: return ([].concat(this._selected)); //isolation\n\t\t}\n\t},\n\tgetSelectedItem:function(as_array){\n\t\tvar sel = this.getSelectedId(true);\n\t\tif (sel.length > 1 || as_array){\n\t\t\tfor (var i = sel.length - 1; i >= 0; i--)\n\t\t\t\tsel[i] = this.getItem(sel[i]);\n\t\t\treturn sel;\n\t\t} else if (sel.length)\n\t\t\treturn this.getItem(sel[0]);\n\t},\n\t//detects which repainting mode need to be used\n\t_is_mass_selection:function(obj){\n\t\t// crappy heuristic, but will do the job\n\t\treturn obj.length>100 || obj.length > this.data.count/2;\n\t},\n\t_refresh_selection:function(refresh){\n\t\tif (typeof refresh != \"object\") refresh = [refresh];\n\t\tif (!refresh.length) return;\t//nothing to repaint\n\t\t\n\t\tif (this._is_mass_selection(refresh))\t\n\t\t\tthis.data.refresh();\t//many items was selected - repaint whole view\n\t\telse\n\t\t\tfor (var i=0; i < refresh.length; i++)\t//repaint only selected\n\t\t\t\tthis.render(refresh[i],this.data.getItem(refresh[i]),\"update\");\n\t\t\t\n\t\tif (!this._silent_selection)\t\n\t\t\tthis.callEvent(\"onSelectChange\",[refresh]);\n\t}\n};\n\nready(function(){\n\tevent(document.body,\"mouseup\", function(){\n\t\tif(state._noselect_element){\n\t\t\tremoveCss(state._noselect_element,\"webix_noselect\");\n\t\t\tstate._noselect_element = null;\n\t\t}\n\t});\n});\n\nexport default SelectionModel;","import {isArray} from \"../webix/helpers\";\n\nconst color = {\n\t_toHex:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"A\",\"B\",\"C\",\"D\",\"E\",\"F\"],\n\ttoHex:function(number, length){\n\t\tnumber=parseInt(number,10);\n\t\tvar str = \"\";\n\t\twhile (number>0){\n\t\t\tstr=this._toHex[number%16]+str;\n\t\t\tnumber=Math.floor(number/16);\n\t\t}\n\t\twhile (str.length 255)\n\t\t\tr = 0;\n\t\tif (g < 0 || g > 255)\n\t\t\tg = 0;\n\t\tif (b < 0 || b > 255)\n\t\t\tb = 0;\n\t\treturn [r,g,b];\n\t},\n\thsvToRgb:function(h, s, v){\n\t\tvar hi,f,p,q,t,r,g,b;\n\t\thi = Math.floor((h/60))%6;\n\t\tf = h/60-hi;\n\t\tp = v*(1-s);\n\t\tq = v*(1-f*s);\n\t\tt = v*(1-(1-f)*s);\n\t\tr = 0;\n\t\tg = 0;\n\t\tb = 0;\n\t\tswitch(hi) {\n\t\t\tcase 0:\n\t\t\t\tr = v; g = t; b = p;\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tr = q; g = v; b = p;\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tr = p; g = v; b = t;\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tr = p; g = q; b = v;\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tr = t; g = p; b = v;\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\tr = v; g = p; b = q;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\tr = Math.floor(r*255);\n\t\tg = Math.floor(g*255);\n\t\tb = Math.floor(b*255);\n\t\treturn [r, g, b];\n\t},\n\trgbToHsv:function(r, g, b){\n\t\tvar r0,g0,b0,min0,max0,s,h,v;\n\t\tr0 = r/255;\n\t\tg0 = g/255;\n\t\tb0 = b/255;\n\t\tmin0 = Math.min(r0, g0, b0);\n\t\tmax0 = Math.max(r0, g0, b0);\n\t\th = 0;\n\t\ts = max0===0?0:(1-min0/max0);\n\t\tv = max0;\n\t\tif (max0 == min0) {\n\t\t\th = 0;\n\t\t} else if (max0 == r0 && g0>=b0) {\n\t\t\th = 60*(g0 - b0)/(max0 - min0)+0;\n\t\t} else if (max0 == r0 && g0 < b0) {\n\t\t\th = 60*(g0 - b0)/(max0 - min0)+360;\n\t\t} else if (max0 == g0) {\n\t\t\th = 60*(b0 - r0)/(max0-min0)+120;\n\t\t} else if (max0 == b0) {\n\t\t\th = 60*(r0 - g0)/(max0 - min0)+240;\n\t\t}\n\t\treturn [h, s, v];\n\t}\n};\n\nexport default color;","import color from \"../../webix/color\";\nimport {assert} from \"../../webix/debug\";\n\n\nfunction joinAttributes(attrs){\n\tvar result = \" \";\n\tif(attrs)\n\t\tfor(var a in attrs)\n\t\t\tresult += a+\"=\\\"\"+attrs[a]+\"\\\" \";\n\treturn result;\n}\n// SVG\nvar SVG = {};\n\nSVG.draw = function(content, width, height, css){\n\tvar attrs = {\n\t\txmlns: \"http://www.w3.org/2000/svg\",\n\t\tversion: \"1.1\",\n\t\theight: \"100%\",\n\t\twidth: \"100%\",\n\t\tviewBox: \"0 0 \"+width+\" \"+height,\n\t\t\"class\": css||\"\"\n\t};\n\treturn \"\"+content+\"\";\n};\nSVG.styleMap = {\n\t\"lineColor\": \"stroke\",\n\t\"color\": \"fill\"\n};\nSVG.group = function(path){\n\treturn \"\"+path+\"\";\n};\nSVG._handlers = {\n\t// MoveTo: {x:px,y:py}\n\t\"M\": function(p){\n\t\treturn \" M \"+ p.x+\" \"+ p.y;\n\t},\n\t// LineTo: {x:px,y:py}\n\t\"L\": function(p){\n\t\treturn \" L \"+ p.x+\" \"+ p.y;\n\t},\n\t// Curve: 3 points {x:px,y:py}: two control points and an end point\n\t\"C\": function(cp0, cp1, p){\n\t\treturn \" C \"+cp0.x + \" \"+cp0.y+\" \"+cp1.x + \" \"+cp1.y+\" \"+p.x + \" \"+p.y;\n\t},\n\t// Arc: center point {x:px,y:py}, radius, angle0, angle1\n\t\"A\": function(p, radius, angle0, angle1){\n\t\tvar x = p.x+Math.cos(angle1)*radius;\n\t\tvar y = p.y+Math.sin(angle1)*radius;\n\t\tvar bigCircle = angle1-angle0 >= Math.PI;\n\t\treturn \" A \"+radius+\" \"+radius+\" 0 \"+(bigCircle?1:0)+\" 1 \"+x+\" \"+y;\n\t}\n};\n// points is an array of an array with two elements: {string} line type, {array}\nSVG.definePath = function(points, close){\n\tvar path = \"\";\n\tfor(var i =0; i < points.length; i++){\n\t\tassert(points[i][0]&&typeof points[i][0] == \"string\", \"Path type must be a string\");\n\t\tvar type = (points[i][0]).toUpperCase();\n\t\tassert(this._handlers[type], \"Incorrect path type\");\n\t\tpath += this._handlers[type].apply(this,points[i].slice(1));\n\n\t}\n\tif(close)\n\t\tpath += \" Z\";\n\n\treturn path;\n};\nSVG._linePoints = function(points){\n\tvar result = [];\n\tfor(var i = 0; i< points.length; i++){\n\t\tresult.push([i?\"L\":\"M\",points[i]]);\n\t}\n\treturn result;\n};\nSVG.setOpacity = function(rawColor,opacity){\n\tlet rgbColor = color.toRgb(rawColor);\n\trgbColor.push(opacity);\n\treturn \"rgba(\"+rgbColor.join(\",\")+\")\";\n};\nSVG._curvePoints = function(points){\n\tvar result = [];\n\tfor(var i = 0; i< points.length; i++){\n\t\tvar p = points[i];\n\t\tif(!i){\n\t\t\tresult.push([\"M\",p[0]]);\n\t\t}\n\t\tresult.push([\"C\",p[1],p[2],p[3]]);\n\t}\n\treturn result;\n};\nSVG.getPath = function(path, css, attrs){\n\tattrs = joinAttributes(attrs);\n\treturn \"\";\n};\nSVG.getSector = function(p, radius, angle0, angle1, css, attrs){\n\tattrs = joinAttributes(attrs);\n\tvar x0 = p.x+Math.cos(angle0)*radius;\n\tvar y0 = p.y+Math.sin(angle0)*radius;\n\tvar lines = [\n\t\t[\"M\",p],\n\t\t[\"L\",{x:x0, y:y0}],\n\t\t[\"A\", p,radius,angle0,angle1],\n\t\t[\"L\",p]\n\t];\n\n\n\treturn \"\";\n};\nSVG.getCurve = function(points,css, attrs){\n\tattrs = joinAttributes(attrs);\n\tvar path = this.definePath(this._curvePoints(points));\n\treturn \"\";\n};\nSVG.getLine = function(p0,p1,css, attrs){\n\treturn this.getPath(this.definePath(this._linePoints([p0,p1]),true),css,attrs);\n};\nSVG.getCircle = function(p, radius, css, attrs){\n\tattrs = joinAttributes(attrs);\n\treturn \"\";\n};\nSVG.getRect = function(x, y, width, height, css, attrs){\n\tattrs = joinAttributes(attrs);\n\treturn \"\";\n};\n\n\nexport default SVG;","import {createCss} from \"../../webix/html\";\nimport {extend, copy} from \"../../webix/helpers\";\n\nimport SVG from \"./svg\";\n\nvar defaults = {\n\tpaddingX: 6,\n\tpaddingY: 6,\n\tradius: 2,\n\tminHeight: 4,\n\teventRadius: 8\n};\nfunction Line(config){\n\tthis.config = extend(copy(defaults),config||{},true);\n}\n\nLine.prototype.draw = function(data, width, height){\n\tvar points = this.getPoints(data, width, height);\n\tvar config = this.config;\n\tvar renderer = SVG;\n\tvar styles = config.color?this._applyColor(renderer,config.color):null;\n\t// draw line\n\tvar path = renderer.definePath(this._getLinePoints(points));\n\tvar graph = renderer.group(renderer.getPath(path,\"webix_sparklines_line\"+(styles?\" \"+styles.line:\"\")));\n\t// draw items\n\tgraph += this._drawItems(renderer, points, config.radius, \"webix_sparklines_item\"+(styles?\" \"+styles.item:\"\"));\n\t// draw event items\n\tvar eventRadius = Math.min(data.length?(width-2*(config.paddingX||0))/data.length:0,config.eventRadius);\n\tgraph += this._drawEventItems(renderer, points, eventRadius);\n\treturn renderer.draw(graph, width, height, \"webix_sparklines_line_chart\"+(config.css?\" \"+config.css:\"\"));\n};\nLine.prototype._applyColor = function(renderer,color){\n\tvar config = {\"line\":{},\"item\":{}},\n\t\tmap = renderer.styleMap;\n\tif(color){\n\t\tconfig.line[map.lineColor] = color;\n\t\tconfig.item[map.color] = color;\n\t\tfor(var name in config)\n\t\t\tconfig[name] = createCss(config[name]);\n\t}\n\treturn config;\n};\nLine.prototype._drawItems = function(renderer,points,radius,css,attrs){\n\tvar items = [];\n\tfor(var i = 0; i< points.length; i++){\n\t\titems.push(renderer.getCircle(points[i], radius, css,attrs));\n\t}\n\treturn renderer.group(items.join(\"\"));\n};\nLine.prototype._drawEventItems = function(renderer,points,radius){\n\tvar items = [];\n\tfor(var i = 0; i< points.length; i++){\n\t\titems.push(renderer.getCircle(points[i], radius, \"webix_sparklines_event_area\", {webix_area:i}));\n\t}\n\treturn renderer.group(items.join(\"\"));\n};\n\nLine.prototype._getLinePoints = function(points){\n\tvar i, type, result =[];\n\tfor( i =0; i< points.length; i++){\n\t\ttype = i?\"L\":\"M\";\n\t\tresult.push([type,points[i]]);\n\t}\n\treturn result;\n};\nLine.prototype.getPoints = function(data, width, height) {\n\tvar config = this.config;\n\tvar minValue = Math.min.apply(null,data);\n\tif (typeof config.origin !== \"undefined\")\n\t\tminValue = Math.min(config.origin, minValue);\n\n\tvar maxValue = Math.max.apply(null,data);\n\tvar result = [];\n\tvar x = config.paddingX||0;\n\tvar y = config.paddingY||0;\n\twidth = (width||100)-x*2;\n\tvar minHeight = config.minHeight||0;\n\theight = (height||100)-y*2;\n\tif(data.length){\n\t\tif(data.length==1)\n\t\t\tresult.push({x: width/2+x, y: height/2+x});\n\t\telse{\n\t\t\tvar unitX = width/(data.length-1);\n\t\t\tvar yNum = config.scale || (maxValue - minValue);\n\t\t\tvar unitY = (height- minHeight)/(yNum?yNum:1);\n\t\t\tif(!yNum)\n\t\t\t\theight /= 2;\n\t\t\tfor(var i=0; i < data.length; i++){\n\t\t\t\tresult.push({x: Math.ceil(unitX*i)+x, y: height-Math.ceil(unitY*(data[i]-minValue))+y-minHeight});\n\t\t\t}\n\t\t}\n\t}\n\treturn result;\n};\n\nexport default Line;","import {createCss} from \"../../webix/html\";\nimport {extend, copy} from \"../../webix/helpers\";\n\nimport SVG from \"./svg\";\nimport BaseLine from \"./line\";\n\n\n\nvar defaults = {\n\tpaddingX: 3,\n\tpaddingY: 4,\n\tradius: 1,\n\tminHeight: 4,\n\teventRadius: 8\n};\n\nfunction Area(config){\n\tthis.config = extend(copy(defaults),config||{},true);\n}\n\nArea.prototype.draw = function(data, width, height){\n\tvar eventRadius, graph, path, points, styles,\n\t\tconfig = this.config,\n\t\tLine = BaseLine.prototype,\n\t\trenderer = SVG;\n\n\t// draw area\n\tpoints = this.getPoints(data, width, height);\n\tpath = renderer.definePath(Line._getLinePoints(points),true);\n\n\tif(config.color)\n\t\tstyles = this._applyColor(renderer,config.color);\n\n\tgraph = renderer.group(renderer.getPath(path,\"webix_sparklines_area\"+(styles?\" \"+styles.area:\"\")));\n\t// draw line\n\tpoints.splice(points.length - 3, 3);\n\tpath = renderer.definePath(Line._getLinePoints(points));\n\tgraph += renderer.group(renderer.getPath(path,\"webix_sparklines_line\"+(styles?\" \"+styles.line:\"\")));\n\t// draw items\n\tgraph += Line._drawItems(renderer, points, config.radius, \"webix_sparklines_item\"+(styles?\" \"+styles.item:\"\"));\n\t// draw event areas\n\teventRadius = Math.min(data.length?(width-2*(config.paddingX||0))/data.length:0,config.eventRadius);\n\tgraph += Line._drawEventItems(renderer, points, eventRadius);\n\treturn renderer.draw(graph, width, height, \"webix_sparklines_area_chart\"+(config.css?\" \"+config.css:\"\"));\n};\nArea.prototype._applyColor = function(renderer,color){\n\tvar config = {\"area\": {}, \"line\":{},\"item\":{}},\n\t\tmap = renderer.styleMap;\n\tif(color){\n\t\tconfig.area[map.color] = renderer.setOpacity(color,0.2);\n\t\tconfig.line[map.lineColor] = color;\n\t\tconfig.item[map.color] = color;\n\t\tfor(var name in config)\n\t\t\tconfig[name] = createCss(config[name]);\n\t}\n\n\treturn config;\n};\nArea.prototype.getPoints = function(data, width, height){\n\tvar Line = BaseLine.prototype;\n\tvar points =Line.getPoints.call(this, data, width, height);\n\tvar x = this.config.paddingX || 0;\n\tvar y = this.config.paddingY || 0;\n\tpoints.push({x: width - x, y: height - y},{x: x, y: height - y},{x: x, y: points[0].y});\n\treturn points;\n};\n\nexport default Area;","import {createCss} from \"../../webix/html\";\nimport {extend, copy} from \"../../webix/helpers\";\n\nimport SVG from \"./svg\";\n\n\nvar defaults = {\n\tpaddingX: 3,\n\tpaddingY: 4,\n\twidth: 20,\n\tmargin: 4,\n\tminHeight: 4,\n\teventRadius: 8,\n\torigin:0,\n\titemCss: function(value){return value < (this.config.origin||0)?\" webix_sparklines_bar_negative\":\"\";}\n};\nfunction Bar(config){\n\tthis.config = extend(copy(defaults),config||{},true);\n}\n\nBar.prototype.draw = function(data, width, height){\n\tvar i, css, p, y, padding,\n\t\tconfig = this.config,\n\t\tgraph = \"\", items = [],\n\t\tpoints = this.getPoints(data, width, height),\n\t\trenderer = SVG;\n\n\t// draw bars\n\tfor( i = 0; i< points.length; i++){\n\t\tcss = (typeof config.itemCss == \"function\"?config.itemCss.call(this,data[i]):(config.itemCss||\"\"));\n\t\tif (config.negativeColor && data[i] < config.origin)\n\t\t\tcss += \" \"+this._applyColor(renderer,config.negativeColor);\n\t\telse if(config.color)\n\t\t\tcss += \" \"+this._applyColor(renderer,config.color);\n\t\tp = points[i];\n\t\titems.push(renderer.getRect(p.x, p.y, p.width, p.height,\"webix_sparklines_bar \"+css));\n\t}\n\tgraph += renderer.group(items.join(\"\"));\n\t// origin)\n\ty = parseInt(this._getOrigin(data, width, height),10)+0.5;\n\tpadding = config.paddingX||0;\n\tgraph += renderer.group(renderer.getLine({x:padding, y: y},{x: width-padding, y: y},\"webix_sparklines_origin\"));\n\n\t// event areas\n\tvar evPoints = this._getEventPoints(data, width, height);\n\tvar evItems = [];\n\tfor( i = 0; i< evPoints.length; i++){\n\t\tp = evPoints[i];\n\t\tevItems.push(renderer.getRect(p.x, p.y, p.width, p.height,\"webix_sparklines_event_area \",{\"webix_area\":i}));\n\t}\n\tgraph += renderer.group(evItems.join(\"\"));\n\treturn renderer.draw(graph, width, height, \"webix_sparklines_bar_chart\"+(config.css?\" \"+config.css:\"\"));\n};\nBar.prototype._applyColor = function(renderer,color){\n\tvar config = {},\n\t\tmap = renderer.styleMap;\n\tif(color)\n\t\tconfig[map.color] = color;\n\treturn createCss(config);\n};\nBar.prototype._getOrigin = function(data, width, height){\n\tvar config = this.config;\n\tvar y = config.paddingY||0;\n\theight = (height||100)-y*2;\n\tvar pos = y+height;\n\tif(config.origin !== false){\n\t\tvar minValue = Math.min.apply(null,data);\n\t\tvar maxValue = Math.max.apply(null,data);\n\t\tvar origin = config.origin||-0.000001;\n\t\tif(origin >= maxValue){\n\t\t\tpos = y;\n\t\t}\n\t\telse if(origin > minValue){\n\t\t\tvar unitY = height/(maxValue - minValue);\n\t\t\tpos -= unitY*(origin-minValue);\n\t\t}\n\t}\n\treturn pos;\n};\nBar.prototype._getEventPoints = function(data, width, height){\n\tvar result = [];\n\tvar x = this.config.paddingX||0;\n\tvar y = this.config.paddingY||0;\n\twidth = (width||100)-x*2;\n\theight = (height||100)-y*2;\n\tif(data.length){\n\t\tvar unitX = width/data.length;\n\t\tfor(var i=0; i < data.length; i++)\n\t\t\tresult.push({x: Math.ceil(unitX*i)+x, y: y, height: height, width: unitX});\n\t}\n\treturn result;\n};\nBar.prototype.getPoints = function(data, width, height){\n\tvar config = this.config;\n\tvar minValue = Math.min.apply(null,data);\n\tif (config.origin < minValue) \n\t\tminValue = config.origin;\n\n\tvar maxValue = Math.max.apply(null,data);\n\tvar result = [];\n\tvar x = config.paddingX;\n\tvar y = config.paddingY;\n\tvar margin = config.margin;\n\tvar barWidth = config.width||20;\n\tvar originY = this._getOrigin(data,width,height);\n\twidth = (width||100)-x*2;\n\theight = (height||100)-y*2;\n\tif(data.length){\n\t\tvar unitX = width/data.length;\n\t\tvar yNum = config.scale || (maxValue - minValue);\n\t\tbarWidth = Math.min(unitX-margin,barWidth);\n\t\tmargin = unitX-barWidth;\n\t\tvar minHeight = 0;\n\t\tvar origin = minValue;\n\n\t\tif(config.origin !== false && config.origin > minValue)\n\t\t\torigin = config.origin||0;\n\t\telse\n\t\t\tminHeight = config.minHeight;\n\n\t\tvar unitY = (height-minHeight)/(yNum?yNum:1);\n\n\t\tfor(var i=0; i < data.length; i++){\n\t\t\tvar h = Math.ceil(unitY*(data[i]-origin));\n\t\t\tresult.push({x: Math.ceil(unitX*i)+x+margin/2, y: originY-(data[i]>=origin?h:0)-minHeight, height: Math.abs(h)+minHeight, width: barWidth});\n\t\t}\n\n\t}\n\treturn result;\n};\n\nexport default Bar;","import {extend} from \"../../webix/helpers\";\n\nimport SVG from \"./svg\";\n\nvar defaults = {\n\tpaddingY: 2\n};\n\nfunction Pie(config){\n\tthis.config = extend(defaults,config||{},true);\n}\nPie.prototype._defColorsCursor = 0;\nPie.prototype._defColors = [\n\t\"#f55b50\",\"#ff6d3f\",\"#ffa521\",\"#ffc927\",\"#ffee54\",\"#d3e153\",\"#9acb61\",\"#63b967\",\n\t\"#21a497\",\"#21c5da\",\"#3ea4f5\",\"#5868bf\",\"#7b53c0\",\"#a943ba\",\"#ec3b77\",\"#9eb0b8\"\n];\nPie.prototype._getColor = function(i,data){\n\tvar count = data.length;\n\tvar colorsCount = this._defColors.length;\n\tif(colorsCount > count){\n\t\tif(i){\n\t\t\tif(i < colorsCount - count)\n\t\t\t\ti = this._defColorsCursor +2;\n\t\t\telse\n\t\t\t\ti = this._defColorsCursor+1;\n\t\t}\n\t\tthis._defColorsCursor = i;\n\t}\n\telse\n\t\ti = i%colorsCount;\n\treturn this._defColors[i];\n};\nPie.prototype.draw = function(data, width, height){\n\tvar attrs, graph, i, sectors,\n\t\tconfig = this.config,\n\t\tcolor = config.color||this._getColor,\n\t\tpoints = this.getAngles(data),\n\t\trenderer = SVG,\n\t\ty = config.paddingY|| 0,\n\t\t// radius\n\t\tr = height/2 - y,\n\t\t// center\n\t\tx0 = width/2, y0 = height/2;\n\n\t// draw sectors\n\tif(typeof color != \"function\")\n\t\tcolor = function(){return color;};\n\tsectors = \"\";\n\tfor( i =0; i < points.length; i++){\n\t\tattrs = {};\n\t\tattrs[renderer.styleMap[\"color\"]] = color.call(this,i,data,this._context);\n\t\tsectors += renderer.getSector({x:x0,y:y0},r,points[i][0],points[i][1],\"webix_sparklines_sector\", attrs);\n\t}\n\tgraph = renderer.group(sectors);\n\n\t// draw event areas\n\tsectors = \"\";\n\tfor(i =0; i < points.length; i++){\n\t\tsectors += renderer.getSector({x:x0,y:y0},r,points[i][0],points[i][1],\"webix_sparklines_event_area\",{\"webix_area\":i});\n\t}\n\tgraph += renderer.group(sectors);\n\n\treturn renderer.draw(graph, width, height, \"webix_sparklines_pie_chart\"+(config.css?\" \"+config.css:\"\"));\n};\nPie.prototype.getAngles = function(data){\n\tvar a0 = -Math.PI/ 2, a1,\n\t\ti, result = [];\n\n\tvar ratios = this._getRatios(data);\n\n\tfor( i =0; i < data.length; i++){\n\t\ta1= -Math.PI/2+ratios[i]-0.0001;\n\t\tresult.push([a0,a1]);\n\t\ta0 = a1;\n\t}\n\treturn result;\n};\nPie.prototype._getTotalValue = function(data){\n\tvar t=0;\n\tfor(var i = 0; i < data.length;i++)\n\t\tt += data[i]*1;\n\treturn t;\n};\nPie.prototype._getRatios = function(data){\n\tvar i, value,\n\t\tratios = [],\n\t\tprevSum = 0,\n\t\ttotalValue = this._getTotalValue(data);\n\tfor(i = 0; i < data.length;i++){\n\t\tvalue = data[i]*1;\n\t\tratios[i] = Math.PI*2*(totalValue?((value+prevSum)/totalValue):(1/data.length));\n\t\tprevSum += value;\n\t}\n\treturn ratios;\n};\n\nexport default Pie;","import {createCss} from \"../../webix/html\";\nimport {extend, copy} from \"../../webix/helpers\";\n\nimport SVG from \"./svg\";\nimport Base from \"./line\";\n\nvar defaults = {\n\tpaddingX: 3,\n\tpaddingY: 6,\n\tradius: 2,\n\tminHeight: 4,\n\teventRadius: 8\n};\n\nfunction Spline(config){\n\tthis.config = extend(copy(defaults),config||{},true);\n}\n\nSpline.prototype.draw = function(data, width, height){\n\tvar config = this.config,\n\t\tgraph = \"\",\n\t\tLine = Base.prototype,\n\t\tpoints = this.getPoints(data, width, height),\n\t\trenderer = SVG,\n\t\tstyles = config.color?this._applyColor(renderer,config.color):null;\n\n\t// draw spline\n\tgraph += renderer.group(renderer.getCurve(points, \"webix_sparklines_line\"+(styles?\" \"+styles.line:\"\")));\n\n\tvar linePoints = Line.getPoints.call(this,data, width, height);\n\t// draw items\n\tgraph += Line._drawItems(renderer, linePoints, config.radius, \"webix_sparklines_item\"+(styles?\" \"+styles.item:\"\"));\n\t// draw event items\n\tvar eventRadius = Math.min(data.length?(width-2*(config.paddingX||0))/data.length:0,config.eventRadius);\n\tgraph += Line._drawEventItems(renderer, linePoints, eventRadius);\n\treturn renderer.draw(graph, width, height,\"webix_sparklines_line_chart\"+(config.css?\" \"+config.css:\"\"));\n};\nSpline.prototype._applyColor = function(renderer,color){\n\tvar config = {\"line\":{},\"item\":{}},\n\t\tmap = renderer.styleMap;\n\tif(color){\n\t\tconfig.line[map.lineColor] = color;\n\t\tconfig.item[map.color] = color;\n\t\tfor(var name in config)\n\t\t\tconfig[name] = createCss(config[name]);\n\t}\n\treturn config;\n};\nSpline.prototype.getPoints = function(data, width, height){\n\tvar i, points, px, py,\n\t\tresult = [], x = [], y =[],\n\t\tLine = Base.prototype;\n\n\tpoints = Line.getPoints.call(this, data, width, height);\n\n\tfor(i = 0; i< points.length; i++){\n\t\tx.push(points[i].x);\n\t\ty.push(points[i].y);\n\t}\n\tpx = this._getControlPoints(x);\n\tpy = this._getControlPoints(y);\n\t/*updates path settings, the browser will draw the new spline*/\n\tfor ( i=0;i= 0; --i)\n\t\tp1[i] = (r[i] - c[i] * p1[i+1]) / b[i];\n\n\tfor (i=0;i= 0; i--) {\n\t\tvar value = data[i];\n\t\tvalues[i] = (typeof value === \"object\" ? value.value : value);\n\t}\n\treturn values;\n}\n\n\nSparklines.types ={};\n\nSparklines.getTemplate = function(customConfig){\n\tvar config = customConfig||{};\n\tif(typeof customConfig == \"string\")\n\t\tconfig = { type: customConfig };\n\n\textend(config,{ type:\"line\" });\n\n\tvar slConstructor = this.types[config.type];\n\tassert(slConstructor,\"Unknown sparkline type\");\n\treturn bind(this._template, new slConstructor(config));\n};\n\nSparklines._template = function(item, common, data, column){\n\tif (column)\n\t\treturn this.draw(getData(data), column.width, 33);\n\telse\n\t\treturn this.draw(item.data || item, common.width, common.height);\n};\n\n// add \"sparklines\" type\nattachEvent(\"onDataTable\", function(table){\n\ttable.type.sparklines = Sparklines.getTemplate();\n});\n\nSparklines.types[\"area\"]=Area;\nSparklines.types[\"bar\"]=Bar;\nSparklines.types[\"line\"]=Line;\nSparklines.types[\"pie\"]=Pie;\nSparklines.types[\"spline\"]=Spline;\nSparklines.types[\"splineArea\"]=SplineArea;\n\nexport default Sparklines;","import i18n from \"./i18n\";\n\nconst csv = {\n\tescape:true,\n\tdelimiter:{\n\t\trows: \"\\n\",\n\t\tcols: \"\\t\"\n\t},\n\tparse:function(text, sep){\n\t\tsep = sep||this.delimiter;\n\t\tif (!this.escape)\n\t\t\treturn this._split_clip_data(text, sep);\n\n\t\tvar lines = text.replace(/\\n$/,\"\").split(sep.rows);\n\n\t\tvar i = 0;\n\t\twhile (i < lines.length - 1) {\n\t\t\tif (this._substr_count(lines[i], \"\\\"\") % 2 === 1) {\n\t\t\t\tlines[i] += sep.rows + lines[i + 1];\n\t\t\t\tdelete lines[i + 1];\n\t\t\t\ti++;\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\tvar csv = [];\n\n\t\tfor (i = 0; i < lines.length; i++) {\n\t\t\tif (typeof(lines[i]) !== \"undefined\") {\n\t\t\t\tvar tline = lines[i];\n\t\t\t\tvar start = 0;\n\t\t\t\tvar line = [];\n\t\t\t\tvar quoted = false;\n\t\t\t\tfor (var j=0; j<=tline.length; j++){\n\t\t\t\t\tif (!quoted && tline[j] === sep.cols || j === tline.length){\n\t\t\t\t\t\tvar chunk = tline.substr(start, j-start);\n\t\t\t\t\t\tif (chunk[0] === chunk[chunk.length-1] && chunk[0] === \"\\\"\"){\n\t\t\t\t\t\t\tchunk = chunk.substr(1, chunk.length-2).replace(\"\\\"\\\"\", \"\\\"\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tline.push(chunk);\n\t\t\t\t\t\tstart = j+1;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (tline[j] === \"\\\"\") {\n\t\t\t\t\t\tquoted = !quoted;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcsv.push(line);\n\t\t\t}\n\t\t}\n\t\treturn csv;\n\t},\n\t_split_clip_data: function(text, sep) {\n\t\tvar lines = text.split(sep.rows);\n\t\tfor (var i = 0; i < lines.length; i++) {\n\t\t\tlines[i] = lines[i].split(sep.cols);\n\t\t}\n\t\treturn lines;\n\t},\n\t/*! counts how many occurances substring in string **/\n\t_substr_count: function(string, substring) {\n\t\tvar arr = string.split(substring);\n\t\treturn arr.length - 1;\n\t},\n\tstringify:function(data, sep){\n\t\tsep = sep||this.delimiter;\n\n\t\tif (!this.escape){\n\t\t\tfor (let i = 0; i < data.length; i++)\n\t\t\t\tdata[i] = data[i].join(sep.cols);\n\t\t\treturn data.join(sep.rows);\n\t\t}\n\n\t\tvar reg = /\\n|\"|;|,/;\n\t\tfor (let i = 0; i < data.length; i++) {\n\t\t\tfor (var j = 0; j < data[i].length; j++) {\n\t\t\t\tvar chunk = data[i][j];\n\t\t\t\tif (chunk instanceof Date)\n\t\t\t\t\tdata[i][j] = i18n.parseFormatStr(chunk);\n\t\t\t\telse if (reg.test(chunk))\n\t\t\t\t\tdata[i][j] = \"\\\"\" + chunk.toString().replace(/\"/g, \"\\\"\\\"\") + \"\\\"\";\n\t\t\t}\n\t\t\tdata[i] = data[i].join(sep.cols);\n\t\t}\n\t\tdata = data.join(sep.rows);\n\t\treturn data;\n\t}\n};\n\nexport default csv;","import template from \"../webix/template\";\nimport UIManager from \"../core/uimanager\";\n\nimport clipbuffer from \"../webix/clipbuffer\";\nimport csv from \"../webix/csv\";\n\nimport {isUndefined} from \"../webix/helpers\";\n\n\nconst TablePaste = {\n\tclipboard_setter:function(value){\n\t\tif (value === true || value === 1) value = \"block\";\n\t\tclipbuffer.init();\n\t\tthis.attachEvent(\"onSelectChange\",this._sel_to_clip);\n\t\t// solution for clicks on selected items\n\t\tthis.attachEvent(\"onItemClick\",function(){\n\t\t\tif(document.activeElement && this.$view.contains(document.activeElement)){\n\t\t\t\tclipbuffer.focus();\n\t\t\t\tUIManager.setFocus(this);\n\t\t\t}\n\t\t});\n\t\tthis.attachEvent(\"onPaste\", this._clip_to_sel);\n\n\t\treturn value;\n\t},\n\ttemplateCopy_setter: template,\n\t_sel_to_clip: function() {\n\t\tvar data = this._get_sel_text();\n\t\tclipbuffer.set(data);\n\t\tUIManager.setFocus(this);\n\t},\n\n\t_get_sel_text: function() {\n\t\tvar data = [];\n\t\tvar filter = this._settings.templateCopy;\n\t\tthis.mapSelection(function(value, row, col, row_ind) {\n\t\t\tif (!data[row_ind]) data[row_ind] = [];\n\t\t\tvar newvalue = filter ? filter(value, row, col) : value;\n\t\t\tdata[row_ind].push(newvalue);\n\t\t\treturn value;\n\t\t});\n\t\tvar value = data.length === 1 && data[0].length === 1 ? data[0][0] : csv.stringify(data, this._settings.delimiter);\n\t\treturn value;\n\t},\n\n\t_clip_to_sel: function(text) {\n\t\tif (!isUndefined(this._paste[this._settings.clipboard])) {\n\t\t\tvar data = csv.parse(text, this._settings.delimiter);\n\t\t\tthis._paste[this._settings.clipboard].call(this, data);\n\t\t}\n\t},\n\n\t_paste: {\n\t\tblock: function(data) {\n\t\t\tvar leftTop = this.mapSelection(null);\n\t\t\tif (!leftTop) return;\n\n\t\t\t// filling cells with data\n\t\t\tthis.mapCells(leftTop.row, leftTop.column, data.length, null, function(value, row, col, row_ind, col_ind) {\n\t\t\t\tif (data[row_ind] && data[row_ind].length>col_ind) {\n\t\t\t\t\treturn data[row_ind][col_ind];\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t});\n\t\t\tthis.render();\n\t\t},\n\n\t\tselection: function(data) {\n\t\t\tthis.mapSelection(function(value, row, col, row_ind, col_ind) {\n\t\t\t\tif (data[row_ind] && data[row_ind].length>col_ind)\n\t\t\t\t\treturn data[row_ind][col_ind];\n\t\t\t\treturn value;\n\t\t\t});\n\t\t\tthis.render();\n\t\t},\n\n\t\trepeat: function(data) {\n\t\t\tthis.mapSelection(function(value, row, col, row_ind, col_ind) {\n\t\t\t\trow = data[row_ind%data.length];\n\t\t\t\tvalue = row[col_ind%row.length];\n\t\t\t\treturn value;\n\t\t\t});\n\t\t\tthis.render();\n\t\t},\n\n\t\tcustom: function() {}\n\t}\n};\n\nexport default TablePaste;","import {assert} from \"../webix/debug\";\n\n\nconst TreeAPI = {\n\topen: function(id, show) {\n\t\tif (!id) return;\n\t\t//ignore open for leaf items\n\t\tvar item = this.getItem(id);\n\t\tassert(item,\"Incorrect ID to open: \"+id);\n\n\t\tif (!item.$count || item.open) return;\n\n\t\tif (this.callEvent(\"onBeforeOpen\",[id])){\n\t\t\titem.open=true;\n\t\t\tthis.data.callEvent(\"onStoreUpdated\",[id, 0, \"branch\"]);\n\t\t\tthis.callEvent(\"onAfterOpen\",[id]);\n\t\t}\n\n\t\tif (show && id != \"0\")\n\t\t\tthis.open(this.getParentId(id), show);\n\t},\n\tclose: function(id) {\n\t\tif (!id) return;\n\t\tvar item = this.getItem(id);\n\t\tif (!item.open) return;\n\n\t\tif (this.callEvent(\"onBeforeClose\",[id])){\n\t\t\titem.open=false;\n\t\t\tthis.data.callEvent(\"onStoreUpdated\",[id, 0, \"branch\"]);\n\t\t\tthis.callEvent(\"onAfterClose\",[id]);\n\t\t}\n\t},\n\topenAll: function(id){\n\t\tthis.data.eachSubItem((id||0), function(obj, branch){\n\t\t\tif (branch)\n\t\t\t\tobj.open = true;\n\t\t});\n\t\tthis.data.refresh();\n\t},\n\tcloseAll: function(id){\n\t\tthis.data.eachSubItem((id||0), function(obj, branch){\n\t\t\tif (branch)\n\t\t\t\tobj.open = false;\n\t\t});\n\t\tthis.data.refresh();\n\t},\n\t_tree_check_uncheck:function(id,mode,e){\n\t\tif(this._settings.threeState)\n\t\t\treturn this._tree_check_uncheck_3(id,(mode !== null?mode:\"\"));\n\n\t\tvar value,\n\t\t\titem = this.getItem(id),\n\t\t\ttrg = (e? (e.target|| e.srcElement):null);\n\n\t\t//read actual value from HTML tag when possible\n\t\t//as it can be affected by dbl-clicks\n\t\tif(trg && trg.type == \"checkbox\")\n\t\t\tvalue = trg.checked?true:false;\n\t\telse\n\t\t\tvalue = (mode !== null?mode:!item.checked);\n\n\t\titem.checked = value;\n\t\tthis.callEvent(\"onItemCheck\", [id, item.checked, e]);\n\t},\n\tisBranchOpen:function(search_id){\n\t\tif (search_id == \"0\") return true;\n\n\t\tvar item = this.getItem(search_id);\n\t\tif (item.open)\n\t\t\treturn this.isBranchOpen(item.$parent);\n\t\treturn false;\n\t},\n\tgetOpenItems: function() {\n\t\tvar open = [];\n\t\tfor (var id in this.data.branch) {\n\t\t\tif (this.exists(id) && this.getItem(id).open)\n\t\t\t\topen.push(id);\n\t\t}\n\t\treturn open;\n\t},\n\tgetState: function(){\n\t\treturn {\n\t\t\topen: this.getOpenItems(),\n\t\t\tselect: this.getSelectedId(true)\n\t\t};\n\t},\n\t_repeat_set_state:function(tree, open){\n\t\tvar event = this.data.attachEvent(\"onStoreLoad\", function(){\n\t\t\ttree.setState.call(tree,open);\n\t\t\ttree.data.detachEvent(event);\n\t\t\ttree = null;\n\t\t});\n\t},\n\tsetState: function(state){\n\t\tif (state.open){\n\t\t\tthis.closeAll();\t\n\t\t\tvar open = state.open;\n\t\t\tfor (let i = 0; i < open.length; i++){\n\t\t\t\tvar item = this.getItem(open[i]);\n\t\t\t\tif (item && item.$count){\n\t\t\t\t\titem.open=true;\n\t\t\t\t\t//dynamic loading\n\t\t\t\t\tif (item.$count == -1){\n\t\t\t\t\t\t//call the same method after data loading\n\t\t\t\t\t\tthis._repeat_set_state(this, state);\n\t\t\t\t\t\tthis.refresh();\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t//end processing\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.refresh();\n\t\t}\n\n\n\t\tif (state.select && this.select){\t\t\t\n\t\t\tvar select = state.select;\n\t\t\tthis.unselect();\n\t\t\tfor (let i = 0; i < select.length; i++)\n\t\t\t\tif (this.exists(select[i]))\n\t\t\t\t\tthis.select(select[i], true);\n\t\t}\n\n\t\treturn 1;\n\t}\n};\n\nexport default TreeAPI;","\n\nconst TreeClick = {\n\twebix_tree_open:function(e, id){\n\t\tthis.close(id);\n\t\treturn false;\n\t},\n\twebix_tree_close:function(e, id){\n\t\tthis.open(id);\n\t\treturn false;\n\t},\n\twebix_tree_checkbox:function(e,id){\n\t\tthis._tree_check_uncheck(id, null, e);\n\t\treturn false;\n\t}\n};\n\nexport default TreeClick;","import {bind} from \"../webix/helpers\";\nimport DataLoader from \"../core/dataloader\";\nimport promise from \"../thirdparty/promiz\";\n\n\nconst TreeDataLoader = {\n\t$init:function(){\n\t\tthis.data.attachEvent(\"onStoreUpdated\", bind(this._sync_hierarchy, this), null, true);\n\t\t//redefine methods\n\t\tthis._feed_common = this._feed_commonA;\n\t},\n\t_feed_commonA:function(id, count, callback, url){\n\t\t// branch loading\n\t\tvar details = (count === 0?{parent: encodeURIComponent(id)}:null);\n\n\t\treturn DataLoader.prototype._feed_common.call(this,id, count, callback, url, details);\n\t},\n\t//load next set of data rows\n\tloadBranch:function(id, callback, url){\n\t\tid = id ||0;\n\t\tthis.data.url = url || this.data.url;\n\t\tif (this.callEvent(\"onDataRequest\", [id,callback,this.data.url]) && this.data.url)\n\t\t\treturn this.data.feed.call(this, id, 0, callback, url);\n\t\treturn promise.reject();\n\t},\n\t_sync_hierarchy:function(id, data, mode){\n\t\tif (!mode || mode == \"add\" || mode == \"delete\" || mode == \"branch\"){\n\t\t\tthis.data._sync_to_order(this);\n\t\t}\n\t}\n};\n\nexport default TreeDataLoader;","import {isArray, copy as makeCopy, uid, _power_array} from \"../webix/helpers\";\nimport {assert} from \"../webix/debug\";\nimport DataMove from \"../core/datamove\";\nimport DragControl from \"../core/dragcontrol\";\n\n\n/*\n\tBehavior:DataMove - allows to move and copy elements, heavily relays on DataStore.move\n\t@export\n\t\tcopy\n\t\tmove\n*/\nconst TreeDataMove ={\n\t$init:function(){\n\t\tassert(this.data, \"DataMove :: Component doesn't have DataStore\");\n\t},\n\t//creates a copy of the item\n\tcopy:function(sid,tindex,tobj,details){\n\t\tdetails = details || {};\n\t\tdetails.copy = true;\n\t\treturn this.move(sid, tindex, tobj, details);\n\t},\n\t_next_move_index:function(nid, next, source){\n\t\tif (next && nid){\n\t\t\tvar new_index = this.getBranchIndex(nid);\n\t\t\t// check parent only when moving locally (source == this)\n\t\t\treturn new_index + ((source == this && this.getParentId(nid) == this.getParentId(next)\n\t\t\t\t&& source.getBranchIndex(next) < new_index) ? 0 : 1);\n\t\t}\n\t},\n\t_check_branch_child:function(parent, child){\n\t\tvar t = this.data.branch[parent];\n\t\tif (t && t.length){\n\t\t\tfor (var i=0; i < t.length; i++) {\n\t\t\t\tif (t[i] == child) return true;\n\t\t\t\tif (this._check_branch_child(t[i], child)) return true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\t_remove_childs(ids){\n\t\tfor(var i = 0; i < ids.length; i++){\n\t\t\tvar id = ids[i];\n\t\t\twhile(this.getParentId(id)){\n\t\t\t\tid = this.getParentId(id);\n\t\t\t\tif(_power_array.find.call(ids, id) != -1){\n\t\t\t\t\tids.splice(i,1);\n\t\t\t\t\ti--;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn ids;\n\t},\n\t//move item to the new position\n\tmove:function(sid,tindex,tobj, details){\n\t\tdetails = details || {};\n\t\ttindex = tindex || 0;\n\t\tvar new_id = details.newId || sid;\n\t\tvar target_parent = details.parent || 0;\n\t\t\n\t\ttobj = tobj||this;\n\t\tassert(tobj.data, \"moving attempt to component without datastore\");\n\t\tif (!tobj.data) return;\n\n\t\tif (isArray(sid)){\n\t\t\tthis._remove_childs(sid);\n\t\t\tfor (var i=0; i < sid.length; i++) {\n\t\t\t\t//increase index for each next item in the set, so order of insertion will be equal to order in the array\n\t\t\t\tvar nid = this.move(sid[i], tindex, tobj, details);\n\t\t\t\ttindex = tobj._next_move_index(nid, sid[i+1], this);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (this != tobj || details.copy){\n\t\t\tnew_id = tobj.data.add(tobj._externalData(this.getItem(sid),new_id), tindex, (target_parent || 0));\n\t\t\tif (this.data.branch[sid] && tobj.getBranchIndex){\n\t\t\t\tvar temp = this.data._scheme_serialize;\n\t\t\t\tthis.data._scheme_serialize = function(obj){\n\t\t\t\t\tvar copy = makeCopy(obj);\n\t\t\t\t\tdelete copy.$parent; delete copy.$level; delete copy.$child;\n\t\t\t\t\tif (tobj.data.pull[copy.id])\n\t\t\t\t\t\tcopy.id = uid();\n\t\t\t\t\treturn copy;\n\t\t\t\t};\n\t\t\t\tvar copy_data = { data:this.serialize(sid, true), parent:new_id };\n\t\t\t\tthis.data._scheme_serialize = temp;\n\t\t\t\ttobj.parse(copy_data);\n\t\t\t}\n\t\t\tif (!details.copy)\n\t\t\t\tthis.data.remove(sid);\n\t\t} else {\n\t\t\t//move in self\n\t\t\tif (sid == target_parent || this._check_branch_child(sid,target_parent)) return;\n\n\t\t\tvar source = this.getItem(sid);\n\t\t\tvar tbranch = this.data.branch[target_parent];\n\t\t\tif (!tbranch) \n\t\t\t\ttbranch = this.data.branch[target_parent] = [];\n\t\t\tvar sbranch = this.data.branch[source.$parent];\n\n\t\t\tvar sindex = _power_array.find.call(sbranch, sid);\n\t\t\tif (tindex < 0) tindex = tbranch.length;\n\t\t\t//in the same branch\n\t\t\tif (sbranch === tbranch && tindex === sindex) return; //same position\n\n\t\t\t_power_array.removeAt.call(sbranch, sindex);\n\t\t\t_power_array.insertAt.call(tbranch, sid, Math.min(tbranch.length, tindex));\n\n\t\t\tif (!sbranch.length)\n\t\t\t\tdelete this.data.branch[source.$parent];\n\t\t\t\n\n\t\t\tif(source.$parent && source.$parent != \"0\")\n\t\t\t\tthis.getItem(source.$parent).$count--;\n\n\t\t\tif (target_parent && target_parent != \"0\"){\n\t\t\t\tvar target = tobj.getItem(target_parent);\n\t\t\t\ttarget.$count++;\n\t\t\t\tthis._set_level_rec(source, target.$level+1);\n\t\t\t} else \n\t\t\t\tthis._set_level_rec(source, 1);\n\n\t\t\tsource.$parent = target_parent;\n\t\t\ttobj.data.callEvent(\"onDataMove\", [sid, tindex, target_parent, tbranch[tindex+1]]);\n\t\t}\n\n\t\tthis.refresh();\n\t\treturn new_id;\t//return ID of item after moving\n\t},\n\t_set_level_rec:function(item, value){\n\t\titem.$level = value;\n\t\tvar branch = this.data.branch[item.id];\n\t\tif (branch)\n\t\t\tfor (var i=0; i\"+this._toHTMLItem(obj);\n\n\t\tif (obj.open)\n\t\t\thtml+=this._toHTMLLevel(obj.id);\n\n\t\thtml+=\"\";\n\n\t\treturn html;\n\t},\n\t_toHTMLLevel:function(id){\n\t\tvar html = \"\";\n\t\tvar leaves = this.data.branch[id];\n\t\tif (leaves){\n\t\t\thtml+=\"\";\n\t\t}\n\t\treturn html;\n\t},\n\t//return true when some actual rendering done\n\trender:function(id,data,type){\n\t\tTreeRenderStack._obj = this;\t//can be used from complex render\n\n\t\tif (!this.isVisible(this._settings.id) || this.$blockRender)\n\t\t\treturn;\n\n\t\tif (id){\n\t\t\tvar cont, node;\n\t\t\tvar item = this.getItem(id);\n\t\t\tif (type!=\"add\"){\n\t\t\t\tcont = this.getItemNode(id);\n\t\t\t\tif (!cont) return;\n\t\t\t}\n\t\t\t\n\t\t\tswitch(type){\n\t\t\t\tcase \"branch\":\n\t\t\t\t\tvar branch = cont.parentNode;\n\t\t\t\t\tnode = this._toHTMLObject(item);\n\t\t\t\t\t\n\t\t\t\t\tinsertBefore(node, branch); \n\t\t\t\t\tremove(branch);\n\t\t\t\t\tthis._htmlmap = null;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"paint\":\n\t\t\t\tcase \"update\":\n\t\t\t\t\tnode = this._htmlmap[id] = this._toHTMLItemObject(item);\n\t\t\t\t\tinsertBefore(node, cont); \n\t\t\t\t\tremove(cont);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"delete\":\n\t\t\t\t\t//deleting not item , but full branch\n\t\t\t\t\tremove(cont.parentNode);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"add\":\n\t\t\t\t\tvar parent;\n\t\t\t\t\t//we want process both empty value and 0 as string\n\t\t\t\t\t//jshint -W041:true\n\t\t\t\t\tif (item.$parent == 0){\n\t\t\t\t\t\tparent = this._dataobj.firstChild;\n\t\t\t\t\t} else if(this.getItem(item.$parent).open){\n\t\t\t\t\t\tparent = this.getItemNode(item.$parent);\n\t\t\t\t\t\tif (parent){\n\t\t\t\t\t\t\t//when item created by the script, it will miss the container for child notes\n\t\t\t\t\t\t\t//create it on demand\n\t\t\t\t\t\t\tif (!parent.nextSibling){\n\t\t\t\t\t\t\t\tvar leafs = create(\"DIV\", { \"class\" : \"webix_tree_leaves\" },\"\");\n\t\t\t\t\t\t\t\tparent.parentNode.appendChild(leafs);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tparent = parent.nextSibling;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (parent){\n\t\t\t\t\t\tvar next = this.data.getNextSiblingId(id);\n\t\t\t\t\t\tnext = this.getItemNode(next);\n\t\t\t\t\t\tif (next)\n\t\t\t\t\t\t\tnext = next.parentNode;\n\n\t\t\t\t\t\tnode = this._toHTMLObject(item);\n\t\t\t\t\t\tthis._htmlmap[id] = node.firstChild;\n\t\t\t\t\t\tinsertBefore(node, next, parent);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.callEvent(\"onPartialRender\", [id,data,type]);\n\t\t} else {\n\t\t\t//full reset\n\t\t\tif (this.callEvent(\"onBeforeRender\",[this.data])){\n\t\t\t\t//will be used for lines management\n\t\t\t\tthis.type._tree_branch_render_state = [];\n\t\t\t\t//getTopRange - returns all elements on top level\n\t\t\t\tthis._dataobj.innerHTML = this._toHTMLLevel(0);\n\t\t\t\t\t\n\t\t\t\tthis._htmlmap = null; //clear map, it will be filled at first getItemNode\n\t\t\t\tthis.callEvent(\"onAfterRender\",[]);\n\t\t\t}\n\t\t}\n\n\t\t//clear after usage\n\t\tthis.type._tree_branch_render_state = 0;\n\t\tTreeRenderStack._obj = null;\n\t\treturn true;\n\t},\n\tgetItemNode:function(search_id){\n\t\tif (this._htmlmap)\n\t\t\treturn this._htmlmap[search_id];\n\t\t\t\n\t\t//fill map if it doesn't created yet\n\t\tthis._htmlmap={};\n\t\t\n\t\tvar t = this._dataobj.getElementsByTagName(\"DIV\");\n\t\tfor (var i=0; i < t.length; i++){\n\t\t\tvar id = t[i].getAttribute(this._id); //get item's\n\t\t\tif (id) \n\t\t\t\tthis._htmlmap[id]=t[i];\n\t\t}\n\t\t//call locator again, when map is filled\n\t\treturn this.getItemNode(search_id);\n\t},\n\t_branch_render_supported:1\n};\n\nexport default TreeRenderStack;","\n\nconst TreeStateCheckbox = {\n\t_init_render_tree_state: function(){\n\t\tif (this._branch_render_supported){\n\t\t\tvar old_render = this.render;\n\t\t\tthis.render = function(id,data){\n\t\t\t\tvar updated = old_render.apply(this,arguments);\n\n\t\t\t\tif(this._settings.threeState && updated && data != \"checkbox\")\n\t\t\t\t\tthis._setThirdState.apply(this,arguments);\n\t\t\t};\n\t\t\tthis._init_render_tree_state=function(){};\n\t\t}\n\t},\n\tthreeState_setter:function(value){\n\t\tif (value)\n\t\t\tthis._init_render_tree_state();\n\t\treturn value;\n\t},\n\t_setThirdState:function(id){\n\t\tvar i,leaves,parents,checkedParents,tree;\n\t\tparents = [];\n\t\ttree = this;\n\n\t\t/*if item was removed*/\n\t\tif(id&&!tree.data.pull[id]){\n\t\t\tid = 0;\n\t\t}\n\t\t/*sets checkbox states*/\n\t\t/*if branch or full reloading*/\n\t\tif(!id||tree.data.pull[id].$count){\n\t\t\tleaves = this._getAllLeaves(id);\n\t\t\tleaves.sort(function(a,b){\n\t\t\t\treturn tree.data.pull[b].$level - tree.data.pull[a].$level;\n\t\t\t});\n\t\t\tfor(i=0;i < leaves.length;i++){\n\t\t\t\tif(!i||tree.data.pull[leaves[i]].$parent!=tree.data.pull[leaves[i-1]].$parent)\n\t\t\t\t\tparents = parents.concat(tree._setParentThirdState(leaves[i]));\n\t\t\t}\n\t\t}\n\t\telse{\n\t\t\t/*an item is a leaf */\n\t\t\tparents = parents.concat(tree._setParentThirdState(id));\n\t\t}\n\n\t\tcheckedParents = {};\n\t\tfor(i=0;i0||unsureCount>0){\n\t\t\t\tindeterminate = true;\n\t\t\t}\n\t\t\t\n\t\t\t//we need to reset indeterminate in any case :(\n\t\t\tif (indeterminate || indeterminate != item.indeterminate)\n\t\t\t\tneedrender = true;\n\t\t\titem.indeterminate = indeterminate;\n\t\t\tif (checked || item.checked != checked)\n\t\t\t\tneedrender = true;\n\t\t\titem.checked = checked;\n\n\t\t\tif (needrender){\n\t\t\t\tresult.push(parentId);\n\t\t\t\tparentId = this.getParentId(parentId);\n\t\t\t} else\n\t\t\t\tparentId = 0;\n\t\t}\n\n\t\treturn result;\n\t},\n\t/*get all checked items in tree*/\n\tgetChecked:function(){\n\t\tvar result=[];\n\t\tvar tree = this;\n\t\tthis.data.eachSubItem(0,function(obj){\n\t\t\tif (tree.isChecked(obj.id))\n\t\t\t\tresult.push(obj.id);\n\t\t});\n\t\treturn result;\n\t},\n\t_tree_check_uncheck_3:function(id, mode){\n\t\tvar item = this.getItem(id);\n\t\tif(item){\n\t\t\tif (mode === \"\") \n\t\t\t\tmode = !item.checked;\n\t\t\tif(item.checked != mode || item.indeterminate){\n\t\t\t\titem.checked = mode;\n\t\t\t\tthis._correctThreeState(id);\n\t\t\t\tvar parents = this._setParentThirdState(id);\n\t\t\t\tif (this._branch_render_supported && parents.length < 5){\n\t\t\t\t\tfor (var i=0; i= 0)\n\t\t\t\tbranches[parent][index] = newid;\n\t\t}\n\t},\n\tchangeId:function(old, newid){\n\t\tif(old == newid) return;\n\t\t\n\t\tvar parent = this.getItem(old).$parent;\n\t\tthis._change_branch_id(this.branch, parent, old, newid);\n\n\t\t//in case of filter applied, update id in filtered state as well\n\t\tif (this._filter_branch)\n\t\t\tthis._change_branch_id(this._filter_branch, parent, old, newid);\n\n\t\treturn DataStore.prototype.changeId.call(this, old, newid);\n\t},\n\tclearAll:function(soft){\n\t\tthis.branch = { 0:[] };\n\t\tDataStore.prototype.clearAll.call(this, soft);\t\n\t},\n\tgetPrevSiblingId:function(id){\n\t\tvar order = this.branch[this.getItem(id).$parent];\n\t\tvar pos = _power_array.find.call(order, id)-1;\n\t\tif (pos>=0)\n\t\t\treturn order[pos];\n\t\treturn null;\n\t},\n\tgetNextSiblingId:function(id){\n\t\tvar order = this.branch[this.getItem(id).$parent];\n\t\tvar pos = _power_array.find.call(order, id)+1;\n\t\tif (pos 0){\n\t\t\tvar branch = this.branch[id];\n\t\t\tfor(var i=0;i\";\n\t\treturn html;\n\t},\n\ticon:function(obj){\n\t\tif (obj.$count){\n\t\t\tif (obj.open)\n\t\t\t\treturn \"
\";\n\t\t\telse\n\t\t\t\treturn \"
\";\n\t\t} else\n\t\t\treturn \"
\";\n\t},\n\tcheckbox:function(obj){\n\t\tif(obj.nocheckbox)\n\t\t\treturn \"\";\n\t\treturn \"\";\n\t},\t\n\tfolder:function(obj){\n\t\tif (obj.icon)\n\t\t\treturn \"
\";\n\n\t\tif (obj.$count){\n\t\t\tif (obj.open)\n\t\t\t\treturn \"
\";\n\t\t\telse\n\t\t\t\treturn \"
\";\n\t\t}\n\t\treturn \"
\";\n\t}\n};\n\nexport default TreeType;","import {create, preventEvent} from \"../webix/html\";\nimport {bind, extend} from \"../webix/helpers\";\nimport {_event} from \"../webix/htmlevents\";\nimport {assert} from \"../webix/debug\";\nimport {callEvent} from \"../webix/customevents\";\n\nimport env from \"../webix/env\";\nimport DataDriver from \"../load/drivers/index\";\n\n\nconst UploadDriver = {\n\t$render: function() {\n\t\tif (this._upload_area){\n\t\t\t//firstChild is webix_el_box container, which have relative position\n\t\t\t//as result, file control is placed under the button and not in the top corner\n\t\t\tthis._contentobj.firstChild.appendChild(this._upload_area);\n\t\t\treturn;\n\t\t}\n\t\tthis.files.attachEvent(\"onBeforeDelete\", this._stop_file);\n\n\t\tvar input_config = {\n\t\t\t\"type\": \"file\",\n\t\t\t\"class\": \"webix_hidden_upload\",\n\t\t\ttabindex:-1\n\t\t};\n\n\t\tif (this._settings.accept)\n\t\t\tinput_config.accept = this._settings.accept;\n\n\t\tif (this._settings.multiple)\n\t\t\tinput_config.multiple = \"true\";\n\n\t\tif (this._settings.directory) {\n\t\t\tinput_config.webkitdirectory = \"true\";\n\t\t\tinput_config.mozdirectory = \"true\";\n\t\t\tinput_config.directory = \"true\";\n\t\t}\n\n\t\tvar f = create(\"input\", input_config);\n\t\tthis._upload_area = this._contentobj.firstChild.appendChild(f);\n\n\t\t_event(this._viewobj, \"drop\", bind(function(e) {\n\t\t\tthis.$drop(e);\n\t\t\tpreventEvent(e);\n\t\t}, this));\n\t\t_event(f, \"change\", bind(function() {\n\t\t\tthis._add_files(f.files);\n\n\t\t\tif (env.isIE) {\n\t\t\t\tvar t = document.createElement(\"form\");\n\t\t\t\tt.appendChild(this._upload_area);\n\t\t\t\tt.reset();\n\t\t\t\tthis._contentobj.firstChild.appendChild(f);\n\t\t\t} else\n\t\t\t\tf.value = \"\";\n\t\t}, this));\n\t\t_event(this._viewobj, \"click\", bind(function() {\n\t\t\tvar now_date = new Date();\n\t\t\tif (now_date - (this._upload_timer_click || 0) > 250) {\n\t\t\t\tthis.fileDialog();\n\t\t\t}\n\t\t}, this));\n\n\t\t_event(this._viewobj, \"dragenter\", preventEvent);\n\t\t_event(this._viewobj, \"dragexit\", preventEvent);\n\t\t_event(this._viewobj, \"dragover\", preventEvent);\n\t},\n\t_directoryEntry: function(value) {\n\t\treturn value.isDirectory;\n\t},\n\t_directoryDrop: function(item, state, path) {\n\t\tif (item.isFile){\n\t\t\titem.file(function(file){\n\t\t\t\tstate.addFile(file, null, null, { name : path+\"/\"+file.name });\n\t\t\t});\n\t\t} else if (item.isDirectory) {\n\t\t\t// Get folder contents\n\t\t\tvar dirReader = item.createReader();\n\t\t\tdirReader.readEntries(function(entries){\n\t\t\t\tfor (var i = 0; i < entries.length; i++){\n\t\t\t\t\tstate._directoryDrop(entries[i], state, (path ? (path + \"/\") : \"\") + item.name);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\t// adding files by drag-n-drop\n\t$drop: function(e) {\n\t\tvar files = e.dataTransfer.files;\n\t\tvar items = e.dataTransfer.items;\n\n\t\t// non-file drop\n\t\tif (!files.length) return;\n\n\t\tif (this.callEvent(\"onBeforeFileDrop\", [files, e])) {\n\t\t\titems = items || files; //IE10+\n\t\t\tfor (var i = 0; i < items.length; i++) {\n\t\t\t\t//https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry\n\t\t\t\tvar item = items[i];\n\t\t\t\tif (item.webkitGetAsEntry){\n\t\t\t\t\titem = item.webkitGetAsEntry();\n\t\t\t\t\tif (item.isDirectory){\n\t\t\t\t\t\tthis._directoryDrop(item, this, \"\");\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.addFile(files[i]);\n\t\t\t}\n\t\t}\n\t\tthis.callEvent(\"onAfterFileDrop\", [files, e]);\n\t},\n\tfileDialog:function(context){\n\t\tthis._upload_timer_click = new Date();\n\t\tthis._last_file_context = context;\n\t\tvar inputs = this._viewobj.getElementsByTagName(\"INPUT\");\n\t\tinputs[inputs.length-1].click();\n\t},\n\tsend: function(id){\n\t\t//alternative syntx send(callback)\n\t\tif (typeof id == \"function\"){\n\t\t\tthis._last_assigned_upload_callback = id;\n\t\t\tid = 0;\n\t\t}\n\n\t\tif (!id){\n\t\t\tvar order = this.files.data.order;\n\t\t\tvar complete = true;\n\n\t\t\tif (order.length)\n\t\t\t\tfor (var i=0; i !this.elements[v]);\n\t\tthis._inner_setValues(data, update);\n\t},\n\t_inner_setValues:function(data, update){\n\t\tthis._is_form_dirty = update;\n\t\t//prevent onChange calls from separate controls\n\t\tthis.blockEvent();\n\n\t\tif (!update || !this._values)\n\t\t\tthis._values = {};\n\n\t\tfor (let name in data)\n\t\t\tif (!this.elements[name])\n\t\t\t\tthis._values[name] = data[name];\n\n\t\tfor (let name in this.elements){\n\t\t\tvar input = this.elements[name];\n\t\t\tif (input){\n\t\t\t\tif (!isUndefined(data[name]))\n\t\t\t\t\tinput.setValue(data[name]);\n\t\t\t\telse if (!update && input.$allowsClear)\n\t\t\t\t\tinput.setValue(\"\");\n\t\t\t\tthis._values[name] = input.getValue();\n\t\t\t}\n\t\t}\n\n\t\tthis.unblockEvent();\n\t\tthis.callEvent(\"onValues\",[]);\n\t},\n\tisDirty:function(){\n\t\tif (this._is_form_dirty) return true;\n\t\tif (this.getDirtyValues(1) === 1)\n\t\t\treturn true;\n\n\t\treturn false;\n\t},\n\tsetDirty:function(flag){\n\t\tthis._is_form_dirty = flag;\n\t\tif (!flag)\n\t\t\tthis._values = this._inner_getValues();\n\t},\n\tgetDirtyValues:function(){\n\t\tvar result = {};\n\t\tif (this._values){\n\t\t\tfor (var name in this.elements){\n\t\t\t\tvar value = this.elements[name].getValue();\n\t\t\t\tif (this._values[name] != value){\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t\t//FIXME - used by isDirty\n\t\t\t\t\tif (arguments[0])\n\t\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t},\n\tgetCleanValues:function(){\n\t\treturn this._values;\n\t},\n\tgetValues:function(filter){\n\t\tvar data = this._inner_getValues(filter);\n\t\tif (this._settings.complexData)\n\t\t\tdata = CodeParser.expandNames(data);\n\n\t\treturn data;\n\t},\n\t_inner_getValues:function(filter){\n\t\t//get original data\t\t\n\t\tvar success,\n\t\t\telem = null,\n\t\t\tdata = (this._values?copy(this._values):{});\n\n\t\t//update properties from linked controls\n\t\tfor (var name in this.elements){\n\t\t\telem = this.elements[name];\n\t\t\tsuccess = true;\n\t\t\tif(filter){\n\t\t\t\tif(typeof filter == \"object\"){\n\t\t\t\t\tif(filter.hidden === false)\n\t\t\t\t\t\tsuccess = elem.isVisible();\n\t\t\t\t\tif(success && filter.disabled === false)\n\t\t\t\t\t\tsuccess = elem.isEnabled();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tsuccess = filter.call(this,elem);\n\t\t\t}\n\t\t\tif(success)\n\t\t\t\tdata[name] = elem.getValue();\n\t\t\telse\n\t\t\t\tdelete data[name]; //in case of this._values[name]\n\t\t}\n\t\treturn data;\n\t},\n\tclear:function(){\n\t\tthis._is_form_dirty = false;\n\t\tvar data = {};\n\t\tfor (var name in this.elements)\n\t\t\tif (this.elements[name].$allowsClear)\n\t\t\t\tdata[name] = \"\";\n\t\t\n\t\tthis._inner_setValues(data);\n\t},\n\tmarkInvalid: function(name, state){\n\t\t// remove 'invalid' mark\n\t\tif(state === false){\n\t\t\tthis._clear_invalid(name);\n\t\t}\n\t\t// add 'invalid' mark\n\t\telse{\n\t\t\t// set invalidMessage\n\t\t\tif(typeof state == \"string\"){\n\t\t\t\tvar input = this.elements[name];\n\t\t\t\tif(input)\n\t\t\t\t\tinput._settings.invalidMessage = state;\n\t\t\t}\n\t\t\t//add mark to current validation process\n\t\t\tif (this._validate_details)\n\t\t\t\tthis._validate_details[name] = true;\n\n\t\t\tthis._mark_invalid(name);\n\t\t}\n\t},\n\t_mark_invalid:function(id){\n\t\tvar input = this.elements[id];\n\t\tif (id && input){\n\t\t\tthis._clear_invalid(id,true);\n\t\t\taddCss(input._viewobj, \"webix_invalid\");\n\t\t\tinput._settings.invalid = true;\n\t\t\tvar message = input._settings.invalidMessage;\n\t\t\tif(typeof message === \"string\" && input.setBottomText)\n\t\t\t\tinput.setBottomText();\n\t\t}\n\t},\n\t_clear_invalid:function(id,silent){\n\t\tvar input = this.elements[id];\n\t\tif(id && input && input.$view && input._settings.invalid){\n\t\t\tremoveCss(input._viewobj, \"webix_invalid\");\n\t\t\tinput._settings.invalid = false;\n\t\t\tvar message = input._settings.invalidMessage;\n\t\t\tif(typeof message === \"string\" && !silent && input.setBottomText)\n\t\t\t\tinput.setBottomText();\n\t\t}\n\t}\n};\n\n\nexport default Values;","import {insertBefore, remove} from \"../webix/html\";\nimport env from \"../webix/env\";\nimport {bind} from \"../webix/helpers\";\nimport {_event} from \"../webix/htmlevents\";\nimport {assert} from \"../webix/debug\";\n\n\n/*\n\tRenders collection of items\n\tAlways shows y-scroll\n\tCan be used with huge datasets\n\t\n\t@export\n\t\tshow\n\t\trender\n*/\n\nconst VirtualRenderStack ={\n\t$init:function(){\n\t\tassert(this.render,\"VirtualRenderStack :: Object must use RenderStack first\");\n\t\t\n\t\tthis._htmlmap={}; //init map of rendered elements\n \n\t\t//we need to repaint area each time when view resized or scrolling state is changed\n\t\t_event(this._viewobj,\"scroll\",bind(this._render_visible_rows,this));\n\t\tif(env.touch){\n\t\t\tthis.attachEvent(\"onAfterScroll\", bind(this._render_visible_rows,this));\n\t\t}\n\t\t//here we store IDs of elemenst which doesn't loadede yet, but need to be rendered\n\t\tthis._unrendered_area=[];\n\t},\n\t//return html object by item's ID. Can return null for not-rendering element\n\tgetItemNode:function(search_id){\n\t\t//collection was filled in _render_visible_rows\n\t\treturn this._htmlmap[search_id];\n\t},\n\t//adjust scrolls to make item visible\n\tshowItem:function(id){\n\t\tvar range = this._getVisibleRange();\n\t\tvar ind = this.data.getIndexById(id);\n\t\t//we can't use DOM method for not-rendered-yet items, so fallback to pure math\n\t\tvar dy = Math.floor(ind/range._dx)*range._y;\n\t\tvar state = this.getScrollState();\n\t\tif (dy= state.y + this._content_height)\n\t\t\tthis.scrollTo(0, dy);\n\t},\n\t//repain self after changes in DOM\n\t//for add, delete, move operations - render is delayed, to minify performance impact\n\trender:function(id,data,type){\n\t\tif (!this.isVisible(this._settings.id) || this.$blockRender)\n\t\t\treturn;\n\t\t\n\t\tif (id){\n\t\t\tvar cont = this.getItemNode(id);\t//old html element\n\t\t\tswitch(type){\n\t\t\t\tcase \"update\":\n\t\t\t\t\tif (!cont) return;\n\t\t\t\t\t//replace old with new\n\t\t\t\t\tvar t = this._htmlmap[id] = this._toHTMLObject(data);\n\t\t\t\t\tinsertBefore(t, cont); \n\t\t\t\t\tremove(cont);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: // \"move\", \"add\", \"delete\"\n\t\t\t\t\t/*\n\t\t\t\t\t\tfor all above operations, full repainting is necessary\n\t\t\t\t\t\tbut from practical point of view, we need only one repainting per thread\n\t\t\t\t\t\tcode below initiates double-thread-rendering trick\n\t\t\t\t\t*/\n\t\t\t\t\tthis._render_delayed();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\t//full repainting\n\t\t\tif (this.callEvent(\"onBeforeRender\",[this.data])){\n\t\t\t\tthis._htmlmap = {}; \t\t\t\t\t//nulify links to already rendered elements\n\t\t\t\tthis._render_visible_rows(null, true);\t\n\t\t\t\t// clear delayed-rendering, because we already have repaint view\n\t\t\t\tthis._wait_for_render = false;\t\t\t\n\t\t\t\tthis.callEvent(\"onAfterRender\",[]);\n\t\t\t}\n\t\t}\n\t},\n\t//implement double-thread-rendering pattern\n\t_render_delayed:function(){\n\t\t//this flag can be reset from outside, to prevent actual rendering \n\t\tif (this._wait_for_render) return;\n\t\tthis._wait_for_render = true;\t\n\t\t\n\t\twindow.setTimeout(bind(function(){\n\t\t\tthis.render();\n\t\t},this),1);\n\t},\n\t//create empty placeholders, which will take space before rendering\n\t_create_placeholder:function(height){\n\t\tif(env.maxHTMLElementSize)\n\t\t\theight = Math.min(env.maxHTMLElementSize, height);\n\t\tvar node = document.createElement(\"DIV\");\n\t\tnode.style.cssText = \"height:\"+height+\"px; width:100%; overflow:hidden;\";\n\t\treturn node;\n\t},\n\t/*\n\t\tMethods get coordinatest of visible area and checks that all related items are rendered\n\t\tIf, during rendering, some not-loaded items was detected - extra data loading is initiated.\n\t\treset - flag, which forces clearing of previously rendered elements\n\t*/\n\t_render_visible_rows:function(e,reset){\n\t\tthis._unrendered_area=[]; //clear results of previous calls\n\t\t\n\t\tvar viewport = this._getVisibleRange();\t//details of visible view\n\n\t\tif (!this._dataobj.firstChild || reset){\t//create initial placeholder - for all view space\n\t\t\tthis._dataobj.innerHTML=\"\";\n\t\t\tthis._dataobj.appendChild(this._create_placeholder(viewport._max));\n\t\t\t//register placeholder in collection\n\t\t\tthis._htmlrows = [this._dataobj.firstChild];\n\t\t}\n\t\t\n\t\t/*\n\t\t\tvirtual rendering breaks all view on rows, because we know widht of item\n\t\t\twe can calculate how much items can be placed on single row, and knowledge \n\t\t\tof that, allows to calculate count of such rows\n\t\t\t\n\t\t\teach time after scrolling, code iterate through visible rows and render items \n\t\t\tin them, if they are not rendered yet\n\t\t\t\n\t\t\tboth rendered rows and placeholders are registered in _htmlrows collection\n\t\t*/\n\n\t\t//position of first visible row\n\t\tvar t = viewport._from;\n\t\t\t\n\t\twhile(t<=viewport._height){\t//loop for all visible rows\n\t\t\t//skip already rendered rows\n\t\t\twhile(this._htmlrows[t] && this._htmlrows[t]._filled && t<=viewport._height){\n\t\t\t\tt++; \n\t\t\t}\n\t\t\t//go out if all is rendered\n\t\t\tif (t>viewport._height) break;\n\t\t\t\n\t\t\t//locate nearest placeholder\n\t\t\tvar holder = t;\n\t\t\twhile (!this._htmlrows[holder]) holder--;\n\t\t\tvar holder_row = this._htmlrows[holder];\n\t\t\t\n\t\t\t//render elements in the row\t\t\t\n\t\t\tvar base = t*viewport._dx+(this.data.$min||0);\t//index of rendered item\n\t\t\tif (base > (this.data.$max||Infinity)) break;\t//check that row is in virtual bounds, defined by paging\n\t\t\tvar nextpoint = Math.min(base+viewport._dx-1,(this.data.$max?this.data.$max-1:Infinity));\n\t\t\tvar node = this._create_placeholder(viewport._y);\n\t\t\t//all items in rendered row\n\t\t\tvar range = this.data.getIndexRange(base, nextpoint);\n\t\t\tif (!range.length) break; \n\t\t\t\n\t\t\tvar loading = { $template:\"Loading\" };\n\t\t\tfor (let i=0; i0){\n\t\t\t\tholder_row.style.height = delta2+\"px\";\n\t\t\t\tthis._htmlrows[t+1] = holder_row;\n\t\t\t} else {\n\t\t\t\tif (delta<0)\n\t\t\t\t\tremove(holder_row);\n\t\t\t\telse\n\t\t\t\t\tholder_row.style.height = delta+\"px\";\n\t\t\t\tif (delta2>0){ \n\t\t\t\t\tvar new_space = this._htmlrows[t+1] = this._create_placeholder(delta2);\n\t\t\t\t\tinsertBefore(new_space,node.nextSibling,this._dataobj);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\tt++;\n\t\t}\n\t\t\n\t\t//when all done, check for non-loaded items\n\t\tif (this._unrendered_area.length){\n\t\t\t//we have some data to load\n\t\t\t//detect borders\n\t\t\tvar from = this._unrendered_area[0];\n\t\t\tvar to = this._unrendered_area.pop()+1;\n\t\t\tif (to>from){\n\t\t\t\t//initiate data loading\n\t\t\t\tvar count = to - from;\n\t\t\t\tif (this._maybe_loading_already(count, from)) return;\n\n\t\t\t\tcount = Math.max(count, (this._settings.datafetch||this._settings.loadahead||0));\n\t\t\t\tthis.loadNext(count, from);\n\t\t\t}\n\t\t}\n\t},\n\t//calculates visible view\n\t_getVisibleRange:function(){\n\t\tvar state = this.getScrollState();\n\t\tvar top = Math.max(0, state.y);\n\t\tvar width = this._content_width; \n\t\tvar height = this._content_height;\n\n\t\t//size of single item\n\t\tvar t = this.type;\n\n\t\tvar dx = Math.floor(width/t.width)||1; //at least single item per row\n\t\t\n\t\tvar min = Math.floor(top/t.height);\t\t\t\t//index of first visible row\n\t\tvar dy = Math.ceil((height+top)/t.height)-1;\t\t//index of last visible row\n\t\t//total count of items, paging can affect this math\n\t\tvar count = this.data.$max?(this.data.$max-this.data.$min):this.data.count();\n\t\tvar max = Math.ceil(count/dx)*t.height;\t\t\t//size of view in rows\n\n\t\treturn { _from:min, _height:dy, _top:top, _max:max, _y:t.height, _dx:dx};\n\t},\n\t_cellPosition:function(id){\n\t\tvar html = this.getItemNode(id);\n\t\tif (!html){\n\t\t\tthis.showItem(id);\n\t\t\tthis._render_visible_rows();\n\t\t\thtml = this.getItemNode(id);\n\t\t}\n\t\treturn {\n\t\t\tleft:html.offsetLeft, \n\t\t\ttop:html.offsetTop,\n\t\t\theight:html.offsetHeight,\n\t\t\twidth:html.offsetWidth,\n\t\t\tparent:this._contentobj\n\t\t};\n\t}\n};\n\nexport default VirtualRenderStack;","import {offset, insertBefore, remove} from \"../webix/html\";\nimport {bind} from \"../webix/helpers\";\nimport base from \"../views/view\";\nimport {_event} from \"../webix/htmlevents\";\nimport Touch from \"../core/touch\";\n\n/*\n\tRenders collection of items on demand\n*/\nconst VRenderStack = {\n\t$init:function(){\n\t\tthis._htmlmap = {};\n\n\t\tif (Touch.$active){\n\t\t\tthis.attachEvent(\"onBeforeScroll\", function(){ \n\t\t\t\tthis._in_touch_scroll = true;\n\t\t\t});\n\t\t\tthis.attachEvent(\"onAfterScroll\", function(){\n\t\t\t\tthis.render(null, null, \"paint\");\n\t\t\t\tthis._in_touch_scroll = false;\n\t\t\t});\n\t\t\tthis.attachEvent(\"onTouchMove\", function(){\n\t\t\t\tif (this._in_touch_scroll){\n\t\t\t\t\tthis.blockEvent();\n\t\t\t\t\tthis.render(null, null, \"paint\");\n\t\t\t\t\tthis.unblockEvent();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t_event(this._viewobj, \"scroll\", bind(function(){\n\t\t\t\tthis.render(null, null, \"paint\");\n\t\t\t}, this));\n\t\t}\n\t},\n\t_sync_scroll:function(x,y,t){\n\n\t\tif (this._settings.footer)\n\t\t\tTouch._set_matrix(this._footer.childNodes[1].firstChild,x,0,t);\n\n\t\tthis.callEvent(\"onSyncScroll\", [x,y,t]);\n\t},\n\t//return html container by its ID\n\t//can return undefined if container doesn't exists\n\tgetItemNode:function(search_id){\n\t\treturn this._htmlmap && this._htmlmap[search_id];\n\t},\n\t/*change scrolling state of top level container, so related item will be in visible part*/\n\tshowItem:function(id){\n\t\tvar index = this.data.getIndexById(id);\n\t\tif (index > -1){\n\t\t\tvar top = index*this.type.height;\n\t\t\tvar bottom = top + this.type.height;\n\t\t\tvar scroll = this.getScrollState();\n\t\t\tvar box = offset(this.$view);\n\t\t\tif (top < scroll.y)\n\t\t\t\tthis.scrollTo(0, top);\n\t\t\telse if (bottom > scroll.y+box.height)\n\t\t\t\tthis.scrollTo(0, bottom-box.height);\n\t\t}\n\t},\n\t//update view after data update\n\t//when called without parameters - all view refreshed\n\trender:function(id,data,type){\n\t\tif (!this.isVisible(this._settings.id) || this.$blockRender)\n\t\t\treturn;\n\t\t\n\t\tvar parent = (this._renderobj||this._dataobj);\n\n\t\tif (id){\n\t\t\tif (type == \"paint\" || type == \"update\"){\n\t\t\t\tvar cont = this.getItemNode(id); //get html element of updated item\n\t\t\t\tif (cont){\n\t\t\t\t\tvar t = this._htmlmap[id] = this._toHTMLObject(data);\n\t\t\t\t\tt.style.top = cont.style.top;\n\t\t\t\t\tt.style.position = \"absolute\";\n\t\t\t\t\tt.style.left = 0; t.style.width = \"100%\";\n\n\t\t\t\t\tinsertBefore(t, cont); \n\t\t\t\t\tremove(cont);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t//updating not rendered yet item\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (type != \"paint\"){\n\t\t\t//repaint all\n\t\t\tthis._htmlmap = {};\n\t\t\tparent.innerHTML = \"\";\n\t\t}\n\n\t\t//full reset\n\t\tif (this.callEvent(\"onBeforeRender\",[this.data])){\n\t\t\tvar count = this.data.count();\n\t\t\tvar scroll = this.getScrollState();\n\t\t\tvar box = offset(this._viewobj);\n\n\t\t\tvar top = Math.floor(scroll.y / this.type.height)-2;\n\t\t\tvar bottom = Math.ceil((scroll.y + box.height)/ this.type.height)+2;\n\n\t\t\ttop = Math.max(0, top);\n\t\t\tbottom = Math.min(this.data.count()-1, bottom);\n\n\t\t\tvar html = [];\n\t\t\tfor (let i=top; i<=bottom; i++){\n\t\t\t\tvar sid = this.data.order[i];\n\t\t\t\tif (!this._htmlmap[sid]){\n\t\t\t\t\tvar item = this.data.getItem(sid);\n\t\t\t\t\tif (!item){\n\t\t\t\t\t\tthis._run_load_next({ \n\t\t\t\t\t\t\tcount:bottom-i+(this._settings.loadahead || 0),\n\t\t\t\t\t\t\tstart:i \n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\thtml.push(this._toHTML(item));\n\t\t\t\t} else {\n\t\t\t\t\thtml.push(\"
\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._html.innerHTML = html.join(\"\");\n\n\t\t\tparent.style.position = \"relative\";\n\t\t\tparent.style.height = count*this.type.height+\"px\";\n\n\t\t\tvar kids = this._html.childNodes;\n\t\t\tfor (let i=kids.length-1; i>=0; i--){\n\t\t\t\tvar child = kids[i];\n\t\t\t\tvar cid = child.getAttribute(this._id);\n\n\t\t\t\tif (cid){\n\t\t\t\t\tchild.style.position = \"absolute\";\n\t\t\t\t\tchild.style.top = (top+i)*this.type.height+\"px\";\n\t\t\t\t\tchild.style.left = 0; child.style.width = \"100%\";\n\n\t\t\t\t\tparent.appendChild(child);\n\t\t\t\t\tthis._htmlmap[cid] = child;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.callEvent(\"onAfterRender\",[]);\n\t\t}\n\t},\n\t$setSize:function(){\n\t\tif (base.api.$setSize.apply(this, arguments)){\n\t\t\tthis.render(null, null, \"paint\");\n\t\t}\n\t},\n\t_run_load_next:function(conf){\n\t\tvar count = Math.max(conf.count, (this._settings.datafetch||this._settings.loadahead||0));\n\t\tif (this._maybe_loading_already(conf.count, conf.start)) return;\n\t\tthis.loadNext(count, conf.start);\n\t}\n};\n\nexport default VRenderStack;","import {$active} from \"../../webix/skin\";\nimport {extend, isUndefined} from \"../../webix/helpers\";\n\nexport const errorMessage = \"non-existing view for export\";\n\nfunction getDataHelper(key, column, raw){\n\tif (!raw && column.format)\n\t\treturn function(obj){ return column.format(obj[key]); };\n\n\treturn function(obj){ return obj[key]; };\n}\n\nexport function getExportScheme(view, options){\n\tvar scheme = [];\n\tvar h_count = 0, f_count = 0;\n\tvar isTable = view.getColumnConfig;\n\tvar columns = options.columns;\n\tvar raw = !!options.rawValues;\n\tvar isTree = view.data.name == \"TreeStore\";\n\n\tvar treeLines = options.treeLines;\n\tif(treeLines === true || isUndefined(treeLines))\n\t\ttreeLines = \"value\";\n\n\tscheme.heights = {};\n\n\tif (!columns){\n\t\tif (isTable)\n\t\t\tcolumns = [].concat(view._columns);\n\t\telse {\n\t\t\tcolumns = [];\n\t\t\tvar obj = view.data.pull[view.data.order[0]];\n\t\t\tfor (let key in obj)\n\t\t\t\tif(key !== \"id\" && key[0] != \"$\")\n\t\t\t\t\tcolumns.push({id:key, isTree: isTree && key === treeLines});\n\t\t}\n\t}\n\telse if(!columns.length){\n\t//export options are set as - columns:{ rank:true, title:{ header:\"custom\"}}\n\t\tvar arr = [];\n\t\tfor(let key in columns)\n\t\t\tarr.push(extend({ id:key}, extend({}, columns[key])));\n\t\tcolumns = arr;\n\t}\n\n\tif (options.ignore)\n\t\tfor (let i=columns.length-1; i>=0; i--)\n\t\t\tif (options.ignore[columns[i].id])\n\t\t\t\tcolumns.splice(i,1);\n\n\tif (options.id)\n\t\tscheme.push({ id:\"id\", width:50, header:\" \", template:function(obj){ return obj.id; }});\n\n\tif (options.flatTree){\n\t\tvar flatKey = options.flatTree.id;\n\t\tvar copy = [].concat(options.flatTree.columns);\n\t\tvar fill = [];\n\t\tvar fillMode = !!options.flatTree.fill;\n\t\tfor (let i = 1; i <= copy.length; i++)\n\t\t\tcopy[i-1].template = (function(i){ \n\t\t\t\treturn function(obj){ \n\t\t\t\t\treturn obj.$level == i ? (fill[i]=obj[flatKey]) : ((fillMode && i= 0; i--)\n\t\t\tif (columns[i].id === flatKey)\n\t\t\t\tindex = i;\n\n\t\tcolumns = [].concat(columns.slice(0,index)).concat(copy).concat(columns.slice(index+1));\n\t}\n\n\tvar treeColumn;\n\n\tfor (let j = 0; j < columns.length; j++) {\n\t\tlet column = columns[j];\n\t\tlet key = column.id;\n\n\t\tif (column.noExport) continue;\n\n\t\t// raw mode has sense only for datatable\n\t\t// in other cases we don't have built-in data templates\n\t\tvar rawColumn = raw && isTable;\n\t\tif (isTable){\n\t\t\tlet sourceColumn = view._columns_pull[key];\n\t\t\t// when these's no column to take raw data from, or custom template defined - ignore raw mode\n\t\t\tif (column.template && (!sourceColumn || sourceColumn.template != column.template))\n\t\t\t\trawColumn = false;\n\t\t\tif(sourceColumn)\n\t\t\t\tcolumn = extend(extend({}, column), sourceColumn);\n\t\t}\n\n\t\tlet record = {\n\t\t\tid: column.id,\n\t\t\ttemplate: (( rawColumn || !column.template) ? getDataHelper(key, column, raw) : column.template ),\n\t\t\twidth: ((column.width || 200) * (options.export_mode===\"excel\"?8.43/70:1 )),\n\t\t\theader: (column.header!==false?(column.header||key) : \"\")\n\t\t};\n\n\t\tif(isTree && key === treeLines)\n\t\t\trecord.isTree = treeColumn = true;\n\n\t\tif(options.export_mode === \"excel\"){\n\t\t\textend(record, {\n\t\t\t\ttype: column.exportType || \"\",\n\t\t\t\tformat:column.exportFormat || \"\"\n\t\t\t});\n\t\t}\n\n\t\tif(typeof record.header === \"string\") record.header = [{text:record.header}];\n\t\telse record.header = [].concat(record.header);\n\n\t\tfor(let i = 0; i]*>/gi, \"\");\n\t\t}\n\n\t\th_count = Math.max(h_count, record.header.length);\n\n\t\tif(view._settings.footer){\n\t\t\tlet footer = column.footer || \"\";\n\t\t\tif(typeof footer == \"string\") footer = [{text:footer}];\n\t\t\telse footer = [].concat(footer);\n\n\t\t\tfor(let i = 0; i]*>/gi;\n\tvar data = [];\n\tvar header, headers;\n\tvar mode = options.export_mode;\n\n\tif((mode === \"excel\" || mode == \"csv\") && options.docHeader){\n\t\tdata = [[(options.docHeader.text || options.docHeader).toString()], [\"\"]];\n\t\tif(mode === \"excel\" && options.docHeader.height)\n\t\t\tscheme.heights[0] = options.docHeader.height;\n\t}\n\n\tif( options.header !== false && scheme.length){\n\t\tfor(let h=0; h < scheme[0].header.length; h++){\n\t\t\theaders = [];\n\t\t\tfor (let i = 0; i < scheme.length; i++){ \n\t\t\t\theader = \"\";\n\t\t\t\tif(scheme[i].header[h]){\n\t\t\t\t\theader = scheme[i].header[h];\n\t\t\t\t\tif (filterHTML)\n\t\t\t\t\t\theader = scheme[i].header[h] = header.replace(htmlFilter, \"\");\n\t\t\t\t}\n\t\t\t\theaders.push(header);\n\t\t\t}\n\n\t\t\tif(mode ==\"excel\" && view._columns && options.heights !==false &&\n\t\t\t(view._headers[h] !== $active.barHeight || options.heights == \"all\")\n\t\t\t) scheme.heights[data.length] = view._headers[h];\n\n\t\t\tif (mode !== \"pdf\")\n\t\t\t\tdata[data.length] = headers;\n\t\t}\n\t}\n\toptions.yCorrection = (options.yCorrection||0)-data.length;\n\n\tvar treeline = (options.flatTree || options.plainOutput) ? \"\" : \"-\";\n\n\tview.data.each(function(item){\n\t\tif(!options.filter || options.filter(item)){\n\t\t\tif(this.data._scheme_export){\n\t\t\t\titem = view.data._scheme_export(item);\n\t\t\t}\n\n\t\t\tlet line = [];\n\t\t\tfor (let i = 0; i < scheme.length; i++){\n\t\t\t\tlet column = scheme[i], cell = null;\n\t\t\t\t//spreadsheet can output math\n\t\t\t\tif(options.math && item[\"$\"+column.id] && item[\"$\"+column.id].charAt(0) ==\"=\" && !item[\"$\"+column.id].match(/^=(image|link|sparkline)\\(/i))\n\t\t\t\t\tcell = item[\"$\"+column.id];\n\t\t\t\tif(this._spans_pull){\n\t\t\t\t\tlet span = this.getSpan(item.id, column.id);\n\t\t\t\t\tif(span && span[4] && span[0] == item.id && span[1] == column.id){\n\t\t\t\t\t\tcell = span[4];\n\t\t\t\t\t\tif(filterHTML && typeof cell === \"string\")\n\t\t\t\t\t\t\tcell = cell.replace(htmlFilter, \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell){\n\t\t\t\t\tcell = column.template(item, view.type, item[column.id], column, i);\n\t\t\t\t\tif (!cell && cell !== 0) cell = \"\";\n\t\t\t\t\tif(column.isTree && treeline)\n\t\t\t\t\t\tcell = \" \"+Array(item.$level).join(treeline)+\" \"+cell;\n\t\t\t\t\tif (filterHTML && typeof cell === \"string\"){\n\t\t\t\t\t\tcell = cell.replace(htmlFilter, \"\");\n\t\t\t\t\t}\n\t\t\t\t\t//remove end/start spaces(ex.hierarchy data)\n\t\t\t\t\tif (typeof cell === \"string\" && mode === \"csv\")\n\t\t\t\t\t\tcell = cell.trim();\n\t\t\t\t\t//for multiline data\n\t\t\t\t\tif (typeof cell === \"string\" && (mode === \"excel\" || mode === \"csv\")){\n\t\t\t\t\t\tcell = cell.replace(//mg,\"\\n\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tline.push(cell);\n\t\t\t}\n\n\t\t\tif(mode ==\"excel\" && view._columns && options.heights !==false &&\n\t\t\t((item.$height && item.$height !== $active.rowHeight) || options.heights ==\"all\")\n\t\t\t) scheme.heights[data.length] = item.$height || this.config.rowHeight;\n\n\t\t\tdata.push(line);\n\t\t}\n\t}, view);\n\n\tif( options.footer !==false ){\n\t\tlet f_count = scheme[0].footer?scheme[0].footer.length:0;\n\t\tfor (let f = 0; f < f_count; f++){\n\t\t\tlet footers = [];\n\t\t\tfor(let i = 0; i horder.text)\n\t\tdoc.header({paddingBottom:10}).text(options.docHeader.text, options.docHeader);\n\n\tif (options.docHeaderImage){\n\t\tconst defer = promise.defer();\n\t\tpdfjs.load(options.docHeaderImage.url, function(err, buffer){\n\t\t\tif (!err){\n\t\t\t\tvar img = new pdfjs.Image(buffer);\n\t\t\t\tdoc.header({paddingBottom:10}).image(img, options.docHeaderImage);\n\n\t\t\t\tif(options.docHeader && horder.image < horder.text)\n\t\t\t\t\tdoc.header({paddingBottom:10}).text(options.docHeader.text, options.docHeader);\n\t\t\t}\n\t\t\t//render pdf and show in browser\n\t\t\tdefer.resolve(doc.render());\n\t\t});\n\t\treturn defer;\n\t}\n\telse\n\t\treturn promise.resolve(doc.render());\n}","import {errorMessage, getExportScheme, getExportData} from \"./common\";\n\nimport promise from \"../../thirdparty/promiz\";\nimport require from \"../../load/require\";\nimport env from \"../../webix/env\";\n\nimport {download} from \"../../webix/html\";\nimport {isArray} from \"../../webix/helpers\";\nimport {$$} from \"../../ui/core\";\nimport {assert} from \"../../webix/debug\";\n\nexport const toExcel = function(id, options){\n\toptions = options || {};\n\toptions.export_mode = \"excel\";\n\n\tid = isArray(id)?id:[id];\n\tvar views = [];\n\n\tfor(var i = 0; i R) range.s.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(range.e.c < C) range.e.c = C;\n\n\t\t\tvar cell = {v: data[R][C] };\n\t\t\tif(cell.v === null) continue;\n\t\t\tvar cell_ref = XLSX.utils.encode_cell({c:C,r:R});\n\n\t\t\tlet stringValue = cell.v.toString();\n\t\t\tlet isFormula = (stringValue.charAt(0) === \"=\");\n\n\t\t\t// set type based on column's config\n\t\t\t// skip headers and formula based cells\n\t\t\tvar header = (options.docHeader?2:0)+scheme[0].header.length;\n\t\t\tif(R>=header && !isFormula){\n\t\t\t\tvar column = scheme[C];\n\t\t\t\tif(column.type) cell.t = (types[column.type] || \"\");\n\t\t\t\tif(column.format) cell.z = column.format;\n\t\t\t}\n\n\t\t\t// set type based on cell's value\n\t\t\tif(cell.v instanceof Date){\n\t\t\t\tcell.t = cell.t || \"n\";\n\t\t\t\tcell.z = cell.z || XLSX.SSF[table][14];\n\t\t\t\tcell.v = excelDate(cell.v);\n\t\t\t}\n\t\t\telse if(!cell.t){\n\t\t\t\tif(typeof cell.v === \"boolean\")\n\t\t\t\t\tcell.t = \"b\";\n\t\t\t\telse if(typeof cell.v === \"number\" || parseFloat(cell.v) == cell.v){\n\t\t\t\t\tcell.v = cell.v*1;\n\t\t\t\t\tcell.t = \"n\";\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// convert any other object to a string\n\t\t\t\t\tcell.v = stringValue;\n\t\t\t\t\tif(isFormula){\n\t\t\t\t\t\tcell.t = \"n\";\n\t\t\t\t\t\tcell.f = cell.v;\n\t\t\t\t\t\tdelete cell.v;\n\t\t\t\t\t}\n\t\t\t\t\telse cell.t = \"s\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(styles){\n\t\t\t\tvar cellStyle = getStyles(R, C, styles);\n\t\t\t\tif(cellStyle.format){\n\t\t\t\t\tcell.z = cellStyle.format;\n\t\t\t\t\tdelete cellStyle.format;\n\t\t\t\t}\n\t\t\t\tcell.s = cellStyle;\n\t\t\t}\n\n\t\t\tws[cell_ref] = cell;\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws[\"!ref\"] = XLSX.utils.encode_range(range);\n\n\tws[\"!rows\"] = getRowHeights(scheme.heights);\n\tws[\"!cols\"] = getColumnsWidths(scheme);\n\tif(spans.length)\n\t\tws[\"!merges\"] = spans;\n\n\treturn ws;\n}\n\nfunction getRowHeights(heights){\n\tfor(var i in heights)\n\t\theights[i] = {hpx:heights[i], hpt:heights[i]*0.75};\n\treturn heights;\n}\n\nfunction getStyles(r, c, styles){\n\t//row index, column index, styles array\n\tif(styles[r] && styles[r][c])\n\t\treturn styles[r][c];\n\treturn \"\";\n}\n\nfunction getSpans(view, options){\n\tvar isTable = view.getColumnConfig;\n\tvar pull = view._spans_pull;\n\tvar spans = [];\n\n\tif(isTable){\n\t\tif(options.header!==false)\n\t\t\tspans = getHeaderSpans(view, options, \"header\", spans); \n\n\t\tif(pull){\n\t\t\tvar xc = options.xCorrection || 0;\n\t\t\tvar yc = options.yCorrection || 0;\n\t\t\tfor(var row in pull){\n\t\t\t\t//{ s:{c:1, r:0}, e:{c:3, r:0} }\n\t\t\t\tvar cols = pull[row];\n\t\t\t\tfor(var col in cols){\n\t\t\t\t\tvar sc = view.getColumnIndex(col) - xc;\n\t\t\t\t\tvar sr = view.getIndexById(row) - yc;\n\t\t\t\t\tif(sc<0||sr<0) //hidden cols/rows\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tvar ec = sc+cols[col][0]-1;\n\t\t\t\t\tvar er = sr+(cols[col][1]-1);\n\n\t\t\t\t\tspans.push({ s:{c:sc, r:sr}, e:{c:ec, r:er} });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(options.footer!==false)\n\t\t\tspans = getHeaderSpans(view, options, \"footer\", spans);\n\t}\n\n\treturn spans;\n}\n\nfunction getHeaderSpans(view, options, group, spans){\n\tvar columns = view.config.columns;\n\tvar delta = (options.docHeader?2:0)+(group == \"header\" ? 0 :((options.header!==false?view._headers.length:0)+view.count()));\n\n\tfor(var i=0; i 0 && message.keyboard){\n\t\te = e||window.event;\n\t\tvar code = e.which||e.keyCode;\n\t\tvar lastModalbox = modalbox.pull[modalbox.order[count-1]];\n\n\t\tif (code == 13 || code == 32)\n\t\t\tcallback(lastModalbox, true);\n\t\tif (code == 27)\n\t\t\tcallback(lastModalbox, false);\n\n\t\tif (e.preventDefault)\n\t\t\te.preventDefault();\n\t\treturn !(e.cancelBubble = true);\n\t}\n}\n\nevent(document, \"keydown\", modal_key, { capture: true });\n\t\nfunction modality(mode, container){\n\tvar node = container || document.body;\n\tvar cover;\n\tif(isUndefined(node.modality)){\n\t\tcover = create(\"DIV\", {\n\t\t\t\"class\":\"webix_modal_cover\",\n\t\t\tstyle:\"position:\"+(container ? \"absolute\" : \"fixed\")+\";\"\n\t\t});\n\t\tcover.onkeydown = modal_key;\n\n\t\tif(container){\n\t\t\tvar position = window.getComputedStyle(container).position;\n\t\t\tif(position != \"fixed\" && position != \"absolute\" && position != \"sticky\" && position != \"relative\")\n\t\t\t\tnode.style.position = \"relative\";\n\t\t}\n\t\tnode.appendChild(cover);\n\t\tnode.modality = 1;\n\t}\n\telse\n\t\tmode ? node.modality ++ : node.modality --;\n\n\t//trigger visibility only if necessary\n\tif((mode && node.modality === 1) || node.modality === 0){\n\t\tif(cover)\n\t\t\tcover.style.display = \"inline-block\";\n\t\telse{\n\t\t\tcover = node.querySelectorAll(\".webix_modal_cover\");\n\t\t\tfor(var i = 0; i < cover.length; i++){\n\t\t\t\tif(cover[i].parentNode == node){\n\t\t\t\t\tcover[i].style.display = node.modality == 1 ? \"inline-block\" : \"none\";\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\t\n\t}\n}\n\nfunction button(text, result, className){\n\treturn \"
\"+text+\"
\";\n}\n\nfunction info(text){\n\tif (!t.area){\n\t\tt.area = document.createElement(\"DIV\");\n\t\tt.area.className = \"webix_message_area\";\n\t\tt.area.style[t.position]=\"5px\";\n\t\t\n\t\tdocument.body.appendChild(t.area);\n\t}\n\tt.area.setAttribute(\"role\", \"alert\");\n\tt.area.setAttribute(\"aria-atomic\", true);\n\tt.hide(text.id);\n\tvar message = document.createElement(\"DIV\");\n\tmessage.innerHTML = \"
\"+text.text+\"
\";\n\tmessage.className = \"webix_message webix_\" + text.type;\n\tmessage.onclick = function(){\n\t\tif (text) t.hide(text.id);\n\t\ttext = null;\n\t};\n\n\tif (state.$testmode)\n\t\tmessage.className += \" webix_no_transition\";\n\n\tif (t.position == \"bottom\" && t.area.firstChild)\n\t\tt.area.insertBefore(message,t.area.firstChild);\n\telse\n\t\tt.area.appendChild(message);\n\t\n\tif (text.expire > 0)\n\t\tt.timers[text.id]=window.setTimeout(function(){\n\t\t\tt.hide(text.id);\n\t\t}, text.expire);\n\n\t//styling for animation\n\tmessage.style.height = message.offsetHeight-2+\"px\";\n\n\tt.pull[text.id] = message;\n\tmessage = null;\n\n\treturn text.id;\n}\nfunction _boxStructure(config, ok, cancel){\n\tvar box = document.createElement(\"DIV\");\n\tvar css = config.css ? \" \"+config.css : \"\";\n\tbox.className = \"webix_modal_box webix_\"+config.type+css;\n\tbox.setAttribute(\"webixbox\", 1);\n\tbox.setAttribute(\"role\", \"alertdialog\");\n\tbox.setAttribute(\"aria-label\", config.title || \"\");\n\tbox.setAttribute(\"tabindex\", \"0\");\n\n\tvar inner = \"\";\n\tif (config.width)\n\t\tbox.style.width = config.width+(rules.isNumber(config.width)?\"px\":\"\");\n\tif (config.height)\n\t\tbox.style.height = config.height+(rules.isNumber(config.height)?\"px\":\"\");\n\tif (config.title)\n\t\tinner+=\"
\"+config.title+\"
\";\n\tinner+=\"
\"+(config.content?\"\":config.text)+\"
\";\n\tif (cancel)\n\t\tinner += button(config.cancel || i18n.message.cancel, false);\n\tif (ok)\n\t\tinner += button(config.ok || i18n.message.ok, true,\"confirm\");\n\tif (config.buttons && !ok && !cancel){\n\t\tfor (var i=0; i\";\n\tbox.innerHTML = inner;\n\n\tif (config.content){\n\t\tvar node = config.content;\n\t\tif (typeof node == \"string\") \n\t\t\tnode = document.getElementById(node);\n\t\tif (node.style.display == \"none\")\n\t\t\tnode.style.display = \"\";\n\t\tbox.childNodes[config.title?1:0].appendChild(node);\n\t}\n\n\tbox.onclick = function(e){\n\t\te = e ||window.event;\n\t\tvar source = e.target || e.srcElement;\n\t\tif (!source.className) source = source.parentNode;\n\t\tif (source.className.indexOf(\"webix_popup_button\")!=-1){\n\t\t\tvar result = source.getAttribute(\"result\");\n\t\t\tresult = (result == \"true\")||(result == \"false\"?false:result);\n\t\t\tcallback(config, result);\n\t\t}\n\t\te.cancelBubble = true;\n\t};\n\tconfig._box = box;\n\treturn box;\n}\n\nmodalbox.pull = {};\nmodalbox.order = [];\n\nfunction _createBox(config, ok, cancel){\n\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\n\n\tvar containerWidth = config.container ? config.container.offsetWidth : (window.innerWidth||document.documentElement.offsetWidth);\n\tvar containerHeight = config.container ? config.container.offsetHeight : (window.innerHeight||document.documentElement.offsetHeight);\n\n\tif(config.container)\n\t\tbox.style.position = \"absolute\";\n\n\ttoNode((config.container || document.body).appendChild(box));\n\tmodality(true, config.container);\n\n\tvar x = config.left||Math.abs(Math.floor((containerWidth - box.offsetWidth)/2));\n\tvar y = config.top||Math.abs(Math.floor((containerHeight - box.offsetHeight)/2));\n\tif (config.position == \"top\")\n\t\tbox.style.top = \"-3px\";\n\telse\n\t\tbox.style.top = y+\"px\";\n\tbox.style.left = x+\"px\";\n\t//necessary for IE only\n\tbox.onkeydown = modal_key;\n\n\tbox.focus();\n\n\tif (!config.id)\n\t\tconfig.id = _uid(\"modalbox\");\n\telse if(modalbox.pull[config.id]){\n\t\tmodalbox.hide(config.id);\n\t}\n\n\tmodalbox.order.push(config.id);\n\tmodalbox.pull[config.id] = config;\n\n\tconfig._promise = Promise.defer();\n\treturn config._promise;\n}\n\nfunction alertPopup(config){\n\treturn _createBox(config, true);\n}\nfunction confirmPopup(config){\n\treturn _createBox(config, true, true);\n}\nfunction boxPopup(config){\n\treturn _createBox(config);\n}\nfunction box_params(text, type, callback){\n\tif (typeof text != \"object\"){\n\t\tif (typeof type == \"function\"){\n\t\t\tcallback = type;\n\t\t\ttype = \"\";\n\t\t}\n\t\ttext = {text:text, type:type, callback:callback };\n\t}\n\treturn text;\n}\nfunction params(text, type, expire, id){\n\tif (typeof text != \"object\")\n\t\ttext = {text:text, type:type, expire:expire, id:id};\n\ttext.id = text.id||_uid(\"message\");\n\ttext.expire = text.expire||t.expire;\n\treturn text;\n}\nexport function alert(){\n\tvar text = box_params.apply(this, arguments);\n\ttext.type = text.type || \"alert\";\n\treturn alertPopup(text);\n}\nexport function confirm(){\n\tvar text = box_params.apply(this, arguments);\n\ttext.type = text.type || \"confirm\";\n\treturn confirmPopup(text);\n}\n\nexport function modalbox(){\n\tvar text = box_params.apply(this, arguments);\n\ttext.type = text.type || \"alert\";\n\treturn boxPopup(text);\n}\n\nmodalbox.hide = function(id){\n\tif(id && modalbox.pull[id]){\n\t\tvar node = modalbox.pull[id]._box;\n\t\tif(node){\n\t\t\tnode.parentNode.removeChild(node);\n\t\t\tmodalbox.order.splice(modalbox.order.indexOf(id), 1);\n\t\t\tmodality(false, modalbox.pull[id].container);\n\t\t\tdelete modalbox.pull[id];\n\t\t}\n\t}\n};\n\nmodalbox.hideAll = function(){\n\tfor (var id in modalbox.pull){\n\t\tthis.hide(id);\n\t}\n};\n\nexport function message(text, type, expire, id){ //eslint-disable-line\n\ttext = params.apply(this, arguments);\n\ttext.type = text.type||\"info\";\n\n\tvar subtype = text.type.split(\"-\")[0];\n\tswitch (subtype){\n\t\tcase \"alert\":\n\t\t\treturn alertPopup(text);\n\t\tcase \"confirm\":\n\t\t\treturn confirmPopup(text);\n\t\tcase \"modalbox\":\n\t\t\treturn boxPopup(text);\n\t\tdefault:\n\t\t\treturn info(text);\n\t}\n}\n\nvar t = message;\nt.expire = 4000;\nt.keyboard = true;\nt.position = \"top\";\nt.pull = {};\nt.timers = {};\n\nt.hideAll = function(){\n\tfor (var key in t.pull)\n\t\tt.hide(key);\n};\nt.hide = function(id){\n\tvar obj = t.pull[id];\n\tif (obj && obj.parentNode){\n\t\twindow.setTimeout(function(){\n\t\t\tobj.parentNode.removeChild(obj);\n\t\t\tobj = null;\n\t\t},2000);\n\t\t//styling for animation\n\t\tobj.style.height = 0;\n\t\tobj.className+=\" hidden\";\n\t\tt.area.removeAttribute(\"role\");\n\t\t\n\t\tif(t.timers[id])\n\t\t\twindow.clearTimeout(t.timers[id]);\n\t\tdelete t.pull[id];\n\t}\n};\n\n//override circualr dependencies\ndefine(\"message\", message);\nexport default modalbox;","import env from \"./env\";\n// Only IE8 doesn't support defineProperty\nif (env.isIE8){\n\t// Not really a polyfill, silence the esModule flag\n\tObject.defineProperty = function(obj, key, data){\n\t\tobj[key] = data.value;\n\t};\n}","const en = {\n\tgroupDelimiter:\",\",\n\tgroupSize:3,\n\tdecimalDelimiter:\".\",\n\tdecimalSize:2,\n\n\tdateFormat:\"%m/%d/%Y\",\n\ttimeFormat:\"%h:%i %A\",\n\tlongDateFormat:\"%d %F %Y\",\n\tfullDateFormat:\"%m/%d/%Y %h:%i %A\",\n\tam:[\"am\",\"AM\"],\n\tpm:[\"pm\",\"PM\"],\n\n\tprice:\"${obj}\",\n\tpriceSettings:{\n\t\tgroupDelimiter:\",\",\n\t\tgroupSize:3,\n\t\tdecimalDelimiter:\".\",\n\t\tdecimalSize:2\n\t},\n\tfileSize: [\"b\",\"Kb\",\"Mb\",\"Gb\",\"Tb\",\"Pb\",\"Eb\"],\n\t\n\tcalendar: {\n\t\tmonthFull:[\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tmonthShort:[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\tdayFull:[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\tdayShort:[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\thours: \"Hours\",\n\t\tminutes: \"Minutes\",\n\t\tdone:\"Done\",\n\t\tclear: \"Clear\",\n\t\ttoday: \"Today\"\n\t},\n\n\tdataExport:{\n\t\tpage:\"Page\",\n\t\tof:\"of\"\n\t},\n\tPDFviewer:{\n\t\tof:\"of\",\n\t\tautomaticZoom:\"Automatic Zoom\",\n\t\tactualSize:\"Actual Size\",\n\t\tpageFit:\"Page Fit\",\n\t\tpageWidth:\"Page Width\",\n\t\tpageHeight:\"Page Height\",\n\t\tenterPassword:\"Enter password\",\n\t\tpasswordError:\"Wrong password\"\n\t},\n\taria:{\n\t\tcalendar:\"Calendar\",\n\t\tincreaseValue:\"Increase value\",\n\t\tdecreaseValue:\"Decrease value\",\n\t\tnavMonth:[\"Previous month\", \"Next month\"],\n\t\tnavYear:[\"Previous year\", \"Next year\"],\n\t\tnavDecade:[\"Previous decade\", \"Next decade\"],\n\t\tdateFormat:\"%d %F %Y\",\n\t\tmonthFormat:\"%F %Y\",\n\t\tyearFormat:\"%Y\",\n\t\thourFormat:\"Hours: %h %A\",\n\t\tminuteFormat:\"Minutes: %i\",\n\t\tremoveItem:\"Remove item\",\n\t\tpages:[\"First page\", \"Previous page\", \"Next page\", \"Last page\"],\n\t\tpage:\"Page\",\n\t\theadermenu:\"Header menu\",\n\t\topenGroup:\"Open column group\",\n\t\tcloseGroup:\"Close column group\",\n\t\tcloseTab:\"Close tab\",\n\t\tshowTabs:\"Show more tabs\",\n\t\tresetTreeMap:\"Reset tree map\",\n\t\tnavTreeMap:\"Level up\",\n\t\tnextTab:\"Next tab\",\n\t\tprevTab:\"Previous tab\",\n\t\tmultitextSection:\"Add section\",\n\t\tmultitextextraSection:\"Remove section\",\n\t\tshowChart:\"Show chart\",\n\t\thideChart:\"Hide chart\",\n\t\tresizeChart:\"Resize chart\"\n\t},\n\trichtext:{\n\t\tunderline: \"Underline\",\n\t\tbold: \"Bold\",\n\t\titalic: \"Italic\"\n\t},\n\tcombo:{\n\t\tselect:\"Select\",\n\t\tselectAll:\"Select all\",\n\t\tunselectAll:\"Unselect all\"\n\t},\n\tmessage:{\n\t\tok:\"OK\",\n\t\tcancel:\"Cancel\"\n\t},\n\tcomments:{\n\t\tsend: \"Send\",\n\t\tconfirmMessage: \"The comment will be removed. Are you sure?\",\n\t\tedit: \"Edit\",\n\t\tremove: \"Remove\",\n\t\tplaceholder: \"Type here..\",\n\t\tmoreComments:\"More comments\"\n\t}\n};\n\nexport default en;","import env from \"../webix/env\";\nimport i18n from \"../webix/i18n\";\n\n\nconst wDate = {\n\tstartOnMonday:false,\n\n\ttoFixed:function(num, ms){\n\t\tif( num<10)\tnum = \"0\"+num;\n\t\tif( ms && num <100 ) num = \"0\"+num;\n\t\treturn num;\n\t},\n\tweekStart:function(date){\n\t\tdate = this.copy(date);\n\n\t\tvar shift=date.getDay();\n\t\tif (this.startOnMonday){\n\t\t\tif (shift===0) shift=6;\n\t\t\telse shift--;\n\t\t}\n\t\treturn this.datePart(this.add(date,-1*shift,\"day\"));\n\t},\n\tmonthStart:function(date){\n\t\tdate = this.copy(date);\n\n\t\tdate.setDate(1);\n\t\treturn this.datePart(date);\n\t},\n\tyearStart:function(date){\n\t\tdate = this.copy(date);\n\n\t\tdate.setMonth(0);\n\t\treturn this.monthStart(date);\n\t},\n\tdayStart:function(date){\n\t\treturn this.datePart(date, true);\n\t},\n\tdateToStr:function(format,utc){\n\t\tif (typeof format == \"function\") return format;\n\n\t\tif(env.strict){\n\t\t\treturn function(date){\n\t\t\t\tif (!date)\n\t\t\t\t\treturn \"\";\n\t\t\t\tif (!date.getMonth)\n\t\t\t\t\tdate = i18n.parseFormatDate(date);\n\n\t\t\t\tvar str = \"\";\n\t\t\t\tvar lastPos = 0;\n\t\t\t\tformat.replace(/%[a-zA-Z]/g,function(s,pos){\n\t\t\t\t\tstr += format.slice(lastPos,pos);\n\t\t\t\t\tvar fn = function(date){\n\t\t\t\t\t\tif( s == \"%d\") return wDate.toFixed(date.getDate());\n\t\t\t\t\t\tif( s == \"%m\") return wDate.toFixed((date.getMonth()+1));\n\t\t\t\t\t\tif( s == \"%j\") return date.getDate();\n\t\t\t\t\t\tif( s == \"%n\") return (date.getMonth()+1);\n\t\t\t\t\t\tif( s == \"%y\") return wDate.toFixed(date.getFullYear()%100);\n\t\t\t\t\t\tif( s == \"%Y\") return date.getFullYear();\n\t\t\t\t\t\tif( s == \"%D\") return i18n.calendar.dayShort[date.getDay()];\n\t\t\t\t\t\tif( s == \"%l\") return i18n.calendar.dayFull[date.getDay()];\n\t\t\t\t\t\tif( s == \"%M\") return i18n.calendar.monthShort[date.getMonth()];\n\t\t\t\t\t\tif( s == \"%F\") return i18n.calendar.monthFull[date.getMonth()];\n\t\t\t\t\t\tif( s == \"%h\") return wDate.toFixed((date.getHours()+11)%12+1);\n\t\t\t\t\t\tif( s == \"%g\") return ((date.getHours()+11)%12+1);\n\t\t\t\t\t\tif( s == \"%G\") return date.getHours();\n\t\t\t\t\t\tif( s == \"%H\") return wDate.toFixed(date.getHours());\n\t\t\t\t\t\tif( s == \"%i\") return wDate.toFixed(date.getMinutes());\n\t\t\t\t\t\tif( s == \"%a\") return (date.getHours()>11?i18n.pm[0]:i18n.am[0]);\n\t\t\t\t\t\tif( s == \"%A\") return (date.getHours()>11?i18n.pm[1]:i18n.am[1]);\n\t\t\t\t\t\tif( s == \"%s\") return wDate.toFixed(date.getSeconds());\n\t\t\t\t\t\tif( s == \"%S\")\treturn wDate.toFixed(date.getMilliseconds(), true);\n\t\t\t\t\t\tif( s == \"%W\") return wDate.toFixed(Date.getISOWeek(date));\n\t\t\t\t\t\tif( s == \"%c\"){\n\t\t\t\t\t\t\tvar str = date.getFullYear();\n\t\t\t\t\t\t\tstr += \"-\"+wDate.toFixed((date.getMonth()+1));\n\t\t\t\t\t\t\tstr += \"-\"+wDate.toFixed(date.getDate());\n\t\t\t\t\t\t\tstr += \"T\";\n\t\t\t\t\t\t\tstr += wDate.toFixed(date.getHours());\n\t\t\t\t\t\t\tstr += \":\"+wDate.toFixed(date.getMinutes());\n\t\t\t\t\t\t\tstr += \":\"+wDate.toFixed(date.getSeconds());\n\t\t\t\t\t\t\treturn str;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn s;\n\t\t\t\t\t};\n\t\t\t\t\tstr += fn(date);\n\t\t\t\t\tlastPos = pos + 2;\n\t\t\t\t});\n\t\t\t\tstr += format.slice(lastPos,format.length);\n\t\t\t\treturn str;\n\t\t\t};\n\n\t\t}\n\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\n\t\t\tswitch(a){\n\t\t\t\tcase \"%d\": return \"\\\"+wDate.toFixed(date.getDate())+\\\"\";\n\t\t\t\tcase \"%m\": return \"\\\"+wDate.toFixed((date.getMonth()+1))+\\\"\";\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\n\t\t\t\tcase \"%y\": return \"\\\"+wDate.toFixed(date.getFullYear()%100)+\\\"\"; \n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\n\t\t\t\tcase \"%D\": return \"\\\"+i18n.calendar.dayShort[date.getDay()]+\\\"\";\n\t\t\t\tcase \"%l\": return \"\\\"+i18n.calendar.dayFull[date.getDay()]+\\\"\";\n\t\t\t\tcase \"%M\": return \"\\\"+i18n.calendar.monthShort[date.getMonth()]+\\\"\";\n\t\t\t\tcase \"%F\": return \"\\\"+i18n.calendar.monthFull[date.getMonth()]+\\\"\";\n\t\t\t\tcase \"%h\": return \"\\\"+wDate.toFixed((date.getHours()+11)%12+1)+\\\"\";\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\n\t\t\t\tcase \"%H\": return \"\\\"+wDate.toFixed(date.getHours())+\\\"\";\n\t\t\t\tcase \"%i\": return \"\\\"+wDate.toFixed(date.getMinutes())+\\\"\";\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?i18n.pm[0]:i18n.am[0])+\\\"\";\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?i18n.pm[1]:i18n.am[1])+\\\"\";\n\t\t\t\tcase \"%s\": return \"\\\"+wDate.toFixed(date.getSeconds())+\\\"\";\n\t\t\t\tcase \"%S\": return \"\\\"+wDate.toFixed(date.getMilliseconds(), true)+\\\"\";\n\t\t\t\tcase \"%W\": return \"\\\"+wDate.toFixed(wDate.getISOWeek(date))+\\\"\";\n\t\t\t\tcase \"%c\":\n\t\t\t\t\tvar str = \"\\\"+date.getFullYear()+\\\"\";\n\t\t\t\t\tstr += \"-\\\"+wDate.toFixed((date.getMonth()+1))+\\\"\";\n\t\t\t\t\tstr += \"-\\\"+wDate.toFixed(date.getDate())+\\\"\";\n\t\t\t\t\tstr += \"T\";\n\t\t\t\t\tstr += \"\\\"+wDate.toFixed(date.getHours())+\\\"\";\n\t\t\t\t\tstr += \":\\\"+wDate.toFixed(date.getMinutes())+\\\"\";\n\t\t\t\t\tstr += \":\\\"+wDate.toFixed(date.getSeconds())+\\\"\";\n\t\t\t\t\tif(utc === true)\n\t\t\t\t\t\tstr += \"Z\";\n\t\t\t\t\treturn str;\n\n\t\t\t\tdefault: return a;\n\t\t\t}\n\t\t});\n\t\tif (utc===true) format=format.replace(/date\\.get/g,\"date.getUTC\");\n\t\tconst temp = new Function(\"date\", \"i18n\", \"wDate\", \"if (!date) return ''; if (!date.getMonth) date=i18n.parseFormatDate(date); return \\\"\"+format+\"\\\";\");\n\t\treturn function(v){ return temp(v, i18n, wDate); };\n\t},\n\tstrToDate:function(format,utc){\n\t\tif (typeof format == \"function\") return format;\n\n\t\tvar mask=format.match(/%[a-zA-Z]/g);\n\t\tvar splt=\"var temp=date.split(/[^0-9a-zA-Z]+/g);\";\n\t\tvar i,t,s;\n\n\t\tif(!i18n.calendar.monthShort_hash){\n\t\t\ts = i18n.calendar.monthShort;\n\t\t\tt = i18n.calendar.monthShort_hash = {};\n\t\t\tfor (i = 0; i < s.length; i++)\n\t\t\t\tt[s[i]]=i;\n\n\t\t\ts = i18n.calendar.monthFull;\n\t\t\tt = i18n.calendar.monthFull_hash = {};\n\t\t\tfor (i = 0; i < s.length; i++)\n\t\t\t\tt[s[i]]=i;\n\t\t}\n\n\t\tif(env.strict){\n\t\t\treturn function(date){\n\t\t\t\tif (!date) return \"\";\n\t\t\t\tif (typeof date == \"object\") return date;\n\t\t\t\tvar temp=date.split(/[^0-9a-zA-Z]+/g);\n\t\t\t\tvar set=[0,0,1,0,0,0,0];\n\t\t\t\tfor (i=0; i30?1900:2000);\n\t\t\t\t\telse if( a == \"%Y\"){\n\t\t\t\t\t\tset[0]=(temp[i]||0)*1; if (set[0]<30) set[0]+=2000;\n\t\t\t\t\t}\n\t\t\t\t\telse if( a == \"%n\" || a == \"%m\")\n\t\t\t\t\t\tset[1]=(temp[i]||1)-1;\n\t\t\t\t\telse if( a == \"%M\")\n\t\t\t\t\t\tset[1]=i18n.calendar.monthShort_hash[temp[i]]||0;\n\t\t\t\t\telse if( a == \"%F\")\n\t\t\t\t\t\tset[1]=i18n.calendar.monthFull_hash[temp[i]]||0;\n\t\t\t\t\telse if( a == \"%j\" || a == \"%d\")\n\t\t\t\t\t\tset[2]=temp[i]||1;\n\t\t\t\t\telse if( a == \"%g\" || a == \"%G\" || a == \"%h\" || a == \"%H\")\n\t\t\t\t\t\tset[3]=temp[i]||0;\n\t\t\t\t\telse if( a == \"%a\")\n\t\t\t\t\t\tset[3]=set[3]%12+((temp[i]||\"\")==i18n.am[0]?0:12);\n\t\t\t\t\telse if( a == \"%A\")\n\t\t\t\t\t\tset[3]=set[3]%12+((temp[i]||\"\")==i18n.am[1]?0:12);\n\t\t\t\t\telse if( a == \"%i\")\n\t\t\t\t\t\tset[4]=temp[i]||0;\n\t\t\t\t\telse if( a == \"%s\")\n\t\t\t\t\t\tset[5]=temp[i]||0;\n\t\t\t\t\telse if( a == \"%S\")\n\t\t\t\t\t\tset[6]=temp[i]||0;\n\t\t\t\t\telse if( a == \"%c\"){\n\t\t\t\t\t\tvar reg = /(\\d+)-(\\d+)-(\\d+)T(\\d+):(\\d+):(\\d+)(\\+.*|)/g;\n\t\t\t\t\t\tvar res = reg.exec(date);\n\t\t\t\t\t\tset[0]= (res[1]||0)*1; if (set[0]<30) set[0]+=2000;\n\t\t\t\t\t\tset[1]= (res[2]||1)-1;\n\t\t\t\t\t\tset[2]= res[3]||1;\n\t\t\t\t\t\tset[3]= res[4]||0;\n\t\t\t\t\t\tset[4]= res[5]||0;\n\t\t\t\t\t\tset[5]= res[6]||0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(utc)\n\t\t\t\t\treturn new Date(Date.UTC(set[0],set[1],set[2],set[3],set[4],set[5], set[6]));\n\t\t\t\treturn new Date(set[0],set[1],set[2],set[3],set[4],set[5], set[6]);\n\t\t\t};\n\t\t}\n\n\t\tfor (i=0; i30?1900:2000);\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%g\":\n\t\t\t\tcase \"%G\":\n\t\t\t\tcase \"%h\": \n\t\t\t\tcase \"%H\":\n\t\t\t\t\tsplt+=\"set[3]=temp[\"+i+\"]||0;\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%i\":\n\t\t\t\t\tsplt+=\"set[4]=temp[\"+i+\"]||0;\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%Y\": splt+=\"set[0]=(temp[\"+i+\"]||0)*1; if (set[0]<30) set[0]+=2000;\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%a\":\n\t\t\t\t\tsplt+= \"set[3]=set[3]%12+(temp[\"+i+\"]==i18n.am[0]?0:12);\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%A\":\n\t\t\t\t\tsplt+= \"set[3]=set[3]%12+(temp[\"+i+\"]==i18n.am[1]?0:12);\";\n\t\t\t\t\tbreak;\t\t\t\t\t\n\t\t\t\tcase \"%s\": splt+=\"set[5]=temp[\"+i+\"]||0;\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%S\": splt+=\"set[6]=temp[\"+i+\"]||0;\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%M\": splt+=\"set[1]=i18n.calendar.monthShort_hash[temp[\"+i+\"]]||0;\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%F\": splt+=\"set[1]=i18n.calendar.monthFull_hash[temp[\"+i+\"]]||0;\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%c\":\n\t\t\t\t\tsplt+= \"var res = date.split('T');\";\n\t\t\t\t\tsplt+= \"if(res[0]){ var d = res[0].split('-');\";\n\t\t\t\t\tsplt+= \"set[0]= (d[0]||0)*1; if (set[0]<30) set[0]+=2000;\";\n\t\t\t\t\tsplt+= \"set[1]= (d[1]||1)-1;\";\n\t\t\t\t\tsplt+= \"set[2]= d[2]||1;}\";\n\t\t\t\t\tsplt+= \"if(res[1]){ var t = res[1].split(':');\";\n\t\t\t\t\tsplt+= \"set[3]= t[0]||0;\";\n\t\t\t\t\tsplt+= \"set[4]= t[1]||0;\";\n\t\t\t\t\tsplt+= \"set[5]= parseInt(t[2])||0;}\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar code =\"set[0],set[1],set[2],set[3],set[4],set[5], set[6]\";\n\t\tif (utc) code =\" Date.UTC(\"+code+\")\";\n\t\tconst temp = new Function(\"date\", \"i18n\", \"if (!date) return ''; if (typeof date == 'object') return date; var set=[0,0,1,0,0,0,0]; \"+splt+\" return new Date(\"+code+\");\");\n\t\treturn function(v){ return temp(v, i18n ); };\n\t},\n\t\t\n\tgetISOWeek: function(ndate) {\n\t\tif(!ndate) return false;\n\t\tvar nday = ndate.getDay();\n\t\tif (nday === 0) {\n\t\t\tnday = 7;\n\t\t}\n\t\tvar first_thursday = new Date(ndate.valueOf());\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\n\t\tvar ordinal_date = Math.floor( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\n\t\tvar weekNumber = 1 + Math.floor( ordinal_date / 7);\t\n\t\treturn weekNumber;\n\t},\n\t\n\tgetUTCISOWeek: function(ndate){\n\t\treturn this.getISOWeek(ndate);\n\t},\n\t_correctDate: function(d,d0,inc,checkFunc){\n\t\tif(!inc)\n\t\t\treturn;\n\t\tvar incorrect = checkFunc(d,d0);\n\t\tif(incorrect){\n\t\t\tvar i = (inc>0?1:-1);\n\n\t\t\twhile(incorrect){\n\t\t\t\td.setHours(d.getHours()+i);\n\t\t\t\tincorrect = checkFunc(d,d0);\n\t\t\t\ti += (inc>0?1:-1);\n\t\t\t}\n\t\t}\n\t},\n\tadd:function(date,inc,mode,copy){\n\t\tif (copy) date = this.copy(date);\n\t\tvar d = wDate.copy(date);\n\t\tswitch(mode){\n\t\t\tcase \"day\":\n\t\t\t\tdate.setDate(date.getDate()+inc);\n\t\t\t\tthis._correctDate(date,d,inc,function(d,d0){\n\t\t\t\t\treturn \twDate.datePart(d0,true).valueOf()== wDate.datePart(d,true).valueOf();\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"week\":\n\t\t\t\tdate.setDate(date.getDate()+7*inc);\n\t\t\t\tthis._correctDate(date,d,7*inc,function(d,d0){\n\t\t\t\t\treturn \twDate.datePart(d0,true).valueOf()== wDate.datePart(d,true).valueOf();\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"month\":\n\t\t\t\tdate.setMonth(date.getMonth()+inc);\n\t\t\t\tthis._correctDate(date,d,inc,function(d,d0){\n\t\t\t\t\treturn \td0.getMonth() == d.getMonth() && d0.getYear() == d.getYear();\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"year\":\n\t\t\t\tdate.setYear(date.getFullYear()+inc);\n\t\t\t\tthis._correctDate(date,d,inc,function(d,d0){\n\t\t\t\t\treturn \td0.getFullYear() == d.getFullYear();\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"hour\":\n\t\t\t\tdate.setHours(date.getHours()+inc);\n\t\t\t\tthis._correctDate(date,d,inc,function(d,d0){\n\t\t\t\t\treturn \td0.getHours() == d.getHours() && Date.datePart(d0,true)== Date.datePart(d,true);\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"minute\": \tdate.setMinutes(date.getMinutes()+inc); break;\n\t\t\tdefault:\n\t\t\t\twDate.add[mode](date, inc, mode);\n\t\t\t\tbreak;\n\t\t}\n\t\treturn date;\n\t},\n\tdatePart:function(date, copy){\n\t\tif (copy) date = this.copy(date);\n\n\t\t// workaround for non-existent hours\n\t\tvar d = this.copy(date);\n\t\td.setHours(0);\n\t\tif(d.getDate()!=date.getDate()){\n\t\t\tdate.setHours(1);\n\t\t}\n\t\telse{\n\t\t\tdate.setHours(0);\n\t\t}\n\n\t\tdate.setMinutes(0);\n\t\tdate.setSeconds(0);\n\t\tdate.setMilliseconds(0);\n\t\treturn date;\n\t},\n\ttimePart:function(date, copy){\n\t\tif (copy) date = this.copy(date);\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\n\t},\n\tcopy:function(date){\n\t\treturn new Date(date.valueOf());\n\t},\n\tequal:function(a,b){\n\t\tif (!a || !b) return false;\n\t\treturn a.valueOf() === b.valueOf();\n\t},\n\tisHoliday:function(day){ \n\t\tday = day.getDay();\n\t\tif (day === 0 || day==6) return \"webix_cal_event\"; \n\t}\n};\n\nexport default wDate;","import i18n from \"../webix/i18n\";\n\nconst Number={\n\tgetConfig: function(value){\n\t\tvar config = {\n\t\t\tdecimalSize:0,\n\t\t\tgroupSize:999,\n\t\t\tprefix:\"\",\n\t\t\tsufix:\"\"\n\t\t};\n\t\tvar parts = value.split(/[0-9].*[0-9]/g);\n\t\tif (parts[0].length)\n\t\t\tconfig.prefix = parts[0];\n\t\tif (parts[1].length)\n\t\t\tconfig.sufix = parts[1];\n\t\tif (config.prefix || config.sufix){\n\t\t\tvalue = value.substr(config.prefix.length, value.length - config.prefix.length - config.sufix.length);\n\t\t}\n\n\t\tvar num = value.indexOf(\"1\");\n\t\tif (num > 0){\n\t\t\tconfig.prefix = value.substr(0, num);\n\t\t\tvalue = value.substr(num);\n\t\t}\n\n\t\tvar dot = value.indexOf(\"0\");\n\t\tif (dot > 0){\n\t\t\tconfig.decimalSize = value.length - dot;\n\t\t\tconfig.decimalDelimiter = value[dot-1];\n\t\t\tvalue = value.substr(0, dot-1);\n\t\t}\n\t\tvar sep = value.match(/[^0-9]/);\n\t\tif (sep){\n\t\t\tconfig.groupSize = value.length - sep.index - 1;\n\t\t\tconfig.groupDelimiter = value[sep.index];\n\t\t}\n\t\treturn config;\n\t},\n\tparse:function(value, config){\n\t\tif (!value || typeof value !== \"string\")\n\t\t\treturn value;\n\n\t\tif (config.prefix)\n\t\t\tvalue = value.toLowerCase().replace(config.prefix.toLowerCase() || \"\", \"\");\n\t\tif (config.sufix)\n\t\t\tvalue = value.toLowerCase().replace(config.sufix.toLowerCase() || \"\", \"\");\n\n\t\tvar decimal = \"\";\n\t\tif (config.decimalDelimiter){\n\t\t\tvar ind = value.indexOf(config.decimalDelimiter);\n\t\t\tif (ind > -1){\n\t\t\t\tdecimal = value.substr(ind+1).replace(/[^0-9]/g, \"\");\n\t\t\t\tdecimal = decimal.substr(0, Math.min(decimal.length, config.decimalSize));\n\t\t\t\tvalue = value.substr(0, ind);\n\t\t\t}\n\t\t}\n\n\t\tvar sign = value[0] === \"-\" ? -1 : 1;\n\t\tvalue = value.replace(/[^0-9]/g, \"\");\n\t\tif (!value)\n\t\t\tvalue = \"0\";\n\n\t\tif (decimal)\n\t\t\tvalue += \".\"+decimal;\n\n\t\treturn parseFloat(value)*sign;\n\t},\n\tformat: function(value, config){ \n\t\tif (value === \"\" || typeof value === \"undefined\") return value;\n\t\t\n\t\tconfig = config||i18n;\n\t\tvalue = parseFloat(value);\n\n\t\tvar sign = value < 0 ? \"-\":\"\";\n\t\tvalue = Math.abs(value);\n\n\t\tif (!config.decimalOptional)\n\t\t\tvalue = value.toFixed(config.decimalSize);\n\n\t\tvar str = value.toString();\n\t\tstr = str.split(\".\");\n\n\t\tvar int_value = \"\";\n\t\tif (config.groupSize){\n\t\t\tvar step = config.groupSize;\n\t\t\tvar i=str[0].length;\n\t\t\tdo {\n\t\t\t\ti-=step;\n\t\t\t\tvar chunk = (i>0)?str[0].substr(i,step):str[0].substr(0,step+i);\n\t\t\t\tint_value = chunk+(int_value?config.groupDelimiter+int_value:\"\");\n\t\t\t} while(i>0);\n\t\t} else\n\t\t\tint_value = str[0];\n\n\t\tif (config.decimalSize)\n\t\t\tstr = sign + int_value + (str[1] ? (config.decimalDelimiter + str[1]) : \"\");\n\t\telse\n\t\t\tstr = sign + int_value;\n\n\t\tif (config.prefix || config.sufix){\n\t\t\treturn config.prefix + str + config.sufix;\n\t\t} else \n\t\t\treturn str;\n\t},\n\tnumToStr:function(config){\n\t\treturn function(value){\n\t\t\treturn Number.format(value, config);\n\t\t};\n\t}\n};\n\nexport default Number;","import en from \"../i18n/en\";\nimport i18n from \"./i18n\";\n\nimport wDate from \"../core/date\";\nimport Number from \"../core/number\";\n\nimport {copy, isArray} from \"../webix/helpers\";\nimport template from \"./template\";\n\n\nfunction extend(base,source){\n\tfor (var method in source){\n\t\tif(typeof(source[method]) == \"object\" && !isArray(source[method])){\n\t\t\tif(!base[method]){\n\t\t\t\tbase[method] = {};\n\t\t\t}\n\t\t\textend(base[method],source[method]);\n\t\t}\n\t\telse\n\t\t\tbase[method] = source[method];\n\t}\n}\n\nconst helpers = [\"fullDateFormat\", \"timeFormat\", \"dateFormat\", \"longDateFormat\", \"parseFormat\", \"parseTimeFormat\"];\n\ni18n.setLocale = function(locale){\n\tif (typeof locale == \"string\")\n\t\tlocale = i18n.locales[locale];\n\tif (locale){\n\t\tlocale.priceSettings = copy(locale.priceSettings || locale);\n\t\textend(i18n, locale);\n\t}\n\tfor( var i=0; i 1 ){\n\t\t\t\t\tcookie_value = unescape( a_temp_cookie[1].replace(/^\\s+|\\s+$/g, \"\") );\n\t\t\t\t}\n\t\t\t\t// note that in cases where cookie is initialized but no value, null is returned\n\t\t\t\treturn cookie_value;\n\t\t\t}\n\t\t\ta_temp_cookie = null;\n\t\t\tcookie_name = \"\";\n\t\t}\n\t\tif ( !b_cookie_found ){\n\t\t\treturn null;\n\t\t}\n\t\treturn null;\n\t},\n\tget:function(name){\n\t\tif(name && window.JSON){\n\t\t\tvar json = this.getRaw(name);\n\t\t\tif(!json)\n\t\t\t\treturn null;\n\t\t\treturn DataDriver.json.toObject(unescape(json));\n\t\t}else\n\t\t\treturn null;\n\t},\n\tremove:function(name, domain){\n\t\tif(name && this.getRaw(name)) \n\t\t\tdocument.cookie = name + \"=\" + (( domain ) ? \";domain=\" + domain : \"\") + \";expires=Thu, 01-Jan-1970 00:00:01 GMT\";\n\t},\n\tclear:function(domain){\n\t\tvar cookies = document.cookie.split(\";\");\n\t\tfor (var i = 0; i < cookies.length; i++)\n\t\t\tdocument.cookie = /^[^=]+/.exec(cookies[i])[0] + \"=\" + (( domain ) ? \";domain=\" + domain : \"\") + \";expires=Thu, 01-Jan-1970 00:00:01 GMT\";\t\t\n\t}\n};\n\nexport default storage;","import {addCss, addStyle, removeCss, removeStyle, remove, insertBefore, create} from \"../webix/html\";\nimport env from \"../webix/env\";\nimport {$$} from \"../ui/core\";\nimport {assert} from \"../webix/debug\";\n\n\nenv.printPPI = 96;\nenv.printMargin = 0.75*env.printPPI;\n\nvar margin = env.printMargin;\nvar papers = { \"a4\":\"A4\", \"a3\":\"A3\", \"letter\":\"letter\"};\nvar fits = { page:true, data:true};\nvar modes = { portrait:true, landscape:true};\n\nvar sizes = {//inches, real size is value*ppi\n\t\"A3\": { width: 11.7, height: 16.5 },\n\t\"A4\": { width: 8.27, height:11.7 },\n\t\"letter\": { width: 8.5, height:11 }\n};\n\nconst print = function(id, options){\n\n\tvar view = $$(id);\n\tif (view && view.$printView)\n\t\tview = view.$printView();\n\n\tassert(view, \"non-existing view for printing\");\n\tif(!view) return;\n\n\tif(view.callEvent)\n\t\tview.callEvent(\"onBeforePrint\", [options]);\n\n\toptions = _checkOptions(options);\n\t_beforePrint(options);\n\n\t//try widget's custom logic first, sometimes it may deny \n\tif(!view.$customPrint || view.$customPrint(options) === true) \n\t\t_print(view, options);\n\n\t_afterPrint(options);\n};\n\n/*processing print options*/\nfunction _checkOptions(options){\n\t\n\toptions = options || {};\n\toptions.paper = papers[(options.paper || \"\").toLowerCase()] || \"A4\";\n\toptions.mode = modes[options.mode] ? options.mode : \"portrait\";\n\toptions.fit = fits[options.fit] ? options.fit: \"page\";\n\toptions.scroll = options.scroll || false;\n\toptions.size = sizes[options.paper];\n\n\toptions.margin = (options.margin || options.margin === 0) ? options.margin : {};\n\tmargin = isNaN(options.margin*1) ? margin : options.margin;\n\toptions.margin = {\n\t\ttop:(options.margin.top || options.margin.top === 0) ? options.margin.top: margin, \n\t\tbottom:(options.margin.bottom || options.margin.bottom === 0) ? options.margin.bottom: margin, \n\t\tright:(options.margin.right || options.margin.right === 0) ? options.margin.right: margin, \n\t\tleft:(options.margin.left || options.margin.left === 0) ? options.margin.left: margin\n\t};\n\n\treturn options;\n}\n\n/*preparing printing environment*/\nfunction _beforePrint(options){\n\taddCss(document.body,\"webix_print\");\n\n\tif(options.docHeader) _getHeaderFooter(\"Header\", options);\n\tif(options.docFooter) _getHeaderFooter(\"Footer\", options);\n\n\t/* static print styles are located at 'css/print.less'*/\n\tvar cssString = \"@media print { \"+\n\t\t\"@page{ size:\"+options.paper+\" \"+options.mode+\";\"+\n\t\t\t\"margin-top:\"+options.margin.top+\"px;margin-bottom:\"+options.margin.bottom+\n\t\t\t\"px;margin-right:\"+options.margin.right+\"px;margin-left:\"+options.margin.left+\n\t\t\"px;}\"+\n\t\"}\";\n\taddStyle(cssString, \"print\");\n}\n\n/*cleaning environment*/\nfunction _afterPrint(options){\n\tremoveCss(document.body, \"webix_print\");\n\tremoveStyle(\"print\");\n\n\tif(options.docHeader) remove(options.docHeader);\n\tif(options.docFooter) remove(options.docFooter);\n}\n\n/*common print actions */\nfunction _print(view, options){\n\tvar doc = view.$view.cloneNode(true);\n\n\t//copy data from all canvases\n\tvar canvases = view.$view.getElementsByTagName(\"canvas\");\n\tif(canvases.length)\n\t\tfor(var i = canvases.length-1; i >=0; i--){\n\t\t\tvar destCtx = doc.getElementsByTagName(\"canvas\")[i].getContext(\"2d\");\n\t\t\tdestCtx.drawImage(canvases[i], 0, 0);\n\t\t}\n\n\tinsertBefore(doc, options.docFooter, document.body);\n\n\taddCss(doc,\"webix_ui_print\");\n\tif(!options.scroll && ((view._dataobj && view.data && view.data.pull) || view.getBody))\n\t\taddCss(doc, \"webix_print_noscroll\");\n\n\twindow.print();\n\n\tremove(doc);\n}\n/*custom header nad footer*/\nfunction _getHeaderFooter(group, options){\n\tvar header = create(\"div\", { \n\t\t\"class\":\"webix_view webix_print_\"+group.toLowerCase(),\n\t\t\"style\":\"height:0px;visibility:hidden;\"\n\t}, options[\"doc\"+group]);\n\n\tif(group ===\"Header\")\n\t\tinsertBefore(header, document.body.firstChild);\n\telse\n\t\tdocument.body.appendChild(header);\n\n\toptions[\"doc\"+group] = header;\n}\n\nexport default print;","const patterns = {\n\tphone:{ mask:\"+# (###) ###-####\", allow:/[0-9]/g },\n\tcard: { mask:\"#### #### #### ####\", allow:/[0-9]/g },\n\tdate: { mask:\"####-##-## ##:##\", allow:/[0-9]/g }\n};\n\nexport default patterns;","import {ui, $$} from \"../ui/core\";\nimport {isUndefined} from \"../webix/helpers\";\nimport {create} from \"../webix/html\";\nimport {assert} from \"../webix/debug\";\n\nconst fullscreen = {\n\tset:function(view, config){\n\t\tconfig = config || {};\n\n\t\tif(this._view)\n\t\t\tthis.exit();\n\n\t\tif($$(view))\n\t\t\tview = $$(view);\n\t\telse{\n\t\t\tif(typeof view == \"string\")\n\t\t\t\tview = document.getElementById(view);\n\t\t\tif(view instanceof Element)\n\t\t\t\tview = {$view: view, $html: true};\n\t\t\tassert(view, \"Incorrect view for fullscreen mode\");\n\t\t}\n\n\t\tthis._view = view;\n\n\t\tconst viewConfig = view.config;\n\t\tif(view.setPosition){\n\t\t\tthis._pos = {left: view.config.left, top: view.config.top};\n\t\t\tview.setPosition(0,0);\n\t\t\tviewConfig.fullscreen = true;\n\t\t\tview.resize();\n\t\t}\n\t\telse{\n\t\t\tthis._fullscreen = ui({\n\t\t\t\tview:\"window\",\n\t\t\t\thead: this._getHeadConfig(config),\n\t\t\t\tfullscreen:true,\n\t\t\t\t//better resize logic\n\t\t\t\tbody:{rows:[]}\n\t\t\t});\n\n\t\t\tif(viewConfig)\n\t\t\t\tthis._sizes = {\n\t\t\t\t\twidth: viewConfig.width, minWidth: viewConfig.minWidth, maxWidth: viewConfig.maxWidth,\n\t\t\t\t\theight: viewConfig.height, minHeight: viewConfig.minHeight, maxHeight: viewConfig.maxHeight\n\t\t\t\t};\n\n\t\t\tif(view.getParentView && view.getParentView()){\n\t\t\t\tthis._parent = view.getParentView();\n\n\t\t\t\tif(this._parent.index)\n\t\t\t\t\tthis._pos = {\n\t\t\t\t\t\tindex: this._parent.index(view),\n\t\t\t\t\t\tactive: (this._parent.getActiveId ? this._parent.getActiveId() == viewConfig.id : false)\n\t\t\t\t\t};\n\t\t\t}\n\t\t\telse{\n\t\t\t\tthis._parent = view.$view.parentNode;\n\t\t\t\tthis._pos = create(\"div\");\n\n\t\t\t\t//save old position\n\t\t\t\tthis._parent.replaceChild(this._pos, view.$view);\n\t\t\t}\n\n\t\t\tthis._fullscreen.getBody().addView(view.$html ? {view:\"template\", content:view.$view, css:\"webix_fullscreen_html\"} : view);\n\n\t\t\tthis._fullscreen.show();\n\t\t\tthis._setSizes(view);\n\t\t}\n\t},\n\texit:function(){\n\t\tif(this._view){\n\t\t\tconst viewConfig = this._view.config;\n\t\t\tif(this._view.setPosition){\n\t\t\t\tviewConfig.fullscreen = false;\n\t\t\t\tthis._view.setPosition(this._pos.left, this._pos.top);\n\t\t\t\tthis._view.resize();\n\t\t\t}\n\t\t\telse{\n\t\t\t\tif(this._parent instanceof Element){\n\t\t\t\t\tthis._view._parent_cell = null;\n\t\t\t\t\tif(this._view._set_inner)\n\t\t\t\t\t\tthis._view._set_inner(this._view.config);\n\t\t\t\t\tthis._parent.replaceChild(this._view.$view, this._pos);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tif(!isUndefined(this._pos)){\n\t\t\t\t\t\tthis._parent.addView(this._view, this._pos.index);\n\t\t\t\t\t\tif(this._pos.active)\n\t\t\t\t\t\t\tthis._view.show(false, false);\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tthis._view._parent_cell = this._parent;\n\t\t\t\t\t\tthis._parent._replace(this._view);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._setSizes(this._view, this._sizes);\n\n\t\t\t\t//prevent view destruction (with layout)\n\t\t\t\tif(!this._view.$html)\n\t\t\t\t\tthis._fullscreen.getBody()._cells = [];\n\n\t\t\t\t//we can't set head false with replace, so we need to close win\n\t\t\t\tthis._fullscreen.close();\n\t\t\t}\n\t\t\tthis._clearValues();\n\t\t}\n\t},\n\t_clearValues:function(){\n\t\tdelete this._parent;\n\t\tdelete this._view;\n\t\tdelete this._sizes;\n\t\tdelete this._pos;\n\t},\n\t_setSizes:function(view, sizes){\n\t\tif(!view.$html){\n\t\t\tsizes = sizes || {height:0, minHeight:0, maxHeight:0, width:0, minWidth:0, maxWidth:0};\n\t\t\tview.define(sizes);\n\t\t\tview.resize();\n\t\t}\n\t},\n\t_getHeadConfig:function(config){\n\t\tif(config.head === false || typeof config.head == \"object\")\n\t\t\treturn config.head;\n\t\telse{\n\t\t\treturn {\n\t\t\t\tcols:[\n\t\t\t\t\t{template:config.head||\"\", type:\"header\", borderless:true},\n\t\t\t\t\t{view:\"icon\", icon:\"wxi-close\", click:()=>{\n\t\t\t\t\t\tthis.exit();\n\t\t\t\t\t}}\n\t\t\t\t]\n\t\t\t};\n\t\t}\n\t}\n};\n\nexport default fullscreen;","/*\n\tCommon helpers\n*/\n\nexport * from \"./consts\";\nexport * from \"./helpers\";\nexport * from \"./htmlevents\";\nexport * from \"./customevents\";\nexport * from \"./stringify\";\nexport * from \"./export\";\nexport * from \"./message\";\nexport * from \"./api\";\nexport * from \"./init\";\n\nimport \"./ie8\";\n\n/*\n\tNext two ugly blocks are here for IE8 compatibility\n\trollup converts \"import * as\" to Object.freeze which doesn't work in IE8\n\n\tfor modern browsers it can be replaced with \n*/\n\n//\timport * as html from \"./html\";\nimport { denySelect, allowSelect, index, createCss, addStyle, removeStyle, create, getValue, remove, insertBefore, locate, offset, posRelative, pos, preventEvent, stopEvent, triggerEvent, addCss, removeCss, getTextSize, download, _getClassName, setSelectionRange, getSelectionRange, addMeta } from \"./html\";\nconst html = { denySelect, allowSelect, index, createCss, addStyle, removeStyle, create, getValue, remove, insertBefore, locate, offset, posRelative, pos, preventEvent, stopEvent, triggerEvent, addCss, removeCss, getTextSize, download, _getClassName, setSelectionRange, getSelectionRange, addMeta };\nexport { html };\n\n//\timport * as skin from \"./skin\";\nexport { skin } from \"./skin\";\n\nexport {debug} from \"./debug\";\n\nexport {default as i18n} from \"./locale\";\nexport {default as ready} from \"./ready\";\nexport {default as env} from \"./env\";\nexport {default as color} from \"./color\";\nexport {default as csv} from \"./csv\";\nexport {default as clipbuffer} from \"./clipbuffer\";\nexport {default as storage} from \"./storage\";\nexport {default as template} from \"./template\";\nexport {default as type} from \"./type\";\nexport {default as editors} from \"./editors\";\nexport {default as animate} from \"./animate\";\nexport {default as print} from \"./print\";\nexport {default as rules} from \"./rules\";\nexport {default as patterns} from \"./patterns\";\nexport {default as fullscreen} from \"./fullscreen\";","import {ajax} from \"../load/ajax\";\nimport promise from \"../thirdparty/promiz\";\nimport {bind} from \"../webix/helpers\";\nimport {callEvent} from \"../webix/customevents\";\n\n\nvar error_key = \"__webix_remote_error\";\n\nfunction RemoteContext(url, config){\n\tthis._proxy = {};\n\tthis._queue = [];\n\tthis._url = url;\n\tthis._key = \"\";\n\n\tif (config)\n\t\tthis._process(config);\n\telse\n\t\tthis._ready = ajax(url)\n\t\t\t.then(function(data){\n\t\t\t\treturn data.text();\n\t\t\t})\n\t\t\t.then(bind(function(text){\n\t\t\t\ttext = text.split(\"/*api*/\")[1];\n\t\t\t\tthis._process(JSON.parse(text));\n\t\t\t\treturn this._proxy;\n\t\t\t}, this));\n}\nRemoteContext.prototype = {\n\t_process:function(config){\n\t\tif (config.$key)\n\t\t\tthis._key = config.$key;\n\t\tif (config.$vars)\n\t\t\tfor (var key in config.$vars)\n\t\t\t\tthis._proxy[key] = config.$vars[key];\n\n\t\tthis._parse(config, this._proxy, \"\");\n\t},\n\t_parse:function(api, obj, prefix){\n\t\tfor (var key in api){\n\t\t\tif (key === \"$key\" || key === \"$vars\") continue;\n\t\t\tvar val = api[key];\n\t\t\tif (typeof val == \"object\"){\n\t\t\t\tvar sub = obj[key] = {};\n\t\t\t\tthis._parse(val, sub, prefix+key+\".\");\n\t\t\t} else\n\t\t\t\tobj[key] = this._proxy_call(this, prefix+key);\n\t\t}\n\t},\n\t_call:function(name, args){\n\t\tvar def = this._deffer(this, name, args);\n\t\tthis._queue.push(def);\n\t\tthis._start_queue();\n\t\treturn def;\n\t},\n\t_start_queue:function(){\n\t\tif (!this._timer)\n\t\t\tthis._timer = setTimeout(bind(this._run_queue, this), 1);\n\t},\n\t_run_queue:function(){\n\t\tvar data = [], defs = this._queue;\n\t\tfor (var i=0; i\"; \n\t\t}\n\t},\n\t\"textFilter\":{\n\t\tgetInputNode:function(node){ return node.firstChild?node.firstChild.firstChild:{ value: null }; },\n\t\tgetValue:function(node){ return this.getInputNode(node).value; },\n\t\tsetValue:function(node, value){ this.getInputNode(node).value = value; },\n\t\trefresh:function(master, node, value){\n\t\t\tnode.component = master._settings.id;\n\t\t\tmaster.registerFilter(node, value, this);\n\t\t\tnode._comp_id = master._settings.id;\n\t\t\tif (value.value && this.getValue(node) != value.value) this.setValue(node, value.value);\n\t\t\tnode.onclick = preventEvent;\n\t\t\t_event(node, \"keydown\", this._on_key_down);\n\t\t},\n\t\trender:function(master, config){\n\t\t\tif (this.init) this.init(config);\n\t\t\tconfig.css = \"webix_ss_filter\"; \n\t\t\treturn \"\"; \n\t\t},\n\t\t_on_key_down:function(e){\n\t\t\tvar id = this._comp_id;\n\n\t\t\t//tabbing through filters must not trigger filtering\n\t\t\t//we can improve this functionality by preserving initial filter value\n\t\t\t//and comparing new one with it\n\t\t\tif ((e.which || e.keyCode) == 9) return;\n\n\t\t\tif (this._filter_timer) window.clearTimeout(this._filter_timer);\n\t\t\tthis._filter_timer=window.setTimeout(function(){\n\t\t\t\tvar ui = $$(id);\n\t\t\t\t//ensure that ui is not destroyed yet\n\t\t\t\tif (ui) ui.filterByAll();\n\t\t\t},datafilter.textWaitDelay);\n\t\t}\n\t},\n\t\"selectFilter\":{\n\t\tgetInputNode:function(node){ return node.firstChild?node.firstChild.firstChild:{ value: null}; },\n\t\tgetValue:function(node){ return this.getInputNode(node).value; },\n\t\tsetValue:function(node, value){ this.getInputNode(node).value = value; },\n\t\trefresh:function(master, node, value){\n\t\t\t//value - config from header { contet: }\n\t\t\tvalue.compare = value.compare || function(a,b){ return a == b; };\n\n\t\t\tnode.component = master._settings.id;\n\t\t\tmaster.registerFilter(node, value, this);\n\n\t\t\tconst data = datafilter._get_data(master, value);\n\t\t\tif (value.emptyOption !== false)\n\t\t\t\tdata.unshift({id:\"\", value:value.emptyOption||\"\"});\n\n\t\t\t//slow in IE\n\t\t\t//http://jsperf.com/select-options-vs-innerhtml\n\n\t\t\tlet select = document.createElement(\"select\");\n\t\t\tfor (let i = 0; i < data.length; i++){\n\t\t\t\tlet option = document.createElement(\"option\");\n\t\t\t\toption.value = data[i].id;\n\t\t\t\toption.text = data[i].value;\n\t\t\t\tselect.add(option);\n\t\t\t}\n\n\t\t\tnode.firstChild.innerHTML = \"\";\n\t\t\tnode.firstChild.appendChild(select);\n\n\t\t\tif (value.value) this.setValue(node, value.value);\n\t\t\tnode.onclick = preventEvent;\n\n\t\t\tselect._comp_id = master._settings.id;\n\t\t\t_event(select, \"change\", this._on_change);\n\t\t},\n\t\trender:function(master, config){\n\t\t\tif (this.init) this.init(config);\n\t\t\tconfig.css = \"webix_ss_filter\"; return \"\"; },\n\t\t_on_change:function(){ \n\t\t\t$$(this._comp_id).filterByAll();\n\t\t}\n\t},\n\t_get_data:function(master, value){\n\t\tlet data;\n\t\tlet options = value.options;\n\n\t\tif (options){\n\t\t\tdata = master._collectValues.call(options, \"id\", \"value\");\n\t\t} else\n\t\t\tdata = master.collectValues(value.columnId, value.collect);\n\n\t\treturn data;\n\t}\n};\n\ndatafilter.serverFilter = extend({\n\t$server: true,\n\t_on_key_down:function(e){\n\t\tvar id = this._comp_id,\n\t\t\tcode = (e.which || e.keyCode);\n\n\t\t//ignore tab and navigation keys\n\t\tif (code == 9 || ( code >= 33 && code <= 40)) return;\n\t\tif (this._filter_timer) window.clearTimeout(this._filter_timer);\n\t\tthis._filter_timer=window.setTimeout(function(){\n\t\t\t$$(id).filterByAll();\n\t\t},datafilter.textWaitDelay);\n\t}\n}, datafilter.textFilter);\n\ndatafilter.serverSelectFilter = extend({\n\t$server: true,\n\t_on_change:function(){\n\t\tvar id = this._comp_id;\n\t\t$$(id).filterByAll();\n\t}\n}, datafilter.selectFilter);\n\ndatafilter.numberFilter = extend({\n\tinit:function(config){\n\t\tconfig.prepare = function(value){\n\t\t\tvar equality = (value.indexOf(\"=\") != -1);\n\t\t\tvar intvalue = this.format(value);\n\t\t\tif (intvalue === \"\") return \"\";\n\n\t\t\tvar compare;\n\t\t\tif (value.indexOf(\">\") != -1){\n\t\t\t\tcompare = this._greater;\n\t\t\t}\n\t\t\telse if (value.indexOf(\"<\") != -1){\n\t\t\t\tcompare = this._lesser;\n\t\t\t}\n\n\t\t\tif (compare && equality) {\n\t\t\t\tconfig.compare = (a,b) => this._equal(a,b) || compare(a,b);\n\t\t\t} else {\n\t\t\t\tconfig.compare = compare || this._equal; \n\t\t\t}\n\n\t\t\treturn intvalue;\n\t\t};\n\t},\n\tformat:function(value){\n\t\treturn value.replace(/[^\\-.0-9]/g,\"\");\n\t},\n\t_greater:function(a,b){ return a*1>b; },\n\t_lesser:function(a,b){ return a!==\"\" && a*1< =]+/,\"\"));\n\t\t}\n\t\treturn date.valueOf();\n\t}\n}, datafilter.numberFilter);\n\nexport default datafilter;","import {assert} from \"../webix/debug\";\nimport {debug_size_box_start, debug_size_box_end} from \"../webix/debug\";\n\nimport {callEvent} from \"../webix/customevents\";\nimport {insertBefore, remove} from \"../webix/html\";\nimport {extend, _power_array, isUndefined, copy} from \"../webix/helpers\";\nimport {_each} from \"../ui/helpers\";\n\nimport {$$,ui,protoUI} from \"../ui/core\";\n\nimport state from \"../core/state\";\nimport IdSpace from \"../core/idspace\";\nimport EventSystem from \"../core/eventsystem\";\n\nimport base from \"./baseview\";\n\nconst api = {\n\tname:\"baselayout\",\n\trestore:function(state, factory, configOnly){\n\t\tvar out = this._restore(copy(state), factory);\n\t\tif (configOnly)\n\t\t\treturn out;\n\t\telse\n\t\t\tui((out.cols || out.rows), this);\n\t},\n\t_restore:function(state, factory){\n\t\tif (state.$layout){\n\t\t\tvar sub = state.cols || state.rows;\n\t\t\tfor (var i = 0; i < sub.length; i++) {\n\t\t\t\tsub[i] = this._restore(sub[i], factory);\n\t\t\t}\n\t\t} else {\n\t\t\treturn factory.call(this, state);\n\t\t}\n\n\t\treturn state;\n\t},\n\tserialize:function(serializer){\n\t\tvar out = [];\n\t\tvar childs = this.getChildViews();\n\n\t\tfor (var i=0; i this._cells.length)\n\t\t\t\t\ttarget_id = this._cells.length;\n\t\t\t\t_power_array.insertAt.call(this._cells, new_view, target_id);\n\t\t\t\tif (!new_view._settings.hidden)\n\t\t\t\t\tthis._insertBeforeView(new_view, this._cells[target_id]);\n\t\t\t} else {\n\t\t\t\tsource = $$(target_id);\n\t\t\t\ttarget_id = _power_array.find.call(this._cells, source);\n\t\t\t\tassert(target_id!=-1, \"Attempt to replace the non-existing view\");\n\t\t\t\tif (!new_view._settings.hidden)\n\t\t\t\t\tthis._insertBeforeView(new_view, source);\n\n\t\t\t\tsource.destructor();\t\n\t\t\t\tthis._cells[target_id] = new_view;\n\t\t\t}\n\n\t\t\tif (!this._vertical_orientation)\n\t\t\t\tthis._fix_vertical_layout(new_view);\n\t\t}\n\t\tthis.resizeChildren(true);\n\n\t\tvar form = this.elements ? this : this.getFormView();\n\t\tif (form) form._recollect_elements();\n\n\t\tcallEvent(\"onReconstruct\",[this]);\n\t},\n\t_fix_vertical_layout:function(cell){\n\t\tcell._viewobj.style.display = \"inline-block\";\n\t\tcell._viewobj.style.verticalAlign = \"top\";\n\t},\n\taddView:function(view, index){\n\t\tif (isUndefined(index))\n\t\t\tindex = this._cells.length;\n\t\tvar top = this.$$ ? this : this.getTopParentView();\n\t\t\n\t\tstate._parent_cell = this;\n\t\tvar newui = (top && top.ui) ? top.ui(view, this, index) : ui(view, this, index);\n\t\tstate._parent_cell = null;\n\n\t\treturn newui._settings.id;\n\t},\n\tremoveView:function(id){\n\t\tvar view;\n\t\tif (typeof id != \"object\")\n\t\t\tview = $$(id) || (this.$$ ? this.$$(id) : null);\n\t\telse\n\t\t\tview = id;\n\n\t\tvar target = _power_array.find.call(this._cells, view);\n\t\tif (target >= 0){\n\t\t\tif (this._beforeRemoveView)\n\t\t\t\tthis._beforeRemoveView(target, view);\n\n\t\t\tvar form = this.elements ? this : this.getFormView();\n\n\t\t\tthis._cells.splice(target, 1);\n\t\t\tif (form)\n\t\t\t\t_each(view, function(sub){\n\t\t\t\t\tif (sub.name)\n\t\t\t\t\t\tdelete form.getCleanValues()[sub.config.name];\n\t\t\t\t}, form, true);\t\t\t\t\n\n\t\t\tview.destructor();\n\t\t\tthis.resizeChildren(true);\n\t\t\t\n\t\t\tif (form)\n\t\t\t\tform._recollect_elements();\n\t\t} else\n\t\t\tassert(false, \"Attemp to remove not existing view: \"+id);\n\n\t\tcallEvent(\"onReconstruct\",[this]);\n\t},\n\treconstruct:function(){\n\t\tthis._hiddencells = 0;\n\t\tthis._replace(this._collection);\n\t},\n\t_hide:function(obj, settings, silent){\n\t\tif (obj._settings.hidden) return;\n\t\tobj._settings.hidden = true;\n\t\tremove(obj._viewobj);\n\t\tthis._hiddencells++;\n\t\tif (!silent && !state._ui_creation)\n\t\t\tthis.resizeChildren(true);\t\n\t},\n\t_signal_hidden_cells:function(view){\n\t\tif (view.callEvent)\n\t\t\tview.callEvent(\"onViewShow\",[]);\n\t},\n\tresizeChildren:function(){\n\t\tif (state._freeze_resize) return;\n\n\t\tif (this._layout_sizes){\n\t\t\tvar parent = this.getParentView();\n\t\t\tif (parent){\n\t\t\t\tif (parent.resizeChildren)\n\t\t\t\t\treturn parent.resizeChildren();\n\t\t\t\telse\n\t\t\t\t\treturn parent.resize();\n\t\t\t}\n\t\t\t\t\n\t\t\tvar sizes = this.$getSize(0,0);\n\n\t\t\tvar x,y,nx,ny;\n\t\t\tnx = x = this._layout_sizes[0] || 0;\n\t\t\tny = y = this._layout_sizes[1] || 0;\n\n\t\t\t//for auto-fill content, use adjust strategy\n\t\t\tif ((sizes[1]>=100000 || sizes[3] >= 100000) && this._viewobj.parentNode){\n\t\t\t\t//in hidden container adjust doesn't work, so fallback to last known size\n\t\t\t\t//also, ensure that min-size is not violated\n\t\t\t\tnx = x = Math.max(sizes[0], (this._settings.width || this._viewobj.parentNode.offsetWidth || x || 0));\n\t\t\t\tny = y = Math.max(sizes[2], (this._settings.height || this._viewobj.parentNode.offsetHeight || y || 0));\n\t\t\t}\n\t\t\t\n\t\t\tif (!parent){\n\t\t\t\t//minWidth\n\t\t\t\tif (sizes[0]>x) nx = sizes[0];\n\t\t\t\t//minHeight\n\t\t\t\tif (sizes[2]>y) ny = sizes[2];\n\n\t\t\t\tvar fullscreen = (this._viewobj.parentNode == document.body) && !this.setPosition;\n\t\t\t\t//maxWidth rule\n\t\t\t\tif (!fullscreen && x>sizes[1]) nx = sizes[1];\n\t\t\t\t//maxHeight rule\n\t\t\t\tif (!fullscreen && y>sizes[3]) ny = sizes[3];\n\n\t\t\t\tthis.$setSize(nx,ny);\n\t\t\t} else\n\t\t\t\tthis._set_child_size(x,y);\n\n\t\t\tif (state._responsive_exception){\n\t\t\t\tstate._responsive_exception = false;\n\t\t\t\tthis.resizeChildren();\n\t\t\t}\n\n\t\t\tcallEvent(\"onResize\",[]);\n\t\t}\n\t},\n\tgetChildViews:function(){\n\t\treturn this._cells;\n\t},\n\tindex:function(obj){\n\t\tif (obj._settings)\n\t\t\tobj = obj._settings.id;\n\t\tfor (var i=0; i < this._cells.length; i++)\n\t\t\tif (this._cells[i]._settings.id == obj)\n\t\t\t\treturn i;\n\t\treturn -1;\n\t},\n\t_insertBeforeView:function(view, before){\n\t\tif (before){\n\t\t\tif (before._settings.hidden || view === before){\n\t\t\t\t//index of sibling cell, next to which new item will appear\n\t\t\t\tvar index = this.index(before)+1;\n\t\t\t\t//locate nearest visible cell\n\t\t\t\twhile (this._cells[index] && this._cells[index]._settings.hidden) index++;\n\t\t\t\tbefore = this._cells[index] ? this._cells[index]._viewobj : null;\n\t\t\t} else {\n\t\t\t\tbefore = before._viewobj;\n\t\t\t}\n\t\t}\n\t\tinsertBefore(view._viewobj, before, (this._dataobj||this._viewobj));\n\t},\n\t_show:function(obj, settings, silent){\n\t\tif (!obj._settings.hidden) return;\n\t\tthis._insertBeforeView(obj, obj);\n\t\tobj._settings.hidden = false;\n\n\t\tthis._hiddencells--;\n\n\t\tif (!silent){\n\t\t\tthis.resizeChildren(true);\n\t\t\tif (obj.refresh)\n\t\t\t\tobj.refresh();\n\t\t}\n\n\t\tif (obj.callEvent){\n\t\t\tobj.callEvent(\"onViewShow\", []);\n\t\t\t_each(obj, this._signal_hidden_cells);\n\t\t}\n\t},\n\tshowBatch:function(name, mode){\n\t\tvar preserve = typeof mode != \"undefined\";\n\t\tmode = mode !== false;\n\n\t\tif (!preserve){\n\t\t\tif (this._settings.visibleBatch == name ) return;\n\t\t\tthis._settings.visibleBatch = name;\n\t\t} else \n\t\t\tthis._settings.visibleBatch = \"\";\n\n\t\tvar show = [];\n\t\tfor (let i=0; i < this._cells.length; i++){\n\t\t\tif (!this._cells[i]._settings.batch && !this._cells[i]._settings.hidden) \n\t\t\t\tshow.push(this._cells[i]);\n\t\t\telse if (this._cells[i]._settings.batch == name){\n\t\t\t\tif (mode)\n\t\t\t\t\tshow.push(this._cells[i]);\n\t\t\t\telse\n\t\t\t\t\tthis._hide(this._cells[i], null, true);\n\t\t\t} else if (!preserve)\n\t\t\t\tthis._hide(this._cells[i], null, true);\n\t\t}\n\n\t\tfor (let i=0; i < show.length; i++){\n\t\t\tthis._show(show[i], null, true);\n\t\t\tshow[i]._render_hidden_views();\n\t\t}\n\t\t\t\n\t\tthis.resizeChildren(true);\n\t},\n\t_parse_cells:function(collection){\n\t\tthis._cells=[];\n\n\t\tassert(collection,this.name+\" was incorrectly defined.

You have missed rows|cols|cells|elements collection\"); \n\t\tfor (var i=0; i
\";\n\t\t\t\t}\n\t\t\t}\n\t\treturn html.join(\"\");\n\t},\n\ttype:{\n\t\theight:24,\n\t\ttemplateStart:template(\"\"),\n\t\ttemplateEnd:template(\"\")\n\t},\n\t$skin: function(){\n\t\tthis.type.height = $active.propertyItemHeight;\n\t}\n};\n\n\nconst view = protoUI(api, AutoTooltip, EditAbility, MapCollection, MouseEvents, Scrollable, SingleRender, AtomDataLoader, EventSystem, base.view);\nexport default {api, view};","import {index} from \"../webix/html\";\nimport {protoUI, $$} from \"../ui/core\";\nimport {$active} from \"../webix/skin\";\nimport env from \"../webix/env\";\nimport {bind, isUndefined, extend, copy, toFunctor, isArray} from \"../webix/helpers\";\nimport {_event} from \"../webix/htmlevents\";\nimport template from \"../webix/template\";\n\nimport i18n from \"../webix/i18n\";\nimport UIManager from \"../core/uimanager\";\nimport MouseEvents from \"../core/mouseevents\";\nimport EventSystem from \"../core/eventsystem\";\nimport base from \"../views/view\";\nimport DateHelper from \"../core/date\";\nimport KeysNavigation from \"../core/keysnavigation\";\n\n\nconst api = {\n\tname:\"calendar\",\n\n\tdefaults:{\n\t\tdate: new Date(), //selected date, not selected by default\n\t\tselect: false,\n\t\tnavigation: true,\n\t\tmonthSelect: true,\n\t\tweekHeader: true,\n\t\tmonthHeader: true,\n\t\tweekNumber: false,\n\t\tskipEmptyWeeks: false,\n\t\tcalendarHeader: \"%F %Y\",\n\t\t//calendarTime: \"%H:%i\",\n\t\tevents:DateHelper.isHoliday,\n\t\tminuteStep: 5,\n\t\ttimeIcon:\"wxi-clock\",\n\t\ticons: false,\n\t\ttimepickerHeight: 30,\n\t\theaderHeight: 30,\n\t\tdayTemplate: function(d){\n\t\t\treturn d.getDate();\n\t\t},\n\t\twidth: 260,\n\t\theight: 250\n\t},\n\n\tdayTemplate_setter: template,\n\tcalendarHeader_setter:DateHelper.dateToStr,\n\tcalendarTime_setter:function(format){\n\t\tthis._calendarTime = format;\n\t\treturn DateHelper.dateToStr(format);\n\t},\n\tdate_setter:function(date){\n\t\treturn this._string_to_date(date);\n\t},\n\tmaxDate_setter:function(date){\n\t\treturn this._string_to_date(date);\n\t},\n\tminDate_setter:function(date){\n\t\treturn this._string_to_date(date);\n\t},\n\tminTime_setter:function(time){\n\t\tif(typeof(time) == \"string\"){\n\t\t\ttime = i18n.parseTimeFormatDate(time);\n\t\t\ttime = [time.getHours(),time.getMinutes()];\n\n\t\t}\n\n\t\treturn time;\n\t},\n\tmaxTime_setter:function(time){\n\t\tif(typeof(time) == \"string\"){\n\t\t\ttime = i18n.parseTimeFormatDate(time);\n\t\t\ttime = [time.getHours(),time.getMinutes()];\n\t\t}\n\t\treturn time;\n\t},\n\t_ariaFocus:function(){\n\t\tvar ev = \"focus\"+(env.isIE?\"in\":\"\");\n\t\t\n\t\tif(!env.touch){\n\t\t\t_event(this.$view, ev, bind(function(e){\n\t\t\t\tvar t = e.target.className;\n\t\t\t\tvar css = t.indexOf(\"webix_cal_day\")!==-1 ? \"webix_cal_day\" : (t.indexOf(\"webix_cal_block\")!==-1?\"webix_cal_block\":\"\");\n\n\t\t\t\tif(new Date() - UIManager._tab_time > 300 && new Date() - UIManager._mouse_time >100 && css){\n\t\t\t\t\tvar prev = e.relatedTarget;\n\t\t\t\t\tif(prev && !isUndefined(prev.className)){\n\t\t\t\t\t\tvar date = (css==\"webix_cal_day\")?\n\t\t\t\t\t\t\tthis._locate_day(e.target):\n\t\t\t\t\t\t\tthis._locate_date(e.target);\n\t\t\t\t\t\tthis._moveSelection(date);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this), {capture:!env.isIE});\n\t\t}\n\t},\n\t$init: function() {\n\t\tthis._viewobj.className += \" webix_calendar\";\n\t\tthis._viewobj.setAttribute(\"role\", \"region\");\n\t\tthis._viewobj.setAttribute(\"aria-label\", i18n.aria.calendar);\n\n\t\t//special dates\n\t\tthis._special_dates = {};\n\t\tthis._selected_days = {};\n\t\tthis._zoom_level = 0;\n\n\t\t//navigation and aria\n\t\tthis._ariaFocus();\n\t\tthis.attachEvent(\"onKeyPress\", this._onKeyPress);\n\t},\n\tminuteStep_setter(value){\n\t\treturn Math.max( Math.min(value, 60), this.defaults.minuteStep );\n\t},\n\ttype_setter: function(value){\n\t\tif(value == \"time\"){\n\t\t\tthis._zoom_in = true;\n\t\t\tthis._zoom_level = -1;\n\t\t}\n\t\telse if(value == \"year\"){\n\t\t\tthis._fixed = true;\n\t\t}\n\t\treturn value;\n\t},\n\t$setSize:function(x,y){\n\n\t\tif(base.api.$setSize.call(this,x,y)){\n\t\t\t//repaint calendar when size changed\n\t\t\tthis.render();\n\t\t}\n\t},\n\t$getSize:function(dx, dy){\n\t\tconst s = this._settings;\n\t\tif (s.cellHeight && !s.type){\n\t\t\tconst state = this._getDateBoundaries(s.date);\n\t\t\ts.height = s.cellHeight * state._rows + s.headerHeight + (s.weekHeader?$active.calendarWeekHeaderHeight:0) +\n\t\t\t\t(s.timepicker||this._icons?s.timepickerHeight:0) + (this._content_padding+$active.borderWidth)*2;\n\t\t}\n\t\treturn base.api.$getSize.call(this, dx,dy);\n\t},\n\tmoveSelection:function(mode, details, focus){\n\t\tif(this.config.master) return; //in daterange\n\t\tvar start = this.getSelectedDate();\n\t\tif (this.config.multiselect)\n\t\t\tstart = start[0];\n\t\tvar date = DateHelper.copy(start || this.getVisibleDate());\n\t\tthis._moveSelection(date, mode, focus);\n\t\t\n\t},\n\t_moveSelection:function(date, mode, focus){\n\t\tvar css = this._zoom_logic[this._zoom_level]._keyshift(date, mode, this);\n\t\t\n\t\tif(focus !==false){\n\t\t\tvar sel = this._viewobj.querySelector(\".\"+css+\"[tabindex='0']\");\n\t\t\tif(sel) sel.focus();\n\t\t}\n\t},\n\t_getDateBoundaries: function(date, reset) {\n\t\t// addition information about rendering event:\n\t\t// how many days from the previous month,\n\t\t// next,\n\t\t// number of weeks to display and so on\n\t\t\n\t\tif (!this._set_date_bounds || reset){\n\t\t\tvar month = date.getMonth();\n\t\t\tvar year = date.getFullYear();\n\n\t\t\tvar next = new Date(year, month+1, 1);\n\t\t\tvar start = DateHelper.weekStart(new Date(year, month, 1));\n\n\t\t\tvar days = Math.round((next.valueOf() - start.valueOf())/(60*1000*60*24));\n\t\t\tvar rows = this._settings.skipEmptyWeeks?Math.ceil(days/7):6;\n\n\t\t\tthis._set_date_bounds = { _month: month, _start:start, _next:next, _rows: rows};\n\t\t}\n\n\t\treturn this._set_date_bounds;\n\t},\n\t$skin:function(){\n\t\tif($active.calendar){\n\t\t\tif( $active.calendar.width)\n\t\t\t\tthis.defaults.width = $active.calendar.width;\n\t\t\tif( $active.calendar.height)\n\t\t\t\tthis.defaults.height = $active.calendar.height;\n\t\t\tif( $active.calendar.headerHeight)\n\t\t\t\tthis.defaults.headerHeight = $active.calendar.headerHeight;\n\t\t\tif( $active.calendar.timepickerHeight)\n\t\t\t\tthis.defaults.timepickerHeight = $active.calendar.timepickerHeight;\n\t\t}\n\t\tthis._content_padding = $active.layoutPadding.form;\n\t},\n\t_getColumnConfigSizes: function(date){ \n\t\tvar bounds = this._getDateBoundaries(date);\n\n\t\tvar s = this._settings;\n\t\tvar _columnsHeight = [];\n\t\tvar _columnsWidth = [];\n\t\tvar min = Infinity;\n\n\t\tvar containerWidth = this._content_width - (this._content_padding+$active.borderWidth)*2;\n\n\t\tvar containerHeight = this._content_height - (s.monthHeader?s.headerHeight:0) - (s.weekHeader?$active.calendarWeekHeaderHeight:0) -\n\t\t\t(s.timepicker||this._icons?s.timepickerHeight:0) - (this._content_padding+$active.borderWidth)*2;\n\n\t\tvar columnsNumber = (s.weekNumber)?8:7;\n\t\tfor(var i=0; i\"+i18n.calendar.today+\"\";\n\t\t\t},\n\t\t\ton_click:{\n\t\t\t\t\"webix_cal_icon_today\": function(){\n\t\t\t\t\tvar date = new Date();\n\t\t\t\t\tif(!this._settings.timepicker)\n\t\t\t\t\t\tdate = DateHelper.datePart(date);\n\t\t\t\t\tthis.setValue(date);\n\t\t\t\t\tthis.callEvent(\"onTodaySet\",[this.getSelectedDate()]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\ttemplate: function(){\n\t\t\t\treturn \"\"+i18n.calendar.clear+\"\";\n\t\t\t},\n\t\t\ton_click:{\n\t\t\t\t\"webix_cal_icon_clear\": function(){\n\t\t\t\t\tthis.setValue(\"\");\n\t\t\t\t\tthis.callEvent(\"onDateClear\",[this.getSelectedDate()]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t],\n\trefresh:function(){ this.render(); },\n\trender: function() {\n\t\t//reset zoom level\n\t\tthis._zoom_level = 0;\n\t\tthis._zoom_size = false;\n\n\t\tvar s = this._settings;\n\n\t\tif (!this.isVisible(s.id)) return;\n\t\tthis._current_time = DateHelper.datePart(new Date());\n\n\t\tthis.callEvent(\"onBeforeRender\",[]);\n\n\t\tvar date = this._settings.date;\n\n\t\tvar bounds = this._getDateBoundaries(date, true);\n\t\tvar sizes = this._getColumnConfigSizes(date);\n\t\tvar cpad = this._content_padding + \"px\";\n\t\tvar width = sizes[0];\n\t\tvar height = sizes[1];\n\n\t\tvar html = \"\";\n\t\tif (s.monthHeader){\n\t\t\thtml += \"
\"+s.calendarHeader(date)+\"\";\n\t\t\tif (s.navigation)\n\t\t\t\thtml += \"
\";\n\t\t\thtml += \"
\";\n\t\t}\n\n\t\tif(s.weekHeader)\n\t\t\thtml += \"\";\n\t\thtml += \"
\"+this._body_template(width, height, bounds, sizes[2])+\"
\";\n\n\t\tif (this._settings.timepicker || this._icons){\n\t\t\thtml += \"\";\n\t\t}\n\n\t\tthis._contentobj.innerHTML = html;\n\t\tthis._contentobj.firstChild.style.marginTop = cpad;\n\n\t\tif(this._settings.type == \"time\"){\n\t\t\tvar time = this._settings.date;\n\t\t\tif(time){\n\t\t\t\tif(typeof(time) == \"string\"){\n\t\t\t\t\tdate = i18n.parseTimeFormatDate(time);\n\t\t\t\t}\n\t\t\t\telse if(isArray(time)){\n\t\t\t\t\tdate.setHours(time[0]);\n\t\t\t\t\tdate.setMinutes(time[1]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._changeZoomLevel(-1,date);\n\t\t}\n\t\telse if(this._settings.type == \"month\"){\n\t\t\tthis._changeZoomLevel(1,date);\n\t\t}\n\t\telse if(this._settings.type == \"year\"){\n\t\t\tthis._changeZoomLevel(2,date);\n\t\t}\n\n\t\tthis.callEvent(\"onAfterRender\",[]);\n\t},\n\t_icons_template: function(date){\n\t\tvar html =\t\"
\";\n\t\tvar icons = this._icons;\n\n\t\tfor(var i=0; i < icons.length; i++){\n\t\t\tif(icons[i].template){\n\t\t\t\tvar template = (typeof(icons[i].template) == \"function\"?icons[i].template: template(icons[i].template));\n\t\t\t\thtml += template.call(this,date);\n\t\t\t}\n\t\t\tif(icons[i].on_click){\n\t\t\t\textend(this.on_click,icons[i].on_click);\n\t\t\t}\n\t\t}\n\t\thtml += \"
\";\n\t\treturn html;\n\t},\n\t_timepicker_template:function(date){\n\t\tvar timeFormat = this._settings.calendarTime||i18n.timeFormatStr;\n\t\tvar clock = this._settings.timeIcon;\n\t\tvar tpl = \"\";\n\n\t\tif(!this._settings.master)\n\t\t\ttpl = \"
\"+timeFormat(date)+\"
\";\n\t\telse{\n\t\t\t//daterange needs two clocks\n\t\t\tvar range_date = copy($$(this._settings.master)._settings.value);\n\t\t\tif(DateHelper.equal(range_date.end, date))\n\t\t\t\trange_date.start = range_date.end;\n\t\t\t\t\n\t\t\tfor(var i in range_date){\n\t\t\t\ttpl += \"
\"+timeFormat(range_date[i])+\"
\";\n\t\t\t}\n\t\t}\n\t\treturn tpl;\n\t},\n\t_week_template: function(widths){\n\t\tvar s = this._settings;\n\t\tvar week_template = \"\";\n\t\tvar correction = 0;\n\n\t\tif(s.weekNumber) {\n\t\t\tcorrection = 1;\n\t\t\tweek_template += \"
\"+(s.calendarWeekHeader||\"\")+\"
\";\n\t\t}\n\t\t\n\t\tvar k = (DateHelper.startOnMonday)?1:0;\n\t\tfor (var i=0; i<7; i++){ // 7 days total\n\t\t\tvar day_index = (k + i) % 7; // 0 - Sun, 6 - Sat as in Locale.date.day_short\n\t\t\tvar day = i18n.calendar.dayShort[day_index]; // 01, 02 .. 31\n\t\t\tweek_template += \"
\"+day+\"
\";\n\t\t}\n\t\t\n\t\treturn week_template;\n\t},\n\tblockDates_setter:function(value){\n\t\treturn toFunctor(value, this.$scope);\n\t},\n\t_day_css:function(day, bounds){\n\t\tvar css = \"\", isOutside = false;\n\t\tif (DateHelper.equal(day, this._current_time))\n\t\t\tcss += \" webix_cal_today\";\n\t\tif (!this._checkDate(day))\n\t\t\tcss+= \" webix_cal_day_disabled\";\n\t\tif (day.getMonth() != bounds._month){\n\t\t\tisOutside = true;\n\t\t\tcss += \" webix_cal_outside\";\n\t\t}\n\t\tif (!isOutside && this._selectedDay(day))\n\t\t\tcss += \" webix_cal_select\";\n\t\tif (this._settings.events)\n\t\t\tcss+=\" \"+(this._settings.events(day, isOutside) || \"\");\n\t\tcss += \" webix_cal_day\";\n\t\treturn css;\n\t},\n\t_body_template: function(widths, heights, bounds, sqSize){\n\t\tvar s = this._settings;\n\t\tvar html = \"\";\n\t\tvar day = DateHelper.datePart(DateHelper.copy(bounds._start));\n\t\tvar start = s.weekNumber?1:0;\n\t\tvar weekNumber = DateHelper.getISOWeek(DateHelper.add(day,2,\"day\", true));\n\n\t\tfor (var y=0; y\";\n\n\t\t\tif (start){\n\t\t\t\t// recalculate week number for the first week of a year\n\t\t\t\tif(!day.getMonth() && day.getDate()<7)\n\t\t\t\t\tweekNumber = DateHelper.getISOWeek(DateHelper.add(day,2,\"day\", true));\n\t\t\t\thtml += \"\";\n\t\t\t}\n\n\t\t\tfor (var x=start; x\";\n\t\t\t\tday = DateHelper.add(day, 1, \"day\");\n\n\t\t\t\tif(day.getHours()){\n\t\t\t\t\tday = DateHelper.datePart(day);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thtml += \"\";\n\t\t\tweekNumber++;\n\t\t}\n\t\treturn html;\n\t},\n\t_changeDate:function(dir, step){\n\t\tvar now = this._settings.date;\n\t\tif(!step) { step = this._zoom_logic[this._zoom_level]._changeStep; }\n\t\tif(!this._zoom_level){\n\t\t\tnow = DateHelper.copy(now);\n\t\t\tnow.setDate(1);\n\t\t}\n\t\tvar next = DateHelper.add(now, dir*step, \"month\", true);\n\t\tthis._changeDateInternal(now, next);\n\t},\n\t_changeDateInternal:function(now, next){\n\t\tif(this.callEvent(\"onBeforeMonthChange\", [now, next])){\n\t\t\tif (this._zoom_level){\n\t\t\t\tthis._update_zoom_level(next);\n\t\t\t}\n\t\t\telse{\n\t\t\t\tthis.showCalendar(next);\n\t\t\t}\n\t\t\tthis.callEvent(\"onAfterMonthChange\", [next, now]);\n\t\t}\n\t},\n\t_zoom_logic:{\n\t\t\"-2\":{\n\t\t\t_isBlocked: function(i){\n\t\t\t\tvar config = this._settings,\n\t\t\t\t\tdate = config.date,\n\t\t\t\t\tisBlocked = false;\n\n\t\t\t\tvar minHour = (config.minTime ? config.minTime[0] : 0);\n\t\t\t\tvar maxHour = (config.maxTime ? (config.maxTime[0] + ( config.maxTime[1] ? 1 : 0 )) : 24);\n\n\t\t\t\tvar minMinute = (config.minTime && (date.getHours()==minHour) ? config.minTime[1] : 0);\n\t\t\t\tvar maxMinute = (config.maxTime && config.maxTime[1] && (date.getHours()==(maxHour-1)) ? config.maxTime[1] : 60);\n\n\t\t\t\tif(this._settings.blockTime){\n\t\t\t\t\tvar d = DateHelper.copy(date);\n\t\t\t\t\td.setMinutes(i);\n\t\t\t\t\tisBlocked = this._settings.blockTime(d);\n\t\t\t\t}\n\t\t\t\treturn (i < minMinute || i >= maxMinute || isBlocked);\n\n\t\t\t},\n\t\t\t_setContent:function(next, i){ next.setMinutes(i); },\n\t\t\t_findActive:function(date, mode, calendar){\n\t\t\t\tif(!this._isBlocked.call(calendar, date.getMinutes()))\n\t\t\t\t\treturn date;\n\t\t\t\telse{\n\t\t\t\t\tvar step = calendar._settings.minuteStep;\n\t\t\t\t\tvar newdate = DateHelper.add(date, mode ==\"right\"?step:-step, \"minute\", true);\n\t\t\t\t\tif(date.getHours() === newdate.getHours())\n\t\t\t\t\t\treturn this._findActive(newdate, mode, calendar);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"-1\":{\n\t\t\t_isBlocked: function(i){\n\t\t\t\tvar config = this._settings,\n\t\t\t\t\tdate = config.date;\n\n\t\t\t\tvar minHour = (config.minTime? config.minTime[0]:0);\n\t\t\t\tvar maxHour = (config.maxTime? config.maxTime[0]+(config.maxTime[1]?1:0):24);\n\n\t\t\t\tif (i < minHour || i >= maxHour) return true;\n\n\t\t\t\tif(config.blockTime){\n\t\t\t\t\tvar d = DateHelper.copy(date);\n\t\t\t\t\td.setHours(i);\n\t\t\t\t\t\n\t\t\t\t\tvar minMinute = (config.minTime && (i==minHour) ? config.minTime[1] : 0);\n\t\t\t\t\tvar maxMinute = (config.maxTime && config.maxTime[1] && (i==(maxHour-1)) ? config.maxTime[1] : 60);\n\n\t\t\t\t\tfor (var j=minMinute; j= (60-step)) inc = step-60;\n\t\t\t\t\tinc -= date.getMinutes()%step;\n\t\t\t\t\tnewdate = calendar._zoom_logic[\"-2\"]._findActive(DateHelper.add(date, inc, \"minute\"), mode, calendar);\n\t\t\t\t}\n\t\t\t\telse if(mode === \"up\" || mode === \"down\"){ //hours\n\t\t\t\t\tinc = mode===\"down\"?1:-1;\n\t\t\t\t\tif(mode === \"down\" && date.getHours() === 23) inc = -23;\n\t\t\t\t\tif(mode === \"up\" && date.getHours() === 0) inc = 23;\n\t\t\t\t\tnewdate = this._findActive(DateHelper.add(date, inc, \"hour\"), mode, calendar);\n\t\t\t\t}\n\t\t\t\telse if(mode === false)\n\t\t\t\t\tnewdate = this._findActive(date, mode, calendar);\n\n\t\t\t\tcalendar.selectDate(newdate, false);\n\n\t\t\t\tif(newdate){\n\t\t\t\t\tcalendar._update_zoom_level(newdate);\n\t\t\t\t\tcalendar.selectDate(newdate, false);\n\t\t\t\t}\n\n\t\t\t\treturn \"webix_cal_block\"+(mode === \"left\" || mode === \"right\"?\"_min\":\"\");\n\t\t\t},\n\t\t\t_findActive:function(date, mode, calendar){\n\t\t\t\tif(!this._isBlocked.call(calendar, date.getHours()))\n\t\t\t\t\treturn date;\n\t\t\t\telse{\n\t\t\t\t\tvar newdate = DateHelper.add(date, mode ==\"down\"?1:-1, \"hour\", true);\n\t\t\t\t\tif(date.getDate() === newdate.getDate())\n\t\t\t\t\t\treturn this._findActive(newdate, mode, calendar);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"0\":{//days\n\t\t\t_changeStep:1,\n\t\t\t_keyshift:function(date, mode, calendar){\n\t\t\t\tvar newdate = date;\n\t\t\t\tif(mode === \"pgup\" || mode === \"pgdown\")\n\t\t\t\t\tnewdate = DateHelper.add(date, (mode===\"pgdown\"?1:-1), \"month\");\n\t\t\t\telse if(mode === \"bottom\")\n\t\t\t\t\tnewdate = new Date(date.getFullYear(), date.getMonth()+1, 0);\n\t\t\t\telse if(mode === \"top\")\n\t\t\t\t\tnewdate = new Date(date.setDate(1));\n\t\t\t\telse if(mode === \"left\" || mode === \"right\")\n\t\t\t\t\tnewdate = DateHelper.add(date, (mode===\"right\"?1:-1), \"day\");\n\t\t\t\telse if(mode === \"up\" || mode === \"down\")\n\t\t\t\t\tnewdate = DateHelper.add(date, (mode===\"down\"?1:-1), \"week\");\n\t\t\t\t\n\t\t\t\tif(!calendar._checkDate(newdate))\n\t\t\t\t\tnewdate = calendar._findActive(date, mode);\n\t\t\t\t\n\t\t\t\tif(newdate)\n\t\t\t\t\tcalendar.selectDate(newdate, true);\n\t\t\t\treturn \"webix_cal_day\";\n\t\t\t},\n\t\t\t\n\t\t},\n\t\t\"1\":{\t//months\n\t\t\t_isBlocked: function(i,calendar){\n\t\t\t\tvar blocked = false,\n\t\t\t\t\tmin = calendar._settings.minDate,\n\t\t\t\t\tmax = calendar._settings.maxDate,\n\t\t\t\t\tyear = calendar._settings.date.getFullYear();\n\n\t\t\t\tif (min){\n\t\t\t\t\tvar minYear = min.getFullYear();\n\t\t\t\t\tblocked = yeari);\n\t\t\t\t}\n\n\t\t\t\tif (max && !blocked){\n\t\t\t\t\tvar maxYear = max.getFullYear();\n\t\t\t\t\tblocked = year>maxYear || (year==maxYear&&max.getMonth() calendar._settings.maxDate){\n\t\t\t\t\tdate = DateHelper.copy(calendar._settings.maxDate);\n\t\t\t\t}\n\n\t\t\t\treturn date;\n\t\t\t},\n\t\t\t_getTitle:function(date){ return date.getFullYear(); },\n\t\t\t_getContent:function(i){ return i18n.calendar.monthShort[i]; },\n\t\t\t_setContent:function(next, i){ if(i!=next.getMonth()) next.setDate(1);next.setMonth(i); },\n\t\t\t_changeStep:12,\n\t\t\t_keyshift:function(date, mode, calendar){\n\t\t\t\tvar newdate = date;\n\t\t\t\tif(mode === \"pgup\" || mode === \"pgdown\")\n\t\t\t\t\tnewdate = DateHelper.add(date, (mode===\"pgdown\"?1:-1), \"year\");\n\t\t\t\telse if(mode === \"bottom\")\n\t\t\t\t\tnewdate = new Date(date.setMonth(11));\n\t\t\t\telse if(mode === \"top\")\n\t\t\t\t\tnewdate = new Date(date.setMonth(0));\n\t\t\t\telse if(mode === \"left\" || mode === \"right\")\n\t\t\t\t\tnewdate = DateHelper.add(date, (mode===\"right\"?1:-1), \"month\");\n\t\t\t\telse if(mode === \"up\" || mode === \"down\")\n\t\t\t\t\tnewdate = DateHelper.add(date, (mode===\"down\"?4:-4), \"month\");\n\n\t\t\t\tnewdate = calendar._correctDate(newdate);\n\n\t\t\t\tif(!calendar._checkDate(newdate)){\n\t\t\t\t\tnewdate = calendar._findActive(date, mode);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(newdate){\n\t\t\t\t\tcalendar._update_zoom_level(newdate);\n\t\t\t\t\tcalendar.selectDate(newdate, false);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn \"webix_cal_block\";\n\t\t\t}\n\t\t},\n\t\t\"2\":{\t//years\n\t\t\t_isBlocked: function(i,calendar){\n\t\t\t\ti += calendar._zoom_start_date;\n\t\t\t\tvar min = calendar._settings.minDate;\n\t\t\t\tvar max = calendar._settings.maxDate;\n\n\t\t\t\tif ((min && min.getFullYear() > i) || (max && max.getFullYear() calendar._settings.maxDate){\n\t\t\t\t\tdate = DateHelper.copy(calendar._settings.maxDate);\n\t\t\t\t}\n\t\t\t\treturn date;\n\t\t\t},\n\t\t\t_getTitle:function(date, calendar){\n\t\t\t\tvar start = date.getFullYear();\n\t\t\t\tcalendar._zoom_start_date = start = start - start%10 - 1;\n\t\t\t\treturn start+\" - \"+(start+10 + 1);\n\t\t\t},\n\t\t\t_getContent:function(i, calendar){ return calendar._zoom_start_date+i; },\n\t\t\t_setContent:function(next, i, calendar){ next.setFullYear(calendar._zoom_start_date+i); },\n\t\t\t_changeStep:12*10,\n\t\t\t_keyshift:function(date, mode, calendar){\n\t\t\t\tvar newdate = date;\n\t\t\t\tif(mode === \"pgup\" || mode === \"pgdown\")\n\t\t\t\t\tnewdate = DateHelper.add(date, (mode===\"pgdown\"?10:-10), \"year\");\n\t\t\t\telse if(mode === \"bottom\")\n\t\t\t\t\tnewdate = new Date(date.setYear(calendar._zoom_start_date+10));\n\t\t\t\telse if(mode === \"top\")\n\t\t\t\t\tnewdate = new Date(date.setYear(calendar._zoom_start_date));\n\t\t\t\telse if(mode === \"left\" || mode === \"right\")\n\t\t\t\t\tnewdate = DateHelper.add(date, (mode===\"right\"?1:-1), \"year\");\n\t\t\t\telse if(mode === \"up\" || mode === \"down\")\n\t\t\t\t\tnewdate = DateHelper.add(date, (mode===\"down\"?4:-4), \"year\");\n\n\t\t\t\tnewdate = calendar._correctDate(newdate);\n\n\t\t\t\tif(!calendar._checkDate(newdate))\n\t\t\t\t\tnewdate = calendar._findActive(date, mode);\n\t\t\t\t\n\t\t\t\tif(newdate){\n\t\t\t\t\tcalendar._update_zoom_level(newdate);\n\t\t\t\t\tcalendar.selectDate(newdate, false);\n\t\t\t\t}\n\n\t\t\t\treturn \"webix_cal_block\";\n\t\t\t}\n\t\t}\n\t},\n\t_correctBlockedTime: function(){\n\t\tvar i, isDisabledHour, isDisabledMinutes;\n\t\tisDisabledHour = this._zoom_logic[-1]._isBlocked.call(this,this._settings.date.getHours());\n\t\tif(isDisabledHour){\n\t\t\tfor (i= 0; i< 24; i++){\n\t\t\t\tif(!this._zoom_logic[-1]._isBlocked.call(this,i)){\n\t\t\t\t\tthis._settings.date.setHours(i);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tisDisabledMinutes = this._zoom_logic[-2]._isBlocked.call(this,this._settings.date.getMinutes());\n\t\tif(isDisabledMinutes){\n\t\t\tfor (i=0; i<60; i+=this._settings.minuteStep){\n\t\t\t\tif(!this._zoom_logic[-2]._isBlocked.call(this,i)){\n\t\t\t\t\tthis._settings.date.setMinutes(i);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t_update_zoom_level:function(date){\n\t\tvar config, css, height, i, index, sections, selected, type, width, zlogic, temp, sqSize;\n\t\tvar html = \"\";\n\t\tvar cpad = this._content_padding + \"px\";\n\n\t\tconfig = this._settings;\n\t\tindex = 2 - (config.weekHeader?0:1) - (config.monthHeader?0:1);\n\t\tzlogic = this._zoom_logic[this._zoom_level];\n\t\tsections = this._contentobj.childNodes;\n\n\t\tif (date){\n\t\t\tconfig.date = date;\n\t\t}\n\n\t\ttype = config.type;\n\n\n\n\t\t//store width and height of draw area\n\t\tif (!this._zoom_size){\n\n\t\t\tthis._reserve_box_height = this._contentobj.offsetHeight - (config.monthHeader||this._zoom_in?config.headerHeight:0) -\n\t\t\t\t(this._content_padding+$active.borderWidth)*2;\n\t\t\tif(type != \"year\" && type != \"month\")\n\t\t\t\tthis._reserve_box_height -= config.timepickerHeight;\n\n\t\t\tthis._reserve_box_width = sections[index].offsetWidth;\n\t\t\tthis._zoom_size = 1;\n\t\t}\n\n\t\t//main section\n\t\tif (this._zoom_in){\n\t\t\t//hours and minutes\n\t\t\theight = this._reserve_box_height/6;\n\t\t\tvar timeColNum = 6;\n\t\t\tvar timeFormat = this._calendarTime||i18n.timeFormat;\n\t\t\tvar enLocale = timeFormat.match(/%([a,A])/);\n\t\t\tif(enLocale)\n\t\t\t\ttimeColNum++;\n\t\t\twidth = parseInt((this._reserve_box_width-3)/timeColNum,10);\n\t\t\tsqSize = Math.min(width,height);\n\n\t\t\thtml += \"
\"+this._timeHeaderTemplate(width,enLocale)+\"
\";\n\t\t\thtml += \"
\";\n\n\t\t\t// check and change blocked selected time\n\t\t\tthis._correctBlockedTime();\n\n\t\t\thtml += \"
\";\n\t\t\tselected = config.date.getHours();\n\t\t\ttemp = DateHelper.copy(config.date);\n\n\t\t\tfor (i= 0; i< 24; i++){\n\t\t\t\tcss=\"\";\n\t\t\t\tif(enLocale){\n\t\t\t\t\tif(i%4===0){\n\t\t\t\t\t\tvar label = (!i ? i18n.am[0] : (i==12?i18n.pm[0]:\"\"));\n\t\t\t\t\t\thtml += \"
\"+label+\"
\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(this._zoom_logic[-1]._isBlocked.call(this,i)){\n\t\t\t\t\tcss += \" webix_cal_day_disabled\";\n\t\t\t\t}\n\t\t\t\telse if(selected == i)\n\t\t\t\t\tcss += \" webix_selected\";\n\n\t\t\t\t\n\t\t\t\ttemp.setHours(i);\n\n\t\t\t\thtml += \"
\"+DateHelper.toFixed(enLocale?(!i||i==12?12:i%12):i)+\"
\";\n\t\t\t}\n\t\t\thtml += \"
\";\n\n\t\t\thtml += \"
\";\n\t\t\tselected = config.date.getMinutes();\n\t\t\ttemp = DateHelper.copy(config.date);\n\n\n\t\t\tfor (i=0; i<60; i+=config.minuteStep){\n\t\t\t\tcss = \"\";\n\t\t\t\tif(this._zoom_logic[-2]._isBlocked.call(this,i)){\n\t\t\t\t\tcss = \" webix_cal_day_disabled\";\n\t\t\t\t}\n\t\t\t\telse if(selected == i)\n\t\t\t\t\tcss = \" webix_selected\";\n\n\t\t\t\ttemp.setMinutes(i);\n\n\t\t\t\thtml += \"
\"+DateHelper.toFixed(i)+\"
\";\n\t\t\t}\n\t\t\thtml += \"
\";\n\n\t\t\thtml += \"
\";\n\t\t\thtml += \"\";\n\t\t\tthis._contentobj.innerHTML = html;\n\t\t\tthis._contentobj.firstChild.style.marginTop = cpad;\n\t\t} else {\n\t\t\t//years and months\n\t\t\t\n\t\t\t//reset header\n\t\t\tif (config.monthHeader){\n\t\t\t\tvar header = sections[0].childNodes;\n\t\t\t\tvar labels = i18n.aria[\"nav\"+(this._zoom_level==1?\"Year\":\"Decade\")];\n\t\t\t\theader[0].innerHTML = zlogic._getTitle(config.date, this);\n\t\t\t\theader[0].blur();\n\t\t\t\tif (config.navigation){\n\t\t\t\t\theader[1].setAttribute(\"aria-label\", labels[0]);\n\t\t\t\t\theader[2].setAttribute(\"aria-label\", labels[1]);\n\t\t\t\t}\n\t\t\t} else\t//needed for \"year\" to set start value\n\t\t\t\tzlogic._getTitle(config.date, this);\n\n\t\t\theight = Math.floor(this._reserve_box_height/3);\n\t\t\twidth = Math.floor(this._reserve_box_width/4);\n\t\t\tsqSize = Math.min(height, width);\n\n\t\t\tif (this._checkDate(config.date))\n\t\t\t\tselected = (this._zoom_level==1?config.date.getMonth():config.date.getFullYear());\n\t\t\tfor (i=0; i<12; i++){\n\t\t\t\tcss = (selected == (this._zoom_level==1?i:zlogic._getContent(i, this)) ? \" webix_selected\" : \"\");\n\t\t\t\tif(zlogic._isBlocked(i,this)){\n\t\t\t\t\tcss += \" webix_cal_day_disabled\";\n\t\t\t\t}\n\n\t\t\t\tvar format = i18n.aria[(this._zoom_level==1?\"month\":\"year\")+\"Format\"];\n\t\t\t\thtml+=\"
\"+zlogic._getContent(i, this)+\"
\";\n\t\t\t}\n\t\t\tif (config.weekHeader){\n\t\t\t\tsections[index-1].style.display = \"none\";\n\t\t\t\tif (index === 1) sections[index].style.marginTop = cpad;\n\t\t\t}\n\t\t\tsections[index].innerHTML = html;\n\t\t\tif (type != \"year\" && type != \"month\"){\n\t\t\t\tif(!sections[index+1])\n\t\t\t\t\tthis._contentobj.innerHTML += \"\";\n\t\t\t\telse\n\t\t\t\t\tsections[index+1].innerHTML = this._timeButtonsTemplate();\n\t\t\t} else if (sections[index+1]){\n\t\t\t\tsections[index+1].style.display = \"none\";\n\t\t\t}\n\t\t\tsections[index].style.height = this._reserve_box_height+\"px\";\n\t\t}\n\t},\n\t_getCalSizesString: function(width,height){\n\t\treturn \"width:\"+width+\"px; height:\"+height+\"px; line-height:\"+height+\"px;\";\n\t},\n\t_timeButtonsTemplate: function(){\n\t\treturn \"\";\n\t},\n\t_timeHeaderTemplate: function(width,enLocale){\n\t\tvar w1 = width*(enLocale?5:4);\n\t\tvar w2 = width*2;\n\t\treturn \"
\"+i18n.calendar.hours+\"
\"+i18n.calendar.minutes+\"
\";\n\t},\n\t_changeZoomLevel: function(zoom,date){\n\t\tvar oldzoom = this._zoom_level;\n\t\tif(this.callEvent(\"onBeforeZoom\",[zoom, oldzoom])){\n\t\t\tthis._zoom_level = zoom;\n\n\t\t\tif(zoom)\n\t\t\t\tthis._update_zoom_level(date);\n\t\t\telse\n\t\t\t\tthis.showCalendar(date);\n\t\t\tthis.callEvent(\"onAfterZoom\",[zoom, oldzoom]);\n\t\t}\n\t},\n\t_correctDate:function(date){\n\t\tif(!this._checkDate(date) && this._zoom_logic[this._zoom_level]._correctDate)\n\t\t\tdate = this._zoom_logic[this._zoom_level]._correctDate(date,this);\n\t\treturn date;\n\t},\n\t_mode_selected:function(target){\n\n\t\tvar next = this._locate_date(target);\n\t\tvar zoom = this._zoom_level-(this._fixed?0:1);\n\n\t\tnext = this._correctDate(next);\n\t\tif(this._checkDate(next)){\n\t\t\tthis._changeZoomLevel(zoom, next);\n\t\t\tvar type = this._settings.type;\n\t\t\tif(type == \"month\" || type == \"year\")\n\t\t\t\tthis._selectDate(next);\n\t\t}\n\t},\n\t// selects date and redraw calendar\n\t_selectDate: function(date, add){\n\t\tif(this.callEvent(\"onBeforeDateSelect\", [date])){\n\t\t\tthis.selectDate(date, true, add);\n\t\t\tthis.callEvent(\"onDateSelect\", [date]); // should be deleted in a future version\n\t\t\tthis.callEvent(\"onAfterDateSelect\", [date]);\n\t\t}\n\t},\n\t_locate_day:function(target){\n\t\tvar cind = index(target) - (this._settings.weekNumber?1:0);\n\t\tvar rind = index(target.parentNode);\n\t\tvar date = DateHelper.add(this._getDateBoundaries()._start, cind + rind*7, \"day\", true);\n\t\tif (this._settings.timepicker){\n\t\t\tdate.setHours(this._settings.date.getHours());\n\t\t\tdate.setMinutes(this._settings.date.getMinutes());\n\t\t}\n\t\treturn date;\n\t},\n\t_locate_date:function(target){\n\t\tvar value = target.getAttribute(\"data-value\")*1;\n\t\tvar level = (target.className.indexOf(\"webix_cal_block_min\")!=-1?this._zoom_level-1:this._zoom_level);\n\t\tvar now = this._settings.date;\n\t\tvar next = DateHelper.copy(now);\n\n\t\tthis._zoom_logic[level]._setContent(next, value, this);\n\n\t\treturn next;\n\t},\n\ton_click:{\n\t\twebix_cal_prev_button: function(){\n\t\t\tthis._changeDate(-1);\n\t\t},\n\t\twebix_cal_next_button: function(){\n\t\t\tthis._changeDate(1);\n\t\t},\n\t\twebix_cal_day_disabled: function(){\n\t\t\treturn false;\n\t\t},\n\t\twebix_cal_outside: function(){\n\t\t\tif(!this._settings.navigation)\n\t\t\t\treturn false;\n\t\t},\n\t\twebix_cal_day: function(e, id, target){\n\t\t\tvar date = this._locate_day(target);\n\t\t\tvar add = this._settings.multiselect === \"touch\" || (e.ctrlKey || e.metaKey);\n\t\t\tthis._selectDate(date, add);\n\t\t},\n\t\twebix_cal_time:function(){\n\t\t\tif(this._zoom_logic[this._zoom_level-1]){\n\t\t\t\tthis._zoom_in = true;\n\t\t\t\tvar zoom = this._zoom_level - 1;\n\t\t\t\tthis._changeZoomLevel(zoom);\n\t\t\t}\n\t\t},\n\t\twebix_range_time_start:function(){\n\t\t\t$$(this._settings.master)._time_mode = \"start\";\n\t\t},\n\t\twebix_range_time_end:function(){\n\t\t\t$$(this._settings.master)._time_mode = \"end\";\n\t\t},\n\t\twebix_cal_done:function(){\n\t\t\tvar date = DateHelper.copy(this._settings.date);\n\t\t\tdate = this._correctDate(date);\n\t\t\tthis._selectDate(date);\n\t\t},\n\t\twebix_cal_month_name:function(){\n\t\t\tif (!this._settings.navigation) return;\n\n\t\t\tthis._zoom_in = false;\n\t\t\t//maximum zoom reached\n\t\t\tif (this._zoom_level == 2 || !this._settings.monthSelect) return;\n\n\t\t\tvar zoom = Math.max(this._zoom_level, 0) + 1;\n\t\t\tthis._changeZoomLevel(zoom);\n\t\t},\n\t\twebix_cal_block:function(e, id, trg){\n\t\t\tif(this._zoom_in){\n\t\t\t\tif(trg.className.indexOf(\"webix_cal_day_disabled\")!==-1)\n\t\t\t\t\treturn false;\n\t\t\t\tvar next = this._locate_date(trg);\n\t\t\t\tthis._update_zoom_level(next);\n\t\t\t}\n\t\t\telse{\n\t\t\t\tif(trg.className.indexOf(\"webix_cal_day_disabled\")==-1)\n\t\t\t\t\tthis._mode_selected(trg);\n\t\t\t}\n\t\t}\n\t},\n\t_string_to_date: function(date, format){\n\t\tif (!date){\n\t\t\treturn DateHelper.datePart(new Date());\n\t\t}\n\t\tif(typeof date == \"string\"){\n\t\t\tif (format)\n\t\t\t\tdate = DateHelper.strToDate(format)(date);\n\t\t\telse\n\t\t\t\tdate=i18n.parseFormatDate(date);\n\t\t}\n\n\t\treturn date;\n\t},\n\t_checkDate: function(date){\n\t\tvar blockedDate = (this._settings.blockDates && this._settings.blockDates.call(this,date));\n\t\tvar minDate = this._settings.minDate;\n\t\tvar maxDate = this._settings.maxDate;\n\t\tvar outOfRange = (date < minDate || date > maxDate);\n\t\treturn !blockedDate &&!outOfRange;\n\t},\n\t_findActive:function(date, mode){\n\t\tvar dir = (mode === \"top\" || mode ===\"left\" || mode === \"pgup\" || mode === \"up\") ? -1 : 1;\n\t\tvar newdate = DateHelper.add(date, dir, \"day\", true);\n\t\tif(this._checkDate(newdate))\n\t\t\treturn newdate;\n\t\telse{\n\t\t\tvar compare;\n\t\t\tif(this._zoom_level === 0) compare = (date.getMonth() === newdate.getMonth());\n\t\t\telse if(this._zoom_level === 1 ) compare = (date.getFullYear() === newdate.getFullYear());\n\t\t\telse if(this._zoom_level === 2) compare = (newdate.getFullYear() > this._zoom_start_date && newdate.getFullYear() < this._zoom_start_date+10);\n\n\t\t\tif(compare)\n\t\t\t\treturn this._findActive(newdate, mode);\n\t\t}\n\t},\n\tshowCalendar: function(date) {\n\t\tdate = this._string_to_date(date);\n\t\tthis._settings.date = date;\n\t\tthis.render();\n\t\tthis.resize();\n\t},\n\t_selectedDay: function(day){\n\t\treturn day && this._selected_days[day.valueOf()];\n\t},\n\tgetSelectedDate: function() {\n\t\tvar result = [];\n\t\tfor (var key in this._selected_days)\n\t\t\tresult.push(DateHelper.copy(this._selected_days[key]));\n\t\t\n\t\treturn this.config.multiselect ? result : (result[0] || null);\n\t},\n\tgetVisibleDate: function() {\n\t\treturn DateHelper.copy(this._settings.date);\n\t},\n\tsetValue: function(date){\n\t\tthis.selectDate(date, true);\n\t},\n\tgetValue: function(format){\n\t\tvar date = this.getSelectedDate();\n\t\tif (format)\n\t\t\tdate = DateHelper.dateToStr(format)(date);\n\t\treturn date;\n\t},\n\tselectDate: function(date, show, add){\n\t\tif (!date || !add || !this.config.multiselect)\n\t\t\tthis._selected_days = {};\n\n\t\tif(date){\n\t\t\tif (!isArray(date))\n\t\t\t\tdate = [date];\n\t\t\tfor (var i=0; i\",\n\t\tpalette:null,\n\t\theight:220,\n\t\twidth:220,\n\t\tcols:12,\n\t\trows:10,\n\t\tminLightness:0.15,\n\t\tmaxLightness:1,\n\t\tnavigation:true\n\t},\n\t$init:function(){\n\t\t_event(this._viewobj, \"click\", bind(function(e){\n\t\t\tvar value = locate(e, /*@attr*/\"webix_val\");\n\t\t\t// locate can return null in case of drag\n\t\t\tif(value){\n\t\t\t\tthis.setValue(value);\n\t\t\t\tthis.callEvent(\"onItemClick\", [this._settings.value, e]);\n\t\t\t\tthis.callEvent(\"onSelect\", [this._settings.value]);\n\t\t\t}\n\t\t}, this));\n\n\t\tthis.$view.setAttribute(\"role\", \"grid\");\n\t\tthis._viewobj.setAttribute(\"aria-readonly\", \"true\");\n\t},\n\t_set_item_focus:function(){\n\t\tif(!this.getValue())\n\t\t\tthis.moveSelection(\"up\");\n\t},\n\t_findIndex:function(value){\n\t\tvar pal = this._settings.palette;\n\t\tvalue = (value || \"\").toUpperCase();\n\t\tfor(var r= 0, rows= pal.length; r < rows; r++)\n\t\t\tfor(var c= 0, cols = pal[r].length; c < cols; c++){\n\t\t\t\tif(pal[r][c].toUpperCase() == value){\n\t\t\t\t\treturn {row:r, col:c};\n\t\t\t\t}\n\t\t\t}\n\t\treturn null;\n\t},\n\t$setSize:function(x,y){\n\t\tif(base.api.$setSize.call(this,x,y)){\n\t\t\tthis.render();\n\t\t}\n\t},\n\tgetValue:function(){\n\t\treturn this._settings.value;\n\t},\n\t_getBox:function(){\n\t\treturn this._viewobj.firstChild;\n\t},\n\t$prepareValue:function(value){\n\t\tvalue = value ? value.toString(16) : \"\";\n\t\tif (value && value.charAt(0) != \"#\" && /^[0-9a-fA-F]+$/.test(value))\n\t\t\tvalue = \"#\" + value;\n\t\treturn value;\n\t},\n\tvalue_setter:function(value){\n\t\treturn this.$prepareValue(value);\n\t},\n\tsetValue:function(value){\n\t\tvalue = this.$prepareValue(value);\n\t\tconst oldvalue = this._settings.value;\n\n\t\tthis._settings.value = value;\n\t\tthis.$setValue(value, oldvalue);\n\n\t\treturn value;\n\t},\n\t_selectBox:null,\n\t_getSelectBox:function(){\n\t\tif( this._selectBox && this._selectBox.parentNode ){\n\t\t\treturn this._selectBox;\n\t\t}else{\n\t\t\tvar div = this._selectBox = document.createElement(\"div\");\n\t\t\tdiv.className = \"webix_color_selector\";\n\t\t\tthis._viewobj.lastChild.appendChild(div);\n\t\t\treturn div;\n\t\t}\n\t},\n\t$setValue:function(value, oldvalue){\n\t\tif(this.isVisible(this._settings.id)){\n\t\t\tvar cell, div, ind, parent, style,\n\t\t\t\tleft = 0, top = 0;\n\n\t\t\t//remove tabindex for previous selection\n\t\t\tif(oldvalue) ind = this._findIndex(oldvalue);\n\t\t\tif(!ind) ind = {row:0, col:0};\n\t\t\tthis._viewobj.lastChild.childNodes[ind.row].childNodes[ind.col].setAttribute(\"tabindex\", \"-1\");\n\n\t\t\tind = this._findIndex(value);\n\t\t\tif(ind){\n\t\t\t\tcell = this._viewobj.lastChild.childNodes[ind.row].childNodes[ind.col];\n\t\t\t}\n\n\t\t\tif(cell && cell.parentNode && cell.parentNode.parentNode){\n\t\t\t\tparent = cell.parentNode;\n\t\t\t\tleft = cell.offsetLeft - parent.offsetLeft ;\n\t\t\t\ttop = - (this.$height - (cell.offsetTop -parent.parentNode.offsetTop ));\n\n\t\t\t\tcell.setAttribute(\"tabindex\", \"0\");\n\t\t\t\tcell.setAttribute(\"aria-selected\", \"true\");\n\t\t\t\tcell.setAttribute(\"tabindex\", \"0\");\n\t\t\t\tcell.setAttribute(\"aria-selected\", \"true\");\n\t\t\t}else{\n\t\t\t\tif (this._selectBox)\n\t\t\t\t\tthis._selectBox.style.left = \"-100px\";\n\t\t\t\tthis._viewobj.lastChild.childNodes[0].childNodes[0].setAttribute(\"tabindex\", \"0\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdiv = this._getSelectBox();\n\t\t\tstyle = [\n\t\t\t\t\"left:\" + left + \"px\",\n\t\t\t\t\"top:\" + top+\"px\",\n\t\t\t\t\"width:\" + cell.style.width,\n\t\t\t\t\"height:\" + cell.style.height\n\t\t\t].join(\";\");\n\n\t\t\tif( typeof( div.style.cssText ) !== \"undefined\" ) {\n\t\t\t\tdiv.style.cssText = style;\n\t\t\t} else {\n\t\t\t\tdiv.setAttribute(\"style\",style);\n\t\t\t}\n\t\t}\n\t},\n\n\n\t_initPalette:function(config){\n\t\tfunction numToHex(n){\n\t\t\treturn color.toHex(n, 2);\n\t\t}\n\t\tfunction rgbToHex(r,g,b){\n\t\t\treturn \"#\"+numToHex( Math.floor(r)) +numToHex( Math.floor(g)) + numToHex(Math.floor(b));\n\t\t}\n\t\tfunction hslToRgb(h, s, l){\n\t\t\tvar r, g, b;\n\t\t\tif(!s){\n\t\t\t\tr = g = b = l; // achromatic\n\t\t\t}else{\n\t\t\t\tvar q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\t\t\t\tvar p = 2 * l - q;\n\t\t\t\tr = hue2rgb(p, q, h + 1/3);\n\t\t\t\tg = hue2rgb(p, q, h);\n\t\t\t\tb = hue2rgb(p, q, h - 1/3);\n\t\t\t}\n\n\t\t\treturn {r:r * 255, g:g * 255, b:b * 255};\n\t\t}\n\t\tfunction hue2rgb(p, q, t){\n\t\t\tif(t < 0) t += 1;\n\t\t\tif(t > 1) t -= 1;\n\t\t\tif (t < 1/6)\n\t\t\t\treturn p + (q - p) * 6 * t; \n\t\t\telse if (t <= 1/2)\n\t\t\t\treturn q;\n\t\t\telse if (t < 2/3) \n\t\t\t\treturn p + (q - p) * (2/3 - t) * 6;\n\t\t\telse\n\t\t\t\treturn p;\n\t\t}\n\n\t\tfunction renderGrayBar(colCount){\n\t\t\tvar gray = [],\n\t\t\t\tval = 255,\n\t\t\t\tstep = val / colCount;\n\n\t\t\tfor(var i=0; i < colCount; i++){\n\t\t\t\tval = Math.round(val > 0 ? val : 0);\n\t\t\t\tgray.push(rgbToHex(val, val, val));\n\t\t\t\tval -= step;\n\t\t\t}\n\t\t\tgray[gray.length - 1] = \"#000000\";\n\t\t\treturn gray;\n\t\t}\n\n\t\tvar colors = [];\n\t\tvar colorRows = config.rows - 1;\n\t\tvar colorStep = 1/config.cols;\n\t\tvar lightStep = (config.maxLightness - config.minLightness)/colorRows;\n\t\tvar colorRange = null;\n\n\t\tcolors.push(renderGrayBar(config.cols));\n\n\t\tfor(var step = 0, lt = config.minLightness; step < colorRows; step++){\n\t\t\tcolorRange = [];\n\t\t\tfor(var c = 0, col = 0; c < config.cols; c++ ){\n\t\t\t\tvar val = hslToRgb(col, 1, lt );\n\t\t\t\tcolorRange.push(rgbToHex(val.r, val.g, val.b));\n\t\t\t\tcol += colorStep;\n\t\t\t}\n\t\t\tcolors.push(colorRange);\n\t\t\tlt+=lightStep;\n\t\t}\n\n\t\tthis._settings.palette = colors;\n\t},\n\tmoveSelection:function(mode, details, focus){\n\t\tvar value = this.getValue(), ind, cell;\n\n\t\tif(value) ind = this._findIndex(value);\n\t\tif(!ind) ind = {row:0, col:0};\n\n\t\tif(ind){\n\t\t\tif(mode == \"up\" || mode == \"down\")\n\t\t\t\tind.row = ind.row + (mode == \"up\"?-1:1);\n\t\t\telse if(mode == \"right\" || mode == \"left\")\n\t\t\t\tind.col = ind.col +(mode == \"right\"?1:-1);\n\t\t\telse if(mode == \"top\" )\n\t\t\t\tind.row = ind.col = 0;\n\t\t\telse if(mode == \"bottom\"){\n\t\t\t\tind.row = this._viewobj.lastChild.querySelectorAll(\".webix_color_row\").length-1;\n\t\t\t\tind.col = this._viewobj.lastChild.childNodes[ind.row].childNodes.length-1;\n\t\t\t}\n\t\t\tind.row = Math.max(ind.row, 0);\n\t\t\tif(ind.row>=0)\n\t\t\t\tcell = this._viewobj.lastChild.childNodes[ind.row].childNodes[ind.col];\n\t\t\tif(cell){\n\t\t\t\tvalue = cell.getAttribute(/*@attr*/\"webix_val\");\n\t\t\t\tthis.setValue(value);\n\t\t\t\tthis.callEvent(\"onSelect\", [this._settings.value]);\n\n\t\t\t\tif(focus !==false){\n\t\t\t\t\tvar sel = this._viewobj.querySelector(\"div[tabindex='0']\");\n\t\t\t\t\tif(sel) sel.focus();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\trender:function(){\n\t\tif(!this.isVisible(this._settings.id))\n\t\t\treturn;\n\n\t\tif(!this._settings.palette)\n\t\t\tthis._initPalette(this._settings);\n\t\tvar palette = this._settings.palette;\n\n\t\tthis.callEvent(\"onBeforeRender\",[]);\n\t\tvar config = this._settings,\n\t\t\titemTpl = template(\"
\" + (config.template||\"\") + \"
\"),\n\t\t\tdata = {width: 0, height:0, val:0},\n\t\t\twidth = this.$width,\n\t\t\theight = this.$height,\n\t\t\twidths = [];\n\n\t\tvar html = \"
\";\n\n\t\tvar firstRow = (typeof palette[0] == \"object\") ? palette[0] : palette;\n\t\tfor(var i=0; i < firstRow.length; i++){\n\t\t\twidths[i] = Math.floor(width/(firstRow.length - i));\n\t\t\twidth -= widths[i];\n\t\t}\n\n\t\tif(typeof palette[0] == \"object\"){\n\t\t\tfor(var r=0; r < palette.length; r++){\n\t\t\t\tvar cellHeight = Math.floor(height/(palette.length - r));\n\t\t\t\theight -= cellHeight;\n\t\t\t\tvar row = palette[r];\n\t\t\t\thtml += renderRow(row, widths, cellHeight);\n\t\t\t}\n\t\t}else{\n\t\t\thtml+= renderRow(palette, widths, height);\n\t\t}\n\n\t\thtml += \"
\";\n\t\tthis._viewobj.innerHTML = html;\n\n\t\tfunction renderRow(row, widths, height){\n\t\t\tvar rowHtml = \"
\";\n\t\t\tfor(var cell = 0; cell < row.length; cell++){\n\t\t\t\tdata.width = widths[cell];\n\t\t\t\tdata.height = height;\n\t\t\t\tdata.val = row[cell];\n\t\t\t\trowHtml += itemTpl(data);\n\t\t\t}\n\t\t\trowHtml += \"
\";\n\t\t\treturn rowHtml;\n\t\t}\n\t\tthis._selectBox = null;\n\t\tif(this._settings.value)\n\t\t\tthis.$setValue(this._settings.value);\n\t\telse\n\t\t\tthis._viewobj.lastChild.childNodes[0].childNodes[0].setAttribute(\"tabindex\", \"0\");\n\t\tthis.callEvent(\"onAfterRender\",[]);\n\t},\n\trefresh:function(){ this.render(); }\n};\n\nconst view = protoUI(api, KeysNavigation, base.view, EventSystem);\nexport default {api, view};","import {triggerEvent, preventEvent, getTextSize, locate} from \"../webix/html\";\nimport {protoUI} from \"../ui/core\";\nimport {$active} from \"../webix/skin\";\nimport {isUndefined, isArray} from \"../webix/helpers\";\nimport {assert} from \"../webix/debug\";\nimport template from \"../webix/template\";\n\nimport baseview from \"../views/baseview\";\nimport base from \"../views/view\";\n\nimport AutoTooltip from \"../core/autotooltip\";\nimport UIManager from \"../core/uimanager\";\nimport EventSystem from \"../core/eventsystem\";\nimport AtomRender from \"../core/atomrender\";\nimport Settings from \"../core/settings\";\n\n\nconst api = {\n\tname:\"button\",\n\ttouchable:true,\n\t$skin:function(){\n\t\tthis.defaults.height = $active.buttonHeight||$active.inputHeight;\n\t},\n\tdefaults:{\n\t\ttemplate:function(obj, common){\n\t\t\tvar text = common.$renderInput(obj, common);\n\t\t\tif (obj.badge||obj.badge===0) text = text.replace(\"\", \"\"+obj.badge+\"\");\n\t\t\treturn \"
\"+ text + \"
\";\n\t\t},\n\t\tlabel:\"\",\n\t\tborderless:true\n\t},\n\t$renderInput:function(obj){\n\t\treturn \"\";\n\t},\n\t$init:function(config){\n\t\tthis._viewobj.className += \" webix_control webix_el_\"+(this.$cssName||this.name);\n\n\t\tthis._set_default_css(config);\n\n\t\tthis.data = this._settings;\n\t\tthis._dataobj = this._viewobj;\n\n\t\tthis.$ready.push(function(){ this._calc_size(this.config); });\n\t},\n\thotkey_setter: function(key){\n\t\tvar control = this;\n\t\tthis._addElementHotKey(key, function(view,ev){\n\t\t\tif(control.isVisible()){\n\t\t\t\tvar elem = control.$view.firstChild;\n\t\t\t\ttriggerEvent(elem, \"MouseEvents\", \"click\");\n\t\t\t\tpreventEvent(ev);\n\t\t\t}\n\t\t});\n\t},\n\t_set_default_css: function(config){\n\t\tif (!config.css || !this._get_class(config.css) || (this.defaults.css && !this._get_class(this.defaults.css))){\n\t\t\tthis._viewobj.className += \" webix_secondary\";\n\t\t}\n\t},\n\t_get_class:function(css){\n\t\tif(typeof css == \"string\"){\n\t\t\tconst classes = { webix_danger:1, webix_transparent:1, webix_primary:1 };\n\t\t\tfor(let i in classes){\n\t\t\t\tif(css.indexOf(i)!==-1)\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\t_addElementHotKey: function(key, func, view){\n\t\tvar keyCode = UIManager.addHotKey(key, func, view);\n\t\tthis.attachEvent(\"onDestruct\", function(){\n\t\t\tUIManager.removeHotKey(keyCode, func, view);\n\t\t});\n\t},\n\ttype_setter:function(value){\n\t\tif (this._types[value])\n\t\t\tthis.$renderInput = template(this._types[value]);\n\t\treturn value;\n\t},\n\t_set_inner_size:false,\n\t_types:{\n\t\timage:\"\",\n\t\timageTop:\"\",\n\n\t\ticon:\"\",\n\t\ticonTop:\"\",\n\t},\n\t_findAllInputs: function(){\n\t\tvar result = [];\n\t\tvar tagNames = [\"input\",\"select\",\"textarea\",\"button\"];\n\t\tfor(var i=0; i< tagNames.length; i++){\n\t\t\tvar inputs = this.$view.getElementsByTagName(tagNames[i]);\n\t\t\tfor(var j = 0; j< inputs.length; j++){\n\t\t\t\tresult.push(inputs[j]);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t},\n\tdisable: function(){\n\t\tvar i, node, elem = this._getBox();\n\t\tbaseview.api.disable.apply(this, arguments);\n\t\tif(elem && elem.className.indexOf(\" webix_disabled_box\")== -1){\n\t\t\telem.className += \" webix_disabled_box\";\n\t\t\tvar inputs = this._findAllInputs();\n\t\t\tfor(i=0; i< inputs.length; i++)\n\t\t\t\tinputs[i].setAttribute(\"disabled\",true);\n\n\t\t\t// richselect and based on it\n\t\t\tnode = this.getInputNode();\n\t\t\tif(node && node.tagName.toLowerCase() == \"div\"){\n\t\t\t\tthis._disabledTabIndex = node.getAttribute(\"tabIndex\");\n\t\t\t\tnode.removeAttribute(\"tabIndex\");\n\t\t\t}\n\n\t\t\tif(this._settings.labelPosition == \"top\"){\n\t\t\t\tvar label = this._dataobj.firstChild;\n\t\t\t\tif(label)\n\t\t\t\t\tlabel.className += \" webix_disabled_top_label\";\n\t\t\t}\n\t\t}\n\t},\n\tenable: function(){\n\t\tbaseview.api.enable.apply(this, arguments);\n\t\tvar node,\n\t\t\telem = this._getBox();\n\t\tif(elem){\n\t\t\telem.className = elem.className.replace(\" webix_disabled_box\",\"\");\n\t\t\tvar inputs = this._findAllInputs();\n\t\t\tfor(var i=0; i< inputs.length; i++)\n\t\t\t\tinputs[i].removeAttribute(\"disabled\");\n\n\t\t\tnode = this.getInputNode();\n\t\t\tif(node && !isUndefined(this._disabledTabIndex))\n\t\t\t\tnode.setAttribute(\"tabIndex\",this._disabledTabIndex);\n\n\t\t\tif(this._settings.labelPosition == \"top\"){\n\t\t\t\tvar label = this._dataobj.firstChild;\n\t\t\t\tif(label)\n\t\t\t\t\tlabel.className = label.className.replace(\" webix_disabled_top_label\",\"\");\n\t\t\t}\n\t\t}\n\t},\n\t$setSize:function(x,y){\n\t\tif(base.api.$setSize.call(this,x,y)){\n\t\t\tthis.render();\n\t\t}\n\t},\n\tsetValue:function(value){\n\t\tvalue = this.$prepareValue(value);\n\t\tconst oldvalue = this._settings.value;\n\n\t\tif (this.$compareValue(oldvalue, value)){\n\t\t\tif (this._rendered_input && value != this.$getValue())\n\t\t\t\tthis.$setValue(value);\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._settings.value = value;\n\t\tif (this._rendered_input)\n\t\t\tthis.$setValue(value);\n\n\t\tthis.callEvent(\"onChange\", [value, oldvalue]);\n\t},\n\t$compareValue:function(oldvalue, value){ \n\t\tif (typeof value === \"number\") value = value.toString();\n\t\tif (typeof oldvalue === \"number\") oldvalue = oldvalue.toString();\n\t\treturn oldvalue == value;\n\t},\n\t$prepareValue:function(value){ return this._pattern(value, false); },\n\t_pattern :function(value){\n\t\treturn value === 0 ? \"0\" : (value || \"\").toString();\n\t},\n\t//visual part of setValue\n\t$setValue:function(value){\n\t\tconst node = this.getInputNode();\n\t\tif (node && !this._types[this._settings.type]){\n\t\t\tvalue = this._settings.label || value;\n\t\t\tif (node.tagName==\"BUTTON\") node.innerHTML = value;\n\t\t\telse node.value = value;\n\t\t}\n\t},\n\tgetValue:function(){\n\t\t//if button was rendered - returning actual value\n\t\t//otherwise - returning last set value\n\t\tvar value = this._rendered_input? this.$getValue() : this._settings.value;\n\t\treturn (typeof value == \"undefined\") ? \"\" : value;\n\t},\n\t$getValue:function(){\n\t\treturn this._settings.value||\"\";\t\n\t},\n\tfocus:function(){\n\t\tif(!UIManager.canFocus(this))\n\t\t\treturn false;\n\t\t\n\t\tvar input = this.getInputNode();\n\t\tif (input && input.focus) input.focus();\n\t},\n\tblur:function() {\n\t\tvar input = this.getInputNode();\n\t\tif (input && input.blur) input.blur();\n\t},\n\t//get input element\n\tgetInputNode: function() {\n\t\treturn this._dataobj.getElementsByTagName(\"input\")[0]||this._dataobj.getElementsByTagName(\"button\")[0];\n\t},\n\t//get top-level sub-container\n\t_getBox:function(){\n\t\tfor(var i=0;i< this._dataobj.childNodes.length;i++){\n\t\t\tif(this._dataobj.childNodes[i].className.indexOf(\"webix_el_box\")>=0)\n\t\t\t\treturn this._dataobj.childNodes[i];\n\t\t}\n\t\treturn null;\n\t},\n\t_get_tooltip_data:function(t,e){\n\t\tlet node = e.target || e.srcElement;\n\t\tlet box = this._getBox();\n\n\t\tif (box && box.contains(node))\n\t\t\treturn this._settings;\n\t\treturn null;\n\t},\n\t_sqrt_2:Math.sqrt(2),\n\t_calc_size:function(config){\n\t\tconfig = config || this._settings;\n\t\tif (config.autowidth){\n\t\t\tlet width = getTextSize((config.value||config.label || \"\"), \"webixbutton\").width +\n\t\t\t\t(config.badge||config.badge===0 ? getTextSize(config.badge, \"webix_badge\").width * 2 - 32 : 0) +\n\t\t\t\t(config.type === \"icon\" ? 24 : 0) +\n\t\t\t\t(config.type === \"image\" ? config.height-$active.inputPadding : 0);\n\n\t\t\twidth = Math.max(config.minWidth || 0, width);\n\t\t\tconfig.width = Math.min(config.maxWidth || Infinity, width);\n\t\t}\n\t},\n\t_calck_input_size:function(){\n\t\t//use width for both width and inputWidth settings in clever way\n\t\t//in form, we can define width for some element smaller than for siblings\n\t\t//it will use inputWidth to render the desired view\n\t\tthis._input_width = this._settings.inputWidth || \n\t\t\t((this._content_width - this._settings.width > 2)?this._settings.width:0) || this._content_width;\n\t\tthis._input_height = this._settings.inputHeight||this._inputHeight||0;\n\t},\n\tresize: function(){\n\t\tthis._calc_size();\n\t\treturn base.api.resize.apply(this,arguments);\n\t},\n\trender:function(){\n\t\tthis._calck_input_size();\n\t\tthis._settings.awidth = this._input_width||this._content_width;\n\t\tthis._settings.aheight = this._input_height||this._content_height;\n\n\t\t//image button - image width\n\t\tthis._settings.bheight = this._settings.aheight+2;\n\t\tthis._settings.cheight = this._settings.aheight- 2*$active.inputPadding;\n\t\tthis._settings.dheight = this._settings.cheight - 2; // - borders\n\n\t\tif(AtomRender.render.call(this)){\n\t\t\tthis._rendered_input = true;\n\t\t\tif (this._set_inner_size) this._set_inner_size();\n\t\t\tif (this._settings.align){\n\t\t\t\tvar handle = this._dataobj.firstChild;\n\t\t\t\tif (this._settings.labelPosition == \"top\" && handle.nextSibling)\n\t\t\t\t\thandle = handle.nextSibling;\n\n\t\t\t\tswitch(this._settings.align){\n\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\thandle.style.cssFloat = \"right\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"center\":\n\t\t\t\t\t\thandle.style.display = \"inline-block\";\n\t\t\t\t\t\thandle.parentNode.style.textAlign = \"center\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\t\thandle.style.marginTop = Math.round((this._content_height-this._input_height)/2)+\"px\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"bottom\": \n\t\t\t\t\t\thandle.style.marginTop = (this._content_height-this._input_height)+\"px\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"left\":\n\t\t\t\t\t\thandle.style.cssFloat = \"left\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tassert(false, \"Unknown align mode: \"+this._settings.align);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.$render)\n\t\t\t\tthis.$render(this.data);\n\n\t\t\tif (this._settings.disabled)\n\t\t\t\tthis.disable();\n\n\t\t\tif (this._init_once){\n\t\t\t\tthis._init_once(this.data);\n\t\t\t\tthis._init_once = 0;\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh:function(){ this.render(); },\n\n\ton_click:{\n\t\t_handle_tab_click: function(ev){\n\t\t\tconst id = locate(ev, /*@attr*/\"button_id\");\n\t\t\tconst opt = this.getOption(id);\n\n\t\t\tif (opt && !opt.disabled && this.callEvent(\"onBeforeTabClick\", [id, ev])){\n\t\t\t\tthis.setValue(id);\n\t\t\t\tthis.focus();\n\t\t\t\tthis.callEvent(\"onAfterTabClick\", [id, ev]);\n\t\t\t}\n\t\t},\n\t\twebix_all_segments:function(ev, button){\n\t\t\tthis.on_click._handle_tab_click.call(this, ev, button);\n\t\t},\n\t\twebix_all_tabs:function(ev, button){\n\t\t\tthis.on_click._handle_tab_click.call(this, ev, button);\n\t\t},\n\t\twebix_inp_counter_next:function(){\n\t\t\tif (!this._settings.readonly)\n\t\t\t\tthis.next();\n\t\t},\n\t\twebix_inp_counter_prev:function(){\n\t\t\tif (!this._settings.readonly)\n\t\t\t\tthis.prev();\n\t\t},\n\t\twebix_input_icon:function(){\n\t\t\tthis.getInputNode().focus();\n\t\t},\n\t\twebix_inp_checkbox_border: function(e) {\n\t\t\tif (!this._settings.disabled && (e.target||e.srcElement).tagName != \"DIV\" && !this._settings.readonly)\n\t\t\t\tthis.toggle();\n\t\t},\n\t\twebix_inp_checkbox_label: function() {\n\t\t\tif (!this._settings.readonly)\n\t\t\t\tthis.toggle();\n\t\t},\n\t\twebix_inp_radio_border: function(e) {\n\t\t\tconst id = locate(e, /*@attr*/\"radio_id\");\n\t\t\tconst opt = this.getOption(id);\n\n\t\t\tif (opt && !opt.disabled){\n\t\t\t\tthis.setValue(id);\n\t\t\t\tthis.focus();\n\t\t\t}\n\t\t},\n\t\twebix_tab_more_icon: function(ev,obj,node){\n\t\t\tconst popup = this.getPopup();\n\t\t\tif (!popup.isVisible()){\n\t\t\t\tpopup.resize();\n\t\t\t\tpopup.show(node, null, true);\n\t\t\t} else\n\t\t\t\tpopup.hide();\n\t\t},\n\t\twebix_tab_close:function(e){\n\t\t\tconst id = locate(e, /*@attr*/\"button_id\");\n\t\t\tconst opt = this.getOption(id);\n\n\t\t\tif (opt && !opt.disabled && this.callEvent(\"onBeforeTabClose\", [id, e]))\n\t\t\t\tthis.removeOption(id);\n\t\t\treturn false;\n\t\t}\n\t},\n\n\t//method do not used by button, but used by other child-views\n\t_check_options:function(opts){\n\t\tassert(!!opts, this.name+\": options not defined\");\n\t\tassert(isArray(opts), this.name+\": options must be an array\");\n\n\t\tfor(var i=0;i\"+placeholder+\"\":\"\");\n\t}\n};\n\nconst view = protoUI(api, base.view, AutoTooltip, AtomRender, Settings, EventSystem);\nexport default {api, view};","import {getTextSize} from \"../webix/html\";\nimport {protoUI} from \"../ui/core\";\nimport {$active} from \"../webix/skin\";\n\nimport button from \"../views/button\";\n\nconst api = {\n\tname:\"label\",\n\tdefaults:{\n\t\ttemplate:\"
#label#
\"\n\t},\n\t$skin:function(){\n\t\tbutton.api.$skin.call(this);\n\n\t\tthis.defaults.height = $active.inputHeight;\n\t},\n\tfocus:function(){ return false; },\n\t_getBox:function(){\n\t\treturn this._dataobj.firstChild;\n\t},\n\tsetHTML:function(html){\n\t\tthis._settings.label = html;\n\t\tthis.refresh();\n\t},\n\tsetValue: function(value){\n\t\tthis._settings.label = value;\n\t\tbutton.api.setValue.apply(this,arguments);\n\t},\n\t$setValue:function(value){\n\t\tthis._dataobj.firstChild.innerHTML = value;\n\t},\n\t$render:function(config){\n\t\tif (config.align === \"right\")\n\t\t\tthis._dataobj.firstChild.style.textAlign = \"right\";\n\t},\n\t_set_inner_size:false,\n\t_set_default_css:function(){},\n\t_calc_size:function(config){\n\t\tconst css = \"webix_el_box webixlabel\" + (this.queryView(\"toolbar\", \"parent\") ? \" webixtoolbarlabel\" : \"\");\n\t\tconfig = config || this._settings;\n\t\tif (config.autowidth)\n\t\t\tconfig.width = getTextSize(config.label, css).width;\n\t}\n};\n\nconst view = protoUI(api, button.view);\nexport default {api, view};","import UIManager from \"../core/uimanager\";\nimport Number from \"../core/number\";\n\nimport env from \"../webix/env\";\nimport patterns from \"../webix/patterns\";\n\nimport {preventEvent, getSelectionRange, setSelectionRange} from \"../webix/html\";\nimport {bind, isUndefined} from \"../webix/helpers\";\nimport {_event} from \"../webix/htmlevents\";\n\n\nvar controls = {};\nfor(var i in UIManager._controls){\n\tcontrols[UIManager._controls[i]] = i;\n}\nvar nav_controls = {\n\t9:\"tab\",\n\t38:\"up\",\n\t40:\"down\",\n\t37:\"left\",\n\t39:\"right\"\n};\n\n\nconst TextPattern = {\n\t$init:function(config){\n\t\tvar pattern = this.defaults.pattern || config.pattern;\n\t\tvar format = this.defaults.format || config.format;\n\t\tconfig.value = isUndefined(config.value) ? \"\" :config.value;\n\n\t\tif(pattern || (format && !this.format_setter)){\n\t\t\tthis.attachEvent(\"onKeyPress\", function(code, e){\n\t\t\t\tif(e.ctrlKey || e.altKey || this._settings.readonly || this._custom_format)\n\t\t\t\t\treturn;\n\n\t\t\t\tif(code>105 && code<112) //numpad operators\n\t\t\t\t\tcode -=64;\n\n\t\t\t\tif(controls[code] && code !== 8 && code !==46){ //del && bsp\n\t\t\t\t\tif(!nav_controls[code])\n\t\t\t\t\t\tpreventEvent(e);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tpreventEvent(e);\n\t\t\t\tthis._on_key_pressed(e, code);\n\t\t\t});\n\n\t\t\tthis.attachEvent(\"onAfterRender\", this._after_render);\n\t\t\tthis.getText = function(){ return this.getInputNode().value; };\n\t\t\tthis._pattern = function(value, mode){\n\t\t\t\tif (mode === false)\n\t\t\t\t\treturn this._getRawValue(value);\n\t\t\t\telse\n\t\t\t\t\treturn this._matchPattern(value);\n\t\t\t};\n\n\t\t\tif (format){\n\t\t\t\tif (typeof format === \"object\"){\n\t\t\t\t\tthis._custom_format = format;\n\t\t\t\t} else {\n\t\t\t\t\tformat = Number.getConfig(format);\n\t\t\t\t\tthis._custom_format = {\n\t\t\t\t\t\tparse : function(value){ return Number.parse(value, format); },\n\t\t\t\t\t\tedit : function(value){ return Number.format(value, format); },\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t},\n\tpattern_setter:function(value){\n\t\tvar pattern = patterns[value] || value;\n\t\t\n\t\tif(typeof pattern ==\"string\") pattern = { mask: pattern };\n\t\tpattern.allow = pattern.allow || /[A-Za-z0-9]/g;\n\t\t\n\t\tthis._patternScheme(pattern);\n\t\treturn pattern;\n\t},\n\t_init_validation:function(){\n\t\tthis.config.validate = this.config.validate || bind(function(){\n\t\t\tvar value = this.getText();\n\t\t\tvar raw = value.replace(this._pattern_chars, \"\");\n\t\t\tvar matches = (value.toString().match(this._pattern_allows) || []).join(\"\");\n\t\t\treturn (matches.length == raw.length && value.length == this._settings.pattern.mask.length);\n\t\t}, this);\n\t},\n\t_after_render:function(){\n\t\tvar ev = env.isIE8?\"propertychange\":\"input\";\n\t\t\n\t\tif (!this._custom_format) \n\t\t\t_event(this.getInputNode(), ev, function(){\n\t\t\t\tvar stamp = (new Date()).valueOf();\n\t\t\t\t//dark ie8 magic\n\t\t\t\tvar width = this.$view.offsetWidth; //eslint-disable-line\n\t\t\t\tif(!this._property_stamp || stamp-this._property_stamp>100){\n\t\t\t\t\tthis._property_stamp = stamp;\n\t\t\t\t\tthis.$setValue(this.getText());\n\t\t\t\t}\n\t\t\t}, {bind:this});\n\n\t\t_event(this.getInputNode(), \"blur\", function(){\n\t\t\tthis._applyChanges();\n\t\t}, {bind:this});\n\t},\n\t_patternScheme:function(pattern){\n\t\tvar mask = pattern.mask, scheme = {}, chars = \"\", count = 0;\n\t\t\n\t\tfor(var i = 0; i0) pos += rest;\n\t\t}\n\t\treturn pos;\n\t},\n\t_fixCaretPos:function(pos, code){\n\t\tvar prev = pos-(code !== 46)*1;\n\n\t\tif(this._pattern_scheme[prev] === false){\n\t\t\tpos = pos+(code ==8 ? -1: 1);\n\t\t\treturn this._fixCaretPos(pos, code);\n\t\t}\n\t\tif(this._pattern_scheme[pos] === false && code !==8)\n\t\t\treturn this._fixCaretPos(pos+1, code)-1;\n\t\treturn pos;\n\t},\n\t_getRawValue:function(value){\n\t\tif (this._custom_format)\n\t\t\treturn this._custom_format.parse(value);\n\n\t\tvalue = value || value === 0 ? value : \"\";\n\t\tvar matches = value.toString().match(this._pattern_allows) || [];\n\t\treturn matches.join(\"\").replace(this._pattern_chars, \"\");\n\t},\n\t_matchPattern:function(value){\n\t\tif (this._custom_format)\n\t\t\treturn this._custom_format.edit(this._custom_format.parse(value));\n\n\t\tvar raw = this._getRawValue(value),\n\t\t\tpattern = this._settings.pattern.mask,\n\t\t\tmask = this._settings.pattern.mask,\n\t\t\tscheme = this._pattern_scheme,\n\t\t\tend = false,\n\t\t\tindex = 0,\n\t\t\trawIndex = 0,\n\t\t\trawLength = 0;\n\n\t\tfor(var i in scheme){\n\t\t\tif(scheme[i]!==false){\n\t\t\t\tif(!end){\n\t\t\t\t\tindex = i*1;\n\t\t\t\t\trawIndex = scheme[i];\n\t\t\t\t\tvar rchar = raw[rawIndex]||\"\";\n\t\t\t\t\tvar next = raw[rawIndex+1];\n\n\t\t\t\t\tpattern = (rchar?pattern.substr(0, index):\"\") + rchar +(rchar && next?pattern.substr(index + 1):\"\");\n\t\t\t\t\tif(!next) end = true;\n\t\t\t\t}\n\t\t\t\trawLength++;\n\t\t\t}\n\t\t}\n\n\t\t//finalize value with subsequent mask chars \n\t\tvar icode = this._input_code;\n\t\tif((icode && icode !== 8) || (!icode && rawLength-1 === rawIndex && pattern.length < mask.length)){\n\t\t\tif(raw){\n\t\t\t\tvar nind = index+1;\n\t\t\t\tif(mask.charAt(nind)!==\"#\" && pattern.length < mask.length){\n\t\t\t\t\tvar lind = mask.indexOf(\"#\", nind);\n\t\t\t\t\tif(lind<0) lind = mask.length;\n\t\t\t\t\tpattern += mask.substr(nind, lind-nind);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if(icode !==46){\n\t\t\t\tpattern += mask.substr(0, mask.indexOf(\"#\"));\n\t\t\t}\n\t\t}\n\t\tthis._input_code = null;\n\t\treturn pattern;\n\t}\n};\n\nexport default TextPattern;","import {protoUI, ui, $$} from \"../ui/core\";\nimport {$active} from \"../webix/skin\";\nimport {isUndefined, isArray, extend, uid} from \"../webix/helpers\";\nimport {_event} from \"../webix/htmlevents\";\nimport {setSelectionRange} from \"../webix/html\";\nimport {assert} from \"../webix/debug\";\nimport template from \"../webix/template\";\n\nimport i18n from \"../webix/i18n\";\nimport rules from \"../webix/rules\";\nimport button from \"./button\";\nimport base from \"../views/view\";\n\nimport TextPattern from \"../core/textpattern\";\n\nconst api = {\n\tname:\"text\",\n\t$allowsClear:true,\n\t_init_onchange:function(){\n\t\tif (this.$allowsClear){\n\t\t\t//attach onChange handler only for controls which do not manage blur on their own\n\t\t\t//for example - combo\n\t\t\tif (!this._onBlur)\n\t\t\t\t_event(this.getInputNode(), \"change\", this._applyChanges, {bind:this});\n\t\t\tif (this._settings.suggest)\n\t\t\t\t$$(this._settings.suggest).linkInput(this);\n\t\t}\n\t},\n\t_applyChanges: function(){\n\t\tvar newvalue = this.getValue();\n\t\t\n\t\tvar res = this.setValue(newvalue, true);\n\t\t//controls with post formating, we need to repaint value\n\t\tif (this._custom_format && res === false ){\n\t\t\tthis.$setValue(newvalue);\n\t\t}\n\t},\n\t$skin:function(){\n\t\tbutton.api.$skin.call(this);\n\n\t\tthis.defaults.height = $active.inputHeight;\n\t\tthis.defaults.inputPadding = $active.inputPadding;\n\t\tthis._inputSpacing = $active.inputSpacing;\n\t\tthis._labelTopHeight = $active.labelTopHeight;\n\t},\n\t$init:function(config){\n\t\tif (config.labelPosition == \"top\")\n\t\t\tif (isUndefined(config.height) && this.defaults.height) // textarea\n\t\t\t\tconfig.height = this.defaults.height + (config.label?this._labelTopHeight:0);\n\n\t\t//suggest reference for destructor\n\t\tthis._destroy_with_me = [];\n\n\t\tthis.attachEvent(\"onAfterRender\", this._init_onchange);\n\t\tthis.attachEvent(\"onBlur\", function(){\n\t\t\tif(this._onBlur) this._onBlur();\n\t\t});\n\t},\n\t$renderIcon:function(){\n\t\tvar config = this._settings;\n\t\tif (config.icon){\n\t\t\tvar height = config.aheight - 2*config.inputPadding,\n\t\t\t\tpadding = (height - 18)/2 -1,\n\t\t\t\taria = this.addSection ? \"role='button' tabindex='0' aria-label='\"+(i18n.aria[\"multitext\"+(config.mode || \"\")+\"Section\"])+\"'\": \"\";\n\t\t\treturn \"\";\n\t\t}\n\t\treturn \"\";\n\t},\n\trelatedView_setter:function(value){\n\t\tthis.attachEvent(\"onChange\", function(){\n\t\t\tvar value = this.getValue();\n\t\t\tvar mode = this._settings.relatedAction;\n\t\t\tvar viewid = this._settings.relatedView;\n\t\t\tvar view = $$(viewid);\n\t\t\tif (!view){\n\t\t\t\tvar top = this.getTopParentView();\n\t\t\t\tif (top && top.$$)\n\t\t\t\t\tview = top.$$(viewid);\n\t\t\t}\n\n\t\t\tassert(view, \"Invalid relatedView: \"+viewid);\n\n\t\t\tif (mode == \"enable\"){\n\t\t\t\tif (value) view.enable(); else view.disable();\n\t\t\t} else {\n\t\t\t\tif (value) view.show(); else view.hide();\n\t\t\t}\n\t\t});\n\t\treturn value;\n\t},\n\tvalidateEvent_setter:function(value){\n\t\tif (value == \"blur\")\n\t\t\tthis.attachEvent(\"onBlur\", this.validate);\n\n\t\tif (value == \"key\")\n\t\t\tthis.attachEvent(\"onTimedKeyPress\", this.validate);\n\n\t\treturn value;\n\t},\n\tvalidate:function(){\n\t\tvar rule = this._settings.validate;\n\t\tif (!rule && this._settings.required)\n\t\t\trule = rules.isNotEmpty;\n\n\t\tvar form =this.getFormView();\n\t\tvar name = this._settings.name;\n\t\tvar value = this.getValue();\n\t\tvar data = {}; data[name] = value;\n\n\t\tassert(form, \"Validation works only for fields in the form\");\n\t\tassert(name, \"Validation works only for fields with name\");\n\n\t\tif (rule && !form._validate(rule, value, data, name))\n\t\t\treturn false;\n\t\treturn true;\n\t},\n\tbottomLabel_setter: function(value){\n\t\tif(!this._settings.bottomPadding)\n\t\t\tthis._settings.bottomPadding = 18;\n\t\treturn value;\n\t},\n\t_getInvalidText: function(){\n\t\tvar text = this._settings.invalidMessage;\n\t\tif(typeof text == \"function\"){\n\t\t\ttext.call(this);\n\t\t}\n\t\treturn text;\n\t},\n\tsetBottomText: function(text, height){\n\t\tvar config = this._settings;\n\t\tif (typeof text != \"undefined\"){\n\t\t\tif (config.bottomLabel == text) return;\n\t\t\tconfig.bottomLabel = text;\n\t\t}\n\n\t\tvar message = (config.invalid ? config.invalidMessage : \"\" ) || config.bottomLabel;\n\t\tif (!message && !config.bottomPadding)\n\t\t\tconfig.inputHeight = 0;\n\t\tif (message && !config.bottomPadding){\n\t\t\tthis._restorePadding = 1;\n\t\t\tconfig.bottomPadding = config.bottomPadding || height || 18;\t\n\t\t\tthis.render();\n\t\t\tthis.adjust();\n\t\t\tthis.resize();\n\t\t} else if (!message && this._restorePadding){\n\t\t\tconfig.bottomPadding = this._restorePadding = 0;\n\t\t\t//textarea\n\t\t\tif (!config.height)\n\t\t\t\tthis.render();\n\t\t\tthis.adjust();\n\t\t\tthis.resize();\n\t\t} else\n\t\t\tthis.render();\n\t},\n\t$getSize: function(){\n\t\tvar sizes = base.api.$getSize.apply(this,arguments);\n\t\tvar heightInc = this.config.bottomPadding;\n\t\tif(heightInc){\n\t\t\tsizes[2] += heightInc;\n\t\t\tsizes[3] += heightInc;\n\t\t}\n\t\treturn sizes;\n\t},\n\t$setSize:function(x,y){\n\t\tvar config = this._settings;\n\n\t\tif(base.api.$setSize.call(this,x,y)){\n\t\t\tif (!x || !y) return;\n\n\t\t\tif (config.labelPosition == \"top\"){\n\t\t\t\t// textarea\n\t\t\t\tif (!config.inputHeight)\n\t\t\t\t\tthis._inputHeight = this._content_height - (config.label?this._labelTopHeight:0) - (this.config.bottomPadding||0);\n\t\t\t\tconfig.labelWidth = 0;\n\t\t\t} else if (config.bottomPadding){\n\t\t\t\tconfig.inputHeight = this._content_height - this.config.bottomPadding;\n\t\t\t}\n\t\t\tthis.render();\n\t\t}\n\t},\n\t_get_input_width: function(config){\n\t\tvar width = (this._input_width||0)-(config.label?this._settings.labelWidth:0) - this._inputSpacing - (config.iconWidth || 0);\n\n\t\t//prevent js error in IE\n\t\treturn (width < 0)?0:width;\n\t},\n\t_render_div_block:function(obj, common){\n\t\tvar id = \"x\"+uid();\n\t\tvar width = common._get_input_width(obj);\n\t\tvar inputAlign = obj.inputAlign || \"left\";\n\t\tvar height = this._settings.aheight - 2*$active.inputPadding - 2*$active.borderWidth;\n\t\tvar text = (obj.text||obj.value||this._get_div_placeholder(obj));\n\t\tvar html = \"
\"+ text +\"
\";\n\t\treturn common.$renderInput(obj, html, id);\n\t},\n\t_baseInputHTML:function(tag){\n\t\tvar html = \"<\"+tag+(this._settings.placeholder?\" placeholder='\"+this._settings.placeholder+\"' \":\" \");\n\t\tif (this._settings.readonly)\n\t\t\thtml += \"readonly='true' aria-readonly=''\";\n\t\tif(this._settings.required)\n\t\t\thtml += \"aria-required='true'\";\n\t\tif(this._settings.invalid)\n\t\t\thtml += \"aria-invalid='true'\";\n\n\t\tvar attrs = this._settings.attributes;\n\t\tif (attrs)\n\t\t\tfor(var prop in attrs)\n\t\t\t\thtml += prop+\"='\"+attrs[prop]+\"' \";\n\t\treturn html;\n\t},\n\t$renderLabel: function(config, id){\n\t\tlet label = \"\";\n\n\t\tif (config.label){\n\t\t\tlet labelAlign = (config.labelAlign||\"left\");\n\t\t\tlet top = this._settings.labelPosition == \"top\";\n\t\t\tlet labelTop = top?\"display:block;\":(\"width: \" + this._settings.labelWidth + \"px;\");\n\t\t\tlet labelHeight = this._getLabelHeight(top);\n\t\t\tlabel = \"\";\n\t\t}\n\t\treturn label;\n\t},\n\t_getLabelHeight:function(top){\n\t\treturn top ? this._labelTopHeight-this._settings.inputPadding : (this._settings.aheight - 2*this._settings.inputPadding);\n\t},\n\t$renderInput: function(config, div_start, id) {\n\t\tvar inputAlign = (config.inputAlign||\"left\");\n\t\tvar top = (config.labelPosition == \"top\");\n\t\tvar inputWidth = this._get_input_width(config);\n\n\t\tid = id||uid();\n\n\t\tvar label = this.$renderLabel(config,id);\n\n\t\tvar html = \"\";\n\t\tif(div_start){\n\t\t\thtml += div_start;\n\t\t} else {\n\t\t\tvar value = template.escape(config.text || this._pattern(config.value) );\n\t\t\thtml += this._baseInputHTML(\"input\")+\"id='\" + id + \"' type='\"+(config.type||this.name)+\"'\"+(config.editable?\" role='combobox'\":\"\")+\" value='\" + value + \"' style='width: \" + inputWidth + \"px; text-align: \" + inputAlign + \";'\";\n\t\t\tvar attrs = config.attributes;\n\t\t\tif (attrs)\n\t\t\t\tfor(var prop in attrs)\n\t\t\t\t\thtml += \" \"+prop+\"='\"+attrs[prop]+\"'\";\n\t\t\thtml += \" />\";\n\t\t}\n\t\tvar icon = this.$renderIcon?this.$renderIcon(config):\"\";\n\t\thtml += icon;\n\n\t\tvar result = \"\";\n\t\t//label position, top or left\n\t\tif (top)\n\t\t\tresult = label+\"
\"+html+\"
\";\n\t\telse\n\t\t\tresult = \"
\"+label+html+\"
\";\n\n\n\t\t//bottom message width\n\t\tvar padding = config.awidth-inputWidth-$active.inputPadding*2;\n\t\t//bottom message text\n\t\tvar message = (config.invalid ? config.invalidMessage : \"\") || config.bottomLabel;\n\t\tif (message)\n\t\t\tresult += \"
\"+message+\"
\";\n\n\t\treturn result;\n\t},\n\tdefaults:{\n\t\ttemplate:function(obj, common){\n\t\t\treturn common.$renderInput(obj);\n\t\t},\n\t\tlabel:\"\",\n\t\tlabelWidth:80\n\t},\n\ttype_setter:function(value){ return value; },\n\t_set_inner_size:false,\n\t_set_default_css:function(){},\n\t$setValue:function(value){\n\t\tthis.getInputNode().value = this._pattern(value);\n\t},\n\t$getValue:function(){\n\t\treturn this._pattern(this.getInputNode().value, false);\n\t},\n\tsetValueHere:function(v, data, details){\n\t\tif (details && details.symbol){\n\t\t\tconst s = details.symbol;\n\t\t\tlet value = this.getValue();\n\t\t\tlet last = value.substring(details.pos);\n\n\t\t\tvalue = value.substring(0, details.pos);\n\t\t\tvalue = value.substring(0, value.lastIndexOf(s)+s.length) + v;\n\n\t\t\tthis.setValue(value + last);\n\t\t\tsetSelectionRange(this.getInputNode(), value.length);\n\t\t} else\n\t\t\tthis.setValue(v);\n\t},\n\tsuggest_setter:function(value){\n\t\tif (value){\n\t\t\tassert(value !== true, \"suggest options can't be set as true, data need to be provided instead\");\n\n\t\t\tif (typeof value == \"string\"){\n\t\t\t\tconst attempt = $$(value);\n\t\t\t\tif (attempt) \n\t\t\t\t\treturn $$(value)._settings.id;\n\n\t\t\t\tvalue = { body: { url:value , dataFeed:value }};\n\t\t\t} else if(value.getItem)\n\t\t\t\tvalue = { body: { data:value }};\n\t\t\telse if (isArray(value))\n\t\t\t\tvalue = { body: { data: this._check_options(value) }};\n\t\t\telse if (!value.body)\n\t\t\t\tvalue.body = { };\n\n\t\t\textend(value, { view:\"suggest\" });\n\n\t\t\tconst view = ui(value);\n\t\t\tthis._destroy_with_me.push(view);\n\t\t\treturn view._settings.id;\n\t\t}\n\t\treturn false;\n\t}\n};\n\nconst view = protoUI(api, TextPattern, button.view);\nexport default {api, view};","import {uid, bind} from \"../webix/helpers\";\nimport {proto, ui} from \"../ui/core\";\n\nimport EventSystem from \"./eventsystem\";\nimport Destruction from \"./destruction\";\nimport DataMove from \"../core/datamove\";\nimport DataLoader from \"../core/dataloader\";\nimport MapCollection from \"../core/mapcollection\";\n\nimport Settings from \"../core/settings\";\n\nimport ValidateCollection from \"../core/validatecollection\";\n\nimport BindSource from \"../core/bindsource\";\nimport BaseBind from \"../core/basebind\";\nimport CollectionBind from \"../core/collectionbind\";\n\nimport {define} from \"../services\";\n\nconst DataCollection = proto({\n\tname:\"DataCollection\",\n\tisVisible:function(){ \n\t\tif (!this.data.order.length && !this.data._filter_order && !this._settings.dataFeed) return false;\n\t\treturn true; \n\t},\n\t$init:function(config){\n\t\tthis.data.provideApi(this, true);\n\t\tvar id = (config&&config.id)?config.id:uid();\n\t\tthis._settings.id =id;\n\t\tui.views[id] = this;\n\t\tthis.data.attachEvent(\"onStoreLoad\", bind(function(){\n\t\t\tthis.callEvent(\"onBindRequest\",[]);\n\t\t}, this));\n\t},\n\trefresh:function(){ this.callEvent(\"onBindRequest\",[]); }\n}, DataMove, CollectionBind, BindSource, ValidateCollection, DataLoader, MapCollection, EventSystem, BaseBind, Destruction, Settings);\n\ndefine(\"DataCollection\", DataCollection);\n\nexport default DataCollection;","import {protoUI, $$} from \"../ui/core\";\nimport {uid, bind} from \"../webix/helpers\";\n\nimport text from \"./text\";\nimport DataCollection from \"../core/datacollection\";\n\n\nconst api = {\n\tname:\"select\",\n\tdefaults:{\n\t\ttemplate:function(obj,common){\n\t\t\tconst id = \"x\"+uid();\n\t\t\tlet html = common._baseInputHTML(\"select\")+\"id='\"+id+\"' style='width:\"+common._get_input_width(obj)+\"px;'>\";\n\n\t\t\tconst optview = $$(obj.options);\n\t\t\tif (optview && optview.data && optview.data.each){\n\t\t\t\toptview.data.each(function(option){\n\t\t\t\t\thtml+=\"\"+option.value+\"\";\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst options = common._check_options(obj.options);\n\t\t\t\tfor (let i=0; i\"+options[i].value+\"\";\n\t\t\t}\n\t\t\thtml += \"\";\n\t\t\treturn common.$renderInput(obj, html, id);\n\t\t}\n\t},\n\toptions_setter:function(value){\n\t\tif (value){\n\t\t\tif (typeof value ==\"string\"){\n\t\t\t\tconst collection = new DataCollection({url:value});\n\t\t\t\tcollection.data.attachEvent(\"onStoreLoad\", bind(this.refresh, this));\n\t\t\t\treturn collection;\n\t\t\t} else\n\t\t\t\treturn value;\n\t\t}\n\t},\n\t//get input element\n\tgetInputNode: function() {\n\t\treturn this._dataobj.getElementsByTagName(\"select\")[0];\n\t}\n};\n\nconst view = protoUI(api, text.view);\nexport default {api, view};","import {protoUI} from \"../ui/core\";\nimport {$active} from \"../webix/skin\";\nimport {uid} from \"../webix/helpers\";\nimport template from \"../webix/template\";\n\nimport text from \"./text\";\n\n\nconst api = {\n\tname:\"checkbox\",\n\tdefaults:{\n\t\tcheckValue:1,\n\t\tuncheckValue:0,\n\t\ttemplate:function(config, common) {\n\t\t\tvar id = \"x\"+uid();\n\t\t\tvar rightlabel = \"\";\n\t\t\tif (config.labelRight){\n\t\t\t\trightlabel = \"\";\n\t\t\t\t//user clearly attempts to hide the label, help him\n\t\t\t\tif (config.labelWidth)\n\t\t\t\t\tconfig.label = config.label || \" \";\n\t\t\t}\n\t\t\tvar checked = (config.checkValue == config.value);\n\t\t\tvar margin = Math.floor((common._settings.aheight-16)/2);\n\t\t\tvar ch = common._baseInputHTML(\"input\")+\"style='margin-top:\"+margin+\"px;\"+(config.customCheckbox?\"display:none\":\"\")+\"' id='\"+id+\"' type='checkbox' \"+(checked?\"checked='1'\":\"\")+(config.labelRight?\" aria-label='\"+template.escape(config.labelRight)+\"'\":\"\")+\"/>\";\n\t\t\tvar className = \"webix_inp_checkbox_border webix_el_group webix_checkbox_\"+(checked?\"1\":\"0\");\n\t\t\tvar customCheckbox = config.customCheckbox || \"\";\n\t\t\tif(customCheckbox){\n\t\t\t\tcustomCheckbox = customCheckbox.replace(/(aria-checked=')\\w*(?=')/, \"$1\"+(config.value == config.checkValue?\"true\":\"false\"));\n\t\t\t\tcustomCheckbox = customCheckbox.replace(/(aria-label=')\\w*(?=')/, \"$1\"+template.escape(config.labelRight || config.label));\n\t\t\t\tcustomCheckbox = customCheckbox.replace(/(aria-invalid=')\\w*(?=')/, \"$1\"+(config.invalid?\"true\":\"false\"));\n\t\t\t}\n\t\t\tvar html = \"
\"+ch+customCheckbox+rightlabel+\"
\";\n\t\t\treturn common.$renderInput(config, html, id);\n\t\t}\n\t},\n\tcustomCheckbox_setter: function(value){\n\t\tif( value === true && $active.customCheckbox){\n\t\t\tvalue = \"\";\n\t\t}\n\t\treturn value;\n\t},\n\tblur: function(){\n\t\tvar input = this.getInputNode();\n\t\tif(input) input.blur();\n\t},\n\t_pattern :function(value){ return value; },\n\t_init_onchange: function(){},\n\t$setValue:function(value){\n\t\tvar isChecked = (value == this._settings.checkValue);\n\t\tvar input = this.$view.getElementsByTagName(\"input\")[0];\n\t\tvar parentNode = input?input.parentNode:null;\n\n\t\tif(parentNode && this._settings.customCheckbox){\n\t\t\tvar button = parentNode.getElementsByTagName(\"BUTTON\");\n\t\t\tif(button[0]) button[0].setAttribute(\"aria-checked\", isChecked?\"true\":\"false\");\n\t\t}\n\t\tif(parentNode){\n\t\t\tparentNode.className = parentNode.className.replace(/(webix_checkbox_)\\d/,\"$1\"+(isChecked?1:0));\n\t\t}\n\t\tinput.checked = isChecked;\n\t},\n\ttoggle:function(){\n\t\tvar value = (this.getValue() != this._settings.checkValue)?this._settings.checkValue:this._settings.uncheckValue;\n\t\tthis.setValue(value);\n\t},\n\tgetValue:function(){\n\t\tvar value = this._settings.value;\n\t\treturn (value == this._settings.checkValue)?this._settings.checkValue:this._settings.uncheckValue;\n\t},\n\tgetInputNode: function() {\n\t\treturn this.$view.getElementsByTagName(this._settings.customCheckbox?\"button\":\"input\")[0];\n\t},\n\t$skin:function(){\n\t\ttext.api.$skin.call(this);\n\n\t\tthis.defaults.customCheckbox = !!$active.customCheckbox;\n\t}\n};\n\nconst view = protoUI(api, text.view);\nexport default {api, view};","import {protoUI} from \"../ui/core\";\nimport {$active} from \"../webix/skin\";\nimport {uid} from \"../webix/helpers\";\n\nimport template from \"../webix/template\";\nimport HTMLOptions from \"../core/htmloptions\";\n\nimport button from \"../views/button\";\nimport text from \"../views/text\";\n\nconst api = {\n\tname:\"radio\",\n\tdefaults:{\n\t\ttemplate: function(config,common) {\n\t\t\tcommon._check_options(config.options);\n\n\t\t\tconst options = common._filterOptions(config.options);\n\t\t\tconst active = common._getFirstActive();\n\t\t\tlet id, eachid, isChecked, isDisabled, label, tooltip, customRadio, optlabel, rd, input, focusable;\n\t\t\tlet html = [];\n\n\t\t\tfor (let i=0; i < options.length; i++) {\n\t\t\t\teachid = \"x\"+uid();\n\t\t\t\tid = id || eachid;\n\n\t\t\t\tif (i && (options[i].newline || config.vertical))\n\t\t\t\t\thtml.push(\"
\");\n\n\t\t\t\tisChecked = (options[i].id == config.value);\n\t\t\t\tfocusable = isChecked || (!config.value && options[i].id === active);\n\t\t\t\tisDisabled = !!options[i].disabled;\n\t\t\t\tlabel = options[i].value || \"\";\n\t\t\t\ttooltip = config.tooltip ? \" webix_t_id='\"+options[i].id+\"'\" : \"\";\n\t\t\t\t\n\t\t\t\tcustomRadio = config.customRadio|| \"\";\n\t\t\t\tif (customRadio){\n\t\t\t\t\toptlabel = (i === 0 ? config.label+\" \" : \"\")+label;\n\t\t\t\t\tcustomRadio = customRadio.replace(/(aria-label=')\\w*(?=')/, \"$1\"+template.escape(optlabel));\n\t\t\t\t\tcustomRadio = customRadio.replace(/(aria-checked=')\\w*(?=')/, \"$1\"+(isChecked?\"true\":\"false\"));\n\t\t\t\t\tcustomRadio = customRadio.replace(/(tabindex=')\\w*(?=')/, \"$1\"+(!isDisabled && focusable?\"0\":\"-1\"));\n\t\t\t\t\tcustomRadio = customRadio.replace(/(aria-invalid=')\\w*(?=')/, \"$1\"+(config.invalid?\"true\":\"false\"));\n\t\t\t\t\tcustomRadio = customRadio.replace(/(button_id=')\\w*(?=')/, \"$1\"+options[i].id);\n\t\t\t\t\tif (isDisabled)\n\t\t\t\t\t\tcustomRadio = customRadio.replace(\"role='radio'\", \"role='radio' webix_disabled='true'\");\n\t\t\t\t}\n\t\t\t\trd = common._baseInputHTML(\"input\")+\" name='\"+(config.name || config.id)+\"' type='radio' \"+(isChecked?\"checked='1'\":\"\")+\"tabindex=\"+(!isDisabled && focusable?\"0\":\"-1\")+\n\t\t\t\t\t\" value='\"+options[i].id+\"' id='\"+eachid+\"'\"+(isDisabled?\" disabled='true'\":\"\")+\" style='\"+(customRadio?\"display:none\":\"\")+\"' />\";\n\t\t\t\tinput = \"\";\n\n\t\t\t\tif (label)\n\t\t\t\t\tlabel = \"\";\n\n\t\t\t\thtml.push(\"\");\n\t\t\t\t\n\t\t\t}\n\t\t\thtml = \"
\"+html.join(\"\")+\"
\";\n\t\t\t\n\t\t\treturn common.$renderInput(config, html, id);\n\t\t}\n\t},\n\trefresh:function(){\n\t\tthis.render();\n\t\tif (this._last_size && this.$getSize(0,0)[2] != this._last_size[1])\n\t\t\tthis.resize();\n\t},\n\t$getSize:function(dx, dy){\n\t\tvar size = button.api.$getSize.call(this, dx, dy);\n\t\tvar options = this._filterOptions(this._settings.options);\n\t\tif (options){\n\t\t\tvar count = this._settings.vertical?0:1;\n\t\t\tfor (var i=0; i < options.length; i++)\n\t\t\t\tif (this._settings.vertical || options[i].newline)\n\t\t\t\t\tcount++;\n\t\t\tsize[3] = size[2] = Math.max(size[2], (this._settings.optionHeight||25) * count+this._settings.inputPadding*2+ (this._settings.labelPosition == \"top\"?this._labelTopHeight:0));\n\t\t}\n\t\tvar heightInc = this.config.bottomPadding;\n\t\tif(heightInc){\n\t\t\tsize[2] += heightInc;\n\t\t\tsize[3] += heightInc;\n\t\t}\n\t\treturn size;\n\t},\n\t_getInputNode: function(){\n\t\treturn this._dataobj.getElementsByTagName(this._settings.customRadio ? \"button\" : \"input\");\n\t},\n\t$setValue:function(value){\n\t\tconst inp = this._dataobj.getElementsByTagName(\"input\");\n\t\tconst active = this._getFirstActive();\n\t\tlet id, option, focusable, parentNode, button;\n\n\t\tfor (let i=0; i < inp.length; i++){\n\t\t\tid = inp[i].parentNode.getAttribute(/*@attr*/\"radio_id\");\n\t\t\toption = this.getOption(id);\n\n\t\t\tinp[i].checked = (id == value);\n\t\t\tfocusable = option && !option.disabled && (inp[i].checked || (!value && option.id == active));\n\t\t\tinp[i].setAttribute(\"tabindex\", focusable?\"0\":\"-1\");\n\n\t\t\tparentNode = inp[i]?inp[i].parentNode:null;\n\t\t\tif (parentNode){\n\t\t\t\tparentNode.className = parentNode.className.replace(/(webix_radio_)\\d/,\"$1\"+(inp[i].checked?1:0));\n\t\t\t\tif (this._settings.customRadio){\n\t\t\t\t\tbutton = parentNode.getElementsByTagName(\"BUTTON\");\n\t\t\t\t\tif (button[0]){\n\t\t\t\t\t\tbutton[0].setAttribute(\"aria-checked\", inp[i].checked?\"true\":\"false\");\n\t\t\t\t\t\tbutton[0].setAttribute(\"tabindex\", focusable?\"0\":\"-1\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tgetValue:function(){\n\t\treturn this._settings.value;\n\t},\n\tfocus: function(){ return this._focus(); },\n\tblur: function(){ this._blur(); },\n\tcustomRadio_setter: function(value){\n\t\tif(value === true && $active.customRadio)\n\t\t\tvalue = \"\";\n\t\treturn value;\n\t},\n\t$skin:function(){\n\t\ttext.api.$skin.call(this);\n\n\t\tthis.defaults.customRadio = !!$active.customRadio;\n\t\tif ($active.optionHeight)\n\t\t\tthis.defaults.optionHeight = $active.optionHeight;\n\t}\n};\n\nconst view = protoUI(api, text.view, HTMLOptions);\nexport default {api, view};","import {protoUI, $$} from \"../ui/core\";\nimport {$active} from \"../webix/skin\";\nimport {isUndefined, isArray} from \"../webix/helpers\";\n\nimport i18n from \"../webix/i18n\";\nimport wDate from \"../core/date\";\n\nimport text from \"./text\";\n\n\nconst api = {\n\tname:\"datepicker\",\n\t$init:function(){\n\t\tthis.$ready.push(this._init_popup);\n\t},\n\tdefaults:{\n\t\ttemplate:function(obj, common){\n\t\t\tif(common._settings.type == \"time\"){\n\t\t\t\tcommon._settings.icon = common._settings.timeIcon;\n\t\t\t}\n\t\t\t//temporary remove obj.type [[DIRTY]]\n\t\t\tvar t = obj.type; obj.type = \"\";\n\t\t\tvar res = obj.editable?common.$renderInput(obj):common._render_div_block(obj, common);\n\t\t\tobj.type = t;\n\t\t\treturn res;\n\t\t},\n\t\tstringResult:false,\n\t\ttimepicker:false,\n\t\ticon:\"wxi-calendar\",\n\t\ticons: true,\n\t\ttimeIcon: \"wxi-clock\",\n\t\tseparator:\", \"\n\t},\n\t_onBlur:function(){\n\t\tconst text = this.getText();\n\t\tif (this._settings.text == text || (isUndefined(this._settings.text) && !text))\n\t\t\treturn;\n\n\t\tconst value = this._settings.editable ? this.getValue() : this.getPopup().getValue();\n\t\tthis.setValue(value||\"\");\n\t},\n\t$skin:function(){\n\t\ttext.api.$skin.call(this);\n\n\t\tthis.defaults.inputPadding = $active.inputPadding;\n\t\tthis.defaults.point = !$active.popupNoPoint;\n\t},\n\tgetPopup: function(){\n\t\treturn $$(this._settings.popup);\n\t},\n\t_init_popup:function(){ \n\t\tvar obj = this._settings;\n\t\tif (obj.suggest)\n\t\t\tobj.popup = obj.suggest;\n\t\telse if (!obj.popup){\n\t\t\tvar timepicker = this._settings.timepicker;\n\t\t\tobj.popup = obj.suggest = this.suggest_setter({\n\t\t\t\ttype:\"calendar\", point:this._settings.point===false?false:true, padding:0,\n\t\t\t\tbody: {\n\t\t\t\t\theight:240+(timepicker||this._settings.icons?30:0),\n\t\t\t\t\twidth:250,\n\t\t\t\t\tmultiselect: this._settings.multiselect, \n\t\t\t\t\ttimepicker: timepicker,\n\t\t\t\t\ttype: this._settings.type,\n\t\t\t\t\ticons: this._settings.icons,\n\t\t\t\t\ttimeIcon: this._settings.timeIcon\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._init_once = function(){};\n\t},\n\t$render:function(obj){\n\t\tif (isUndefined(obj.value)) return;\n\t\tobj.value = this.$prepareValue(obj.value);\n\t\tthis.$setValue(obj.value);\n\t},\n\t$prepareValue:function(value){\n\t\tif (this._settings.multiselect){\n\t\t\tif (typeof value === \"string\")\n\t\t\t\tvalue = value.split(this._settings.separator);\n\t\t\telse if (value instanceof Date){\n\t\t\t\tvalue = [value];\n\t\t\t} else if (!value){\n\t\t\t\tvalue = [];\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < value.length; i++){\n\t\t\t\tvalue[i] = this._prepareSingleValue(value[i]);\n\t\t\t}\n\n\t\t\treturn value;\n\t\t} else{ \n\t\t\treturn this._prepareSingleValue(value);\n\t\t}\n\t},\n\t_prepareSingleValue:function(value){\n\t\tvar type = this._settings.type;\n\t\tvar timeMode = type == \"time\";\n\n\t\t//setValue(\"1980-12-25\")\n\t\tif(!isNaN(parseFloat(value)))\n\t\t\tvalue = \"\"+value;\n\n\t\tif (typeof value==\"string\" && value){\n\t\t\tvar formatDate = null;\n\t\t\tif((type == \"month\" || type == \"year\") && this._formatDate){\n\t\t\t\tformatDate = this._formatDate;\n\t\t\t}\n\t\t\telse\n\t\t\t\tformatDate = (timeMode?i18n.parseTimeFormatDate:i18n.parseFormatDate);\n\t\t\tvalue = formatDate(value);\n\t\t}\n\n\t\tif (value){\n\t\t\t//time mode\n\t\t\tif(timeMode){\n\t\t\t\t//setValue([16,24])\n\t\t\t\tif(isArray(value)){\n\t\t\t\t\tvar time = new Date();\n\t\t\t\t\ttime.setHours(value[0]);\n\t\t\t\t\ttime.setMinutes(value[1]);\n\t\t\t\t\tvalue = time;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//setValue(invalid date)\n\t\t\tif(isNaN(value.getTime()))\n\t\t\t\tvalue = \"\";\n\t\t}\n\n\t\treturn value;\n\t},\n\t_get_visible_text:function(value){\n\t\tif (this._settings.multiselect){\n\t\t\treturn []\n\t\t\t\t.concat(value)\n\t\t\t\t.map((function(a){ return this._get_visible_text_single(a); }).bind(this))\n\t\t\t\t.join(this.config.separator);\n\t\t} else\n\t\t\treturn this._get_visible_text_single(value);\n\t},\n\t_get_visible_text_single:function(value){\n\t\tvar timeMode = this._settings.type == \"time\";\n\t\tvar timepicker = this.config.timepicker;\n\t\tvar formatStr = this._formatStr||(timeMode?i18n.timeFormatStr:(timepicker?i18n.fullDateFormatStr:i18n.dateFormatStr));\n\t\treturn formatStr(value);\n\t},\n\t_set_visible_text:function(){\n\t\tvar node = this.getInputNode();\n\t\tif(node.value == undefined){\n\t\t\tnode.innerHTML = this._settings.text || this._get_div_placeholder();\n\t\t}\n\t\telse{\n\t\t\tnode.value = this._settings.text || \"\";\n\t\t}\n\t},\n\t$compareValue:function(oldvalue, value){\n\t\tif(!oldvalue && !value) return true;\n\t\treturn wDate.equal(oldvalue, value);\n\t},\n\t$setValue:function(value){\n\t\tthis._settings.text = (value?this._get_visible_text(value):\"\");\n\t\tthis._set_visible_text();\n\t},\n\tformat_setter:function(value){\n\t\tif(value){\n\t\t\tif (typeof value === \"function\")\n\t\t\t\tthis._formatStr = value;\n\t\t\telse {\n\t\t\t\tthis._formatStr = wDate.dateToStr(value);\n\t\t\t\tthis._formatDate = wDate.strToDate(value);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t\tthis._formatStr = this._formatDate = null;\n\t\treturn value;\n\t},\n\tgetInputNode: function(){\n\t\treturn this._settings.editable?this._dataobj.getElementsByTagName(\"input\")[0]:this._dataobj.getElementsByTagName(\"DIV\")[1];\n\t},\n\tgetValue:function(){\n\t\tif (this._settings.multiselect){\n\t\t\tvar value = this._settings.value;\n\t\t\tif (!value) return [];\n\n\t\t\tvar result = []\n\t\t\t\t.concat(value)\n\t\t\t\t.map((function(a){ return this._get_value_single(a); }).bind(this));\n\n\t\t\tif (this._settings.stringResult)\n\t\t\t\treturn result.join(this._settings.separator);\n\n\t\t\treturn result;\n\t\t}\n\n\t\treturn this._get_value_single(this._settings.value);\n\t},\n\t_get_value_single:function(value){\n\t\tvar type = this._settings.type;\n\t\t//time mode\n\t\tvar timeMode = (type == \"time\");\n\t\t//date and time mode\n\t\tvar timepicker = this.config.timepicker;\n\n\t\t//input was not rendered, we need to parse value from setValue method\n\t\tif (!this._rendered_input)\n\t\t\tvalue = this.$prepareValue(value) || null;\n\t\t//rendere and in edit mode\n\t\telse if (this._settings.editable){\n\t\t\tvar formatDate = this._formatDate||(timeMode?i18n.timeFormatDate:(timepicker?i18n.fullDateFormatDate:i18n.dateFormatDate));\n\t\t\tvalue = formatDate(this.getInputNode().value);\n\t\t}\n\n\t\t//return string from getValue\n\t\tif(this._settings.stringResult){\n\t\t\tvar formatStr =i18n.parseFormatStr;\n\t\t\tif(timeMode)\n\t\t\t\tformatStr = i18n.parseTimeFormatStr;\n\t\t\tif(this._formatStr && (type == \"month\" || type == \"year\")){\n\t\t\t\tformatStr = this._formatStr;\n\t\t\t}\n\n\t\t\tif(this._settings.multiselect)\n\t\t\t\treturn [].concat(value).map((function(a){ return a?formatStr(a):\"\"; }));\n\t\t\treturn (value?formatStr(value):\"\");\n\t\t}\n\t\t\n\t\treturn value||null;\n\t},\n\tgetText:function(){\n\t\tvar node = this.getInputNode();\n\t\treturn (node?(typeof node.value == \"undefined\" ? (this.getValue()?node.innerHTML:\"\") : node.value):\"\");\n\t}\n};\n\nconst view = protoUI(api, text.view);\nexport default {api, view};","import {protoUI} from \"../ui/core\";\nimport {isUndefined} from \"../webix/helpers\";\n\nimport datepicker from \"./datepicker\";\n\n\nconst api = {\n\tname:\"colorpicker\",\n\t$init:function(){\n\t\tthis.$ready.push(this._init_popup);\n\t},\n\tdefaults:{\n\t\ticon:true\n\t},\n\t_init_popup:function(){\n\t\tvar obj = this._settings;\n\t\tif (obj.suggest)\n\t\t\tobj.popup = obj.suggest;\n\t\telse if (!obj.popup)\n\t\t\tobj.popup = obj.suggest = this.suggest_setter({\n\t\t\t\ttype:\"colorboard\", height:200\n\t\t\t});\n\t\tthis._init_once = function(){};\n\t},\n\t$render:function(obj){\n\t\tif (isUndefined(obj.value)) return;\n\t\tobj.value = this.$prepareValue(obj.value);\n\t\tthis.$setValue(obj.value);\n\t},\n\tgetValue:function(){\n\t\tif (this._rendered_input && this._settings.editable)\n\t\t\treturn this.getInputNode().value;\n\t\telse\n\t\t\treturn this._settings.value;\n\t},\n\t$prepareValue:function(value){\n\t\tvalue = value ? value.toString(16) : \"\";\n\t\tif (value && value.charAt(0) != \"#\" && /^[0-9a-fA-F]+$/.test(value))\n\t\t\tvalue = \"#\" + value;\n\t\treturn value;\n\t},\n\t_getColorNode: function(){\n\t\treturn this.$view.getElementsByTagName(\"DIV\")[this._settings.editable?1:2];\n\t},\n\t_get_visible_text:function(value){\n\t\treturn value;\n\t},\n\t$compareValue:function(oldvalue, value){\n\t\treturn oldvalue == value;\n\t},\n\t$setValue:function(value){\n\t\tthis._getColorNode().style.backgroundColor = value;\n\t\tthis._settings.text = value;\n\n\t\tvar node = this.getInputNode();\n\t\tif(node.value == undefined)\n\t\t\tnode.innerHTML = value;\n\t\telse\n\t\t\tnode.value = value;\n\t},\n\t$renderIcon:function(){\n\t\tvar config = this.config;\n\t\treturn \"
\";\n\t}\n};\n\nconst view = protoUI(api, datepicker.view);\nexport default {api, view};","import {protoUI, $$} from \"../ui/core\";\nimport {$active} from \"../webix/skin\";\nimport {isUndefined, bind} from \"../webix/helpers\";\nimport {assert} from \"../webix/debug\";\nimport {preventEvent} from \"../webix/html\";\n\nimport text from \"./text\";\n\n\nconst api = {\n\tname:\"richselect\",\n\tdefaults:{\n\t\ttemplate:function(obj,common){\n\t\t\treturn common._render_div_block(obj, common);\n\t\t},\n\t\tpopupWidth:200,\n\t\ticon: \"wxi-menu-down\"\n\t},\n\t_onBlur:function(){\n\t\tif (this._settings.text == this.getText() || (isUndefined(this._settings.text) && !this.getText()))\n\t\t\treturn;\n\n\t\tvar suggest = this.getPopup(),\n\t\t\tnodeValue = this.getInputNode().value,\n\t\t\tvalue = suggest.getSuggestion(nodeValue),\n\t\t\toldvalue = this.getValue();\n\n\t\t//non-empty value that differs from old value and matches filtering rule\n\t\tif (value && value !=oldvalue && !(nodeValue===\"\" && suggest.getItemText(value)!==\"\"))\n\t\t\tthis.setValue(value);\n\t\telse if(nodeValue===\"\")\n\t\t\tthis.setValue(\"\");\n\t\telse if(this._revertValue)\n\t\t\tthis._revertValue();\n\t},\n\tsuggest_setter:function(value){\n\t\treturn this.options_setter(value);\n\t},\n\toptions_setter:function(value){\n\t\tvalue = this._suggest_config ? this._suggest_config(value) : value;\n\t\tvar suggest = (this._settings.popup = this._settings.suggest = text.api.suggest_setter.call(this, value));\n\t\tvar list = $$(suggest).getList();\n\t\tif (list)\n\t\t\tlist.attachEvent(\"onAfterLoad\", bind(this._reset_value, this));\n\n\t\treturn suggest;\n\t},\n\tgetList: function(){\n\t\tvar suggest = $$(this._settings.suggest);\n\t\tassert(suggest, \"Input doesn't have a list\");\n\t\treturn suggest.getList();\n\t},\n\t_pattern :function(value){ return value; },\n\t_reset_value:function(){\n\t\tvar value = this._settings.value;\n\t\t//this._dataobj.firstChild - check that input is already rendered, as in IE11 it can be destroy during parent repainting\n\t\tif(!isUndefined(value) && !this.getPopup().isVisible() && !this._settings.text && this._dataobj.firstChild)\n\t\t\tthis.$setValue(value);\n\t},\n\t$skin:function(){\n\t\ttext.api.$skin.call(this);\n\n\t\tthis.defaults.inputPadding = $active.inputPadding;\n\t},\n\t$render:function(obj){\n\t\tif (isUndefined(obj.value)) return;\n\t\tthis.$setValue(obj.value);\n\t},\n\tgetInputNode: function(){\n\t\treturn this._dataobj.getElementsByTagName(\"DIV\")[1];\n\t},\n\tgetPopup: function(){\n\t\treturn $$(this._settings.popup);\n\t},\n\tgetText:function(){\n\t\tvar value = this._settings.value,\n\t\t\tnode = this.getInputNode();\n\t\tif(!node)\n\t\t\treturn value?this.getPopup().getItemText(value):\"\";\n\t\tif (typeof node.value == \"undefined\"){\n\t\t\tif (node.firstChild && node.firstChild.className === \"webix_placeholder\")\n\t\t\t\treturn \"\";\n\t\t\treturn node.innerHTML;\n\t\t}\n\t\treturn node.value;\n\t},\n\t$setValue:function(value){\n\t\tif (!this._rendered_input) return;\n\n\t\tvar text = value;\n\t\tvar popup = this.getPopup();\n\n\t\tif (popup)\n\t\t\ttext = this.getPopup().getItemText(value);\n\n\t\tif (!text && value && value.id){ //add new value\n\t\t\tconst popup = this.getPopup();\n\t\t\tconst list = popup.getList();\n\n\t\t\t// add new item only when item with such id doesn't exists yet\n\t\t\tconst exists = list.exists(value.id);\n\t\t\tif (!exists) list.add(value);\n\n\t\t\ttext = popup.getItemText(value.id);\n\n\t\t\t// in case of dynamic list, we can't add extra items\n\t\t\t// to not interfere with dynamic loading\n\t\t\tif (list._settings.dynamic && !exists)\n\t\t\t\tlist.remove(value.id);\n\n\t\t\tthis._settings.value = value.id;\n\t\t}\n\n\t\tvar node = this.getInputNode();\n\n\t\tif (isUndefined(node.value))\n\t\t\tnode.innerHTML = text || this._get_div_placeholder();\n\t\telse \n\t\t\tnode.value = text = text.replace(/<[^>]*>/g,\"\");\n\n\t\tthis._settings.text = text;\n\t},\n\tgetValue:function(){\n\t\treturn this._settings.value||\"\";\n\t},\n\t_ignoreLabelClick:function(ev){\n\t\tthis.focus();\n\t\tpreventEvent(ev);\n\t}\n};\n\nconst view = protoUI(api, text.view);\nexport default {api, view};","import {protoUI} from \"../ui/core\";\nimport {isUndefined} from \"../webix/helpers\";\n\nimport richselect from \"./richselect\";\n\n\nconst api = {\n\tname:\"combo\",\n\tgetInputNode:function(){\n\t\treturn this._dataobj.getElementsByTagName(\"input\")[0];\n\t},\n\t$render:function(obj){\n\t\tif (isUndefined(obj.value)) return;\n\t\tthis.$setValue(obj.value);\n\t},\n\t_revertValue:function(){\n\t\tif(!this._settings.editable){\n\t\t\tvar value = this.getValue();\n\t\t\tthis.$setValue(isUndefined(value)?\"\":value);\n\t\t}\n\t},\n\t_applyChanges:function(){\n\t\tvar input = this.getInputNode(),\n\t\t\tvalue = \"\",\n\t\t\tsuggest = this.getPopup();\n\n\t\tif (input.value){\n\t\t\tvalue = this._settings.value;\n\t\t\tif(suggest.getItemText(value) != this.getText())\n\t\t\t\tvalue = suggest.getSuggestion()||value;\n\t\t}\n\t\tif (value != this._settings.value)\n\t\t\tthis.setValue(value, true);\n\t\telse\n\t\t\tthis.$setValue(value);\n\t},\n\t$compareValue:function(value){\n\t\tvar result = richselect.api.$compareValue.apply(this, arguments);\n\t\tif(result && value != this.getText())\n\t\t\tthis._revertValue();\n\t\treturn result;\n\t},\n\tdefaults:{\n\t\ttemplate:function(config, common){\n\t\t\treturn common.$renderInput(config).replace(/(\";\n\t\t\thtml += \"\";\n\t\t\thtml += common._baseInputHTML(\"input\")+\" id='\"+id+\"' type='text' class='webix_inp_counter_value' aria-live='assertive'\"+\" value='\"+value+\"'>\";\n\t\t\thtml += \"\";\n\t\t\treturn common.$renderInput(config, html, id);\n\t\t},\n\t\tmin:0,\n\t\tmax:Infinity,\n\t\tvalue:0,\n\t\tstep:1\n\t},\n\t$init:function(){\n\t\t_event(this.$view, \"keydown\", this._keyshift, {bind:this});\n\t},\n\t_keyshift:function(e){\n\t\tvar code = e.which || e.keyCode, c = this._settings, value = this.getValue();\n\n\t\tif(code>32 && code <41){\n\t\t\tif(code === 36) value = c.min;\n\t\t\telse if(code === 35) value = c.max === Infinity? 1000000 :c.max;\n\t\t\telse if(code === 33) this.next();\n\t\t\telse if(code === 34) this.prev();\n\t\t\telse value = value+(code === 37 || code ===40?-1:1);\n\t\t\t\n\t\t\tif(code>34 && value>=c.min && value<=c.max)\n\t\t\t\tthis.setValue(value);\n\t\t}\n\t},\n\t$setValue:function(value){\n\t\tthis.getInputNode().value = value;\n\t},\n\t$prepareValue:function(value){\n\t\tvalue = parseFloat(value);\n\t\treturn isNaN(value)?0:value;\n\t},\n\tvalue_setter:function(value){\n\t\treturn this.$prepareValue(value);\n\t},\n\tgetInputNode:function(){\n\t\treturn this._dataobj.getElementsByTagName(\"input\")[0];\n\t},\n\tgetValue:function(){\n\t\treturn button.api.getValue.apply(this,arguments)*1;\n\t},\n\tnext:function(step){\n\t\tstep = 1*( step || this._settings.step );\n\t\tthis.shift(step);\n\t},\n\tprev:function(step){\n\t\tstep = (-1)*( step || this._settings.step );\n\t\tthis.shift(step);\n\t},\n\tshift:function(step){\n\t\tvar min = this._settings.min;\n\t\tvar max = this._settings.max;\n\n\t\tvar new_value = this.getValue() + step;\n\t\tif (new_value >= min && new_value <= max)\n\t\t\tthis.setValue(new_value);\n\t}\n};\n\nconst view = protoUI(api, text.view);\nexport default {api, view};","import {protoUI} from \"../ui/core\";\nimport {$active} from \"../webix/skin\";\n\nimport button from \"./button\";\n\n\nconst api = {\n\tname:\"icon\",\n\t$skin:function(){\n\t\tbutton.api.$skin.call(this);\n\n\t\tthis.defaults.height = $active.inputHeight;\n\t\tthis.defaults.width = $active.inputHeight;\n\t},\n\tdefaults:{\n\t\ttemplate:function(obj, view){\n\t\t\tlet min = Math.min(obj.awidth, obj.aheight);\n\t\t\tlet top = Math.round((view._content_height-obj.aheight)/2);\n\t\t\tlet inner = \"\";\n\n\t\t\treturn \"
\"+inner+(obj.badge||obj.badge===0 ? \"\"+obj.badge+\"\":\"\")+\n\t\t\t\t\"
\";\n\t\t}\n\t},\n\t_set_inner_size:false,\n\t_set_default_css:function(){},\n\t$setValue:function(){}\n};\n\nconst view = protoUI(api, button.view);\nexport default {api, view};","import {protoUI} from \"../ui/core\";\nimport {$active} from \"../webix/skin\";\n\nimport text from \"./text\";\n\n\nconst api = {\n\tname:\"search\",\n\ton_click:{\n\t\t\"webix_input_icon\":function(e){\n\t\t\tthis.getInputNode().focus();\n\t\t\tthis.callEvent(\"onSearchIconClick\", [e]);\n\t\t}\n\t},\n\t$skin:function(){\n\t\ttext.api.$skin.call(this);\n\n\t\tthis.defaults.inputPadding = $active.inputPadding;\n\t},\n\tdefaults:{\n\t\ttype:\"text\",\n\t\ticon:\"wxi-search\"\n\t}\n};\n\nconst view = protoUI(api, text.view);\nexport default {api, view};","import {addCss, removeCss} from \"../webix/html\";\nimport {protoUI, $$} from \"../ui/core\";\nimport {once, uid} from \"../webix/helpers\";\nimport template from \"../webix/template\";\n\nimport HTMLOptions from \"../core/htmloptions\";\n\nimport text from \"./text\";\n\n\nconst api = {\n\tname:\"segmented\",\n\t$allowsClear:false,\n\t$init:function(){\n\t\tthis.attachEvent(\"onChange\", function(value){\n\t\t\tif (this._settings.multiview)\n\t\t\t\tthis._show_view(value);\n\t\t});\n\t\tthis.attachEvent(\"onAfterRender\", once(function(){\n\t\t\tif (this._settings.multiview && this._settings.value)\n\t\t\t\tthis._show_view(this._settings.value);\n\t\t}));\n\t},\n\t_show_view:function(value){\n\t\tvar top = this.getTopParentView();\n\t\tvar view = null;\n\n\t\t//get from local isolate\n\t\tif (top && top.$$)\n\t\t\tview = top.$$(value);\n\t\t//or check globally\n\t\tif (!view)\n\t\t\tview = $$(value);\n\n\t\tif(view && view.show)\n\t\t\tview.show();\n\t},\n\tdefaults:{\n\t\ttemplate:function(obj, common){\n\t\t\tcommon._check_options(obj.options);\n\n\t\t\tconst options = common._filterOptions(obj.options);\n\t\t\tconst width = common._get_input_width(obj);\n\t\t\tconst optionWidth = obj.optionWidth || Math.floor(width/options.length);\n\t\t\tlet html = \"
\";\n\t\t\tlet tooltip, isDisabled;\n\n\t\t\tif (!obj.value)\n\t\t\t\tobj.value = common._getFirstActive(true);\n\n\t\t\tfor (var i=0; i\"+options[i].value+\"\";\n\t\t\t}\n\t\t\t\n\t\t\treturn common.$renderInput(obj, html+\"
\", uid());\n\t\t}\n\t},\n\t_getInputNode:function(){\n\t\treturn this.$view.getElementsByTagName(\"BUTTON\");\n\t},\n\tfocus: function(){ return this._focus(); },\n\tblur: function(){ this._blur(); },\n\t$setValue:function(value){\n\t\t//refresh tabbar if the option is in the popup list\n\t\tconst popup = this.config.tabbarPopup;\n\t\tif (popup && $$(popup) && $$(popup).getBody().exists(value))\n\t\t\treturn this.refresh();\n\n\t\tconst inputs = this._getInputNode();\n\t\tlet id, option;\n\n\t\tfor (let i=0; i\"+common._pattern(obj.value)+\"\";\n\n\t\t\treturn common.$renderInput(obj, html, id);\n\t\t},\n\t\tminHeight:60\n\t},\n\t$skin:function(){\n\t\ttext.api.$skin.call(this);\n\n\t\tthis.defaults.height = 0;\n\t},\n\t_skipSubmit: true,\n\t_getLabelHeight:function(top){\n\t\treturn top ? this._labelTopHeight-this._settings.inputPadding : \"\";\n\t},\n\t//get input element\n\tgetInputNode: function() {\n\t\treturn this._dataobj.getElementsByTagName(\"textarea\")[0];\n\t}\n};\n\nconst view = protoUI(api, text.view);\nexport default {api, view};","import {addCss, removeCss} from \"../webix/html\";\nimport {protoUI} from \"../ui/core\";\n\nimport button from \"./button\";\n\n\nconst api = {\n\tname:\"toggle\",\n\t$allowsClear:true,\n\t$init:function(){\n\t\tthis.attachEvent(\"onItemClick\", function(){\n\t\t\tthis.toggle();\n\t\t});\n\t},\n\t$renderInput:function(obj){\n\t\treturn \"\";\n\t},\n\t$setValue:function(value){\n\t\tconst input = this.getInputNode();\n\t\tconst obj = this._settings;\n\t\tconst isPressed = (value && value != \"0\");\n\t\tconst text = (isPressed ? obj.onLabel : obj.offLabel) || obj.label;\n\t\tconst first = input.firstChild;\n\t\t\n\t\tinput.setAttribute(\"aria-pressed\", isPressed?\"true\":\"false\");\n\t\tinput.innerHTML = text;\n\n\t\t//icon or image button\n\t\tif (first && !!this._types[obj.type]){\n\t\t\tif (first.nodeName === \"SPAN\" && obj.onIcon && obj.offIcon && obj.onIcon!==obj.offIcon)\n\t\t\t\tfirst.className = first.className.replace((isPressed?obj.offIcon:obj.onIcon), (isPressed?obj.onIcon:obj.offIcon));\n\t\t\tinput.insertBefore(first, input.firstChild);\n\t\t}\n\t\t\n\t\tconst changeCss = isPressed ? addCss : removeCss;\n\t\tchangeCss(input.parentNode, \"webix_pressed\");\n\t},\n\ttoggle:function(){\n\t\tthis.setValue(!this.getValue());\n\t},\n\tgetValue:function(){\n\t\tvar value = this._settings.value;\n\t\treturn (!value||value==\"0\")?0:1;\n\t},\n\tdefaults:{\n\t\ttemplate:function(obj, common){\n\t\t\tvar isPressed = (obj.value && obj.value != \"0\");\n\t\t\tvar css = isPressed ? \" webix_pressed\" : \"\";\n\n\t\t\tobj.label = (isPressed ? obj.onLabel : obj.offLabel) || obj.label;\n\t\t\tobj.icon = (isPressed ? obj.onIcon : obj.offIcon) || obj.icon;\n\t\t\t\n\t\t\tvar html = \"
\"+common.$renderInput(obj, common)+\"
\";\n\t\t\thtml = html.replace(/(button)\\s*(?=\\w)/, \"$1\"+(\" aria-pressed='\"+(isPressed?\"true\":\"false\")+\"' \"));\n\t\t\tif (obj.badge||obj.badge===0)\n\t\t\t\thtml = html.replace(/<\\/div>$/, \"\"+obj.badge+\"\");\n\t\t\t\n\t\t\treturn html;\n\t\t}\n\t},\n\t_set_inner_size:false\n};\n\n\nconst view = protoUI(api, button.view);\nexport default {api, view};","import text from \"../views/text\";\nimport {protoUI, $$} from \"../ui/core\";\nimport {extend, _to_array} from \"../webix/helpers\";\n\n\nconst api = {\n\tname:\"multitext\",\n\t$cssName:\"text\",\n\tdefaults:{\n\t\ticon:\"wxi-plus-circle\",\n\t\ticonWidth:25,\n\t\tseparator:\", \"\n\t},\n\tgetValueHere:function(){\n\t\treturn text.api.getValue.call(this);\n\t},\n\tsetValueHere:function(value){\n\t\treturn text.api.$setValue.call(this, value);\n\t},\n\tgetValue:function(){\n\t\tif (this.config.mode == \"extra\") return this.getValueHere();\n\n\t\tif (this._full_value) \n\t\t\treturn this._full_value;\n\n\t\tvar values = [ this.getValueHere(this) ];\n\t\tfor (var i=0; i= 0; i--){\n\t\t\tvar section = parent._subs[i];\n\t\t\tif (!id || section == id){\n\t\t\t\tparent._subs.removeAt(i);\n\t\t\t\tthis.getParentView().removeView(section);\n\t\t\t\tparent.callEvent(\"onSectionRemove\", [section, i+1]);\n\t\t\t}\n\t\t}\n\t},\n\ton_click:{\n\t\t\"webix_input_icon\":function(){\n\t\t\tif (this.config.mode == \"extra\"){\n\t\t\t\tthis.removeSection(this.config.id);\n\t\t\t\tvar childs = this.getParentView().getChildViews();\n\t\t\t\tchilds[childs.length - 1].focus();\n\t\t\t\tthis._subOnChange();\n\t\t\t} else\n\t\t\t\t$$( this.addSection() ).focus();\n\n\t\t\treturn false;\n\t\t}\n\t},\n\t$init:function(){\n\t\tthis._subs = _to_array([]);\n\t\tthis.attachEvent(\"onKeyPress\", this._onKeyPress);\n\t},\n\t$render:function(obj){\n\t\tthis.$setValue(obj.value);\n\t},\n};\n\n\nconst view = protoUI(api, text.view);\nexport default {api, view};","import base from \"../views/view\";\nimport PagingAbility from \"../core/pagingability\";\nimport DataMarks from \"../core/datamarks\";\nimport AutoTooltip from \"../core/autotooltip\";\nimport ValidateCollection from \"../core/validatecollection\";\nimport RenderStack from \"../core/renderstack\";\nimport DataLoader from \"../core/dataloader\";\nimport EventSystem from \"../core/eventsystem\";\nimport Settings from \"../core/settings\";\n\nimport {protoUI} from \"../ui/core\";\nimport {bind} from \"../webix/helpers\";\n\nconst api = {\n\tname:\"proto\",\n\t$init:function(){\n\t\tthis.data.provideApi(this, true);\n\t\tthis._dataobj = this._dataobj || this._contentobj;\n\t\t\n\t\t//render self , each time when data is updated\n\t\tthis.data.attachEvent(\"onStoreUpdated\",bind(function(){\n\t\t\tthis.render.apply(this,arguments);\n\t\t},this));\n\t},\n\t$setSize:function(){\n\t\tif (base.api.$setSize.apply(this, arguments))\n\t\t\tthis.render();\n\t},\n\t_id:/*@attr*/\"webix_item\",\n\ton_mouse_move:{\n\t},\n\ttype:{}\n};\n\n\nconst view = protoUI(api, PagingAbility, DataMarks, AutoTooltip, ValidateCollection, RenderStack, DataLoader, base.view, EventSystem, Settings);\nexport default {api, view};","import {addCss, createCss} from \"../webix/html\";\nimport {protoUI} from \"../ui/core\";\nimport {$active} from \"../webix/skin\";\nimport {bind, extend, isArray} from \"../webix/helpers\";\nimport template from \"../webix/template\";\n\nimport env from \"../webix/env\";\n\nimport base from \"../views/view\";\nimport proto from \"../views/proto\";\nimport VRenderStack from \"../core/vrenderstack\";\nimport CustomPrint from \"../core/customprint\";\nimport KeysNavigation from \"../core/keysnavigation\";\nimport DataMove from \"../core/datamove\";\nimport DragItem from \"../core/dragitem\";\nimport MouseEvents from \"../core/mouseevents\";\nimport SelectionModel from \"../core/selectionmodel\";\nimport Scrollable from \"../core/scrollable\";\nimport CopyPaste from \"../core/copypaste\";\n\nconst api = {\n\tname:\"list\",\n\t_listClassName : \"webix_list\",\n\t_itemClassName:\"webix_list_item\",\n\t$init:function(config){\n\t\taddCss(this._viewobj, this._listClassName + (((config.layout||this.defaults.layout) == \"x\")?\"-x\":\"\") );\n\t\tthis.data.provideApi(this,true);\n\n\t\tthis._auto_resize = bind(this._auto_resize, this);\n\t\tthis.data.attachEvent(\"onStoreUpdated\", this._auto_resize);\n\t\tthis.data.attachEvent(\"onSyncApply\", this._auto_resize);\n\t\tthis.attachEvent(\"onAfterRender\", this._correct_width_scroll);\n\n\t\tthis._viewobj.setAttribute(\"role\", \"listbox\");\n\t},\n\tdynamic_setter:function(value){\n\t\tif (value)\n\t\t\textend(this, VRenderStack, true);\n\t\treturn value;\n\t},\n\t$dragHTML:function(obj,e,context){\n\t\tlet html;\n\t\tif (this._settings.layout == \"y\" && this.type.width == \"auto\"){\n\t\t\tthis.type.width = this._content_width;\n\t\t\thtml = this._toHTML(obj);\n\t\t\tthis.type.width = \"auto\";\n\t\t} else html = this._toHTML(obj);\n\n\t\tif ( isArray(context.source) && context.source.length > 1 )\n\t\t\thtml = this._toMultipleHTML(html, context.source.length);\n\t\treturn html;\n\t},\n\tdefaults:{\n\t\tselect:false,\n\t\tscroll:true,\n\t\tlayout:\"y\",\n\t\tnavigation:true,\n\t\tdatafetch:50\n\t},\n\t_id:/*@attr*/\"webix_l_id\",\n\ton_click:{\n\t\twebix_list_item:function(e,id){\n\t\t\tif (this._settings.select){\n\t\t\t\tthis._no_animation = true;\n\t\t\t\tif (this._settings.select==\"multiselect\" || this._settings.multiselect)\n\t\t\t\t\tthis.select(id, false, (e.ctrlKey || e.metaKey || (this._settings.multiselect == \"touch\")), e.shiftKey); \t//multiselection\n\t\t\t\telse\n\t\t\t\t\tthis.select(id);\n\t\t\t\tthis._no_animation = false;\n\t\t\t}\n\t\t}\n\t},\n\ton_dblclick:{\n\t},\n\tgetVisibleCount:function(){\n\t\treturn Math.floor(this._content_height / this._one_height());\n\t},\n\t_auto_resize:function(){\n\t\tif (this._settings.autoheight || this._settings.autowidth)\n\t\t\tthis.resize();\n\t},\n\t_auto_height_calc:function(count){\n\t\tvar value = this.data.$pagesize||this.count();\n\n\t\tthis._onoff_scroll(count && count < value, \"y\");\n\t\tif (this._settings.autoheight && value < (count||Infinity) ) \n\t\t\tcount = value;\n\t\tvar height = this._one_height() * count + (this.type.margin||0);\n\t\t//unitlist\n\t\tif(this.getUnits)\n\t\t\theight += this.getUnits().length*this.type.headerHeight;\n\n\t\treturn Math.max(height,this._settings.minHeight||0);\n\t},\n\t_one_height:function(){\n\t\treturn this.type.height + (this.type.margin||0);\n\t},\n\t_auto_width_calc:function(count){\n\t\tvar value = this.data.$pagesize||this.count();\n\n\t\tthis._onoff_scroll(count && count < value, \"x\");\n\t\tif (this._settings.autowidth && value < (count||Infinity) ) \n\t\t\tcount = value;\n\n\t\treturn (this.type.width * count); \n\t},\n\t_correct_width_scroll:function(){\n\t\tif (this._settings.layout == \"x\")\n\t\t\tthis._dataobj.style.width = (this.type.width != \"auto\") ? (this.type.width * this.count() + \"px\") : \"auto\";\n\t},\n\t$getSize:function(dx,dy){\n\t\tif (this._settings.layout == \"y\"){\n\t\t\tif (this.type.width!=\"auto\")\n\t\t\t\tthis._settings.width = this.type.width + (this._scroll_y?env.scrollSize:0);\n\t\t\tif (this._settings.yCount || this._settings.autoheight)\n\t\t\t\tthis._settings.height = this._auto_height_calc(this._settings.yCount)||1;\n\t\t}\n\t\telse {\n\t\t\tif (this.type.height!=\"auto\")\n\t\t\t\tthis._settings.height = this._one_height() + (this._scroll_x?env.scrollSize:0);\n\t\t\tif (this._settings.xCount || this._settings.autowidth)\n\t\t\t\tthis._settings.width = this._auto_width_calc(this._settings.xCount)||1;\n\t\t}\n\t\treturn base.api.$getSize.call(this, dx, dy);\n\t},\n\t$setSize:function(){\n\t\tbase.api.$setSize.apply(this, arguments);\n\t},\n\ttype:{\n\t\tcss:\"\",\n\t\twidthSize:function(obj, common){\n\t\t\treturn common.width+(common.width>-1?\"px\":\"\");\n\t\t},\n\t\theightSize:function(obj, common){\n\t\t\treturn common.height+(common.height>-1?\"px\":\"\");\n\t\t},\n\t\tclassname:function(obj, common, marks){\n\t\t\tvar css = \"webix_list_item\";\n\n\t\t\tif (common.css) css += \" \"+common.css;\n\t\t\tif (obj.disabled) css += \" webix_disabled\";\n\t\t\tif (obj.$css){\n\t\t\t\tif (typeof obj.$css == \"object\")\n\t\t\t\t\tobj.$css = createCss(obj.$css);\n\t\t\t\tcss += \" \"+obj.$css;\n\t\t\t}\n\t\t\tif (marks && marks.$css)\n\t\t\t\tcss += \" \"+marks.$css;\n\n\t\t\treturn css;\n\t\t},\n\t\taria:function(obj, common, marks){\n\t\t\treturn \"role=\\\"option\\\"\"+(marks && marks.webix_selected?\" aria-selected=\\\"true\\\" tabindex=\\\"0\\\"\":\" tabindex=\\\"-1\\\"\")+(obj.$count && obj.$template?\"aria-expanded=\\\"true\\\"\":\"\")+\n\t\t\t\t(obj.disabled?\" aria-disabled=\\\"true\\\" webix_disabled=\\\"true\\\"\":\"\");\n\t\t},\n\t\ttemplate:function(obj){\n\t\t\treturn (obj.icon?(\"\"):\"\") + obj.value + (obj.badge||obj.badge===0?(\"
\"+obj.badge+\"
\"):\"\");\n\t\t},\n\t\twidth:\"auto\",\n\t\ttemplateStart:template(\"
\"),\n\t\ttemplateEnd:template(\"
\")\n\t},\n\t$skin:function(){\n\t\tthis.type.height = $active.listItemHeight;\n\t},\n\tdisableItem:function(id){\n\t\tthis._set_item_disabled(id, true);\n\t},\n\tenableItem:function(id){\n\t\tthis._set_item_disabled(id, false);\n\t},\n\t_set_item_disabled(id, state){\n\t\tconst item = this.getItem(id);\n\t\tif (item){\n\t\t\titem.disabled = state;\n\t\t\tthis.refresh(id);\n\t\t}\n\t},\n\tisItemEnabled:function(id){\n\t\tconst item = this.getItem(id);\n\t\treturn item && !item.disabled;\n\t},\n\t_skip_item:function(id, prev, dir){\n\t\tif (!this.isItemEnabled(id)){\n\t\t\tid = this.getNextId(id, dir) || null;\n\t\t\treturn (id && id != prev)? this._skip_item(id, prev, dir) : prev;\n\t\t}\n\t\treturn id;\n\t}\n};\n\n\nconst view = protoUI(api, CustomPrint, KeysNavigation, DataMove, DragItem, MouseEvents, SelectionModel, Scrollable, proto.view, CopyPaste);\nexport default {api, view};","import richselect from \"../views/richselect\";\nimport list from \"../views/list\";\n\nimport {protoUI, ui, $$} from \"../ui/core\";\nimport {isArray, extend} from \"../webix/helpers\";\n\nimport type from \"../webix/type\";\nimport template from \"../webix/template\";\nimport editors from \"../webix/editors\";\n\nconst api = {\n\tname:\"multiselect\",\n\t$cssName:\"richselect\",\n\tdefaults:{\n\t\tseparator:\",\"\n\t},\n\t_suggest_config:function(value){\n\t\tvar isobj = !isArray(value) && typeof value == \"object\" && !value.name; \n\t\tvar suggest = { view:\"checksuggest\", separator:this.config.separator, buttonText: this.config.buttonText, button: this.config.button };\n\n\t\tif (this._settings.optionWidth)\n\t\t\tsuggest.width = this._settings.optionWidth;\n\t\telse\n\t\t\tsuggest.fitMaster = true;\n\n\t\tif (isobj)\n\t\t\textend(suggest, value, true);\n\n\t\tvar view = ui(suggest);\n\t\tvar list = view.getList();\n\t\tif (typeof value == \"string\")\n\t\t\tlist.load(value);\n\t\telse if (!isobj)\n\t\t\tlist.parse(value);\n\n\t\tview.attachEvent(\"onShow\",function(){\n\t\t\tview.setValue($$(view._settings.master).config.value);\n\t\t});\n\n\t\treturn view;\n\t},\n\n\t$setValue:function(value){\n\t\tif (!this._rendered_input) return;\n\t\tvar popup = this.getPopup();\n\t\tvar text = \"\";\n\t\tif(popup){\n\t\t\ttext = popup.setValue(value);\n\t\t\tif(typeof text == \"object\"){\n\t\t\t\ttext = text.join(this.config.separator+\" \");\n\t\t\t}\n\n\t\t}\n\t\tthis._settings.text = text;\n\n\t\tvar node = this.getInputNode();\n\t\tnode.innerHTML = text || this._get_div_placeholder();\n\t},\n\tgetValue:function(){\n\t\treturn this._settings.value||\"\";\n\t},\n};\n\neditors.multiselect = extend({\n\tpopupType:\"multiselect\"\n}, editors.richselect);\n\ntype(list.view, {\n\tname:\"multilist\",\n\ttemplateStart:template(\"
\")\n}, \"default\");\n\ntype(list.view, {\n\tname:\"checklist\",\n\ttemplateStart:template(\"
{common.checkbox()}\"),\n\tcheckbox: function(obj){\n\t\tvar icon = (obj.$checked ? \"wxi-checkbox-marked\" : \"wxi-checkbox-blank\");\n\t\treturn \"\";\n\t},\n\taria:function(obj){\n\t\treturn \"role='option' tabindex='-1' \"+(obj.$checked?\"aria-selected='true'\":\"\");\n\t},\n\ttemplate: template(\"#value#\")\n}, \"default\");\n\nconst view = protoUI(api, richselect.view);\nexport default {api, view};","import richselect from \"../views/richselect\";\nimport {protoUI, ui, $$} from \"../ui/core\";\nimport {$active} from \"../webix/skin\";\nimport {_to_array, copy, isArray, extend, uid, delay, isUndefined} from \"../webix/helpers\";\nimport popup from \"../views/popup\";\nimport base from \"../views/view\";\nimport i18n from \"../webix/i18n\";\nimport {_event} from \"../webix/htmlevents\";\nimport template from \"../webix/template\";\n\n\nconst api = {\n\tname:\"multicombo\",\n\t$cssName:\"text\",\n\tdefaults:{\n\t\tkeepText: false,\n\t\tseparator:\",\",\n\t\ticon: false,\n\t\ticonWidth: 0,\n\t\ttagMode: true,\n\t\ttagTemplate: function(values){\n\t\t\treturn (values.length?values.length+\" item(s)\":\"\");\n\t\t},\n\t\ttemplate:function(obj,common){\n\t\t\treturn common._render_value_block(obj, common);\n\t\t}\n\t},\n\t$init:function(){\n\t\tthis.$view.className += \" webix_multicombo\";\n\n\t\tthis.attachEvent(\"onBeforeRender\",function(){\n\t\t\tif(!this._inputHeight)\n\t\t\t\tthis._inputHeight = $active.inputHeight;\n\t\t\treturn true;\n\t\t});\n\t\tthis.attachEvent(\"onAfterRender\", function(){\n\t\t\tthis._last_size = null;\n\t\t});\n\t},\n\n\ton_click: {\n\t\t\"webix_multicombo_delete\": function(e,view,node){\n\t\t\tvar value;\n\t\t\tif(!this._settings.readonly && node && (value = node.parentNode.getAttribute(\"optvalue\")))\n\t\t\t\tthis._removeValue(value);\n\t\t\treturn false;\n\t\t},\n\t\t\"webix_inp_label\": function(e){this._ignoreLabelClick(e);},\n\t\t\"webix_inp_top_label\": function(e){this._ignoreLabelClick(e);}\n\t},\n\t_onBlur:function(){\n\t\tvar value = this.getInputNode().value;\n\t\t//blurring caused by clicks in the suggest list cannot affect new values\n\t\tif(value && this._settings.newValues && new Date()-(this.getPopup()._click_stamp ||0)>100){\n\t\t\tthis._addNewValue(value);\n\t\t}\n\n\t\tif (!this._settings.keepText)\n\t\t\tthis._inputValue = \"\";\n\t\tthis.refresh();\n\t},\n\t_removeValue: function(value){\n\t\tvar values = this._settings.value;\n\t\tvar suggest = $$(this.config.suggest);\n\t\tif(typeof values == \"string\")\n\t\t\tvalues = values.split(this._settings.separator);\n\t\tvalues = _to_array(copy(values));\n\t\tvalues.remove(value);\n\n\t\tthis.setValue(values.join(this._settings.separator));\n\t\tif(suggest && suggest._settings.selectAll) {\n\t\t\tsuggest.getBody()._cells[0].setValue(0);\n\t\t}\n\t},\n\t_addValue: function(newValue){\n\t\tvar suggest = $$(this.config.suggest);\n\t\tvar list = suggest.getList();\n\t\tvar item = list.getItem(newValue);\n\n\t\tif(item){\n\t\t\tvar values = suggest.getValue();\n\t\t\tif(values && typeof values == \"string\")\n\t\t\t\tvalues = values.split(suggest.config.separator);\n\t\t\tvalues = _to_array(values||[]);\n\t\t\tif(values.find(newValue)<0){\n\t\t\t\tvalues.push(newValue);\n\t\t\t\tsuggest.setValue(values);\n\t\t\t\tthis.setValue(suggest.getValue());\n\t\t\t}\n\t\t}\n\t},\n\t_addNewValue: function(value){\n\t\tvar suggest = $$(this.config.suggest);\n\t\tvar list = suggest.getList();\n\t\tvar id;\n\t\tvalue = value.replace(/^\\s+|\\s+$/g,\"\");\n\n\t\tif(value){\n\t\t\tfor(var i in list.data.pull)\n\t\t\t\tif(suggest.getItemText(i) == value) id = i;\n\t\t}\n\n\t\tif(!id && value) id = list.add({id: value, value: value});\n\n\t\tthis._addValue(id);\n\t},\n\t_suggest_config:function(value){\n\t\tvar isObj = !isArray(value) && typeof value == \"object\" && !value.name,\n\t\t\tsuggest = { view:\"checksuggest\", separator:this.config.separator, buttonText: this.config.buttonText, button: this.config.button },\n\t\t\tcombo = this;\n\t\t\n\t\tif (isObj){\n\t\t\textend(suggest, value, true);\n\t\t}\n\t\tif (!suggest.width && this._settings.optionWidth){\n\t\t\textend(suggest, {width:this._settings.optionWidth, fitMaster: false}, true);\n\t\t}\n\t\tsuggest.width = suggest.fitMaster || isUndefined(suggest.fitMaster) ? 0 : suggest.width;\n\n\t\tvar view = ui(suggest);\n\t\tif(!suggest.width)\n\t\t\tview.$customWidth = function(){\n\t\t\t\tthis.config.width = combo._get_input_width(combo._settings);\n\t\t\t};\n\t\tview.attachEvent(\"onBeforeShow\",function(node,mode, point){\n\t\t\tif(this._settings.master){\n\t\t\t\tthis.setValue($$(this._settings.master).config.value);\n\n\t\t\t\tif($$(this._settings.master).getInputNode().value || this.isVisible()){\n\t\t\t\t\tthis.getList().refresh();\n\t\t\t\t\tthis._dont_unfilter = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tthis.getList().filter();\n\n\t\t\t\tif(node.tagName && node.tagName.toLowerCase() == \"input\"){\n\t\t\t\t\tpopup.api.show.apply(this, [node.parentNode,mode, point]);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t});\n\n\t\tvar list = view.getList();\n\t\tif (typeof value == \"string\")\n\t\t\tlist.load(value);\n\t\telse if (!isObj)\n\t\t\tlist.parse(value);\n\n\t\t//prevent default show-hide logicfunction(){\n\t\tview._suggest_after_filter = function(){};\n\n\t\treturn view;\n\t},\n\t_render_value_block:function(obj, common){\n\t\tvar id, input, inputAlign,inputStyle, inputValue, inputWidth,\n\t\t\theight, html, label, list, message, padding, readOnly, width,\n\t\t\tbottomLabel = \"\",\n\t\t\ttop = this._settings.labelPosition == \"top\";\n\n\t\tid = \"x\"+uid();\n\t\twidth = common._get_input_width(obj);\n\t\tinputAlign = obj.inputAlign || \"left\";\n\n\t\theight = this._inputHeight - 2*$active.inputPadding -2;\n\n\t\tinputValue = (this._inputValue||\"\");\n\t\tlist = \"
    \";\n\n\t\tinputWidth = Math.min(width,(common._inputWidth||7));\n\n\t\tinputStyle = \"width: \"+inputWidth+\"px;height:\"+height+\"px;max-width:\"+(width-20)+\"px\";\n\n\t\treadOnly = obj.readonly?\" readonly \":\"\";\n\t\tinput = \"\";\n\t\thtml = \"
    \"+list+input +\"
    \";\n\n\t\tlabel = common.$renderLabel(obj,id);\n\n\t\tpadding = this._settings.awidth - width - $active.inputPadding*2;\n\t\tmessage = (obj.invalid ? obj.invalidMessage : \"\") || obj.bottomLabel;\n\t\tif (message)\n\t\t\tbottomLabel = \"
    \"+message+\"
    \";\n\n\t\tif (top)\n\t\t\treturn label+\"
    \"+html+bottomLabel+\"
    \";\n\t\telse\n\t\t\treturn \"
    \"+label+html+bottomLabel+\"
    \";\n\t},\n\t_getValueListBox: function(){\n\t\treturn this._getBox().getElementsByTagName(\"UL\")[0];\n\t},\n\n\t_set_inner_size: function(){\n\t\tvar popup = this.getPopup();\n\t\tif(popup){\n\n\t\t\tvar textArr = (popup ? popup.setValue(this._settings.value) : null);\n\t\t\tif(popup._toMultiValue)\n\t\t\t\tthis._settings.value = popup._toMultiValue(this._settings.value);\n\t\t\tvar html = \"\";\n\t\t\tvar listbox = this._getValueListBox();\n\t\t\tvar text = textArr && textArr.length;\n\t\t\tif(text){\n\t\t\t\tvar height = this._inputHeight - 2*$active.inputPadding - 8;\n\t\t\t\tvar values = this._settings.value;\n\t\t\t\tif(typeof values == \"string\")\n\t\t\t\t\tvalues = values.split(this._settings.separator);\n\n\t\t\t\tif(this._settings.tagMode){\n\t\t\t\t\tfor(var i=0; i < textArr.length;i++){\n\t\t\t\t\t\tvar content = \"\"+textArr[i]+\"x\";\n\t\t\t\t\t\thtml += \"
  • \"+content+\"
  • \";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\thtml += \"
  • \"+this._settings.tagTemplate(values)+\"
  • \";\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tlistbox.innerHTML = html;\n\t\t\t// reset placeholder\n\t\t\tvar inp = this.getInputNode();\n\t\t\tif(this._settings.placeholder){\n\t\t\t\tif(text){\n\t\t\t\t\tinp.placeholder = \"\";\n\t\t\t\t\tif(!inp.value && inp.offsetWidth > 20)\n\t\t\t\t\t\tinp.style.width = \"20px\";\n\t\t\t\t}\n\t\t\t\telse if(!inp.value){\n\t\t\t\t\tinp.placeholder = this._settings.placeholder;\n\t\t\t\t\tinp.style.width = this._get_input_width(this._settings)+\"px\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!this._settings.tagMode && listbox.firstChild)\n\t\t\t\tinp.style.width = this._getMultiComboInputWidth() +\"px\";\n\t\t}\n\t\tthis._resizeToContent();\n\t},\n\t_focusAtEnd: function(inputEl){\n\t\tinputEl = inputEl||this.getInputNode();\n\t\tif (inputEl){\n\t\t\tif(inputEl.value.length){\n\t\t\t\tif (inputEl.createTextRange){\n\t\t\t\t\tvar FieldRange = inputEl.createTextRange();\n\t\t\t\t\tFieldRange.moveStart(\"character\",inputEl.value.length);\n\t\t\t\t\tFieldRange.collapse();\n\t\t\t\t\tFieldRange.select();\n\t\t\t\t}else if (inputEl.selectionStart || inputEl.selectionStart == \"0\") {\n\t\t\t\t\tvar elemLen = inputEl.value.length;\n\t\t\t\t\tinputEl.selectionStart = elemLen;\n\t\t\t\t\tinputEl.selectionEnd = elemLen;\n\t\t\t\t\tinputEl.focus();\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tinputEl.focus();\n\t\t\t}\n\t\t}\n\t},\n\t_resizeToContent: function(){\n\t\tvar top = this._settings.labelPosition == \"top\";\n\t\tvar inputDiv = this._getInputDiv();\n\t\tvar inputHeight = Math.max(inputDiv.offsetHeight+ 2*$active.inputPadding, this._inputHeight);\n\n\t\tif(top)\n\t\t\tinputHeight += this._labelTopHeight;\n\n\t\tinputHeight += this._settings.bottomPadding ||0;\n\n\t\tvar sizes = this.$getSize(0,0);\n\n\t\tif(inputHeight != sizes[2]){\n\t\t\tvar cHeight = inputDiv.offsetHeight + (top?this._labelTopHeight:0);\n\n\t\t\tvar topView =this.getTopParentView();\n\t\t\tclearTimeout(topView._template_resize_timer);\n\t\t\ttopView._template_resize_timer = delay(function(){\n\n\t\t\t\tvar calcHeight = cHeight + 2*$active.inputPadding;\n\t\t\t\tif (this.config.height != calcHeight){\n\t\t\t\t\tthis.config.height = calcHeight;\n\t\t\t\t\tthis.resize();\n\t\t\t\t}\n\n\t\t\t\tif(this._typing){\n\t\t\t\t\tthis._focusAtEnd(this.getInputNode());\n\t\t\t\t\tthis._typing = false;\n\t\t\t\t}\n\t\t\t\tif(this._enter){\n\t\t\t\t\tif(!this._settings.keepText)\n\t\t\t\t\t\tthis.getInputNode().value = \"\";\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.getInputNode().select();\n\t\t\t\t\tthis._enter = false;\n\t\t\t\t}\n\t\t\t\tif(this.getPopup().isVisible()||this._typing){\n\t\t\t\t\tthis.getPopup().show(this._getInputDiv());\n\t\t\t\t}\n\n\t\t\t}, this);\n\t\t}\n\t\tif(this._enter){\n\t\t\tthis.getInputNode().select();\n\t\t}\n\t},\n\t_getInputDiv: function(){\n\t\tvar parentNode = this._getBox();\n\t\tvar nodes = parentNode.childNodes;\n\t\tfor(var i=0; i < nodes.length; i++){\n\t\t\tif(nodes[i].className && nodes[i].className.indexOf(\"webix_inp_static\")!=-1)\n\t\t\t\treturn nodes[i];\n\t\t}\n\t\treturn parentNode;\n\t},\n\tgetInputNode: function(){\n\t\treturn this._getBox().getElementsByTagName(\"INPUT\")[0];\n\t},\n\t$setValue:function(){\n\t\tif (this._rendered_input)\n\t\t\tthis._set_inner_size();\n\t},\n\tgetValue:function(config){\n\t\tif(typeof config == \"object\" && config.options)\n\t\t\treturn this._getSelectedOptions();\n\n\t\tvar value = this._settings.value;\n\t\tif (!value) return \"\";\n\t\treturn (typeof value != \"string\"?value.join(this._settings.separator):value);\n\t},\n\tgetText:function(){\n\t\tvar value = this._settings.value;\n\t\tif(!value) return \"\";\n\t\t\n\t\tif(typeof value == \"string\")\n\t\t\tvalue = value.split(this._settings.separator);\n\n\t\tvar text = [];\n\t\tfor(var i = 0; i/g,\">\");\n\t\tdocument.body.appendChild(tmp);\n\t\tvar width = tmp.offsetWidth+10;\n\t\tdocument.body.removeChild(tmp);\n\t\treturn width;\n\t},\n\t_getMultiComboInputWidth: function(){\n\t\tconst listbox = this._getValueListBox();\n\t\tconst width = listbox.offsetWidth - (listbox.firstChild.offsetWidth + 1);\n\t\treturn (width <= 25)? listbox.offsetWidth-12: width-15;\n\t},\n\t_init_onchange:function(){\n\t\t// input focus and focus styling\n\t\t_event(this._getBox(),\"click\",function(){\n\t\t\tthis.getInputNode().focus();\n\t\t},{bind:this});\n\t\t_event(this.getInputNode(),\"focus\",function(){\n\t\t\tif(this._getBox().className.indexOf(\"webix_focused\") == -1)\n\t\t\t\tthis._getBox().className += \" webix_focused\";\n\n\t\t},{bind:this});\n\t\t_event(this.getInputNode(),\"blur\",function(){\n\t\t\tthis._getBox().className = this._getBox().className.replace(\" webix_focused\",\"\");\n\t\t},{bind:this});\n\n\t\t// need for clear click (\"x\") in IE\n\t\t_event(this.getInputNode(),\"input\",function(){\n\t\t\tif(!this.getInputNode().value && this._inputValue){\n\t\t\t\tthis.getInputNode().style.width = \"20px\";\n\t\t\t\tthis._inputWidth = 20;\n\n\t\t\t\tthis._inputValue = \"\";\n\t\t\t\tthis._typing = true;\n\n\t\t\t\tthis.getPopup().show(this._getInputDiv());\n\t\t\t\tthis._resizeToContent();\n\t\t\t}\n\t\t},{bind:this});\n\t\t// resize\n\t\t_event(this.getInputNode(),\"keyup\",function(e){\n\t\t\tvar inp = this.getInputNode();\n\t\t\tvar calcWidth, width;\n\n\t\t\te = (e||event);\n\t\t\t// to show placeholder\n\t\t\tif(this._settings.placeholder && !this._settings.value && !inp.value)\n\t\t\t\twidth = this._get_input_width(this._settings);\n\t\t\telse{\n\t\t\t\twidth = calcWidth = this._calcInputWidth(inp.value);\n\t\t\t\tif(!this._settings.tagMode && this._getValueListBox().firstChild)\n\t\t\t\t\twidth = this._getMultiComboInputWidth();\n\t\t\t}\n\n\t\t\tinp.style.width = width +\"px\";\n\n\t\t\tif(calcWidth!=this._inputWidth){\n\t\t\t\tif(this._settings.keepText || e.keyCode !=13){\n\t\t\t\t\tthis._inputValue = inp.value;\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tthis._inputValue = false;\n\t\t\t\t}\n\t\t\t\tthis._typing = true;\n\n\t\t\t\tif(this._inputWidth)\n\t\t\t\t\tthis.getPopup().show(this._getInputDiv());\n\n\t\t\t\tthis._inputWidth = calcWidth||width;\n\t\t\t\tthis._resizeToContent();\n\t\t\t}\n\t\t\telse if(this._windowHeight != this.getPopup().$height){\n\t\t\t\tthis.getPopup().show(this._getInputDiv());\n\t\t\t}\n\n\t\t\tif(inp.value.indexOf(this._settings.separator) > -1 && this._settings.tagMode){\n\t\t\t\tvar newValue = inp.value.replace(this._settings.separator, \"\");\n\t\t\t\tif (newValue){\n\t\t\t\t\tif (this._settings.newValues){\n\t\t\t\t\t\tthis._enter = true;\n\t\t\t\t\t\tthis._addNewValue(newValue);\n\t\t\t\t\t}\t\n\t\t\t\t\telse{\n\t\t\t\t\t\tvar newId = this.getPopup().getItemId(newValue);\n\t\t\t\t\t\tif (newId)\n\t\t\t\t\t\t\tthis._addValue(newId);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(this._settings.keepText){\n\t\t\t\t\tthis._inputValue = newValue;\n\t\t\t\t\tinp.value = newValue;\n\t\t\t\t\tthis._enter = true;\n\t\t\t\t\tthis._typing = true;\n\t\t\t\t\tthis._resizeToContent();\n\t\t\t\t} else{\n\t\t\t\t\tinp.value = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},{bind:this});\n\n\t\t// remove the last value on Backspace click\n\t\t_event(this.getInputNode(),\"keydown\",function(e){\n\t\t\tthis._enter = false;\n\t\t\tif (this.isVisible()){\n\t\t\t\te = (e||event);\n\t\t\t\tvar node = this._getValueListBox().lastChild;\n\t\t\t\tthis._windowHeight = this.getPopup().$height;\n\t\t\t\tif(e.keyCode == 8 && node){\n\t\t\t\t\tif(!this.getInputNode().value && ((new Date()).valueOf() - (this._backspaceTime||0) > 100)){\n\t\t\t\t\t\tthis._typing = true;\n\t\t\t\t\t\tthis._removeValue(node.getAttribute(\"optvalue\"));\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tthis._backspaceTime = (new Date()).valueOf();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(e.keyCode == 13 || e.keyCode == 9){\n\t\t\t\t\tvar input = this.getInputNode();\n\t\t\t\t\tvar id = \"\";\n\t\t\t\t\tvar suggest = $$(this._settings.suggest);\n\t\t\t\t\tvar list = suggest.getList();\n\t\t\t\t\t// if no selected options\n\n\t\t\t\t\tif(!list.getSelectedId()){\n\t\t\t\t\t\tif (input.value)\n\t\t\t\t\t\t\tid = suggest.getSuggestion(input.value);\n\n\t\t\t\t\t\tif(this._settings.newValues){\n\t\t\t\t\t\t\tif(e.keyCode == 13)\n\t\t\t\t\t\t\t\tthis._enter = true;\n\t\t\t\t\t\t\tthis._addNewValue(input.value);\n\t\t\t\t\t\t\tif(this._settings.keepText)\n\t\t\t\t\t\t\t\tthis._inputValue = input.value;\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tinput.value = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if(id){\n\t\t\t\t\t\t\tif(e.keyCode == 9){\n\t\t\t\t\t\t\t\tthis._typing = false;\n\t\t\t\t\t\t\t\tthis._inputValue = \"\";\n\t\t\t\t\t\t\t\tthis._inputWidth = 10;\n\t\t\t\t\t\t\t\tinput.value = \"\";\n\t\t\t\t\t\t\t\tthis._addValue(id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\tthis._enter = true;\n\t\t\t\t\t\t\t\tthis._addValue(id);\n\t\t\t\t\t\t\t\tif(this._settings.keepText)\n\t\t\t\t\t\t\t\t\tthis._inputValue = input.value;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tinput.value = \"\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif(e.keyCode == 13){\n\t\t\t\t\t\tthis._enter = true;\n\t\t\t\t\t\tthis._typing = true;\n\t\t\t\t\t\tif(this._settings.keepText)\n\t\t\t\t\t\t\tthis._inputValue = input.value;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tinput.value = \"\";\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t},{bind:this});\n\t\t$$(this._settings.suggest).linkInput(this);\n\t}\n};\n\n\nconst view = protoUI(api, richselect.view);\nexport default {api, view};","import text from \"../views/text\";\nimport {preventEvent, addCss, removeCss, pos as getPos, offset} from \"../webix/html\";\nimport {protoUI} from \"../ui/core\";\nimport {$active} from \"../webix/skin\";\nimport env from \"../webix/env\";\nimport {uid, bind, isArray, copy} from \"../webix/helpers\";\nimport {_event, event, eventRemove} from \"../webix/htmlevents\";\nimport template from \"../webix/template\";\n\n\n// #include ui/inputs.js\n\nconst api = {\n\tname:\"slider\",\n\t$touchCapture:true,\n\tdefaults:{\n\t\tmin:0,\n\t\tmax:100,\n\t\tvalue:50,\n\t\tstep:1,\n\t\ttitle:false,\n\t\tmoveTitle:true,\n\t\ttemplate:function(obj, common){\n\t\t\tvar id = common._handle_id = \"x\" +uid();\n\t\t\tvar html = \"\";\n\t\t\tvar title = \"
     
    \";\n\t\t\tvar left = \"
     
    \";\n\t\t\tvar right = \"
    \";\n\t\t\tvar handle = \"
     
    \";\n\t\t\t\n\t\t\tif(obj.vertical) html = \"
    \"+right+left+handle+\"
    \"+title;\n\t\t\telse html = title+\"
    \"+left+right+handle+\"
    \";\n\t\t\treturn common.$renderInput(obj, html, id);\n\t\t}\n\t},\n\ttype_setter:function(type){\n\t\tthis._viewobj.className += \" webix_slider_\"+type;\n\t},\n\ttitle_setter:function(value){\n\t\tif (typeof value == \"string\")\n\t\t\treturn template(value);\n\t\treturn value;\n\t},\n\t_get_slider_handle:function(){\n\t\treturn this.$view.querySelector(\".webix_slider_handle\");\n\t},\n\t_set_inner_size:function(){\n\t\tvar handle = this._get_slider_handle();\n\t\tvar config = this._settings;\n\n\t\tif(handle){ //view is rendered for sure\n\t\t\tvar size = config.vertical?this._content_height:this._get_input_width(config); //width or height\n\t\t\tvar value = config.value%config.step?(Math.round(config.value/config.step)*config.step):config.value;\n\t\t\tvar max = config.max - config.min;\n\t\t\t\n\t\t\tvalue = Math.max(Math.min(value,config.max),config.min);\n\t\t\tvalue = config.vertical?(max-(value-config.min)):(value-config.min);\n\t\t\t\n\t\t\t//top or left\n\t\t\tvar corner1 = Math.ceil((size - 2 * this._sliderPadding) * value / max);\n\t\t\t//bottom or right\n\t\t\tvar corner2 = size - 2 * this._sliderPadding - corner1;\n\n\t\t\tvar cornerStr = config.vertical?\"top\":\"left\";\n\t\t\tvar sizeStr = config.vertical?\"height\":\"width\";\n\n\t\t\thandle.style[cornerStr] = this._sliderPadding + corner1 - this._sliderHandleWidth / 2 + \"px\";\n\t\t\thandle.parentNode.style[sizeStr] = size+\"px\";\n\n\t\t\t//1px border\n\t\t\tcorner2= Math.min(Math.max(corner2, 2 * this._sliderBorder), size - this._sliderPadding * 2 - 2 * this._sliderBorder);\n\t\t\tcorner1 = Math.min(Math.max(corner1, 2 * this._sliderBorder), size - this._sliderPadding * 2 - 2 * this._sliderBorder);\n\n\t\t\t//width for left/top and right/bottom bars\n\t\t\tvar part = handle.previousSibling;\n\t\t\tpart.style[sizeStr] = corner2 + \"px\";\n\t\t\tvar last = part.previousSibling;\n\t\t\tlast.style[sizeStr] = corner1 + \"px\";\n\n\t\t\tthis._set_title(handle, corner1, corner2, cornerStr);\n\t\t}\n\t},\n\t_set_title:function(handle, corner1, corner2, cornerStr){\n\t\tvar config = this._settings;\n\t\tif (this._settings.title){\n\t\t\tvar title = handle.parentNode[config.vertical?\"nextSibling\":\"previousSibling\"];\n\t\t\ttitle.innerHTML = this._settings.title(this._settings, this);\n\t\t\t\n\t\t\tif(this._settings.moveTitle){\n\t\t\t\tvar pos = 0;\n\t\t\t\tif(config.vertical) pos = corner1+2 * this._sliderBorder-this._sliderHandleWidth/2;\n\t\t\t\telse{\n\t\t\t\t\tvar half = title.clientWidth/2;\n\t\t\t\t\tvar pos1 = half>corner1 ? (half-corner1-2*this._sliderBorder): 0;//left/top text is to large\n\t\t\t\t\tvar pos2 = half>corner2 ? (half-corner2-2*this._sliderBorder-this._sliderHandleWidth/2): 0;//right/bottom text is too large\n\t\t\t\t\tpos = this._sliderPadding + corner1 - half + pos1 - pos2;\n\t\t\t\t} \n\t\t\t\ttitle.style[cornerStr] = pos+ \"px\";\n\t\t\t}\n\t\t}\n\t},\n\t_set_value_now:function(){\n\t\tthis._get_slider_handle().setAttribute(\"aria-valuenow\", this._settings.value);\n\t},\n\trefresh:function(){\n\t\tvar handle = this._get_slider_handle();\n\t\tif(handle){\n\t\t\tthis._set_value_now();\n\t\t\tif(this._settings.title)\n\t\t\t\thandle.setAttribute(\"aria-label\", this._settings.label+\" \"+this._settings.title(this._settings, this));\n\n\t\t\tthis._set_inner_size();\n\t\t}\n\t},\n\tvalue_setter:function(value){\n\t\treturn this.$prepareValue(value);\n\t},\n\t$setValue:function(){\n\t\tthis.refresh();\n\t},\n\t$getValue:function(){\n\t\treturn this._settings.value;\n\t},\n\t$prepareValue:function(value){\n\t\tvalue = parseFloat(value);\n\t\treturn isNaN(value)?0:value;\n\t},\n\t$init:function(config){\n\t\tif(env.touch)\n\t\t\tthis.attachEvent(\"onTouchStart\" , bind(this._on_mouse_down_start, this));\n\t\telse\n\t\t\t_event(this._viewobj, \"mousedown\", bind(this._on_mouse_down_start, this));\n\n\t\t_event( this.$view, \"keydown\", bind(this._handle_move_keyboard, this));\n\n\t\tif(config.vertical){\n\t\t\tconfig.height = config.height || $active.vSliderHeight;\n\t\t\tthis._viewobj.className += \" webix_slider_vertical\";\n\t\t\tthis._sliderPadding = $active.vSliderPadding;\n\t\t}\n\t},\n\t$skin: function(){\n\t\ttext.api.$skin.call(this);\n\n\t\tthis._sliderHandleWidth = $active.sliderHandleWidth; //8 - width of handle / 2\n\t\tthis._sliderPadding = $active.sliderPadding;//10 - padding of webix_slider_box ( 20 = 10*2 )\n\t\tthis._sliderBorder = $active.sliderBorder;//1px border\n\t},\n\t_handle_move_keyboard:function(e){\n\t\tvar code = e.keyCode, c = this._settings, value = c.value;\n\n\t\tif(code>32 && code <41){\n\t\t\tpreventEvent(e);\n\n\t\t\tvar trg = e.target || e.srcElement;\n\t\t\tvar match = /webix_slider_handle_(\\d)/.exec(trg.className);\n\t\t\tthis._activeIndex = match?parseInt(match[1],10):-1;\n\t\t\tif(match)\n\t\t\t\tvalue = c.value[this._activeIndex];\n\n\t\t\tvalue = valuec.max ? c.max : value);\n\t\t\t\n\t\t\tif(code === 36) value = c.min;\n\t\t\telse if(code === 35) value = c.max;\n\t\t\telse{\n\t\t\t\tvar inc = (code === 37 || code ===40 || code === 34)?-1:1;\n\t\t\t\tif(code === 33 || code === 34 || c.step>1)\n\t\t\t\t\tinc = inc*c.step;\n\t\t\t\tvalue = value*1+inc;\n\t\t\t}\n\n\t\t\tif(match){\n\t\t\t\tvar other = c.value[this._activeIndex?0:1];\n\t\t\t\tvalue = ((this._activeIndex && value <= other) || (!this._activeIndex && value >= other )) ? other : value;\n\t\t\t}\n\n\t\t\tif(value>=c.min && value <=c.max){\n\t\t\t\tif(match){\n\t\t\t\t\tvar temp =[];\n\t\t\t\t\tfor(var i=0; i 
    \";\n\t\t\thandles += \"
     
    \";\n\n\t\t\tvar title = \"
     
    \";\n\t\t\tif(obj.moveTitle)\n\t\t\t\ttitle = \"
    \"+(title+title)+\"
    \";\n\t\t\t\n\t\t\tvar parts = \"
     
    \";\n\t\t\tvar html = \"\";\n\t\t\tif(obj.vertical) html = \"
    \"+parts+handles+\"
    \"+title;\n\t\t\telse html = title+\"
    \"+parts+handles+\"
    \";\n\t\t\treturn common.$renderInput(obj, html, id);\n\t\t}\n\t},\n\t$prepareValue:function(value){\n\t\tif(!isArray(value)){\n\t\t\tvalue = (value||\"\").toString().split(this._settings.separator);\n\t\t}\n\t\tvalue[0] = parseFloat(value[0]);\n\t\tvalue[0] = isNaN(value[0])?0:value[0];\n\t\tif(value.length < 2)\n\t\t\tvalue[1] = value[0];\n\t\telse{\n\t\t\tvalue[1] = parseFloat(value[1]);\n\t\t\tvalue[1] = isNaN(value[1])?0:value[1];\n\t\t}\n\t\tif(value[0]>value[1]) [value[0], value[1]] = [value[1], value[0]];\n\t\treturn value;\n\t},\n\t_get_slider_handle:function(index){\n\t\tindex = index && index>=0?index:0;\n\t\treturn this.$view.querySelector(\".webix_slider_handle_\"+(index||0));\n\t},\n\t_get_left_pos: function(size,index){\n\t\tvar config, max, value;\n\n\t\tconfig = this._settings;\n\t\tmax = config.max - config.min;\n\t\tvalue = config.value[index]%config.step?(Math.round(config.value[index]/config.step)*config.step):config.value[index];\n\t\tvalue = Math.max(Math.min(value,config.max),config.min);\n\t\treturn Math.ceil((size - this._sliderPadding*2) * (value-config.min) / max);\n\t},\n\t_set_left_pos:function(size, left, vertical){\n\t\tvar pos = this._sliderPadding + left - (this._sliderHandleWidth / 2 *(vertical?-1:1));\n\t\tpos = vertical? size-pos:pos;\n\t\treturn pos+\"px\";\n\t},\n\t_set_value_pos:function(size, left, length, vertical){\n\t\tvar pos = left+this._sliderPadding + 2 * this._sliderBorder;\n\t\tif(vertical) pos = size-pos-length;\n\t\treturn pos + \"px\";\n\t},\n\t_set_inner_size:function(){\n\t\tvar config, handle0, handle1,\n\t\t\tleft0, left1, max, length, parentBox,\n\t\t\tsizeStr, size, cornerStr;\n\n\t\thandle0 =this._get_slider_handle(0);\n\t\thandle1 = this._get_slider_handle(1);\n\t\tconfig = this._settings;\n\n\t\tif(!isArray(config.value)){\n\t\t\tthis.define(\"value\", config.value);\n\t\t}\n\n\t\tif (handle0){\n\t\t\tsizeStr = config.vertical?\"height\":\"width\";\n\t\t\tcornerStr = config.vertical?\"top\":\"left\";\n\t\t\t\n\t\t\tsize = config.vertical?this._content_height:this._get_input_width(config);\n\t\t\tmax = size - this._sliderPadding * 2 - 2 * this._sliderBorder;\n\t\t\t\n\t\t\tleft0 = this._get_left_pos(size, 0);\n\t\t\tleft1 = this._get_left_pos(size, 1);\n\t\t\tlength = left1 - left0;\n\n\t\t\thandle0.style[cornerStr] = this._set_left_pos(size, left0, config.vertical);\n\t\t\thandle1.style[cornerStr] = this._set_left_pos(size, left1, config.vertical);\n\t\t\t\n\t\t\tparentBox = handle0.parentNode;\n\t\t\tparentBox.style[sizeStr] = size+\"px\";\n\t\t\tparentBox.firstChild.style[sizeStr] = max + \"px\";\n\t\t\tparentBox.childNodes[1].style[sizeStr] = length + \"px\";\n\t\t\tparentBox.childNodes[1].style[cornerStr] = this._set_value_pos(size, left0, length, config.vertical);\n\n\t\t\tthis._set_title(handle0, [left0, left1], max, cornerStr);\n\t\t}\n\t},\n\t_title_hidden:0,\n\t_hide_title:function(title, index){\n\t\tif(!isUndefined(this._title_hidden))\n\t\t\ttitle[this._title_hidden].style.visibility = \"visible\";\n\t\tif(!isUndefined(index)){\n\t\t\ttitle[index].style.visibility = \"hidden\";\n\t\t\tthis._title_hidden = index;\n\t\t}\n\t},\n\t_set_title:function(handle0, left, max, cornerStr){\n\t\tvar config = this._settings;\n\t\tif (this._settings.title){\n\t\t\tvar box = handle0.parentNode;\n\t\t\tvar sibling = config.vertical?\"nextSibling\":\"previousSibling\";\n\n\t\t\tif(!config.moveTitle)\n\t\t\t\tbox[sibling].innerHTML = this._settings.title(this._settings, this);\n\t\t\telse{ //two independent titles\n\t\t\t\tvar title = box[sibling].childNodes;\n\t\t\t\tvar pos = [];\n\t\t\t\tfor(let i = 0; i<2; i++)\n\t\t\t\t\tpos.push(this._set_title_n(title[i], config.value[i], left[i], max, cornerStr, i));\n\n\t\t\t\t//correct for overlapping titles\n\t\t\t\tvar diff = config.vertical? (pos[0]-pos[1]-this._sliderHandleWidth) : (pos[1]-pos[0]);\n\t\t\t\tvar sizeStr = config.vertical?\"clientHeight\":\"clientWidth\";\n\n\t\t\t\t\n\n\t\t\t\tif(title[0][sizeStr]/2+title[1][sizeStr]/2 > diff)\n\t\t\t\t\tthis._hide_title(title, isUndefined(this._activeIndex) ? 0 : (this._activeIndex ? 0 : 1));\n\t\t\t\telse\n\t\t\t\t\tthis._hide_title(title);\n\n\t\t\t\t//set position\n\t\t\t\tfor(let i = 0; i<2; i++)\n\t\t\t\t\ttitle[i].style[cornerStr] = pos[i]+ \"px\";\n\t\t\t}\n\t\t}\n\t},\n\t_set_title_n:function(title, value, left, max, cornerStr, index){\n\t\ttitle.innerHTML = this._settings.title({value:value}, this);\n\t\tvar half = title.clientWidth/2;\n\t\tvar pos = 0;\n\t\t\n\t\tif(this._settings.vertical)\n\t\t\tpos = max-left-this._sliderHandleWidth/2-(index?this._sliderPadding:0)+2 * this._sliderBorder;\n\t\telse{\n\t\t\tpos = left + this._sliderHandleWidth/2 + 2*this._sliderBorder - half;\n\t\t\tpos = (half>left) ? (half-left+pos): pos;//left/top text is to small\n\t\t\tpos = (index && half+left>max)?(pos-half+(max-left)):pos;//right/bottom text is too large\n\t\t}\n\t\treturn pos;\n\t},\n\t_set_value_now:function(){\n\t\tfor(var i=0; i<2; i++){\n\t\t\tthis._get_slider_handle(i).setAttribute(\"aria-valuenow\", this._settings.value[i]);\n\t\t}\n\t},\n\t_mouse_down_process: function(e){\n\t\tvar trg = e.target || e.srcElement;\n\t\tvar match = /webix_slider_handle_(\\d)/.exec(trg.className);\n\t\tthis._activeIndex = match?parseInt(match[1],10):-1;\n\n\t\tif(match)\n\t\t\tthis._set_handle_active(this._activeIndex);\n\t},\n\t$compareValue:function(oldvalue, value){\n\t\tvalue = this.$prepareValue(value);\n\t\treturn oldvalue[0] === value[0] && oldvalue[1] === value[1];\n\t},\n\t$getValue:function(){\n\t\tvar value = this._settings.value;\n\t\treturn this._settings.stringResult?value.join(this._settings.separator):value;\n\t},\n\t_set_handle_active: function(index){\n\t\tvar hActive = this._get_slider_handle(index);\n\t\tvar h = this._get_slider_handle(1-index);\n\t\tif(hActive.className.indexOf(\"webix_slider_active\") == -1)\n\t\t\thActive.className += \" webix_slider_active\";\n\t\th.className = h.className.replace(\" webix_slider_active\",\"\");\n\t\thActive.focus();\n\t},\n\t_get_value_from_pos:function(pos){\n\t\tvar config = this._settings;\n\t\tvar value = config.value;\n\t\t//10 - padding of slider box\n\t\tvar max = config.max - config.min;\n\t\tvar ax = config.vertical?\"y\":\"x\";\n\n\t\tvar left = offset(this._get_slider_handle().parentNode)[ax];\n\t\tvar newvalue = Math.ceil((pos-left) * max / (config.vertical?this._content_height:this._get_input_width(config)));\n\t\tnewvalue = Math.round((newvalue + 1*config.min)/config.step) * config.step;\n\t\tif(config.vertical)\n\t\t\tnewvalue = max-newvalue;\n\n\t\tvar index = null;\n\t\tvar pos0 = offset(this._get_slider_handle(0))[ax];\n\t\tvar pos1 = offset(this._get_slider_handle(1))[ax];\n\n\t\tif(pos0==pos1 && (config.value[0] == config.min || config.value[0] == config.max) ){\n\t\t\tthis._activeIndex = index = (config.value[0] == config.min?1:0);\n\t\t\tthis._set_handle_active(index);\n\t\t}\n\t\telse{\n\t\t\tif(this._activeIndex >=0){\n\t\t\t\tindex = this._activeIndex;\n\t\t\t}else{\n\t\t\t\tif(pos0==pos1){\n\t\t\t\t\tindex = (pos < pos0?0:1);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tvar dist0 = Math.abs(pos0-pos);\n\t\t\t\t\tvar dist1 = Math.abs(pos1-pos);\n\t\t\t\t\tindex = dist0\"+config.labelRight+\"\";\n\t\t\t\tif (config.labelWidth)\n\t\t\t\t\tconfig.label = config.label || \" \";\n\t\t\t}\n\t\t\tvar checked = (config.checkValue == config.value);\n\t\t\tvar aria = \"aria-label=\\\"\"+(config.label||config.labelRight||\"\")+\"\\\" role=\\\"checkbox\\\" tabindex=\\\"0\\\" aria-checked=\\\"\"+(checked?\"true\":\"false\")+\"\\\" \"+(config.readonly?\"aria-readonly='true'\":\"\")+\"\\\"\";\n\t\t\tvar html = \n\t\t\t\t\"
    \"+\n\t\t\t\t\t\"\"+((checked?config.onLabel:config.offLabel)||\"\")+\"\"+\n\t\t\t\t\t\"\"+\n\t\t\t\t\"
    \"+rightlabel;\n\n\t\t\treturn common.$renderInput(config, html, id);\n\t\t}\n\t},\n\t$skin:function(){\n\t\tcheckbox.api.$skin.call(this);\n\n\t\tthis._switchHeight = $active.switchHeight;\n\t\tthis._switchWidth = $active.switchWidth;\n\t},\n\t$setValue:function(value){\n\t\tvar config = this._settings;\n\t\tvar checked = (value == config.checkValue);\n\t\tvar box = this.$view.querySelector(\".webix_switch_box\");\n\n\t\tif(box){\n\t\t\tvar handle = box.childNodes[1];\n\t\t\tvar text = (checked?config.onLabel:config.offLabel)||\"\";\n\t\t\tif(checked)\n\t\t\t\taddCss(box, \"webix_switch_on\");\n\t\t\telse\n\t\t\t\tremoveCss(box, \"webix_switch_on\");\n\n\t\t\thandle.style.left = (checked?this._switchWidth-this._switchHeight:0)+\"px\";\n\t\t\thandle.firstChild.checked = checked;\n\t\t\thandle.setAttribute(\"aria-checked\", checked?\"true\":\"false\");\n\n\t\t\tif(text){\n\t\t\t\tbox.childNodes[0].innerHTML = text;\n\t\t\t}\n\t\t}\n\t},\n\t_calck_switch_size:function(){\n\t\tvar config = this._settings;\n\t\tif(config.onLabel || config.offLabel){\n\t\t\tvar onWidth = config.onLabel ? getTextSize(config.onLabel, \"webix_switch_text\").width : 0;\n\t\t\tvar offWidth = config.onLabel ? getTextSize(config.offLabel, \"webix_switch_text\").width : 0;\n\t\t\tthis._switchWidth = Math.max(onWidth, offWidth)+this._switchHeight;\n\t\t}\n\t},\n\ton_click:{\n\t\t\"webix_switch_box\":function(){\n\t\t\tif(!this._settings.readonly)\n\t\t\t\tthis.toggle();\n\t\t},\n\t\t\"webix_label_right\":function(){\n\t\t\tif(!this._settings.readonly)\n\t\t\t\tthis.toggle();\n\t\t}\n\t}\n};\n\n\nconst view = protoUI(api, checkbox.view);\nexport default {api, view};","import {protoUI, ui, $$} from \"../ui/core\";\nimport UIManager from \"../core/uimanager\";\nimport {$active} from \"../webix/skin\";\nimport {extend} from \"../webix/helpers\";\nimport i18n from \"../webix/i18n\";\nimport template from \"../webix/template\";\n\nimport segmented from \"../views/segmented\";\n\nconst api = {\n\tname:\"tabbar\",\n\t$init:function(){\n\t\tthis.attachEvent(\"onKeyPress\", this._onKeyPress);\n\t},\n\t$skin:function(){\n\t\tvar skin = $active;\n\t\tvar defaults = this.defaults;\n\n\t\tdefaults.topOffset = skin.tabTopOffset||0;\n\t\tdefaults.tabOffset = (typeof skin.tabOffset != \"undefined\"?skin.tabOffset:10);\n\t\tdefaults.bottomOffset = skin.tabBottomOffset||0;\n\t\tdefaults.height = skin.tabbarHeight;\n\n\t\tdefaults.tabMargin = skin.tabMargin;\n\t\tdefaults.inputPadding = skin.inputPadding;\n\t\tdefaults.tabMinWidth = skin.tabMinWidth||100;\n\t\tdefaults.tabMoreWidth = skin.tabMoreWidth||40;\n\t\tdefaults.borderless = !skin.tabBorder;\n\t},\n\t_getTabbarSizes: function(){\n\n\t\tvar config = this._settings,\n\t\t\ti, len,\n\t\t\ttabs = this._filterOptions(config.options),\n\t\t\ttotalWidth = this._input_width - config.tabOffset*2,\n\t\t\tlimitWidth = config.optionWidth||config.tabMinWidth;\n\n\t\tlen = tabs.length;\n\n\t\tif(config.tabMinWidth && totalWidth/len < limitWidth){\n\t\t\treturn { max: (parseInt(totalWidth/limitWidth,10)||1)};\n\t\t}\n\n\n\t\tif(!config.optionWidth){\n\t\t\tfor(i=0;i< len; i++){\n\t\t\t\tif(tabs[i].width){\n\t\t\t\t\ttotalWidth -= tabs[i].width+(!i&&!config .type?config.tabMargin:0);\n\t\t\t\t\tlen--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {width: (len?totalWidth/len:config.tabMinWidth)};\n\t},\n\t_init_popup: function(){\n\t\tconst obj = this._settings;\n\t\tif (!obj.tabbarPopup){\n\t\t\tconst popupConfig = {\n\t\t\t\tview: \"popup\",\n\t\t\t\tautofocus:false,\n\t\t\t\twidth: (obj.popupWidth||200),\n\t\t\t\tbody:{\n\t\t\t\t\tview: \"list\",\n\t\t\t\t\tborderless: true,\n\t\t\t\t\tselect: true, navigation:true,\n\t\t\t\t\tcss: \"webix_tab_list\",\n\t\t\t\t\tautoheight: true, yCount: obj.yCount,\n\t\t\t\t\ttype:{\n\t\t\t\t\t\ttemplate: obj.popupTemplate\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst view = ui(popupConfig);\n\t\t\tconst list = view.getBody();\n\n\t\t\tview.attachEvent(\"onShow\", () => {\n\t\t\t\tlist.unselect();\n\t\t\t\tUIManager.setFocus(list);\n\n\t\t\t\tconst node = list.getItemNode(list.getFirstId());\n\t\t\t\tif (node)\n\t\t\t\t\tnode.focus();\n\t\t\t});\n\t\t\tlist.attachEvent(\"onItemClick\", (id) => this._popupInnerClick(id));\n\t\t\tlist.attachEvent(\"onEnter\", () => this._popupInnerClick());\n\n\t\t\tobj.tabbarPopup = view._settings.id;\n\t\t\tthis._destroy_with_me.push(view);\n\t\t}\n\t\tthis._init_popup = function(){};\n\t},\n\t_popupInnerClick(id){\n\t\tconst popup = $$(this._settings.tabbarPopup);\n\t\tid = id || popup.getBody().getSelectedId();\n\n\t\tif (id && this.callEvent(\"onBeforeTabClick\", [id])){\n\t\t\tthis.setValue(id);\n\t\t\tpopup.hide();\n\t\t\tthis.callEvent(\"onAfterTabClick\", [id]);\n\t\t\tthis.refresh();\n\t\t\tthis.focus();\n\t\t}\n\t\treturn false;\n\t},\n\tgetPopup: function(){\n\t\tthis._init_popup();\n\t\treturn $$(this._settings.tabbarPopup);\n\t},\n\tmoreTemplate_setter: template,\n\tpopupTemplate_setter: template,\n\tdefaults:{\n\t\tpopupWidth: 200,\n\t\tpopupTemplate: \"#value#\",\n\t\tyCount: 7,\n\t\tmoreTemplate: \"\",\n\t\ttemplate:function(obj,common) {\n\t\t\tcommon._check_options(obj.options);\n\n\t\t\tlet tabs = common._filterOptions(obj.options);\n\t\t\tlet contentWidth, html, leafWidth, resultHTML, style, sum, verticalOffset, width;\n\n\t\t\tif (!tabs.length){\n\t\t\t\thtml = \"
    \";\n\t\t\t} else {\n\t\t\t\tif (!obj.value)\n\t\t\t\t\tobj.value = common._getFirstActive(true);\n\n\t\t\t\thtml = \"\";\n\t\t\t\tif (obj.tabOffset)\n\t\t\t\t\thtml += \"
     
    \";\n\t\t\t\tcontentWidth = common._input_width - obj.tabOffset*2-(!obj.type?(obj.tabMargin)*(tabs.length-1):0);\n\t\t\t\tverticalOffset = obj.topOffset+obj.bottomOffset;\n\n\t\t\t\tvar sizes = common._getTabbarSizes();\n\n\t\t\t\tif (sizes.max && sizes.max < tabs.length){\n\t\t\t\t\t//we need popup\n\t\t\t\t\tconst popup = common.getPopup();\n\t\t\t\t\tpopup.hide();\n\n\t\t\t\t\tconst body = (popup.getBody()||null);\n\t\t\t\t\tif(body){\n\t\t\t\t\t\tif (sizes.max){\n\t\t\t\t\t\t\tfor (let i=0, found=false; i < tabs.length && !found; i++)\n\t\t\t\t\t\t\t\tif(tabs[i].id== obj.value){\n\t\t\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\t\t\tif((i+1) > sizes.max){\n\t\t\t\t\t\t\t\t\t\tlet selectedTab = tabs.splice(i, 1);\n\t\t\t\t\t\t\t\t\t\tlet displayTabs = tabs.splice(0, sizes.max-1).concat(selectedTab);\n\t\t\t\t\t\t\t\t\t\ttabs = displayTabs.concat(tabs);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbody.clearAll();\n\t\t\t\t\t\t\tbody.parse(tabs.slice(sizes.max));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tbody.clearAll();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (common._settings.tabbarPopup)\n\t\t\t\t\t$$(common._settings.tabbarPopup).hide();\n\n\t\t\t\tsum = obj.tabOffset;\n\t\t\t\tfor (let i=0, lastTab=false; (i1)?(obj.tabMargin)*(sizes.max-1):0);\n\t\t\t\t\t\twidth = (contentWidth - obj.tabMoreWidth)/sizes.max ;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\twidth = sizes.width;\n\n\t\t\t\t\twidth = (tabs[i].width||obj.optionWidth||width);\n\n\t\t\t\t\tsum += width + (i&&!obj.type?obj.tabMargin:0);\n\n\t\t\t\t\tif(obj.tabMargin>0&&i&&!obj.type)\n\t\t\t\t\t\thtml += \"
    \";\n\n\t\t\t\t\t// tab innerHTML\n\t\t\t\t\thtml += common._getTabHTML(tabs[i], width);\n\n\n\t\t\t\t\tif(lastTab){\n\t\t\t\t\t\thtml += \"
    \"+obj.moreTemplate(obj,common)+\"
    \";\n\t\t\t\t\t\tsum += obj.tabMoreWidth;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\n\t\t\t\tleafWidth = common._content_width - sum;\n\n\t\t\t\tif (leafWidth>0 && !obj.type)\n\t\t\t\t\thtml += \"
     
    \";\n\t\t\t}\n\n\t\t\tresultHTML = \"\";\n\n\t\t\t// consider top and bottom offset in tabs height (top tabbar)\n\t\t\tstyle = (verticalOffset&& !obj.type)?\"height:\"+(common._content_height-verticalOffset)+\"px\":\"\";\n\n\t\t\t//space above tabs (top tabbar)\n\t\t\tif(obj.topOffset && !obj.type)\n\t\t\t\tresultHTML += \"
    \";\n\n\t\t\t// tabs html\n\t\t\tresultHTML += \"
    \"+html+\"
    \";\n\n\t\t\t//space below to tabs (top tabbar)\n\t\t\tif(obj.bottomOffset && !obj.type)\n\t\t\t\tresultHTML += \"
    \";\n\n\t\t\treturn resultHTML;\n\t\t}\n\t},\n\t_getInputNode:function(){\n\t\treturn this.$view.querySelectorAll(\".webix_item_tab\");\n\t},\n\t_getTabHTML: function(tab, width){\n\t\tvar\thtml,\n\t\t\tclassName = \"\",\n\t\t\ttooltip = \"\",\n\t\t\tisDisabled = !!tab.disabled,\n\t\t\tconfig = this.config;\n\n\t\tif (tab.id == config.value)\n\t\t\tclassName += \" webix_selected\";\n\n\t\tif (isDisabled)\n\t\t\tclassName += \" webix_disabled\";\n\n\t\tif (tab.css)\n\t\t\tclassName+=\" \"+tab.css;\n\n\t\tif (config.tooltip)\n\t\t\ttooltip = \" webix_t_id='\"+tab.id+\"'\";\n\n\t\twidth = (tab.width||width);\n\t\thtml = \"
    \";\n\n\t\t// a tab title\n\t\tif(this._tabTemplate){\n\t\t\tvar calcHeight = this._content_height- config.inputPadding*2 - 2;\n\t\t\tvar height = this._content_height - 2;\n\t\t\tvar temp = extend({ cheight: calcHeight, aheight:height }, tab);\n\t\t\thtml+= this._tabTemplate(temp);\n\t\t}\n\t\telse {\n\t\t\tvar icon = tab.icon?(\" \"):\"\";\n\t\t\thtml+=icon + tab.value;\n\t\t}\n\n\t\tif (!isDisabled && (tab.close || config.close))\n\t\t\thtml+=\"\";\n\n\t\thtml+=\"
    \";\n\t\treturn html;\n\t},\n\t_getBox:function(){\n\t\treturn this._dataobj.firstChild;\n\t},\n\t_types:{\n\t\timage:\"
    #value#
    \",\n\t\ticon:\"
    #value#
    \",\n\t\ticonTop:\"
    #value#
    \"\n\t},\n\ttype_setter:function(value){\n\t\tthis._settings.tabOffset = 0;\n\t\tif (this._types[value])\n\t\t\tthis._tabTemplate = template(this._types[value]);\n\t\treturn value;\n\t}\n};\n\n\nconst view = protoUI(api, segmented.view);\nexport default {api, view};","import layout from \"../views/layout\";\nimport IdSpace from \"../core/idspace\";\nimport UIManager from \"../core/uimanager\";\nimport {protoUI} from \"../ui/core\";\nimport i18n from \"../webix/i18n\";\nimport {_event} from \"../webix/htmlevents\";\n\n\nconst api = {\n\tname: \"richtext\",\n\tdefaults:{\n\t\tlabel:\"\",\n\t\tlabelWidth:80,\n\t\tlabelPosition:\"left\"\n\t},\n\t$init: function() {\n\t\tthis._viewobj.className += \" webix_richtext\";\n\t\tthis.$ready.unshift(this._setLayout);\n\t},\n\tgetInputNode:function(){\n\t\treturn this.$view.querySelector(\".webix_richtext_editor\"); \n\t},\n\t_button:function(name){\n\t\treturn {\n\t\t\tview: \"toggle\",\n\t\t\ttype: \"icon\",\n\t\t\ticon: \"wxi-\"+name, name: name, id:name,\n\t\t\tlabel: i18n.richtext[name],\n\t\t\tautowidth: true, \n\t\t\taction:name,\n\t\t\tclick: this._add_data\n\t\t};\n\t},\n\t_setLayout: function() {\n\t\tvar top = this;\n\n\t\tvar editField = {\n\t\t\tview: \"template\",\n\t\t\tcss: \"webix_richtext_container\",\n\t\t\tborderless: true,\n\t\t\ttemplate: \"
    \"+this.getValue()+\"
    \",\n\t\t\ton: {\n\t\t\t\tonAfterRender: function() {\n\t\t\t\t\ttop._rendered_input = true;\n\t\t\t\t\ttop.refresh();\n\t\t\t\t\t_event( \n\t\t\t\t\t\ttop.getInputNode(),\n\t\t\t\t\t\t\"blur\",\n\t\t\t\t\t\tfunction(){\n\t\t\t\t\t\t\ttop._updateValue(this.innerHTML);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\t_event( \n\t\t\t\t\t\ttop.getInputNode(),\n\t\t\t\t\t\t\"keyup\",\n\t\t\t\t\t\tfunction(){\n\t\t\t\t\t\t\ttop._getselection();\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonClick: {\n\t\t\t\twebix_richtext_editor: function() {\n\t\t\t\t\ttop._getselection();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar editorToolbar = {\n\t\t\tview: \"toolbar\",\n\t\t\tid:\"toolbar\",\n\t\t\telements: [\n\t\t\t\tthis._button(\"underline\"),\n\t\t\t\tthis._button(\"bold\"),\n\t\t\t\tthis._button(\"italic\"),\n\t\t\t\t{}\n\t\t\t]\n\t\t};\n\n\t\tvar rows = [\n\t\t\teditorToolbar,\n\t\t\teditField\n\t\t];\n\n\t\tif (this.config.labelPosition === \"top\" || !this.config.labelWidth){\n\t\t\teditorToolbar.elements.concat([\n\t\t\t\t{ view:\"label\", label: this.config.label, align:\"right\"},\n\t\t\t\t{ width:4 }\n\t\t\t]);\n\t\t\tthis.rows_setter(rows);\n\t\t} else {\n\t\t\tthis.config.borderless = true;\n\t\t\tthis.cols_setter([{ \n\t\t\t\ttemplate: (this.config.label || \" \"),\n\t\t\t\tcss: \"webix_richtext_inp_label\"+(this.config.required?\" webix_required\":\"\"),\n\t\t\t\tborderless: true,\n\t\t\t\twidth: this.config.labelWidth\n\t\t\t}, {\n\t\t\t\trows:rows\n\t\t\t}]);\n\t\t}\n\t},\n\t_getselection: function() {\n\t\tvar top = this;\n\t\tvar bar = top.$$(\"toolbar\");\n\t\tvar sel;\n\n\t\tbar.setValues({\n\t\t\titalic:false, underline:false, bold:false\n\t\t});\n\n\t\tif(window.getSelection) {\n\t\t\tsel = window.getSelection();\n\t\t} else {\n\t\t\tsel = document.selection.createRange();\n\t\t}\n\n\t\tfor (var i = 0; i < sel.rangeCount; ++i) {\n\t\t\tif (top.$view.contains(this.getInputNode())){\n\t\t\t\tif (document.queryCommandState(\"bold\")) {\n\t\t\t\t\ttop.$$(\"bold\").setValue(true);\n\t\t\t\t} \n\t\t\t\tif (document.queryCommandState(\"underline\")) {\n\t\t\t\t\ttop.$$(\"underline\").setValue(true);\n\t\t\t\t}\n\t\t\t\tif (document.queryCommandState(\"italic\")) {\n\t\t\t\t\ttop.$$(\"italic\").setValue(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\trefresh: function() {\n\t\tif(this._rendered_input)\n\t\t\tthis.getInputNode().innerHTML = this.config.value || \"\";\n\t},\n\t_execCommandOnElement:function(commandName) {\n\t\tlet sel, selText;\n\n\t\tif (window.getSelection) {\n\t\t\tsel = window.getSelection();\n\t\t\tselText = sel.toString().length;\n\n\t\t\tconst input = this.getInputNode();\n\t\t\tif (!input.contains(sel.anchorNode) || !input.contains(sel.focusNode)) return;\n\t\t} else return; //ie8\n\n\t\tif(selText > 0) {\n\t\t\tfor (var i = 0; i < sel.rangeCount; ++i) {\n\t\t\t\tvar range = sel.getRangeAt(i);\n\t\t\t\tif (!sel.isCollapsed) {\n\t\t\t\t\tdocument.execCommand(commandName, false, \"\");\n\t\t\t\t} else {\n\t\t\t\t\tvar textValue = sel.focusNode.textContent;\n\t\t\t\t\tvar focusEl = sel.focusNode;\n\t\t\t\t\tvar focustext = sel.anchorOffset;\n\t\t\t\t\tvar wordBegining = textValue.substring(0, focustext).match(/[A-Za-z]*$/)[0];\n\t\t\t\t\tvar wordEnd = textValue.substring(focustext).match(/^[A-Za-z]*/)[0];\n\n\t\t\t\t\tvar startWord = focustext - wordBegining.length;\n\t\t\t\t\tvar endWord = focustext + wordEnd.length;\n\n\t\t\t\t\trange.setStart(focusEl, startWord);\n\t\t\t\t\trange.setEnd(focusEl, endWord);\n\t\t\t\t\tsel.removeAllRanges();\n\n\t\t\t\t\tsel.addRange(range);\n\t\t\t\t\tdocument.execCommand(commandName, false, \"\");\n\t\t\t\t} \n\t\t\t}\n\t\t}\n\t},\n\t_add_data:function() {\n\t\tconst top = this.getTopParentView();\n\t\ttop._execCommandOnElement(this.config.action);\n\t},\n\tfocus: function() {\n\t\tif(!UIManager.canFocus(this))\n\t\t\treturn false;\n\n\t\tvar editableElement = this.getInputNode();\n\t\teditableElement.focus();\n\t},\n\t_updateValue: function(value){\n\t\tvar old = this.config.value;\n\t\tthis.config.value = value || \"\";\n\n\t\tif (old !== value)\n\t\t\tthis.callEvent(\"onChange\", [value, old]);\n\t},\n\tsetValue: function(value) {\n\t\tthis._updateValue(value);\n\t\tthis.refresh();\n\t},\n\tgetValue: function() {\n\t\tvar input = this.getInputNode();\n\t\tif (input)\n\t\t\tthis.config.value = this.getInputNode().innerHTML;\n\n\t\tvar value = this.config.value;\n\t\treturn value || (value ===0?\"0\":\"\");\n\t}\n};\n\n\nconst view = protoUI(api, IdSpace, layout.view);\nexport default {api, view};","import {createCss, preventEvent, addCss, removeCss} from \"../webix/html\";\nimport {protoUI, $$} from \"../ui/core\";\nimport {extend, delay, uid, toNode, bind} from \"../webix/helpers\";\nimport {_event} from \"../webix/htmlevents\";\nimport {$name} from \"../webix/skin\";\n\nimport base from \"../views/view\";\nimport button from \"../views/button\";\nimport list from \"../views/list\";\nimport i18n from \"../webix/i18n\";\nimport type from \"../webix/type\";\n\nimport UploadDriver from \"../core/uploaddriver\";\nimport DataCollection from \"../core/datacollection\";\n\n\n/*\n\tUI:Uploader\n*/\n\n// #include ui/view.js\n// #include ui/list.js\n\n\ntype(list.view, {\n\tname:\"uploader\",\n\ttemplate:\"{common.removeIcon()}{common.percent()}
    #sizetext#
    {common.fileName()}\",\n\tpercent:function(obj){\n\t\tif (obj.status == \"transfer\")\n\t\t\treturn \"
    \"+obj.percent+\"%
    \";\n\t\treturn \"
    \";\n\t},\n\tremoveIcon:function(){\n\t\treturn \"
    \";\n\t},\n\tfileName:function(obj){\n\t\treturn \"
    \"+obj.name+\"
    \";\n\t},\n\ton_click:{\n\t\t\"webix_remove_upload\":function(ev, id){\n\t\t\t$$(this.config.uploader).files.remove(id);\n\t\t}\n\t}\n});\n\nconst api = {\n\tname:\"uploader\",\n\tdefaults:{\n\t\tautosend:true,\n\t\tmultiple:true,\n\t\tinputName:\"upload\"\n\t},\n\t$cssName:\"button webix_uploader\",\n\t$allowsClear:true,\n\ton_click:{\n\t\t//don't fire extra onItemClick events, visible button will do it\n\t\t\"webix_hidden_upload\":function(){ return false; }\n\t},\n\t//will be redefined by upload driver\n\tsend:function(){},\n\tfileDialog:function(){},\n\tstopUpload:function(){},\n\t$skin:function(){\n\t\tbutton.api.$skin.call(this);\n\n\t\tif($name == \"material\" || $name == \"mini\")\n\t\t\tthis.defaults.css = \"webix_primary\";\n\t},\n\n\t$init:function(){\n\t\tthis.files = new DataCollection();\n\t\tthis._destroy_with_me = [this.files];\n\t\textend(this, UploadDriver, true);\n\t},\n\t$setSize:function(x,y){\n\t\tif (base.api.$setSize.call(this,x,y)){\n\t\t\tthis.render();\n\t\t}\n\t},\n\tapiOnly_setter:function(value){\n\t\tdelay(this.render, this);\n\t\treturn (this.$apiOnly=value);\n\t},\n\t_add_files: function(files){\n\t\tfor (var i = 0; i < files.length; i++)\n\t\t\tthis.addFile(files[i]);\n\n\t},\n\tlink_setter:function(value){\n\t\tif (value)\n\t\t\tdelay(function(){\n\t\t\t\tvar view = $$(this._settings.link);\n\t\t\t\tif (!view){\n\t\t\t\t\tvar top = this.getTopParentView();\n\t\t\t\t\tif (top.$$)\n\t\t\t\t\t\tview = top.$$(this._settings.link);\n\t\t\t\t}\n\n\t\t\t\tif (view.sync && view.filter)\n\t\t\t\t\tview.sync(this.files);\n\t\t\t\telse if (view.setValues)\n\t\t\t\t\tthis.files.data.attachEvent(\"onStoreUpdated\", function(){\n\t\t\t\t\t\tview.setValues(this);\n\t\t\t\t\t});\n\t\t\t\tview._settings.uploader = this._settings.id;\n\t\t\t}, this);\n\t\treturn value;\n\t},\n\taddFile:function(name, size, type, extra){\n\t\tvar file = null;\n\t\tif (typeof name == \"object\"){\n\t\t\tfile = name;\n\t\t\tname = file.name;\n\t\t\tsize = file.size;\n\t\t}\n\n\t\tvar format = this._format_size(size);\n\t\ttype = type || name.split(\".\").pop();\n\n\t\tvar file_struct = {\n\t\t\tfile: file,\n\t\t\tname: name,\n\t\t\tid: uid(),\n\t\t\tsize: size,\n\t\t\tsizetext: format,\n\t\t\ttype: type,\n\t\t\tcontext: this._last_file_context,\n\t\t\tstatus: \"client\"\n\t\t};\n\n\t\tif (file && file.webkitRelativePath)\n\t\t\tfile_struct.name = file.webkitRelativePath;\n\n\t\tif (extra)\n\t\t\textend(file_struct, extra, true);\n\n\t\tif (this.callEvent(\"onBeforeFileAdd\", [file_struct])){\n\t\t\tif (!this._settings.multiple)\n\t\t\t\tthis.files.clearAll();\n\n\t\t\tvar id = this.files.add(file_struct);\n\t\t\tthis.callEvent(\"onAfterFileAdd\", [file_struct]);\n\t\t\tif (id && this._settings.autosend)\n\t\t\t\tthis.send(id);\n\t\t}\n\t\t\n\t\treturn file_struct;\n\t},\n\t\n\t_get_active_url:function(item){\n\t\tvar url = this._settings.upload;\n\t\tvar urldata = extend(item.urlData||{},this._settings.urlData||{});\n\t\tif (url && urldata){\n\t\t\tvar subline = [];\n\t\t\tfor (var key in urldata)\n\t\t\t\tsubline.push(encodeURIComponent(key)+\"=\"+encodeURIComponent(urldata[key]));\n\n\t\t\tif (subline.length)\n\t\t\t\turl += ((url.indexOf(\"?\") ==-1) ? \"?\" : \"&\") + subline.join(\"&\");\n\t\t}\n\t\treturn url;\n\t},\n\n\taddDropZone:function(id, hover_text){\n\t\tvar node = toNode(id);\n\t\tvar extra_css = \"\";\n\t\tif (hover_text)\n\t\t\textra_css = \" \"+createCss({ content:\"\\\"\"+hover_text+\"\\\"\" }, \":before\");\n\n\t\tvar fullcss = \"webix_drop_file\"+extra_css;\n\t\tvar timer = null;\n\n\t\t//web\n\t\t_event(node,\"dragover\", preventEvent);\n\t\t_event(node,\"dragover\", function(){\n\t\t\taddCss(node, fullcss, true);\n\t\t\tif (timer){\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = null;\n\t\t\t}\n\t\t});\n\t\t_event(node,\"dragleave\", function(){\n\t\t\t//when moving over html child elements\n\t\t\t//browser will issue dragleave and dragover events\n\t\t\t//ignore first one\n\t\t\ttimer = setTimeout(function(){\n\t\t\t\tremoveCss(node, fullcss);\n\t\t\t}, 150);\n\t\t});\n\n\t\t_event(node,\"drop\", bind(function(e){\n\t\t\tremoveCss(node, fullcss);\n\t\t\tthis.$drop(e);\n\t\t\treturn preventEvent(e);\n\t\t}, this));\n\t},\n\t\n\t_format_size: function(size) {\n\t\tvar index = 0;\n\t\twhile (size > 1024){\n\t\t\tindex++;\n\t\t\tsize = size/1024;\n\t\t}\n\t\treturn Math.round(size*100)/100+\" \"+i18n.fileSize[index];\n\t},\n\n\t_complete: function(id, response) {\n\t\tvar item = this.files.getItem(id);\n\n\t\textend(item, response, true);\n\t\titem.status = \"server\";\n\t\titem.progress = 100;\n\n\t\tthis.callEvent(\"onFileUpload\", [item, response]);\n\t\tthis.callEvent(\"onChange\", []);\n\t\tthis.files.updateItem(id);\n\t\t\n\t\tif (this.isUploaded())\n\t\t\tthis._upload_complete(response);\n\t},\n\t_upload_complete:function(response){\n\t\tthis.callEvent(\"onUploadComplete\", [response]);\n\t\tif (this._last_assigned_upload_callback){\n\t\t\tthis._last_assigned_upload_callback.call(this, response);\n\t\t\tthis._last_assigned_upload_callback = 0;\n\t\t}\n\t},\n\tisUploaded:function(){\n\t\tvar order = this.files.data.order;\n\t\tfor (var i=0; i]*>/g,\"\");\n\t\t\t}\n\t\t}\n\t\tnode = node || this._last_input_target;\n\t\tif(node)\n\t\t\tnode.focus();\n\t},\n\tsetMasterValue:function(data, refresh){\n\t\tvar text = data.id ? this.getItemText(data.id) : (data.text||data.value);\n\n\t\tif (this._settings.master){\n\t\t\tvar master = $$(this._settings.master);\n\t\t\tif (refresh && data.id)\n\t\t\t\tmaster.refresh();\n\t\t\telse if (master.options_setter)\n\t\t\t\tmaster.setValue(data.$empty?\"\":data.id);\n\t\t\telse if (master.setValueHere)\n\t\t\t\tmaster.setValueHere(text, data, this._get_details());\n\t\t\telse\n\t\t\t\tmaster.setValue(text);\n\t\t}\n\t\telse if (this._last_input_target && this._set_input_value)\n\t\t\tthis._set_input_value(text);\n\t\telse if (this._last_input_target)\n\t\t\tthis._last_input_target.value = text;\n\n\t\tif (!refresh){\n\t\t\tthis.hide();\n\t\t\tif (this._last_input_target)\n\t\t\t\tthis._last_input_target.focus();\n\t\t}\n\t\tthis.callEvent(\"onValueSuggest\", [data, text]);\n\t\tdelay(function(){\n\t\t\tcallEvent(\"onEditEnd\",[]);\n\t\t});\n\t},\n\tgetMasterValue:function(){\n\t\tif (this._settings.master)\n\t\t\treturn $$(this._settings.master).getValue();\n\t\treturn null;\n\t},\n\tgetItemId:function(text){\n\t\tvar list = this.getList();\n\t\tfor (var key in list.data.pull){\n\t\t\tvar obj = list.getItem(key);\n\t\t\tif (this._settings.filter.call(this, obj, text))\n\t\t\t\treturn obj.id;\n\t\t}\n\t},\n\tgetItemText:function(id){\n\t\tvar item = this.getList().getItem(id);\n\n\t\tif (!item)\n\t\t\treturn this._old_text[id] || \"\";\n\n\t\tif (this._settings.template)\n\t\t\treturn this._settings.template.call(this, item, this.type);\n\n\t\tif (this._settings.textValue)\n\t\t\treturn \"\"+item[this._settings.textValue]+\"\";\n\t\t\n\t\tvar type = this.getList().type;\n\t\tvar text = type.template.call(type, item, type);\n\n\t\treturn (this._old_text[id] = text);\n\t},\n\tgetSuggestion:function(text){\n\t\tvar id,\n\t\t\tlist = this.getList(),\n\t\t\torder = list.data.order;\n\n\t\tif (list.getSelectedId)\n\t\t\tid = list.getSelectedId();\n\n\t\tif (text && order.length && (!id || order.find(id) <0) ){\n\t\t\tid = order[0];\n\t\t\t//ensure that option really does match client-side filtering rules\n\t\t\tif (!list.config.dataFeed && !this.config.filter.call(this, list.data.pull[id], text)) return null;\n\t\t}\n\n\t\t//complex id in datatable\n\t\tif (id){\n\t\t\tif (typeof id == \"object\") id = id+\"\";\n\t\t\tif (list.getItem(id).$empty) return null;\n\t\t}\n\t\treturn id;\n\t},\n\tgetList:function(){\n\t\treturn this._body_cell;\n\t},\n\t_set_on_popup_click:function(){\n\t\tvar list = this.getList();\n\t\tvar type = this._settings.type;\n\n\t\tif (list.count){\n\t\t\tlist.attachEvent(\"onItemClick\", bind(function(item){\n\t\t\t\tthis.setMasterValue(list.getItem(item));\n\t\t\t}, this));\n\t\t\tlist.data.attachEvent(\"onstoreupdated\",bind(function(id, obj, mode){\n\t\t\t\tif (mode == \"delete\" && id == this.getMasterValue())\n\t\t\t\t\tthis.setMasterValue({ id:\"\", text:\"\" }, 1);\n\t\t\t\telse if (mode == \"update\" && id == this.getMasterValue()){\n\t\t\t\t\tthis.setMasterValue(obj, 1);\n\t\t\t\t}\n\t\t\t}, this));\n\t\t\tlist.data.attachEvent(\"onAfterFilter\", bind(this._suggest_after_filter, this));\n\t\t\tlist.data.attachEvent(\"onStoreLoad\", bind(this._suggest_after_filter, this));\n\t\t\tif (isUndefined(this._settings.fitMaster))\n\t\t\t\tthis._settings.fitMaster = true;\n\t\t} else if (type == \"calendar\"){\n\t\t\tlist.attachEvent(\"onDateSelect\", function(){\n\t\t\t\tthis.getParentView().setMasterValue({ value:list.getSelectedDate() }, list.config.multiselect);\n\t\t\t});\n\t\t\tlist.attachEvent(\"onTodaySet\", function(date){\n\t\t\t\tthis.getParentView().setMasterValue({ value:date});\n\t\t\t});\n\t\t\tlist.attachEvent(\"onDateClear\", function(date){\n\t\t\t\tthis.getParentView().setMasterValue({ value:date});\n\t\t\t});\n\t\t} else if (type == \"colorboard\"){\n\t\t\tlist.attachEvent(\"onItemClick\", function(value){\n\t\t\t\tthis.getParentView().setMasterValue({ value:value });\n\t\t\t});\n\t\t}\n\t},\n\tinput_setter: function(value) {\n\t\tthis.linkInput(value);\n\t\treturn 0;\n\t},\n\tlinkInput: function(input){\n\t\tvar node;\n\t\tif (input.getInputNode){\n\t\t\tnode = input.getInputNode();\n\t\t\tnode.webix_master_id = input._settings.id;\n\t\t} else\n\t\t\tnode = toNode(input);\n\n\t\t_event(node,\"keydown\",function(e){\n\t\t\tif ((node != document.body || this.isVisible()) && (input.config ? (!input.config.readonly) : (!node.getAttribute(\"readonly\"))))\n\t\t\t\tthis._suggestions(e);\n\t\t}, {bind:this});\n\t\t\n\t\tif(input._getInputDiv)\n\t\t\tnode = input._getInputDiv();\n\t\t\n\t\tnode.setAttribute(\"aria-autocomplete\", \"list\");\n\t\tnode.setAttribute(\"aria-expanded\", \"false\");\n\n\t\tif(node.tagName === \"DIV\"){\n\t\t\tnode.setAttribute(\"aria-live\", \"assertive\");\n\t\t\tnode.setAttribute(\"aria-atomic\", \"true\");\n\t\t}\n\n\t\tthis._non_ui_mode = true;\n\t},\n\t_suggestions: function(e){\n\t\te = (e||event);\n\t\tvar list = this.getList();\n\t\tvar trg = e.target||e.srcElement;\n\t\tif((trg == document.body && !this.isVisible()) || trg.className ==\"webix_clipbuffer\")\n\t\t\treturn;\n\n\t\tthis._last_input_target = trg;\n\t\tthis._settings.master = trg.webix_master_id;\n\n\t\tvar code = e.keyCode;\n\t\t//shift and ctrl\n\t\tif (code == 16 || code == 17) return;\n\n\t\t// tab - hide popup and do nothing\n\t\tif (code == 9)\n\t\t\treturn this._tab_key(e,list);\n\n\t\t// escape - hide popup\n\t\tif (code == 27)\n\t\t\treturn this._escape_key(e,list);\n\n\t\t// enter\n\t\tif (code == 13)\n\t\t\treturn this.$enterKey(e,list);\n\n\t\t// up/down/right/left are used for navigation\n\t\tif (this._navigate(e) && this.isVisible()){\n\t\t\tpreventEvent(e);\n\t\t\treturn false;\n\t\t}\n\n\t\tif (isUndefined(trg.value) && !trg.isContentEditable) return;\n\n\t\tif (this._last_delay)\n\t\t\tthis._last_delay = clearTimeout(this._last_delay);\n\n\t\tthis._last_delay = delay(function(){\n\t\t\t//focus moved to the different control, suggest is not necessary\n\t\t\tif (!this._non_ui_mode &&\n\t\t\t\t\tUIManager.getFocus() != $$(this._settings.master)) return;\n\n\t\t\tthis._resolve_popup = true;\n\t\t\t//spreadsheet use contentEditable div for cell highlighting\n\t\t\tvar val = trg.isContentEditable ? trg.innerText : trg.value;\n\n\t\t\tif (this._before_filtering)\n\t\t\t\tthis._before_filtering();\n\n\t\t\t// used to prevent showing popup when it was initialized\n\t\t\tif (list.config.dataFeed)\n\t\t\t\tlist.filter(\"value\", val);\n\t\t\telse if (list.filter){\n\t\t\t\tlist.filter(bind(function(item){\n\t\t\t\t\treturn this._settings.filter.call(this,item,val);\n\t\t\t\t}, this));\n\t\t\t}\n\t\t}, this, [], this._settings.keyPressTimeout);\n\t},\n\t_suggest_after_filter: function() {\n\t\tif (!this._resolve_popup) return true;\n\t\tthis._resolve_popup = false;\n\n\t\tvar list = this.getList();\n\t\t\n\t\t// filtering is complete\n\t\t// if there are as min 1 variant it must be shown, hidden otherwise\n\t\tif (list.count() >0){\n\t\t\tthis.adjust();\n\t\t\tif(!this.isVisible())\n\t\t\t\tthis._dont_unfilter = true;\n\t\t\tthis.show(this._last_input_target,null,true);\n\t\t\tthis._dont_unfilter = false;\n\t\t} else {\n\t\t\tthis.hide();\n\t\t\tthis._last_input_target = null;\n\t\t}\n\t},\n\n\tshow:function(node){\n\t\tif (!this.isVisible() || this._last_input_target != node){\n\t\t\tvar list = this.getList();\n\t\t\tif (list.filter && !this._dont_unfilter){\n\t\t\t\tlist.filter(\"\");\n\t\t\t}\n\n\t\t\tif (this.$customWidth){\n\t\t\t\tthis.$customWidth(node);\n\t\t\t}\n\t\t\telse if (node.tagName && this._settings.fitMaster){\n\t\t\t\tthis._settings.width = node.offsetWidth -2 ; //2 - borders\n\t\t\t}\n\n\t\t\tif (list._zoom_level)\n\t\t\t\tlist.render();\n\n\t\t\tthis.adjust();\n\n\t\t\t// needed to return focus\n\t\t\tif (node.tagName == \"INPUT\" || node.tagName == \"TEXTAREA\")\n\t\t\t\tthis._last_input_target = node;\n\t\t}\n\t\tpopup.api.show.apply(this, arguments);\n\t},\n\t_show_selection:function(list){\n\t\tlist = list||this.getList();\n\t\tvar value = this.getMasterValue();\n\n\t\tif( list.select && list.showItem ){\n\n\t\t\tif (value && list.exists && list.exists(value)){\n\t\t\t\tlist.select(value);\n\t\t\t\tlist.showItem(value);\n\t\t\t}\n\t\t\telse{\n\t\t\t\tlist.unselect();\n\t\t\t\tlist.showItem(list.getFirstId());\n\t\t\t}\n\t\t}\n\t\telse if(list.setValue){\n\t\t\tif (this._settings.master)\n\t\t\t\tvalue = $$(this._settings.master).$prepareValue(value);\n\t\t\tlist.setValue(value);\n\t\t}\n\t},\n\t$enterKey:function(e, list){\n\t\tconst visible = this.isVisible();\n\t\tlet value;\n\t\tlet master;\n\n\t\tif (this._settings.master)\n\t\t\tmaster = $$(this._settings.master);\n\n\t\tif (master && master._settings.editable && master._applyChanges)\n\t\t\tmaster._applyChanges();\n\t\telse if (visible){\n\t\t\tif (list.count && list.count()){\n\t\t\t\tvalue = list.getSelectedId(false, true);\n\t\t\t\tif (list.count()==1 && list.getFirstId()!=value)\n\t\t\t\t\tvalue = list.getFirstId();\n\t\t\t\tif (value)\n\t\t\t\t\tvalue = list.getItem(value);\n\t\t\t}\n\t\t\telse if (list.getSelectedDate && list.getSelectedDate())\n\t\t\t\tvalue = { value:list.getSelectedDate() };\n\t\t\telse if (list.getValue && list.getValue())\n\t\t\t\tvalue = { value:list.getValue() };\n\t\t\t\n\t\t\tif (value)\n\t\t\t\tthis.setMasterValue(value);\n\t\t}\n\n\t\tif (visible)\n\t\t\tthis.hide();\n\t\telse if (this._show_on_key_press)\n\t\t\tthis.show(this._last_input_target);\n\t},\n\t_escape_key:function(){\n\t\treturn this.hide();\n\t},\n\t_tab_key:function(){\n\t\treturn this.hide();\n\t},\n\t/*! suggestions navigation: up/down buttons move selection\n\t *\t@param e\n\t *\t\tevent object\n\t **/\n\t_navigate: function(e) {\n\t\tvar list = this.getList();\n\t\tvar code = e.keyCode;\n\t\tvar data;\n\n\t\tif( list.moveSelection && code < 41 && code > 32 && !e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey) {\n\t\t\t// down and up arrows\n\t\t\tif (code === 40 || code === 38) {\n\t\t\t\tif (this._show_on_key_press && !this.isVisible())\n\t\t\t\t\tthis.show(this._last_input_target);\n\n\t\t\t\tlet dir = (code === 38) ? \"up\" : \"down\";\n\t\t\t\tlist.moveSelection(dir, false, false);\n\t\t\t}// other arrows\n\t\t\telse {\n\t\t\t\tif(list.count || (!list.count && !list.isVisible()))\n\t\t\t\t\treturn false;\n\n\t\t\t\tlet dir;\n\t\t\t\tif(code == 33) dir = \"pgup\";\n\t\t\t\tif(code == 34) dir = \"pgdown\";\n\t\t\t\tif(code == 35) dir = \"bottom\";\n\t\t\t\tif(code == 36) dir = \"top\";\n\t\t\t\tif(code == 37) dir = \"left\";\n\t\t\t\tif(code == 39) dir = \"right\";\n\n\t\t\t\tlist.moveSelection(dir, false, false);\n\t\t\t}\n\n\t\t\tif(list.count)\n\t\t\t\tdata = list.getSelectedItem();\n\t\t\telse if(list.getSelectedDate)\n\t\t\t\tdata = { value:list.getVisibleDate()};\n\t\t\telse if(list.getValue)\n\t\t\t\tdata = { value:list.getValue() };\n\n\t\t\tif (this.isVisible())\n\t\t\t\tthis._preselectMasterOption(data);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\tgetValue:function(){\n\t\tvar list = this.getList();\n\t\tvar value = (list.getValue ? list.getValue() : list.getSelectedId()) || \"\";\n\t\tvalue = value.id || value;\n\n\t\t// check empty\n\t\tif(list.getItem){\n\t\t\tvar item = list.getItem(value);\n\t\t\tif(item && item.$empty)\n\t\t\t\treturn \"\";\n\t\t}\n\t\treturn value;\n\t},\n\tsetValue:function(value){\n\t\tvar list = this.getList();\n\t\tif(value){\n\t\t\tif(list.exists(value)){\n\t\t\t\tlist.select(value);\n\t\t\t\tlist.showItem(value);\n\t\t\t}\n\t\t}else{\n\t\t\tlist.unselect();\n\t\t\tlist.showItem(list.getFirstId());\n\t\t}\n\t}\n};\n\n\nconst view = protoUI(api, popup.view);\nexport default {api, view};","import suggest from \"../views/suggest\";\nimport {protoUI, $$} from \"../ui/core\";\nimport {delay, _to_array, bind, isArray} from \"../webix/helpers\";\nimport i18n from \"../webix/i18n\";\nimport {callEvent} from \"../webix/customevents\";\n\nconst api = {\n\tname:\"multisuggest\",\n\tdefaults:{\n\t\tseparator:\",\",\n\t\ttype:\"layout\",\n\t\tbutton:true,\n\t\twidth:0,\n\t\tfilter:function(item,value){\n\t\t\tvar itemText = this.getItemText(item.id);\n\t\t\treturn (itemText.toString().toLowerCase().indexOf(value.toLowerCase())>-1);\n\t\t},\n\t\tbody:{\n\t\t\trows:[\n\t\t\t\t{ view:\"list\", type:\"multilist\", borderless:true, autoheight:true, yCount:5, multiselect:\"touch\", select:true,\n\t\t\t\t\ton:{\n\t\t\t\t\t\tonItemClick: function(id){\n\t\t\t\t\t\t\tvar popup = this.getParentView().getParentView();\n\t\t\t\t\t\t\tdelay(function(){\n\t\t\t\t\t\t\t\tpopup._toggleOption(id);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}},\n\t\t\t\t{ view:\"button\", click:function(){\n\t\t\t\t\tvar suggest = this.getParentView().getParentView();\n\t\t\t\t\tsuggest.hide();\n\t\t\t\t\tdelay(function(){\n\t\t\t\t\t\tcallEvent(\"onEditEnd\",[]);\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t]\n\t\t}\n\t},\n\n\t_toggleOption: function(id, ev, all){\n\t\tvar value = this.getValue();\n\t\tvar values = all || _to_array(value?this.getValue().split(this._settings.separator):[]);\n\t\tvar master = $$(this._settings.master);\n\t\t\n\t\tif(!all) {\n\t\t\tif(values.find(id)<0)\n\t\t\t\tvalues.push(id);\n\t\t\telse\n\t\t\t\tvalues.remove(id);\n\t\t}\n\n\t\tvar data = values.join(this._settings.separator);\n\t\tvar text = this.setValue(values).join(this._settings.separator);\n\t\tif(master)\n\t\t\tmaster.setValue(data);\n\t\telse if (this._last_input_target)\n\t\t\tthis._last_input_target.value = text;\n\n\t\tthis.callEvent(\"onValueSuggest\", [{id:data, text:text}]);\n\n\t\tif(ev){ //only for clicks in checksuggest\n\t\t\tvar checkbox = this.getList().getItemNode(id).getElementsByTagName(\"SPAN\");\n\t\t\tif(checkbox && checkbox.length) checkbox[0].focus();\n\t\t}\n\t},\n\t_get_extendable_cell:function(obj){\n\t\treturn obj.rows[0];\n\t},\n\t_set_on_popup_click:function(){\n\t\tvar button = this.getButton();\n\t\tvar text = (this._settings.button?(this._settings.buttonText || i18n.combo.select):0);\n\t\tif(button){\n\t\t\tif(text){\n\t\t\t\tbutton._settings.value = text;\n\t\t\t\tbutton.refresh();\n\t\t\t}\n\t\t\telse\n\t\t\t\tbutton.hide();\n\t\t}\n\t\tif (this._settings.selectAll)\n\t\t\treturn this.getBody().getChildViews()[0].show();\n\n\t\tvar list = this.getList();\n\t\t//for standalone suggests we need to have a normal show/hide logic\n\t\t//use a wrapper function, so it can later be cleared in multicombo\n\t\tlist.data.attachEvent(\"onAfterFilter\", bind(function(){\n\t\t\treturn this._suggest_after_filter();\n\t\t}, this));\n\t},\n\t_show_selection: function(){\n\t\tvar list = this.getList();\n\t\tvar value = this.getMasterValue();\n\t\tif(value){\n\t\t\tvalue = value.toString().split(this.config.separator);\n\t\t\tif (value[0]){\n\t\t\t\tfor (var i = 0; i < value.length; i++){\n\t\t\t\t\tif(list.exists(value[i]))\n\t\t\t\t\t\tlist.select(value[i], true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tgetButton:function(){\n\t\treturn this.getBody().getChildViews()[1];\n\t},\n\tgetList:function(){\n\t\treturn this.getBody().getChildViews()[0];\n\t},\n\tsetValue:function(value){\n\t\tvar text = [];\n\t\tvar list = this.getList();\n\t\tlist.unselect();\n\n\t\tif (value){\n\t\t\tif (!isArray(value))\n\t\t\t\tvalue = value.toString().split(this.config.separator);\n\n\t\t\tif (value[0]){\n\t\t\t\tfor (var i = 0; i < value.length; i++){\n\t\t\t\t\tif (list.getItem(value[i])){\n\t\t\t\t\t\tif(list.exists(value[i]))\n\t\t\t\t\t\t\tlist.select(value[i], true);\n\t\t\t\t\t\ttext.push(this.getItemText(value[i]));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._settings.value = value?value.join(this.config.separator):\"\";\n\t\treturn text;\n\t},\n\tgetValue:function(){\n\t\treturn this._settings.value;\n\t}\n};\n\n\nconst view = protoUI(api, suggest.view);\nexport default {api, view};","import multisuggest from \"../views/multisuggest\";\nimport {protoUI, $$} from \"../ui/core\";\nimport {isArray, copy, delay} from \"../webix/helpers\";\nimport i18n from \"../webix/i18n\";\nimport {callEvent} from \"../webix/customevents\";\n\nconst api = {\n\tname:\"checksuggest\",\n\tdefaults:{\n\t\tbutton:false,\n\t\tselectAll: false,\n\t\tbody:{\n\t\t\trows:[\n\t\t\t\t{ view:\"checkbox\", hidden:true, customCheckbox:false, borderless: false, css:\"webix_checksuggest_select_all\", \n\t\t\t\t\tlabelRight:i18n.combo.selectAll, \n\t\t\t\t\tlabelWidth:0,\n\t\t\t\t\theight:28, inputHeight:20,\n\t\t\t\t\ton:{\n\t\t\t\t\t\tonItemClick: function(e){\n\t\t\t\t\t\t\tvar popup = this.getParentView().getParentView();\n\t\t\t\t\t\t\tvar check = popup.getList();\n\t\t\t\t\t\t\tvar values = check.data.order;\n\t\t\t\t\t\t\tfor(var i = 0; i < values.length; i++) {\n\t\t\t\t\t\t\t\tvar value = check.getItem(values[i]);\n\t\t\t\t\t\t\t\tvalue.$checked = this.getValue();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar result = this.getValue() ? [].concat(values) : [];\n\t\t\t\t\t\t\tpopup._toggleOption(values[0], e, result);\n\t\t\t\t\t\t\tcheck.refresh();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonChange: function() {\n\t\t\t\t\t\t\tvar link = this.$view.querySelector(\"label\");\n\t\t\t\t\t\t\tvar locale = i18n.combo;\n\t\t\t\t\t\t\tlink.textContent = this.getValue() ? locale.unselectAll : locale.selectAll;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonAfterRender: function() {\n\t\t\t\t\t\t\tvar popup = this.getParentView().getParentView();\n\t\t\t\t\t\t\tthis.setValue(popup._is_all_selected()*1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}},\n\t\t\t\t{ view:\"list\", css:\"webix_multilist\", borderless:true, autoheight:true, yCount:5,\n\t\t\t\t\ttype:\"checklist\",\n\t\t\t\t\ton:{\n\t\t\t\t\t\tonItemClick: function(id, e){\n\t\t\t\t\t\t\tvar item = this.getItem(id);\n\t\t\t\t\t\t\titem.$checked = item.$checked?0:1;\n\t\t\t\t\t\t\tthis.refresh(id);\n\t\t\t\t\t\t\tvar popup = this.getParentView().getParentView();\n\t\t\t\t\t\t\tpopup._click_stamp = new Date();\n\n\t\t\t\t\t\t\tpopup._toggleOption(id, e);\n\n\t\t\t\t\t\t\tif(popup.config.selectAll) {\n\t\t\t\t\t\t\t\tif (!item.$checked)\n\t\t\t\t\t\t\t\t\tpopup.getBody()._cells[0].setValue(0);\n\t\t\t\t\t\t\t\telse if(popup._is_all_selected())\n\t\t\t\t\t\t\t\t\tpopup.getBody()._cells[0].setValue(1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ view:\"button\", click:function(){\n\t\t\t\t\tvar suggest = this.getParentView().getParentView();\n\t\t\t\t\tsuggest.hide();\n\t\t\t\t\tdelay(function(){\n\t\t\t\t\t\tcallEvent(\"onEditEnd\",[]);\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t]\n\t\t}\n\t},\n\t_is_all_selected:function(){\n\t\tvar all = (this.getValue() || \"\").split(this.config.separator);\n\t\treturn (all.length === this.getList().count());\n\t},\n\t_get_extendable_cell:function(obj){\n\t\treturn obj.rows[1];\n\t},\n\tgetButton:function(){\n\t\treturn this.getBody().getChildViews()[2];\n\t},\n\tgetList:function(){\n\t\treturn this.getBody().getChildViews()[1];\n\t},\n\t$init: function(){\n\t\tthis._valueHistory = {};\n\t\tthis.$ready.push(this._onReady);\n\t},\n\t_onReady: function(){\n\t\tvar list = this.getList();\n\t\tif(list.config.dataFeed){\n\t\t\tvar suggest = this;\n\t\t\tlist.attachEvent(\"onAfterLoad\", function(){\n\t\t\t\tsuggest.setValue(suggest._settings.value);\n\t\t\t});\n\t\t\tlist.getItem = function(id){\n\t\t\t\treturn this.data.pull[id] || suggest._valueHistory[id];\n\t\t\t};\n\t\t}\n\t\t\n\t\tif(this.config.master && !this.config.selectAll)\n\t\t\tthis.getBody().getChildViews()[0].hide();\n\t},\n\t$enterKey: function(popup,list) {\n\t\tif (list.count && list.count()){\n\t\t\tif (popup.isVisible()) {\n\t\t\t\tvar value = list.getSelectedId(false, true);\n\t\t\t\tif(value){\n\t\t\t\t\tthis._toggleOption(value);\n\t\t\t\t}\n\t\t\t\tpopup.hide();\n\t\t\t} else {\n\t\t\t\tpopup.show(this._last_input_target);\n\t\t\t}\n\t\t} else {\n\t\t\tif (popup.isVisible())\n\t\t\t\tpopup.hide();\n\t\t}\n\t},\n\t_show_selection: function(){\n\t\tvar list = this.getList();\n\t\tif( list.select)\n\t\t\tlist.unselect();\n\t},\n\tsetValue:function(value){\n\t\tvar i,\n\t\t\tlist = this.getList(),\n\t\t\ttext = [],\n\t\t\tvalues = {},\n\t\t\tchanged = [];\n\n\t\tvalue = value || [];\n\n\t\tif (!isArray(value))\n\t\t\tvalue = value.toString().split(this.config.separator);\n\t\telse if(list.config.dataFeed)\n\t\t\tvalue = this._toMultiValue(value);\n\n\t\tfor ( i = 0; i < value.length; i++){\n\t\t\tvalues[value[i]] = 1;\n\t\t\tif(list.getItem(value[i])){\n\t\t\t\tif( this._valueHistory)\n\t\t\t\t\tthis._valueHistory[value[i]] = copy(list.getItem(value[i]));\n\t\t\t\ttext.push(this.getItemText(value[i]));\n\t\t\t}\n\t\t}\n\n\t\tlist.data.each(function(item){\n\t\t\tif(item.$checked){\n\t\t\t\tif(!values[item.id]){\n\t\t\t\t\titem.$checked = 0;\n\t\t\t\t\tchanged.push(item.id);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse{\n\t\t\t\tif(values[item.id]){\n\t\t\t\t\titem.$checked = 1;\n\t\t\t\t\tchanged.push(item.id);\n\t\t\t\t}\n\t\t\t}\n\n\t\t},this,true);\n\n\n\t\tfor( i=0; i < changed.length; i++ ){\n\t\t\tlist.refresh(changed[i]);\n\t\t}\n\t\tthis._settings.value = value.length?value.join(this.config.separator):\"\";\n\t\treturn text;\n\t},\n\tgetValue:function(){\n\t\treturn this._settings.value;\n\t},\n\t_preselectMasterOption: function(){\n\t\tvar node, master;\n\t\tif (this._settings.master){\n\t\t\tmaster = $$(this._settings.master);\n\t\t\tnode = master.getInputNode();\n\t\t}\n\t\tnode = node || this._last_input_target;\n\t\tif(node)\n\t\t\tnode.focus();\n\t},\n\t_toMultiValue: function(value){\n\t\tif(value && isArray(value)){\n\t\t\tvar values = [];\n\t\t\tfor(var i =0; i < value.length; i++){\n\t\t\t\tif(value[i].id){\n\t\t\t\t\tthis._valueHistory[value[i].id] = copy(value[i]);\n\t\t\t\t\tvalues.push(value[i].id);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tvalues.push(value[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = values;\n\t\t}\n\t\treturn value;\n\t}\n};\n\n\nconst view = protoUI(api, multisuggest.view);\nexport default {api, view};","import suggest from \"../views/suggest\";\nimport {protoUI} from \"../ui/core\";\nimport {bind} from \"../webix/helpers\";\n\n\nconst api = {\n\tname:\"gridsuggest\",\n\tdefaults:{\n\t\ttype:\"datatable\",\n\t\tfitMaster:false,\n\t\twidth:0,\n\t\tbody:{\n\t\t\tnavigation:true,\n\t\t\tautoheight:true,\n\t\t\tautowidth:true,\n\t\t\tselect:true\n\t\t},\n\t\tfilter:function(item, value){\n\t\t\tvar text = this.config.template(item);\n\t\t\tif (text.toString().toLowerCase().indexOf(value.toLowerCase())===0) return true;\n\t\t\treturn false;\n\t\t}\n\t},\n\t$init:function(obj){\n\t\tif (!obj.body.columns)\n\t\t\tobj.body.autoConfig = true;\n\t\tif (!obj.template)\n\t\t\tobj.template = bind(this._getText, this);\n\t},\n\t_getText:function(item){\n\t\tvar grid = this.getBody();\n\t\tvar value = this.config.textValue || grid.config.columns[0].id;\n\t\treturn grid.getText(item.id, value);\n\t}\n};\n\n\nconst view = protoUI(api, suggest.view);\nexport default {api, view};","import suggest from \"../views/suggest\";\nimport {protoUI} from \"../ui/core\";\n\n\nconst api = {\n\tname:\"datasuggest\",\n\tdefaults:{\n\t\ttype:\"dataview\",\n\t\tfitMaster:false,\n\t\twidth:0,\n\t\tbody:{\n\t\t\txCount:3,\n\t\t\tautoheight:true,\n\t\t\tselect:true\n\t\t}\n\t}\n};\n\n\nconst view = protoUI(api, suggest.view);\nexport default {api, view};","import suggest from \"../views/suggest\";\nimport {getSelectionRange, setSelectionRange, preventEvent} from \"../webix/html\";\nimport {protoUI, $$} from \"../ui/core\";\n\n\nconst api = {\n\tname:\"mentionsuggest\",\n\tdefaults:{\n\t\tsymbol:\"@\",\n\t\tfilter:function(data, value){\n\t\t\tconst s = this._settings.symbol;\n\t\t\tvalue = value.substring(0, this._last_cursor_pos);\n\t\t\tif (value.indexOf(s) === -1) return false;\n\t\t\telse {\n\t\t\t\tvalue = value.substring(value.lastIndexOf(s)+s.length);\n\t\t\t\tif (value.length){\n\t\t\t\t\tconst text = data.id ? this.getItemText(data.id) : (data.text||data.value);\n\t\t\t\t\treturn text.toString().toLowerCase().indexOf(value.toLowerCase()) !== -1;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\t$init:function(){\n\t\tthis.attachEvent(\"onValueSuggest\", this._before_filtering);\n\t},\n\t$enterKey:function(e){\n\t\tif (this.isVisible()){\n\t\t\tpreventEvent(e);\n\n\t\t\tlet master;\n\t\t\tif (this._settings.master)\n\t\t\t\tmaster = $$(this._settings.master);\n\n\t\t\tif (master && master.callEvent)\n\t\t\t\tmaster.callEvent(\"onEnter\");\n\t\t}\n\n\t\treturn suggest.api.$enterKey.apply(this, arguments);\n\t},\n\t_before_filtering:function(){\n\t\tif (this._last_input_target)\n\t\t\tthis._last_cursor_pos = getSelectionRange(this._last_input_target).start;\n\t},\n\t_get_details:function(){\n\t\treturn { pos:this._last_cursor_pos, symbol:this._settings.symbol };\n\t},\n\t_preselectMasterOption:function(){},\n\t_set_input_value:function(text){\n\t\tconst s = this._settings.symbol;\n\t\tlet value = this._last_input_target.value;\n\t\tlet last = value.substring(this._last_cursor_pos);\n\n\t\tvalue = value.substring(0, this._last_cursor_pos);\n\t\tvalue = value.substring(0, value.lastIndexOf(s)+s.length) + text;\n\n\t\tthis._last_input_target.value = value + last;\n\t\tsetSelectionRange(this._last_input_target, value.length);\n\t},\n\t_show_on_key_press:false\n};\n\n\nconst view = protoUI(api, suggest.view);\nexport default {api, view};","import suggest from \"../views/suggest\";\nimport {protoUI, $$} from \"../ui/core\";\nimport {copy, bind} from \"../webix/helpers\";\n\n\nconst api = {\n\tname:\"daterangesuggest\",\n\tdefaults:{\n\t\ttype:\"daterange\",\n\t\tbody: {\n\t\t\tview:\"daterange\", icons:true, button:true, borderless:true\n\t\t}\n\t},\n\tgetValue:function(){\n\t\treturn this.getRange().getValue();\n\t},\n\tsetValue:function(value){\n\t\tthis.getRange().setValue(copy(value));\n\t},\n\tgetRange:function(){\n\t\treturn this.getBody();\n\t},\n\tgetButton:function(){\n\t\treturn this.getBody().getChildViews()[1].getChildViews()[1];\n\t},\n\t_setValue:function(value, hide){\n\t\tvar master = $$(this._settings.master);\n\n\t\tif(master){\n\t\t\tmaster.setValue(value);\n\t\t\tif(hide) this.hide();\n\t\t}\n\t\telse\n\t\t\tthis.setValue(value);\n\t},\n\t_set_on_popup_click:function(){\n\t\tvar range = this.getRange();\n\t\trange.attachEvent(\"onAfterDateSelect\", bind(function(value) {this._setValue(value);}, this));\n\t\trange.attachEvent(\"onDateClear\", bind(function(value) {this._setValue(value);}, this));\n\t\trange.attachEvent(\"onTodaySet\", bind(function(value) {this._setValue(value);}, this));\n\t}\n};\n\n\nconst view = protoUI(api, suggest.view);\nexport default {api, view};","import datepicker from \"../views/datepicker\";\nimport {protoUI, $$} from \"../ui/core\";\nimport {copy} from \"../webix/helpers\";\nimport i18n from \"../webix/i18n\";\n\n\nconst api = {\n\t$cssName:\"datepicker\",\n\tname:\"daterangepicker\",\n\t$init:function(config){\n\t\t//set non-empty initial value\n\t\tthis._settings.value = {};\n\t\t// other types are not implemented\n\t\tdelete config.type;\n\t\t// only start/end values can be selected\n\t\tdelete config.multiselect;\n\t},\n\tdefaults:{\n\t\tseparator:\" - \"\n\t},\n\t_init_popup:function(){\n\t\tvar obj = this._settings;\n\t\tif (obj.suggest)\n\t\t\tobj.popup = obj.suggest;\n\t\telse if (!obj.popup){\n\t\t\tobj.popup = obj.suggest = this.suggest_setter({\n\t\t\t\tview:\"daterangesuggest\", body:{\n\t\t\t\t\ttimepicker:obj.timepicker, calendarCount:obj.calendarCount, height:250+(obj.button || obj.icons?30:0)\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tthis._init_once = function(){};\n\t},\n\t$prepareValue:function(value){\n\t\tvalue = value || {};\n\t\tvalue.start = datepicker.api.$prepareValue.call(this, value.start?value.start:null);\n\t\tvalue.end = datepicker.api.$prepareValue.call(this, value.end?value.end:null);\n\n\t\tvar daterange = $$(this._settings.popup).getRange();\n\t\treturn copy(daterange._correct_value(value));\n\t},\n\t$compareValue:function(oldvalue, value){\n\t\tvar compare = datepicker.api.$compareValue;\n\t\tvar start = compare.call(this, oldvalue.start, value.start);\n\t\tvar end = compare.call(this, oldvalue.end, value.end);\n\n\t\treturn (start && end);\n\t},\n\t$setValue:function(value){\n\t\tvalue = value || {};\n\n\t\tthis._settings.text = (value.start?this._get_visible_text(value.start):\"\")+(value.end?(this._settings.separator + this._get_visible_text(value.end)):\"\");\n\t\tthis._set_visible_text();\n\t},\n\t$render:function(obj){\n\t\tobj.value = this.$prepareValue(obj.value);\n\t\tthis.$setValue(obj.value);\n\t},\n\tgetValue:function(){\n\t\tvar value = this._settings.value;\n\n\t\tif (!this._rendered_input)\n\t\t\tvalue = this.$prepareValue(value) || null;\n\t\telse if (this._settings.editable){\n\t\t\tvar formatDate = this._formatDate||i18n.dateFormatDate;\n\t\t\tlet iValue = (this.getInputNode().value||\"\").split(this._settings.separator);\n\t\t\tvalue = this._formatValue(formatDate, {start:iValue[0], end:iValue[1]});\n\t\t}\n\n\t\tif (this._settings.stringResult){\n\t\t\tvar formatStr = i18n.parseFormatStr;\n\t\t\treturn this._formatValue(formatStr, value);\n\t\t}\n\t\t\n\t\treturn value||null;\n\t},\n\t_formatValue:function(format, value){\n\t\tif(value.start) value.start = format(value.start);\n\t\tif(value.end) value.end = format(value.end);\n\t\treturn value;\n\t}\n};\n\n\nconst view = protoUI(api, datepicker.view);\nexport default {api, view};","import EventSystem from \"../core/eventsystem\";\nimport Settings from \"../core/settings\";\nimport {addCss, preventEvent} from \"../webix/html\";\nimport {protoUI} from \"../ui/core\";\nimport env from \"../webix/env\";\nimport Touch from \"../core/touch\";\nimport {toNode, isUndefined} from \"../webix/helpers\";\nimport {_event, event} from \"../webix/htmlevents\";\n\n\nconst api = {\n\tname:\"vscroll\",\n\t$apiOnly:true,\n\tdefaults:{\n\t\tscroll:\"x\",\n\t\tscrollStep:40,\n\t\tscrollPos:0,\n\t\tscrollSize:18,\n\t\tscrollVisible:1,\n\t\tzoom:1\n\t},\n\t$init:function(config){\n\t\tvar dir = config.scroll||\"x\";\n\t\tvar node = this._viewobj = toNode(config.container);\n\t\tnode.className += \" webix_vscroll_\"+dir;\n\t\tnode.innerHTML=\"
    \";\n\t\t_event(node,\"scroll\", this._onscroll,{bind:this});\n\n\t\tthis._last_set_size = 0;\n\t},\n\treset:function(){\n\t\tthis.config.scrollPos = 0;\n\t\tthis._viewobj[this.config.scroll == \"x\"?\"scrollLeft\":\"scrollTop\"] = 0;\n\t},\n\t_check_quantum:function(value){\n\t\tif (value>1500000){\n\t\t\tthis._settings.zoom = value/1000000;\n\t\t\tvalue = 1000000;\n\t\t} else {\n\t\t\tthis._settings.zoom = 1;\n\t\t}\n\t\treturn value;\n\t},\t\n\tscrollWidth_setter:function(value){\n\t\tvalue = this._check_quantum(value);\n\t\tthis._viewobj.firstChild.style.width = value+\"px\";\n\t\treturn value;\t\t\n\t},\n\tscrollHeight_setter:function(value){\n\t\tvalue = this._check_quantum(value);\n\t\tthis._viewobj.firstChild.style.height = value+\"px\";\n\t\treturn value;\n\t},\n\tsizeTo:function(value, top, bottom){\n\t\tvalue = value-(top||0)-(bottom||0);\n\n\t\tvar width = this._settings.scrollSize;\n\t\t//IEFix\n\t\t//IE doesn't react on scroll-click if it has not at least 1 px of visible content\n\t\tif (env.isIE && width)\n\t\t\twidth += 1;\n\t\tif (!width && this._settings.scrollVisible && !env.$customScroll){\n\t\t\tthis._viewobj.style.pointerEvents=\"none\";\n\t\t\twidth = 14;\n\t\t}\n\n\t\tif (!width){\n\t\t\tthis._viewobj.style.display = \"none\";\n\t\t} else {\n\t\t\tthis._viewobj.style.display = \"block\";\n\t\t\tif (top)\n\t\t\t\tthis._viewobj.style.marginTop = top+ \"px\";\n\t\t\tthis._viewobj.style[this._settings.scroll == \"x\"?\"width\":\"height\"] = Math.max(0,value)+\"px\";\n\t\t\tthis._viewobj.style[this._settings.scroll == \"x\"?\"height\":\"width\"] = width+\"px\";\n\t\t}\n\n\t\tthis._last_set_size = value;\n\t},\n\tgetScroll:function(){\n\t\treturn Math.round(this._settings.scrollPos*this._settings.zoom);\n\t},\n\tgetSize:function(){\n\t\treturn Math.round((this._settings.scrollWidth||this._settings.scrollHeight)*this._settings.zoom);\n\t},\n\tscrollTo:function(value){\n\t\tif (value<0)\n\t\t\tvalue = 0;\n\t\tvar config = this._settings;\n\n\t\tvalue = value / config.zoom;\n\t\t//safety check for negative values\n\t\tif (value < 0) value = 0;\n\n\t\t//apply new position\n\t\tif (value != this._settings.scrollPos){\n\t\t\tthis._viewobj[config.scroll == \"x\"?\"scrollLeft\":\"scrollTop\"] = value;\n\t\t\tthis._onscroll_inner(value, true);\n\t\t\treturn true;\n\t\t}\n\t},\n\t_onscroll:function(){\t\n\t\tvar x = this._viewobj[this._settings.scroll == \"x\"?\"scrollLeft\":\"scrollTop\"];\n\t\tif (Math.floor(x) != Math.floor(this._settings.scrollPos))\n\t\t\tthis._onscroll_inner(x, false);\n\t},\n\t_onscroll_inner:function(value, api){\n\t\t//size of scroll area\n\t\tvar height = (this._settings.scrollWidth||this._settings.scrollHeight);\n\t\t//if we scrolled to the end of the area\n\t\tif (value >= height - this._last_set_size/(api?this._settings.zoom:1)) {\n\t\t\t//set value so the last row is visible\n\t\t\tvalue = Math.max(0, height - this._last_set_size/this._settings.zoom);\n\t\t}\n\t\t\n\t\tthis._settings.scrollPos = value || 0;\n\t\tthis.callEvent(\"onScroll\",[this.getScroll()]);\n\t},\n\tactiveArea:function(area, x_mode){\n\t\tthis._x_scroll_mode = x_mode;\n\t\t_event(area,(env.isIE8 ? \"mousewheel\" : \"wheel\"),this._on_wheel,{bind:this, passive:false});\n\t\tthis._add_touch_events(area);\n\t},\n\n\t_add_touch_events: function(area){\n\t\tif(!env.touch && window.navigator.pointerEnabled){\n\t\t\taddCss(area,\"webix_scroll_touch_ie\",true);\n\t\t\t_event(area, \"pointerdown\", function(e){\n\t\t\t\tif(e.pointerType == \"touch\" || e.pointerType == \"pen\"){\n\t\t\t\t\tthis._start_context = Touch._get_context_m(e);\n\t\t\t\t\tthis._start_scroll_pos = this.getScroll();\n\t\t\t\t}\n\t\t\t},{bind:this});\n\n\t\t\tevent(document.body, \"pointermove\", function(e){\n\t\t\t\tvar scroll;\n\t\t\t\tif(this._start_context){\n\t\t\t\t\tthis._current_context = Touch._get_context_m(e);\n\t\t\t\t\tif(this._settings.scroll == \"x\" ){\n\t\t\t\t\t\tscroll = this._current_context.x - this._start_context.x;\n\t\t\t\t\t}\n\t\t\t\t\telse if(this._settings.scroll == \"y\"){\n\t\t\t\t\t\tscroll = this._current_context.y - this._start_context.y;\n\t\t\t\t\t}\n\t\t\t\t\tif(scroll && Math.abs(scroll) > 5){\n\t\t\t\t\t\tthis.scrollTo(this._start_scroll_pos - scroll);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},{bind:this});\n\t\t\tevent(window, \"pointerup\", function(){\n\t\t\t\tif(this._start_context){\n\t\t\t\t\tthis._start_context = this._current_context = null;\n\t\t\t\t}\n\t\t\t},{bind:this});\n\t\t}\n\n\t},\n\t_on_wheel:function(e){\n\t\tvar dir = 0;\n\t\tvar step = e.deltaMode === 0 ? 30 : 1;\n\n\t\tif (env.isIE8)\n\t\t\tdir = e.detail = -e.wheelDelta / 30;\n\n\t\tif (e.deltaX && Math.abs(e.deltaX) > Math.abs(e.deltaY)){\n\t\t\t//x-scroll\n\t\t\tif (this._x_scroll_mode && this._settings.scrollVisible)\n\t\t\t\tdir = e.deltaX / step;\n\t\t} else {\n\t\t\t//y-scroll\n\t\t\tif (!this._x_scroll_mode && this._settings.scrollVisible){\n\t\t\t\tif (isUndefined(e.deltaY))\n\t\t\t\t\tdir = e.detail;\n\t\t\t\telse\n\t\t\t\t\tdir = e.deltaY / step;\n\t\t\t}\n\t\t}\n\n\t\t// Safari requires target preserving\n\t\t// (used in _check_rendered_cols of DataTable)\n\t\tif(env.isSafari)\n\t\t\tthis._scroll_trg = e.target|| e.srcElement;\n\n\t\tif (dir)\n\t\t\tif (this.scrollTo(this.getScroll() + dir*this._settings.scrollStep))\n\t\t\t\treturn preventEvent(e);\n\n\t}\n};\n\n\nconst view = protoUI(api, EventSystem, Settings);\nexport default {api, view};","import toolbar from \"../views/toolbar\";\nimport {protoUI} from \"../ui/core\";\n\n\nconst api = {\n\tname: \"excelbar\",\n\tdefaults:{\n\t\tpadding:0,\n\t\ttype:\"line\"\n\t},\n\t$init:function(config){\n\t\tconfig.cols = [\n\t\t\t{ view:\"tabbar\", options:[\"\"], optionWidth:200, borderless:true, on:{\n\t\t\t\tonaftertabclick:function(){\n\t\t\t\t\tthis.getParentView().callEvent(\"onExcelSheetSelect\", [this.getValue()]);\n\t\t\t\t}\n\t\t\t}}\n\t\t];\n\t},\n\tgetValue:function(){\n\t\treturn this.getInput().getValue();\n\t},\n\tsetValue:function(value){\n\t\treturn this.getInput().setValue(value);\n\t},\n\tgetInput:function(){\n\t\treturn this.getChildViews()[0];\n\t},\n\tsetSheets:function(sheets){\n\t\tvar input = this.getInput();\n\t\tinput.config.options = sheets;\n\t\tinput.refresh();\n\t}\n};\n\n\nconst view = protoUI(api, toolbar.view);\nexport default {api, view};","import {create, _getClassName, offset, preventEvent} from \"../../webix/html\";\nimport {copy, extend, uid} from \"../../webix/helpers\";\nimport {_event} from \"../../webix/htmlevents\";\n\n\nconst Mixin = {\n\t_init_areaselect: function(){\n\t\tthis._arSelCheckKeys = true;\n\t\tthis._areaSelStorage = {};\n\t\tthis.define(\"select\",\"area\");\n\t\tthis.attachEvent(\"onAfterScroll\", function(){\n\t\t\tthis.refreshSelectArea();\n\t\t});\n\t\tthis.attachEvent(\"onAfterRender\", function(){\n\t\t\tthis.refreshSelectArea();\n\t\t\tthis._setTabindex();\n\t\t});\n\t\tthis.attachEvent(\"onColumnResize\", function(){\n\t\t\tthis.refreshSelectArea();\n\t\t});\n\t\tthis.attachEvent(\"onBeforeColumnHide\", function(column){\n\t\t\tthis._areaSelHiddenIndex = this.getColumnIndex(column);\n\t\t});\n\t\tthis.attachEvent(\"onAfterColumnHide\", function(){\n\t\t\tthis._excludeColumnFromAreas(this._areaSelHiddenIndex);\n\t\t});\n\n\t\tthis._bs_do_select = function(start, end, stopped, ev){\n\t\t\tif(start.row && end.row){\n\t\t\t\tif(stopped){\n\t\t\t\t\tthis.addSelectArea(start, end, true);\n\t\t\t\t\tthis._arSelCheckKeys = true;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tif(this.callEvent(\"onAreaDrag\",[start, end, ev])){\n\t\t\t\t\t\tif(!this._activeAreaSName && this._arSelCheckKeys && !(this._settings.multiselect && ev && ev.ctrlKey) ){\n\t\t\t\t\t\t\tthis.removeSelectArea();\n\t\t\t\t\t\t\tthis._arSelCheckKeys = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tthis.attachEvent(\"onBeforeAreaAdd\", this._span_correct_range);\n\t\t_event(this._body, \"mousedown\", this._ars_down, {bind:this});\n\t},\n\t_block_sel_flag: true,\n\t_excludeColumnFromAreas: function(index){\n\t\tvar areas = this._areaSelStorage;\n\t\tfor(var a in areas){\n\t\t\tvar area = areas[a];\n\t\t\tif(this.getColumnIndex(area.start.column) <0 ){\n\t\t\t\tif(area.start.column == area.end.column)\n\t\t\t\t\tthis.removeSelectArea(area.name);\n\t\t\t\telse{\n\t\t\t\t\tlet id = this.columnId(index);\n\t\t\t\t\tif(id)\n\t\t\t\t\t\tthis._updateSelectArea(area.name,{row: area.start.row,column: id},null);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if(this.getColumnIndex(area.end.column) <0 ){\n\t\t\t\tlet id = this.columnId(index-1);\n\t\t\t\tif(id)\n\t\t\t\t\tthis._updateSelectArea(area.name,null,{row: area.end.row,column: id});\n\t\t\t}\n\t\t}\n\t},\n\t_extendAreaRange: function(id, area, mode, details){\n\t\tvar sci, eci, sri, eri, ci, ri, iri, ici;\n\t\t\n\t\tif (area){\n\t\t\tsci = this.getColumnIndex(area.start.column);\n\t\t\teci = this.getColumnIndex(area.end.column);\n\t\t\tsri = this.getIndexById(area.start.row);\n\t\t\teri = this.getIndexById(area.end.row);\n\t\t\tci = this.getColumnIndex(id.column);\n\t\t\tri = this.getIndexById(id.row);\n\t\t\t//start cell of area\n\t\t\tiri = this.getIndexById(area.init.row);\n\t\t\tici = this.getColumnIndex(area.init.column);\n\n\t\t\tif(sci > ci || mode == \"left\"){\n\t\t\t\tif(mode === \"left\" && details.ctrl) {\n\t\t\t\t\tsci = this._extendAreaToData(iri, sci, mode);\n\t\t\t\t\teci = ici;\n\t\t\t\t}\t\n\t\t\t\telse if(mode === \"left\" && eci > ici) eci--;\n\t\t\t\telse sci = ci;\n\t\t\t}\n\t\t\telse if(eci <= ci || mode == \"right\"){\n\t\t\t\tif(mode == \"right\" && details.ctrl){\n\t\t\t\t\teci = this._extendAreaToData(iri, eci, mode);\n\t\t\t\t\tsci = ici;\n\t\t\t\t}\n\t\t\t\telse if(mode == \"right\" && sci ri || mode ==\"up\"){\n\t\t\t\tif(mode ==\"up\" && details.ctrl) {\n\t\t\t\t\tsri = this._extendAreaToData(sri, ici, mode);\n\t\t\t\t\teri = iri;\n\t\t\t\t}\n\t\t\t\telse if(mode ==\"up\" && eri > iri ) eri--;\n\t\t\t\telse sri = ri;\n\t\t\t}\n\t\t\telse if(eri < ri || mode ==\"down\"){\n\t\t\t\tif(mode == \"down\" && details.ctrl) {\n\t\t\t\t\teri = this._extendAreaToData(eri, ici, mode);\n\t\t\t\t\tsri = iri;\n\t\t\t\t}\n\t\t\t\telse if(mode == \"down\" && sri =0; i--){ //check ss\n\t\t\t\tif(item[columns[i].id]){ res = i; break;}\n\t\t\t}\n\t\t}\n\t\t//iterate data\t\n\t\telse if (mode == \"down\"){\n\t\t\tfor(let i = rind+1; i=0; i--){\n\t\t\t\tif(this.getItem(order[i])[column]){ res = i;break;}\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t},\n\t_updateSelectArea: function(name, start, end, bsUpdate){\n\t\tvar area = this._areaSelStorage[name];\n\t\tif(!area)\n\t\t\treturn false;\n\t\tvar old = copy(area);\n\t\tvar range = { start: start||area.start, end: end||area.end};\n\t\tthis._span_correct_range(range);\n\t\textend(area, range, true);\n\n\t\tthis.refreshSelectArea();\n\t\tthis._setTabindex(old);\n\t\tif(bsUpdate)\n\t\t\tthis.callEvent(\"onSelectChange\", []);\n\t},\n\tareaselect_setter:function(value){\n\t\tif(value){\n\t\t\tthis._init_areaselect();\n\t\t\tthis._init_areaselect = function(){};\n\t\t}\n\t\tthis.define(\"blockselect\",value);\n\t\treturn value;\n\t},\n\taddSelectArea: function(start, end, preserve, name, css, handle){\n\t\tvar i0, i1, j0, j1, temp;\n\t\ti0 = this.getIndexById(start.row);\n\t\ti1 = this.getIndexById(end.row);\n\n\t\tj0 = this.getColumnIndex(start.column);\n\t\tj1 = this.getColumnIndex(end.column);\n\n\n\t\tif (i0>i1){\n\t\t\ttemp = i0;\n\t\t\ti0 = i1;\n\t\t\ti1 = temp;\n\t\t}\n\n\t\tif (j0>j1){\n\t\t\ttemp = j0;\n\t\t\tj0 = j1;\n\t\t\tj1 = temp;\n\t\t}\n\n\t\tname = name || this._activeAreaSName || uid();\n\n\t\tthis._activeAreaSName= null;\n\n\t\tvar area = {\n\t\t\tstart: { row: this.getIdByIndex(i0), column: this.columnId(j0)},\n\t\t\tend:{ row: this.getIdByIndex(i1), column: this.columnId(j1)}\n\t\t};\n\n\t\tif(css)\n\t\t\tarea.css = css;\n\t\tif(handle || handle === false)\n\t\t\tarea.handle = handle;\n\n\t\tif(this._areaSelStorage[name]){\n\t\t\treturn this._updateSelectArea(name,area.start,area.end, true);\n\t\t}\n\t\telse{\n\t\t\tarea.handle = true;\n\t\t}\n\n\t\tarea.name = name;\n\n\t\tarea.init = area.start;\n\n\t\tif(this.callEvent(\"onBeforeAreaAdd\",[area])){\n\t\t\tthis._lastDefArea = name;\n\t\t\tif(!preserve)\n\t\t\t\tthis.removeSelectArea();\n\t\t\tthis._areaSelStorage[area.name] = area;\n\t\t\tthis._selected_areas.push(area);\n\t\t\tthis.refreshSelectArea();\n\t\t\tthis._setTabindex();\n\n\t\t\tthis.callEvent(\"onAfterAreaAdd\",[area]);\n\t\t\tthis.callEvent(\"onSelectChange\",[]);\n\t\t}\n\t},\n\t_renderSelectAreaBox: function(){\n\t\tvar box = create(\"DIV\");\n\t\tbox.className = \"webix_area_selection_layer\";\n\t\tbox.style.top = this._render_scroll_shift+\"px\";\n\t\treturn box;\n\t},\n\trefreshSelectArea: function(){\n\t\tvar xr, yr, name, range,\n\t\t\tr0, r1,\n\t\t\tcenter = null, left=null, right = null,\n\t\t\tprerender = this._settings.prerender;\n\n\t\tif(!this._render_full_rows)\n\t\t\treturn;\n\t\t// indexes of visible cols\n\t\txr = this._get_x_range(prerender);\n\t\t// indexes of visible rows\n\t\tyr = this._get_y_range(prerender === true);\n\n\t\tif (!this._rselect_box){\n\t\t\tthis._rselect_box = this._renderSelectAreaBox();\n\t\t\tthis._body.childNodes[1].appendChild(this._rselect_box);\n\t\t\tthis._rselect_box_left = this._renderSelectAreaBox();\n\t\t\tthis._body.childNodes[0].appendChild(this._rselect_box_left);\n\t\t\tthis._rselect_box_right = this._renderSelectAreaBox();\n\t\t\tthis._body.childNodes[2].appendChild(this._rselect_box_right);\n\t\t}\n\n\t\tthis._rselect_box.innerHTML = \"\";\n\t\tthis._rselect_box_left.innerHTML = \"\";\n\t\tthis._rselect_box_right.innerHTML = \"\";\n\n\t\tvar leftSplit = this._settings.leftSplit;\n\t\tvar rightSplit = this._settings.rightSplit;\n\n\t\tfor(name in this._areaSelStorage){\n\t\t\trange = this._areaSelStorage[name];\n\t\t\tvar ind = this._calcAreaSelectIndexes(range,xr,yr);\n\t\t\tif (ind === null){\n\t\t\t\tthis.removeSelectArea(name);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar startIndex = this.getColumnIndex(range.start.column);\n\t\t\tvar endIndex = this.getColumnIndex(range.end.column);\n\t\t\tif(ind.r0 <= ind.r1){\n\t\t\t\tif(this._settings.topSplit && r0>=this._settings.topSplit && r1< this._render_scroll_top)\n\t\t\t\t\treturn false;\n\t\t\t\tif(startIndex < leftSplit)\n\t\t\t\t\tleft = this._getSelectAreaCellPositions(ind.r0, startIndex, ind.r1, Math.min(endIndex,leftSplit-1));\n\t\t\t\tif(ind.c0<=ind.c1)\n\t\t\t\t\tcenter = this._getSelectAreaCellPositions(ind.r0, ind.c0, ind.r1, ind.c1);\n\t\t\t\tif(rightSplit && endIndex >= this._rightSplit)\n\t\t\t\t\tright = this._getSelectAreaCellPositions(ind.r0, Math.max(startIndex,this._rightSplit), ind.r1, endIndex);\n\n\t\t\t\tif(left || center || right)\n\t\t\t\t\tthis._setSelectAreaBorders(left,center,right, name, range.css, range.handle);\n\t\t\t}\n\t\t}\n\t},\n\t_calcAreaSelectIndexes: function(range, xr, yr){\n\t\tvar r0, r1, c0, c1;\n\n\t\tvar startIndex = this.getIndexById(range.start.row);\n\t\tvar endIndex = this.getIndexById(range.end.row);\n\n\t\tvar startColumn = this.getColumnIndex(range.start.column);\n\t\tvar endColumn = this.getColumnIndex(range.end.column);\n\n\t\t//return null for broken select areas\n\t\tif (startColumn === -1 || endColumn === -1)\n\t\t\treturn null;\n\t\tif (startIndex === -1 || endIndex === -1)\n\t\t\treturn null;\n\n\t\tr1 = Math.min(yr[1],endIndex);\n\t\tif(this._settings.topSplit){\n\t\t\tr0 = startIndex;\n\t\t\tif(r0 >= this._settings.topSplit)\n\t\t\t\tr0 = Math.max(yr[0]-this._settings.topSplit,startIndex);\n\t\t\tif(r1 >= this._settings.topSplit){\n\t\t\t\tvar endPos = this._cellPosition(this.getIdByIndex(endIndex),range.end.column);\n\t\t\t\tvar splitPos = this._cellPosition(this.getIdByIndex(this._settings.topSplit-1),range.end.column);\n\t\t\t\tif(splitPos.top+splitPos.height > (endPos.top+endPos.height))\n\t\t\t\t\tr1 = this._settings.topSplit-1;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t\tr0 = Math.max(yr[0],this.getIndexById(range.start.row));\n\n\t\tc0 = Math.max(xr[0],startColumn);\n\t\tc1 = Math.min(this._rightSplit?xr[1]-1:xr[1],endColumn);\n\n\t\treturn {r0: r0, r1: r1, c0: c0, c1: c1};\n\t},\n\t_getSelectAreaCellPositions: function(i0, j0, i1, j1){\n\t\tvar start = this._cellPosition(this.getIdByIndex(i0),this.columnId(j0));\n\t\tvar end = this._cellPosition(this.getIdByIndex(i1),this.columnId(j1));\n\t\treturn [start, end];\n\t},\n\t_setSelectAreaBorders: function(left, center, right, name, css, handle){\n\n\t\tvar handleBox, handlePos,\n\t\t\tarea = this._areaSelStorage[name],\n\t\t\toffset = 0;\n\n\t\tif(this._settings.topSplit)\n\t\t\toffset = this._getTopSplitOffset(area.start, true);\n\n\t\t//include split in calcs\n\t\tvar renderArea = function(parentNode, start, end, skipLeft, skipRight){\n\t\t\tvar bName, height, width, top, left, hor,\n\t\t\t\tborders = {\"top\": 1, \"right\":1, \"bottom\": 1, \"left\": 1};\n\t\t\tif(skipLeft)\n\t\t\t\tdelete borders.left;\n\t\t\tif(skipRight)\n\t\t\t\tdelete borders.right;\n\t\t\theight = end.top - start.top + end.height-1;\n\t\t\twidth = end.left - start.left + end.width;\n\n\t\t\tfor(bName in borders){\n\t\t\t\ttop = start.top + offset;\n\n\t\t\t\tif(bName == \"bottom\")\n\t\t\t\t\ttop = end.top + end.height;\n\n\t\t\t\tleft = start.left;\n\t\t\t\tif(bName == \"right\"){\n\t\t\t\t\tleft = end.left+end.width;\n\t\t\t\t}\n\n\t\t\t\thor = (bName==\"top\"||bName ==\"bottom\");\n\n\t\t\t\tparentNode.appendChild(create(\"DIV\", {\n\t\t\t\t\t\"class\":\"webix_area_selection webix_area_selection_\"+bName+(css?\" \"+css:\"\") ,\n\t\t\t\t\t\"style\": \"left:\"+left+\"px;top:\"+top+\"px;\"+(hor?(\"width:\"+width+\"px;\"):(\"height:\"+(height-offset)+\"px;\")),\n\t\t\t\t\t/*@attr*/\"webix_area_name\": name\n\t\t\t\t}, \"\"));\n\t\t\t\tvar elem = parentNode.lastChild;\n\t\t\t\tif(bName == \"right\")\n\t\t\t\t\telem.style.left = left-elem.offsetWidth+\"px\";\n\t\t\t\tif(bName == \"bottom\")\n\t\t\t\t\telem.style.top = top-elem.offsetHeight+\"px\";\n\n\t\t\t\tif(offset){ //correct top split\n\t\t\t\t\tif(bName == \"top\")\n\t\t\t\t\t\telem.style.display = \"none\";\n\t\t\t\t\tif(end.height == offset && bName == \"bottom\")\n\t\t\t\t\t\telem.style.display = \"none\";\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif(right)\n\t\t\trenderArea(this._rselect_box_right, right[0], right[1],!!center,false);\n\t\tif(center)\n\t\t\trenderArea(this._rselect_box, center[0], center[1],!!left,!!right);\n\t\tif(left)\n\t\t\trenderArea(this._rselect_box_left, left[0], left[1],false,!!center);\n\t\t\n\t\tif(handle){\n\t\t\thandlePos = right?right[1]:(center?center[1]:left[1]);\n\t\t\thandleBox = right?this._rselect_box_right:(center?this._rselect_box:this._rselect_box_left);\n\t\t\thandleBox.appendChild(create(\"DIV\", {\n\t\t\t\t\"class\":\"webix_area_selection_handle\"+(css?\" \"+css:\"\") ,\n\t\t\t\t\"style\": \"left:\"+(handlePos.left+handlePos.width)+\"px;top:\"+(handlePos.top +handlePos.height)+\"px;\",\n\t\t\t\t/*@attr*/\"webix_area_name\": name\n\t\t\t}, \"\"));\n\n\t\t\t//correct top split\n\t\t\tif(offset && handlePos.height == offset)\n\t\t\t\thandleBox.lastChild.style.display = \"none\";\n\t\t}\n\n\t},\n\t_removeAreaNodes: function(name){\n\t\tif(name){\n\t\t\tvar removeNodes = function(parentNode){\n\t\t\t\tvar nodes = parentNode.childNodes;\n\t\t\t\tfor(var i = nodes.length-1; i>=0; i--){\n\t\t\t\t\tif(nodes[i].getAttribute(/*@attr*/\"webix_area_name\") == name){\n\t\t\t\t\t\tparentNode.removeChild(nodes[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\tremoveNodes(this._rselect_box);\n\t\t\tremoveNodes(this._rselect_box_left);\n\t\t\tremoveNodes(this._rselect_box_right);\n\t\t}\n\t},\n\tremoveSelectArea: function(name){\n\t\tif(name && this._areaSelStorage[name]){\n\t\t\tif(this.callEvent(\"onBeforeAreaRemove\", [name])){\n\t\t\t\tthis._setTabindex(copy(this._areaSelStorage[name]), true);\n\t\t\t\tdelete this._areaSelStorage[name];\n\t\t\t\tthis._removeAreaNodes(name);\n\t\t\t\t//reconstruct selected areas\n\t\t\t\tthis._selected_areas = [];\n\t\t\t\tfor (var key in this._areaSelStorage)\n\t\t\t\t\tthis._selected_areas.push(this._areaSelStorage[key]);\n\n\t\t\t\tthis.callEvent(\"onAfterAreaRemove\", [name]);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor(var n in this._areaSelStorage)\n\t\t\t\tthis.removeSelectArea(n);\n\t\t}\n\t},\n\t_ars_down: function(e){\n\t\tvar src = e.target||e.srcElement;\n\t\tvar css = _getClassName(src);\n\t\tif(css && css.indexOf(\"webix_area_selection_handle\")!=-1){\n\t\t\tvar name = src.getAttribute(/*@attr*/\"webix_area_name\");\n\t\t\tthis._activeAreaSName = name;\n\t\t\t// show block selection\n\t\t\tvar area = this._areaSelStorage[name];\n\t\t\tvar pos0 = this._cellPosition(area.start.row,area.start.column);\n\t\t\tvar pos1 = this._cellPosition(area.end.row,area.end.column);\n\n\t\t\tvar prerender = this._settings.prerender;\n\n\t\t\tvar xCorrStart = this.getColumnIndex(area.start.column) < this._settings.leftSplit?0:this._left_width;\n\t\t\tvar xCorrEnd = this.getColumnIndex(area.end.column) < this._settings.leftSplit?0:this._left_width;\n\n\t\t\tthis._bs_ready = [pos0.left+1+xCorrStart-this._scrollLeft, pos0.top +1-(prerender?this._scrollTop:0),{\n\t\t\t\trow:area.start.row, column:area.start.column\n\t\t\t}];\n\t\t\tthis._bs_position = offset(this._body);\n\n\t\t\tthis._bs_start(e);\n\t\t\tthis._bs_progress = [pos1.left+1+xCorrEnd-this._scrollLeft, pos1.top +1-(prerender?this._scrollTop:0)];\n\t\t\tthis._bs_select(false, false, e);\n\t\t\t\n\t\t\treturn preventEvent(e);\n\t\t}\n\t},\n\tgetSelectArea: function(name){\n\t\treturn this._areaSelStorage[name||this._lastDefArea];\n\t},\n\tgetAllSelectAreas: function(){\n\t\treturn this._areaSelStorage;\n\t},\n\t_span_correct_range: function(range, inner_call){\n\t\tvar i, j, c0, c1, r0, r1,\n\t\t\tspan, spanR0,spanC0,\n\t\t\tminR0, minC0,maxR1, maxC1,\n\t\t\tchanged = false,\n\t\t\tstart = range.start,\n\t\t\tend = range.end;\n\n\t\tminR0 = r0 = this.getIndexById(start.row);\n\t\tminC0 = c0 = this.getColumnIndex(start.column);\n\t\tmaxR1 = r1 = this.getIndexById(end.row);\n\t\tmaxC1 = c1 = this.getColumnIndex(end.column);\n\n\t\tfor(i = r0; i <= r1; i++){\n\t\t\tvar item = this.getItem(this.getIdByIndex(i));\n\t\t\t//check rows\n\t\t\tif(item.$row && !inner_call){\n\t\t\t\tchanged = true;\n\t\t\t\tmaxC1 = this._columns.length-1;\n\t\t\t}\n\t\t\t//check spans\n\t\t\telse if (this.config.spans){\n\t\t\t\tfor(j = c0; j <= c1; j++){\n\t\t\t\t\tspan = this.getSpan(this.getIdByIndex(i), this.columnId(j));\n\t\t\t\t\tif(span){\n\t\t\t\t\t\tspanR0 = this.getIndexById(span[0]);\n\t\t\t\t\t\tspanC0 = this.getColumnIndex(span[1]);\n\t\t\t\t\t\tif(spanR0 < minR0){\n\t\t\t\t\t\t\tminR0 = spanR0;\n\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(spanC0 < minC0){\n\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t\tminC0 = spanC0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(spanR0 + span[3]-1 > maxR1){\n\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t\tmaxR1 = spanR0 + span[3]-1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(spanC0 + span[2]-1 > maxC1){\n\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t\tmaxC1 = spanC0 + span[2]-1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(changed){\n\t\t\trange.start = {row: this.getIdByIndex(minR0), column:this.columnId(minC0)};\n\t\t\trange.end = {row: this.getIdByIndex(maxR1), column:this.columnId(maxC1)};\n\t\t\tthis._span_correct_range(range, true);\n\t\t}\n\t},\n\t_setTabindex:function(oldv, removeOnly){\n\t\tvar node;\n\t\tif(oldv){\n\t\t\tnode = this.getItemNode({row:oldv.start.row, column:oldv.start.column});\n\t\t\tif(node) node.removeAttribute(\"tabindex\");\n\t\t}\n\t\tif(!removeOnly && this._selected_areas.length){\n\t\t\tvar sel = this.getSelectedId(true)[0];\n\t\t\tnode = this.getItemNode(sel);\n\t\t\tif(node) node.setAttribute(\"tabindex\", \"1\");\n\t\t}\n\t}\n};\n\nexport default Mixin;","import {extend, bind} from \"../../webix/helpers\";\nimport {assert} from \"../../webix/debug\";\n\n\nconst Mixin = {\n\tfilterByAll:function(){\n\t\t//we need to use dynamic function creating\n\t\tvar server = false;\n\t\tthis.data.silent(function(){\n\t\t\tthis.filter();\n\t\t\tvar first = false;\n\t\t\tfor (var key in this._filter_elements){\n\t\t\t\tassert(key, \"empty column id for column with filtering\");\n\t\t\t\tif(!this.isColumnVisible(key))\n\t\t\t\t\tcontinue;\n\t\t\t\tvar record = this._filter_elements[key];\n\t\t\t\tvar originvalue = record[2].getValue(record[0]);\n\n\t\t\t\t//saving last filter value, for usage in getState\n\t\t\t\tvar inputvalue = originvalue;\n\t\t\t\tif (record[1].prepare)\n\t\t\t\t\tinputvalue = record[1].prepare.call(record[2], inputvalue, record[1], this);\n\n\t\t\t\t//preserve original value\n\t\t\t\trecord[1].value = originvalue;\n\t\t\t\tvar compare = record[1].compare;\n\n\t\t\t\tif (!this.callEvent(\"onBeforeFilter\",[key, inputvalue, record[1]])) continue;\n\t\t\t\tif(record[2].$server || server){ //if one of filters is server side, do not run any client side filters\n\t\t\t\t\tserver = true;\n\t\t\t\t} else {\n\t\t\t\t\tif (inputvalue === \"\") continue;\n\n\t\t\t\t\tif (compare){\n\t\t\t\t\t\tcompare = this._multi_compare(key, compare);\n\t\t\t\t\t\tthis.filter(bind(function(obj, value){\n\t\t\t\t\t\t\tif (!obj) return false;\n\t\t\t\t\t\t\treturn compare(obj[key], value, obj);\n\t\t\t\t\t\t},this), inputvalue, first);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.filter(key, inputvalue, first);\n\n\t\t\t\t\tfirst = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (server)\n\t\t\t\tthis._runServerFilter();\n\n\t\t}, this);\n\n\t\tif (!server){\n\t\t\tthis.refresh();\n\t\t\tthis.callEvent(\"onAfterFilter\",[]);\n\t\t}\n\t},\n\t_multi_compare: function(key, compare){\n\t\tvar column = this.getColumnConfig(key);\n\t\tvar separator = column ? column.optionslist : null;\n\n\t\t//default mode\n\t\tif (!separator) \n\t\t\treturn compare;\n\n\t\tif(typeof separator != \"string\")\n\t\t\tseparator = \",\";\n\n\t\treturn function(itemValue, inputValue, obj){\n\t\t\tif(!itemValue)\n\t\t\t\treturn false;\n\t\t\tvar ids = itemValue.toString().split(separator);\n\t\t\tfor (var i = 0; i < ids.length; i++) {\n\t\t\t\tif (compare(ids[i], inputValue, obj))\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t};\n\t},\n\tfilterMode_setter:function(mode){\n\t\treturn extend(this.data._filterMode, mode, true);\n\t},\n\tgetFilter:function(columnId){\n\t\tvar filter = this._filter_elements[columnId];\n\n\t\tif (filter && filter[2].getInputNode)\n\t\t\treturn filter[2].getInputNode(filter[0]);\n\t\treturn null;\n\t},\n\tregisterFilter:function(node, config, obj){\n\t\tthis._filter_elements[config.columnId] = [node, config, obj];\n\t},\n\tcollectValues:function(id, mode){\n\t\tlet values;\n\t\tlet obj = this.getColumnConfig(id);\n\t\tlet options = (mode && mode.visible) ? null : obj.collection;\n\n\t\tif (options)\n\t\t\tvalues = this._collectValues.call(options, \"id\", \"value\");\n\t\telse values = this._collectValues(obj.id, obj.id);\n\n\t\tlet result = { values: values };\n\t\tthis.callEvent(\"onCollectValues\", [id, result]);\n\t\treturn result.values;\n\t},\n\t_collectValues:function(id, value){\n\t\tlet checks = { \"\" : true };\n\t\tlet values = [];\n\n\t\tthis.data.each(function(obj){\n\t\t\tlet test = obj ? obj[id] : \"\";\n\t\t\tif (test !== undefined && !checks[test]){\n\t\t\t\tchecks[test] = true;\n\t\t\t\tlet lineId = obj[id];\n\t\t\t\t//special handling for 0 values\n\t\t\t\t//convert to string to create a valid ID\n\t\t\t\tif (lineId === 0) lineId = \"0\";\n\t\t\t\tvalues.push({ id:lineId, value:obj[value] });\n\t\t\t}\n\t\t}, this, true);\n\n\t\tif (values.length){\n\t\t\tlet type = typeof values[0].value === \"string\" ? \"string\" : \"raw\";\n\t\t\tvalues.sort( this.data.sorting.create({ as:type, by:\"value\", dir:\"asc\" }) );\n\t\t}\n\t\treturn values;\n\t},\n\t_runServerFilter: function(){\n\t\tthis.loadNext(0, 0, 0, 0, 1).then((data) => {\n\t\t\tif (this.editStop)this.editStop();\n\t\t\tthis.clearAll(true);\n\t\t\tthis.parse(data);\n\t\t\tthis.callEvent(\"onAfterFilter\",[]);\n\t\t});\n\t}\n};\n\nexport default Mixin;","import {bind, extend, isUndefined} from \"../../webix/helpers\";\nimport {event} from \"../../webix/htmlevents\";\nimport {assert} from \"../../webix/debug\";\nimport SelectionModel from \"../../core/selectionmodel\";\nimport env from \"../../webix/env\";\n\nconst Mixin = {\n\thover_setter:function(value){\n\t\tif (value && !this._hover_initialized){\n\t\t\tthis._enable_mouse_move();\n\t\t\tthis.config.experimental = true;\n\n\t\t\tthis.attachEvent(\"onMouseMoving\", e => {\n\t\t\t\tlet pos = this.locate(e);\n\n\t\t\t\t// when we click inner html element, edge calls mousemove with incorrect e.target\n\t\t\t\tif(!pos && env.isEdge && e.relatedTarget)\n\t\t\t\t\tpos = this.locate(e.relatedTarget);\n\n\t\t\t\tconst row = pos ? pos.row : null;\n\n\t\t\t\tif (this._last_hover != row){\n\t\t\t\t\tif (this._last_hover)\n\t\t\t\t\t\tthis.removeRowCss(this._last_hover, this._settings.hover);\n\n\t\t\t\t\tthis._last_hover = row;\n\t\t\t\t\tif (this._last_hover)\n\t\t\t\t\t\tthis.addRowCss( this._last_hover, this._settings.hover );\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tevent(this.$view, \"mouseout\", e => {\n\t\t\t\tconst trg = e.target||e.srcElement;\n\n\t\t\t\t// inner html elements blinking in case of hover:true\n\t\t\t\t// ie and edge call mouseout when clicking inner html element\n\t\t\t\tif (this._last_hover && document.body.contains(trg)){\n\t\t\t\t\tconst pos = e.relatedTarget ? this.locate(e.relatedTarget) : null;\n\t\t\t\t\tif (!pos){\n\t\t\t\t\t\tthis.removeRowCss(this._last_hover, this._settings.hover);\n\t\t\t\t\t\tthis._last_hover = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._hover_initialized = 1;\n\t\t}\n\t\treturn value;\n\t},\n\tselect_setter:function(value){\n\t\tif (!this.select && value){\n\t\t\textend(this, this._selections._commonselect, true);\n\t\t\tif (value === true)\n\t\t\t\tvalue = \"row\";\n\t\t\telse if (value == \"multiselect\"){\n\t\t\t\tvalue = \"row\";\n\t\t\t\tthis._settings.multiselect = true;\n\t\t\t}\n\t\t\tassert(this._selections[value], \"Unknown selection mode: \"+value);\n\t\t\textend(this, this._selections[value], true);\n\t\t}\n\t\treturn value;\n\t},\n\tgetSelectedId:function(mode){\n\t\treturn mode?[]:\"\"; //dummy placeholder\n\t},\n\tgetSelectedItem:function(mode){\n\t\treturn SelectionModel.getSelectedItem.call(this, mode);\n\t},\n\t_selections:{\n\t\t//shared methods for all selection models\n\t\t_commonselect:{\n\t\t\t_select_css:\" webix_cell_select\",\n\t\t\t$init:function(){\n\t\t\t\tthis._reinit_selection();\n\n\t\t\t\tthis.on_click.webix_cell = bind(this._click_before_select, this);\n\n\t\t\t\t//temporary stab, actual handlers need to be created\n\t\t\t\tthis._data_cleared = this._data_filtered = function(){\n\t\t\t\t\tthis.unselect();\n\t\t\t\t};\n\n\t\t\t\tthis.data.attachEvent(\"onStoreUpdated\",bind(this._data_updated,this));\n\t\t\t\tthis.data.attachEvent(\"onSyncApply\", bind(this._data_synced, this));\n\t\t\t\tthis.data.attachEvent(\"onClearAll\", bind(this._data_cleared,this));\n\t\t\t\tthis.data.attachEvent(\"onAfterFilter\", bind(this._data_filtered,this));\n\t\t\t\tthis.data.attachEvent(\"onIdChange\", bind(this._id_changed,this));\n\n\t\t\t\tthis.$ready.push(SelectionModel._set_noselect);\n\t\t\t},\n\t\t\t_id_changed:function(oldid, newid){\n\t\t\t\tfor (let i=0; i=0 ; i--){\n\t\t\t\t\tvar row = this._selected_areas[i].row;\n\t\t\t\t\tif (!this.exists(row)){\n\t\t\t\t\t\tthis._selected_areas.splice(i,1);\n\t\t\t\t\t\tdelete this._selected_pull[row];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t_reinit_selection:function(){\n\t\t\t\t//list of selected areas\n\t\t\t\tthis._selected_areas=[];\n\t\t\t\t//key-value hash of selected areas, for fast search\n\t\t\t\tthis._selected_pull={};\n\t\t\t\t//used to track selected cell objects\n\t\t\t\tthis._selected_rows = [];\n\t\t\t},\n\t\t\tisSelected:function(id, column){\n\t\t\t\tvar key;\n\t\t\t\tif (!isUndefined(column))\n\t\t\t\t\tkey = this._select_key({ row:id, column: column});\n\t\t\t\telse \n\t\t\t\t\tkey = typeof id === \"object\"? this._select_key(id) : id;\n\n\t\t\t\treturn this._selected_pull[key];\n\t\t\t},\n\t\t\tgetSelectedId:function(asArray, plain){\n\t\t\t\tvar result;\n\n\t\t\t\t//if multiple selections was created - return array\n\t\t\t\t//in case of single selection, return value or array, when asArray parameter provided\n\t\t\t\tif (this._selected_areas.length > 1 || asArray){\n\t\t\t\t\tresult = [].concat(this._selected_areas);\n\t\t\t\t\tif (plain)\n\t\t\t\t\t\tfor (let i = 0; i < result.length; i++)\n\t\t\t\t\t\t\tresult[i]=result[i].id;\n\t\t\t\t} else {\n\t\t\t\t\tresult = this._selected_areas[0];\n\t\t\t\t\tif (plain && result)\n\t\t\t\t\t\treturn result.id;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\t_id_to_string:function(){\n\t\t\t\treturn this.row;\n\t\t\t},\n\t\t\t_select:function(data, preserve){\n\t\t\t\tvar key = this._select_key(data);\n\t\t\t\t//don't allow selection on unnamed columns\n\t\t\t\tif (key === null) return;\n\n\t\t\t\tif (preserve === -1)\n\t\t\t\t\treturn this._unselect(data);\n\n\t\t\t\tdata.id = key;\n\t\t\t\tdata.toString = this._id_to_string;\n\n\t\t\t\tif (!this.callEvent(\"onBeforeSelect\",[data, preserve])) return false;\n\n\t\t\t\t//ignore area, if it was already selected and\n\t\t\t\t// - we are preserving existing selection\n\t\t\t\t// - this is the only selected area\n\t\t\t\t// otherwise we need to clear other selected areas\n\t\t\t\tif (this._selected_pull[key] && (preserve || this._selected_areas.length == 1)) return;\n\n\t\t\t\tif (!preserve)\n\t\t\t\t\tthis._clear_selection();\n\n\t\t\t\tthis._selected_areas.push(data);\n\t\t\t\tthis._selected_pull[key] = true;\n\n\t\t\t\tthis.callEvent(\"onAfterSelect\",[data, preserve]);\n\n\t\t\t\t\n\t\t\t\tthis._finalize_select(this._post_select(data));\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\t_clear_selection:function(){\n\t\t\t\tif (!this._selected_areas.length) return false;\n\n\t\t\t\tfor (let i=0; irow_end_ind){\n\t\t\t\t\tvar temp = row_start_ind;\n\t\t\t\t\trow_start_ind = row_end_ind;\n\t\t\t\t\trow_end_ind = temp;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis._silent_selection = true;\n\t\t\t\tfor (let i=row_start_ind; i<=row_end_ind; i++){\n\t\t\t\t\tvar id = this.getIdByIndex(i);\n\t\t\t\t\tif (!id){\n\t\t\t\t\t\tif (row_id)\n\t\t\t\t\t\t\tthis.select(row_id);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tthis.select(id, preserve);\n\t\t\t\t}\n\n\t\t\t\tthis._silent_selection = false;\n\t\t\t\tthis._finalize_select();\n\t\t\t}\n\t\t},\n\n\t\tcell:{\n\t\t\t_select_key:function(data){\n\t\t\t\tif (!data.column) return null;\n\t\t\t\treturn data.row+\"_\"+data.column; \n\t\t\t},\n\t\t\tselect:function(row_id, column_id, preserve){\n\t\t\t\tassert(this.data.exists(row_id), \"Incorrect id in select command: \"+row_id);\n\t\t\t\tthis._select({row:row_id, column:column_id}, preserve);\n\t\t\t},\n\t\t\t_post_select:function(data){\n\t\t\t\tvar sel = this._add_item_select(data.row);\n\t\t\t\tsel.$count++;\n\t\t\t\tsel[data.column]=true;\n\t\t\t\treturn data.row;\n\t\t\t},\n\t\t\tunselect:function(row_id, column_id){\n\t\t\t\tthis._unselect({row:row_id, column:column_id});\n\t\t\t},\n\t\t\t_post_unselect:function(data){\n\t\t\t\tvar sel = this._add_item_select(data.row);\n\t\t\t\tsel.$count-- ;\n\t\t\t\tsel[data.column] = false;\n\t\t\t\tif (sel.$count<=0)\n\t\t\t\t\tthis.data.removeMark(data.row,\"webix_selected\");\n\t\t\t\treturn data.row;\n\t\t\t},\n\t\t\tmapSelection:function(callback){\n\t\t\t\treturn this._mapSelection(callback, false, false);\n\t\t\t},\n\t\t\t_selectRange:function(a,b){\n\t\t\t\treturn this.selectRange(a.row, a.column, b.row, b.column);\n\t\t\t},\n\n\t\t\tselectRange:function(row_id, column_id, end_row_id, end_column_id, preserve){\n\t\t\t\tif (isUndefined(preserve)) preserve = true;\n\n\t\t\t\tvar row_start_ind = row_id ? this.getIndexById(row_id) : 0;\n\t\t\t\tvar row_end_ind = end_row_id ? this.getIndexById(end_row_id) : this.data.order.length-1;\n\n\t\t\t\tvar col_start_ind = column_id ? this.getColumnIndex(column_id) : 0;\n\t\t\t\tvar col_end_ind = end_column_id ? this.getColumnIndex(end_column_id) : this._columns.length-1;\n\n\t\t\t\tif (row_start_ind>row_end_ind){\n\t\t\t\t\tlet temp = row_start_ind;\n\t\t\t\t\trow_start_ind = row_end_ind;\n\t\t\t\t\trow_end_ind = temp;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (col_start_ind>col_end_ind){\n\t\t\t\t\tlet temp = col_start_ind;\n\t\t\t\t\tcol_start_ind = col_end_ind;\n\t\t\t\t\tcol_end_ind = temp;\n\t\t\t\t}\n\n\t\t\t\tthis._silent_selection = true;\n\t\t\t\tfor (let i=row_start_ind; i<=row_end_ind; i++)\n\t\t\t\t\tfor (let j=col_start_ind; j<=col_end_ind; j++)\n\t\t\t\t\t\tthis.select(this.getIdByIndex(i), this.columnId(j), preserve);\n\t\t\t\tthis._silent_selection = false;\n\t\t\t\tthis._finalize_select();\n\t\t\t}\n\t\t},\n\n\t\tcolumn:{\n\t\t\t_select_css:\" webix_column_select\",\n\t\t\t_select_key:function(data){ return data.column; },\n\t\t\t_id_to_string:function(){\n\t\t\t\treturn this.column;\n\t\t\t},\n\t\t\t//returns box-like area, with ordered selection cells\n\t\t\tselect:function(column_id, preserve){\n\t\t\t\tthis._select({ column:column_id }, preserve);\n\t\t\t},\n\t\t\t_post_select:function(data){\n\t\t\t\tthis._settings.columns[this.getColumnIndex(data.column)].$selected = true;\n\t\t\t\tif (!this._silent_selection)\n\t\t\t\t\tthis._render_header_and_footer();\n\t\t\t},\n\t\t\tunselect:function(column_id){\n\t\t\t\tthis._unselect({column : column_id});\n\t\t\t},\n\t\t\t_post_unselect:function(data){\n\t\t\t\tthis._settings.columns[this.getColumnIndex(data.column)].$selected = null;\n\t\t\t\tthis._render_header_and_footer();\n\t\t\t},\n\t\t\tmapSelection:function(callback){\n\t\t\t\treturn this._mapSelection(callback, true, false);\n\t\t\t},\n\t\t\t_selectRange:function(a,b){\n\t\t\t\treturn this.selectRange(a.column, b.column);\n\t\t\t},\n\t\t\tselectRange:function(column_id, end_column_id, preserve){\n\t\t\t\tif (isUndefined(preserve)) preserve = true;\n\n\t\t\t\tvar column_start_ind = column_id ? this.getColumnIndex(column_id) : 0;\n\t\t\t\tvar column_end_ind = end_column_id ? this.getColumnIndex(end_column_id) : this._columns.length-1;\n\n\t\t\t\tif (column_start_ind>column_end_ind){\n\t\t\t\t\tvar temp = column_start_ind;\n\t\t\t\t\tcolumn_start_ind = column_end_ind;\n\t\t\t\t\tcolumn_end_ind = temp;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis._silent_selection = true;\n\t\t\t\tfor (let i=column_start_ind; i<=column_end_ind; i++)\n\t\t\t\t\tthis.select(this.columnId(i), preserve);\n\n\t\t\t\tthis._silent_selection = false;\n\n\t\t\t\tthis._render_header_and_footer();\n\t\t\t\tthis._finalize_select();\n\t\t\t},\n\t\t\t_data_synced:function(){\n\t\t\t\t//do nothing, as columns are not changed\n\t\t\t}\n\t\t},\n\t\tarea: {\n\t\t\t_select_key:function(data){\n\t\t\t\treturn data.row+\"_\"+data.column;\n\t\t\t},\n\t\t\tgetSelectedId: function(asArray){\n\t\t\t\tvar area = this.getSelectArea();\n\t\t\t\tvar result = [];\n\t\t\t\tif(area){\n\t\t\t\t\tif(asArray && ( area.start.row != area.end.row || area.start.column != area.end.column )){\n\t\t\t\t\t\tvar row_start_ind = this.getIndexById(area.start.row);\n\t\t\t\t\t\tvar row_end_ind = this.getIndexById(area.end.row);\n\t\t\t\t\t\t//filtering in process\n\t\t\t\t\t\tif(row_start_ind == -1 || row_end_ind == -1)\n\t\t\t\t\t\t\treturn result;\n\n\t\t\t\t\t\tvar col_start_ind = this.getColumnIndex(area.start.column);\n\t\t\t\t\t\tvar col_end_ind = this.getColumnIndex(area.end.column);\n\n\t\t\t\t\t\tfor (let i=row_start_ind; i<=row_end_ind; i++)\n\t\t\t\t\t\t\tfor (var j=col_start_ind; j<=col_end_ind; j++)\n\t\t\t\t\t\t\t\tresult.push({row:this.getIdByIndex(i), column:this.columnId(j)});\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tresult.push(area.end);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn asArray?result:result[0];\n\t\t\t},\n\t\t\tunselect:function(){\n\t\t\t\tthis._unselect();\n\t\t\t},\n\t\t\t_unselect: function() {\n\t\t\t\tthis.removeSelectArea();\n\t\t\t\tthis.callEvent(\"onSelectChange\", []);\n\t\t\t},\n\t\t\tmapSelection:function(callback){\n\t\t\t\tvar select = this.getSelectArea();\n\t\t\t\tif (select){\n\t\t\t\t\tvar sind = this.getColumnIndex(select.start.column);\n\t\t\t\t\tvar eind = this.getColumnIndex(select.end.column);\n\t\t\t\t\tvar srow = this.getIndexById(select.start.row);\n\t\t\t\t\tvar erow = this.getIndexById(select.end.row);\n\n\t\t\t\t\tfor (let i = srow; i <= erow; i++) {\n\t\t\t\t\t\tvar rid = this.data.order[i];\n\t\t\t\t\t\tvar item = this.getItem(rid);\n\t\t\t\t\t\tfor (var j = sind; j <= eind; j++) {\n\t\t\t\t\t\t\tvar cid = this._columns[j].id;\n\t\t\t\t\t\t\tif (callback)\n\t\t\t\t\t\t\t\titem[cid] = callback(item[cid], rid, cid, i-srow, j-sind);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\treturn { row:rid, column:cid };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tselect:function(row_id, column_id, preserve){\n\t\t\t\tassert(this.data.exists(row_id), \"Incorrect id in select command: \"+row_id);\n\t\t\t\tthis._select({row:row_id, column:column_id}, preserve);\n\t\t\t},\n\t\t\t_selectRange:function(id,last){\n\t\t\t\tthis._extendAreaRange(id, last);\n\t\t\t},\n\t\t\t_select: function(cell){\n\t\t\t\t//ctrl-selection is not supported yet, so ignoring the preserve flag\n\t\t\t\tthis.addSelectArea(cell,cell,false);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\t_data_synced:function(){\n\t\t\t\tif(this._selected_areas.length)\n\t\t\t\t\tthis.refreshSelectArea();\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport default Mixin;","export const version=\"VERSION\";\nexport const name = \"core\";","import {errorMessage} from \"./common\";\n\nimport promise from \"../../thirdparty/promiz\";\nimport require from \"../../load/require\";\nimport env from \"../../webix/env\";\n\nimport {assert} from \"../../webix/debug\";\nimport {toNode} from \"../../webix/helpers\";\nimport {download} from \"../../webix/html\";\nimport {$$} from \"../../ui/core\";\n\nexport const toPNG = function(id, options){\n\tvar defer = promise.defer();\n\n\treturn require(env.cdn + \"/extras/html2canvas-1.0.min.js\").then(function(){\n\t\t//backward compatibility\n\t\tif (typeof options === \"string\") options = { filename: options };\n\t\toptions = options || {};\n\n\t\tvar view = $$(id);\n\t\tif (view && view.$exportView)\n\t\t\tview = view.$exportView(options);\n\t\tassert(view, errorMessage);\n\t\tif(!view) return defer.reject(errorMessage);\n\n\t\tvar node = view ? view.$view : toNode(id);\n\t\tvar filename = (options.filename||\"Data\")+\".png\";\n\n\t\twindow.html2canvas(node, {background:\"#fff\", logging:false, useCORS:true}).then(function(canvas) {\n\t\t\tvar callback = function(data){\n\t\t\t\tif(options.download !== false)\n\t\t\t\t\tdownload(data, filename);\n\t\t\t\tcanvas.remove();\n\t\t\t\tdefer.resolve(data);\n\t\t\t};\n\t\t\tif(canvas.msToBlob)\n\t\t\t\tcallback(canvas.msToBlob());\n\t\t\telse\n\t\t\t\tcanvas.toBlob(callback, \"image/png\");\n\t\t});\n\t\treturn defer;\n\t});\n};","import {errorMessage, getExportScheme, getExportData} from \"./common\";\n\nimport csv from \"../../webix/csv\";\nimport promise from \"../../thirdparty/promiz\";\n\nimport {download} from \"../../webix/html\";\nimport {$$} from \"../../ui/core\";\nimport {assert} from \"../../webix/debug\";\n\nexport const toCSV = function(id, options){\n\toptions = options || {};\n\n\tvar view = $$(id);\n\tif (view && view.$exportView)\n\t\tview = view.$exportView(options);\n\tassert(view, errorMessage);\n\tif(!view) return promise.reject(errorMessage);\n\n\toptions.export_mode = \"csv\";\n\toptions.filterHTML = true;\n\n\tvar scheme = getExportScheme(view, options);\n\tvar result = getExportData(view, options, scheme);\n\n\tvar data = getCsvData(result, scheme);\n\tvar filename = (options.filename || \"Data\")+\".csv\";\n\n\tvar blob = new Blob([\"\\uFEFF\" + data], { type: \"text/csv\" });\n\tif(options.download !== false)\n\t\tdownload(blob, filename);\n\n\treturn promise.resolve(blob);\n};\n\nfunction getCsvData(data) {\n\treturn csv.stringify(data);\n}","import {callEvent} from \"./customevents\";\n\nexport function editStop(){\n\tcallEvent(\"onEditEnd\", []);\n}\n","import {create} from \"../webix/html\";\n\n/*submits values*/\nexport default function send(url, values, method, target){\n\tvar form = create(\"FORM\",{\n\t\t\"target\":(target||\"_self\"),\n\t\t\"action\":url,\n\t\t\"method\":(method||\"POST\")\n\t},\"\");\n\tfor (var k in values) {\n\t\tvar field = create(\"INPUT\",{\"type\":\"hidden\",\"name\": k,\"value\": values[k]},\"\");\n\t\tform.appendChild(field);\n\t}\n\tform.style.display = \"none\";\n\tdocument.body.appendChild(form);\n\tform.submit();\n\tdocument.body.removeChild(form);\n}"],"names":["global","window","queueId","queue","isRunningTask","nextTick","fn","setImmediate","importScripts","addEventListener","setTimeout","postMessage","Deferred","resolver","undefined","TypeError","_typeof","this","then","er","self","state","val","next","v","fire","_fn","_er","_d","d","resolve","reject","push","_handler","_value","handler","value","finish","type","i","length","p","e","thennable","ref","cb","ec","cn","cnt","call","source","data","all","arr","Array","done","reduce","map","r","race","defer","services","define","name","use","debug_mode","clone","f","_function","prototype","copy","target","esModern","Map","Set","WeakMap","WeakSet","method","arguments","isArray","from","RegExp","isDate","Date","bind","functor","object","apply","exec","code","execScript","eval","isUndefined","a","delay","obj","params","$destructed","ret","once","flag","base","force","$protoWait","_power_array","insertAt","defaults","extend","$init","_seed","valueOf","uid","toNode","node","document","getElementById","toFunctor","str","scope","replace","Object","toString","_to_array","array","removeAt","pos","len","splice","remove","find","each","master","filter","i18n","parseFormat","parseTimeFormat","stringify","result","origin","toJSON","parseFormatStr","JSON","EventSystem","_evs_events","_evs_handlers","_evs_map","blockEvent","_block","unblockEvent","mapEvent","on_setter","config","$scope","sub","indexOf","substr","attachEvent","callEvent","_event_master","toLowerCase","event_stack","return_value","$eventSource","id","unshift","t","detachEvent","hasEvent","stack","parent","evs","b","c","xml","_isValidXML","documentElement","getElementsByTagName","toObject","text","response","rawxml","fromString","getRecords","xpath","records","child","getDetails","tagToObject","getOptions","getInfo","assignTypes","size","getAttribute","path","XPathResult","nodeName","ownerDocument","res","col","evaluate","ANY_TYPE","temp","iterateNext","test","selectNodes","split","pop","k","tag","z","hasSubTags","nodeType","childNodes","attributes","tagName","nodeValue","firstChild","wholeText","xmlString","DOMParser","parseFromString","ActiveXObject","loadXML","json","parseDates","isodate","parse","key","collections","total_count","ajax","url","get","getXHR","count","XMLHttpRequest","_send","mode","success","error","promise","x","headers","_header","json_mode","found","FormData","encodeURIComponent","join","open","_sync","_response","responseType","setRequestHeader","onreadystatechange","readyState","is_error","status","responseText","_data","$callback","_timeout","timeout","send","responseXML","post","put","del","patch","sync","num","header","owner","proxy","$proxy","load","parts","ext","options","dataurl","save","u","console","log","operation","newid","processResult","view","update","_save_logic","query","mark","charAt","xhr","rest","GraphQL","variables","unbox","lkey","extra","makeCopy","init","$parse","binary","debug","graphql","jsarray","idColumn","html","createElement","innerHTML","env","strict","webix_strict","https","location","protocol","agent","navigator","userAgent","isMac","mobile","touch","isOpera","isIE","parseFloat","appVersion","isIE8","isEdge","isFF","isWebKit","isSafari","maxHTMLElementSize","isAndroid","isIEMobile","transform","transition","found_index","js_list","j","style","cssPrefix","jp","jsPrefix","transitionDuration","translate","transitionEnd","pointerevents","passiveEventListeners","opts","defineProperty","removeEventListener","svg","implementation","hasFeature","svganimation","_native_on_selectstart","_style_element","_style_cache","denySelect","onselectstart","stopEvent","allowSelect","index","previousSibling","createCss","rule","sufix","addStyle","group","setAttribute","appendChild","styleSheet","cssText","createTextNode","removeStyle","box","create","attrs","attr_name","className","getValue","parentNode","removeChild","insertBefore","before","rescue","locate","trg","event","srcElement","offset","elem","getBoundingClientRect","body","docElem","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","top","left","y","Math","round","width","offsetWidth","height","offsetHeight","parseInt","offsetTop","offsetLeft","offsetParent","posRelative","ev","offsetX","layerX","layerY","offsetY","touches","pageX","pageY","compatMode","clientX","clientY","preventEvent","preventDefault","returnValue","stopPropagation","cancelBubble","triggerEvent","createEventObject","fireEvent","createEvent","initEvent","dispatchEvent","addCss","check","removeCss","getTextSize","css","basewidth","max","download","filename","objUrl","msSaveBlob","URL","createObjectURL","link","href","click","revokeObjectURL","_getClassName","baseVal","setSelectionRange","start","end","focus","textRange","createTextRange","collapse","moveEnd","moveStart","select","getSelectionRange","selectionStart","selectionEnd","bookmark","selection","createRange","getBookmark","moveToBookmark","addMeta","item","content","htmltable","tr","rows","new_data","_webix_skip","td","getConfig","columns","_de_json","_get_attrs","el","attr","hash","_modules","require","module","callback","Promise","disabled","callback2","file","fullpath","onerror","calls","onload","rel","newScript","src","excel","_urlToOptions","reader","FileReader","parseData","readAsArrayBuffer","Uint8Array","String","fromCharCode","cdn","wb","XLS","read","cellStyles","cellDates","XLSX","sheets","Sheets","names","SheetNames","ranges","Workbook","Names","getSheet","sheetToArray","min","sheet","spans","styles","sizes","row","cell","range","utils","decode_range","xCorrection","s","yCorrection","nrow","encode_cell","ncell","math","dateFormatStr","merges","widths","wch","heights","hpx","details","DataDriver","csv","stringToArray","silentErrorMarker","AtomDataLoader","waitData","_settings","datatype","$ready","_load_when_ready","_ready_for_data","url_setter","data_setter","_fetch","_this","_onLoad","_onLoadError","driver","gen","_data_generation","_this2","generation","_syncData","_call_onready","_parse","parsed","record","setValues","_onLoadContinue","$onLoad","_this3","xhttp","_check_data_feed","dataFeed","_ignore_feed","loader","CodeParser","collapseNames","prefix","prop","expandNames","lastIndex","_cache","_csp_cache","newlines","quotes","slashes","escape","badChars","escapeChar","chr","template","teststr","temp_res","search","s1","s2","s3","_","common","sort","lastPos","addStr","n0","n1","slice","helpers","Function","empty","AtomRender","_toHTML","$empty","render","cfg","isVisible","_dataobj","_backbone_sync","refresh","pull","template_setter","AutoScroll","_auto_scroll","yScroll","xScroll","dragscroll","layout","_body","$view","sense","rowHeight","isNaN","reset","_auto_y_scroll","_auto_x_scroll","_auto_scroll_delay","_auto_scroll_column","headerRowHeight","bottom","scroll","getScrollState","topSplit","topSplitPos","_cellPosition","getIdByIndex","columnId","_auto_scrollTo","right","scrollTo","_events","_events_final_destructor","eventRemove","_event","inner","context","info","capture","passive","_webix_type_wait","types","baseType","codebase","top_views","_global_scope","_global_collection","_child_sizing_active","_responsive_exception","_responsive_tinkery","_freeze_resize","_parent_cell","_focus_time","_ui_creation","_edit_open_time","_final_destruction","destructors","_noselect_element","_modality","_wait_animate","views","ui","_ui_creator","top_node","multiset","container","_correctId","getChildViews","_body_cell","_deleteIds","$$","moving","body_child","$topView","_inner","getParentView","_view","setPosition","$apiOnly","_hidden","_container","_appendDom","destructor","_replace","_remove","_viewobj","fullscreen","position","_destructor_handler","skipResize","adjust","uis","current","_destroy_with_me","cols","cells","accordion","align","headerlayout","multiview","spacer","selfname","origins","proto","compilation","has_constructor","construct","def","$skin","_parseSettings","element","touchable","applyChanges","getNode","_focus_action","on_click","popup","readonly","show","getInputNode","TooltipControl","_tooltip_masters","_tooltip_exist","addTooltip","ctrl","Element","webix_tooltip","_tooltip","tooltip","_webix_tooltip_mm","_move_tooltip","_webix_tooltip_ml","_hide_tooltip","_drag_event","_click_event","getTooltip","_last","$tooltipOut","$tooltipIn","$tooltipMove","parentElement","clearTimeout","_before_show_delay","hide","getMaster","removeTooltip","tip","m","dx","dy","n","getPos","_uid","_namecount","freeze","trigger","any","resize","_force_resize","_each","logic","include","children","zIndex","zIndexBase","ready","_ready","_ready_code","doit","webix_ready","concat","UIManager","_hotkeys","_tab_time","_mouse_time","_controls","_inputs","_enable","_focus_click","_keypress","_focus_tab","getFocus","_focus_was_there","setFocus","only_api","tab","blur","_applyChanges","hasFocus","_focus","dont_clear","canFocus","_top_modal","querySelector","win","queryView","modal","isEnabled","_moveChildFocus","check_view","_is_child_of","_focus_logic","_translation_table","_keypress_timed","_isNumPad","which","keyCode","ctrlKey","shift","shiftKey","alt","altKey","meta","metaKey","codeid","_keycode","_key_press_timeout","keyPressTimeout","is_any","_check_keycode","dir","marker","$fmarker","activeElement","_tab_logic","_custom_tab_handler","_in_edit_mode","editNext","editStop","getTop","getNext","_inner_call","p_cells","getPrev","addHotKey","keys","pack","_parse_keys","letter","removeHotKey","func","_process_calls","temp_result","controls","toUpperCase","getState","gravity","collapsed","activeCell","_cells","setState","states","setValue","form","getFormView","_skipSubmit","editCancel","getTopParentView","_hide","Settings","property","_parseSeetingColl","_define","setter","coll","initial","settings","_mergeSettings","Destruction","_last_editor","$id","_destroy_child","_htmlmap","_htmlrows","_html","_contentobj","unbind","release","_popups","CollectionBind","_cursor","sel","getSelectedId","setCursor","_update_binds","getCursor","oldid","refreshCursor","getItem","_bind_update","format","getBranch","importData","defaultData","_bind_update_common","ValueBind","silent","pod","RecordBind","getValues","BindSource","_bind_hash","_bind_updated","_ignore_binds","_bind_specific_rules","saveBatch","_do_not_update_binds","setBindData","updateItem","add","getBindData","addBind","removeBind","clear","BaseBind","_initBindSource","_bind_ready","_bind_source","_bind_id","_bind_refresh_handler","_on_sync","old_render","_in_bind_processing","validate","values","setDirty","UIExtension","webix_view","api","$setNode","_recollect_elements","confirm","results","direction","_queryGoUp","_queryGoDown","_queryView","kids","base_id","hidden","_hidden_render","_hidden_hash","_disable_cover","disable","enable","removeAttribute","disabled_setter","container_setter","css_setter","id_setter","_prev_global_col","oldvalue","_elements","_translate_ids","$setSize","last","_last_size","$width","_content_width","_scroll_y","scrollSize","$height","_content_height","_scroll_x","flex","$getSize","minWidth","maxWidth","minHeight","maxHeight","animate_settings","animate","_show","_render_hidden_views","ui_to_render","_onKeyPress","role","hidden_setter","clientWidth","clientHeight","resizeChildren","protoUI","_set_inner","border_not_set","borderless","borderWidth","_borders","SingleRender","templateStart","templateEnd","customize","_visible","_alt_render","_disabled","w","innerWidth","h","innerHeight","positionX","positionY","display","AutoTooltip","tooltip_setter","_init_tooltip_once","_show_tooltip","_get_tooltip_data","Canvas","_canvas_labels","_canvas_series","series","_obj","devicePixelRatio","_prepareCanvas","title","_canvas","canvas_id","getCanvas","ctx","getContext","_webixDevicePixelRatio","scale","_resizeCanvas","renderText","renderTextAt","valign","clearCanvas","skipMap","areas","_getMapAreas","clearRect","floor","toggleCanvas","_toggleCanvas","showCanvas","hideCanvas","html_element","animation","subtype","animation_copy","_has_animation","isSupported","formLine","defAniPos","keepViews","nextSibling","breakLine","line","duration","timing","skew_options","scale_type","css_general","css_transition","css_transform","transitionEnded","tid","$active","$name","set","skin","material","topLayout","barHeight","tabbarHeight","sidebarTitleHeight","toolbarHeight","listItemHeight","inputHeight","buttonHeight","inputPadding","menuHeight","labelTopHeight","propertyItemHeight","timelineItemHeight","unitHeaderHeight","inputSpacing","sliderHandleWidth","sliderPadding","sliderBorder","vSliderPadding","vSliderHeight","switchHeight","switchWidth","layoutMargin","space","wide","clean","head","toolbar","layoutPadding","tabMargin","tabOffset","tabBottomOffset","tabTopOffset","tabBorder","customCheckbox","customRadio","sidebarMarkAll","popupNoPoint","borderlessPopup","popupPadding","dataPadding","calendarWeekHeaderHeight","padding","accordionType","optionHeight","organogramLineColor","timelineColor","mini","flat","compact","contrast","webix_skin","Touch","longTouchDelay","scrollDelay","deltaStep","speed","ellastic","fastClick","limit","_limited","mouse","down","_touchstart","move","_touchmove","up","_touchend","_fire_fast_event","_clear_artefacts","_scroll","_start_context","_current_context","_prev_context","_scroll_context","_scroll_mode","_scroll_node","_scroll_stat","_long_touched","_delta","_x_moment","_y_moment","_time","_css_button_remove","_long_touch_timer","_was_not_moved","_axis_x","_axis_y","_active_transion","_scroll_end","_get_matrix","delta","_get_delta","$scroll","nx","ny","cnx","_correct_minmax","px","cny","py","abs","adjustScroll","_set_matrix","_scroll_master","_sync_scroll","_set_scroll","_translate_event","click_event","_set_scroll_pos","_axis_check","_x","_y","_get_event_view","_init_scroller","prev","edx","edy","xv","yv","trans","tmatrix","matrix","getComputedStyle","WebKitCSSMatrix","MSCSSMatrix","_tmatrix","tkey","_sync_pos","allow","sqrt","_init_scroll_node","scroll_enabled","_create_scroll","dim","visibility","old","_long_move","_locate","_stop_old_scroll","_stop_scroll","scrollHeight","_is_scroll","$touchCapture","_long_touch","stop_mode","time","_get_sizes","locate_mode","active","_get_context","_get_context_m","setMouse","touchInit","radiusX","$touch","pointerEnabled","msPointerEnabled","DragControl","_drag_masters","addDrop","master_mode","webix_drop","_getCtrl","webix_master","unlink","_createTouchDrag","dragCtrl","_getActiveDragMaster","_getDragItemPos","createDrag","_drag_context","x_offset","y_offset","addDrag","webix_drag","_preStart","_active","_saved_event","_preStartFalse","destroyDrag","evobj","_start_pos","_webix_drag_mm","_startDrag","_webix_drag_mu","_clean_dom_after_drag","sendSignal","_moveDrag","_stopDrag","$drop","$dragOut","still_drag","customPos","$dragPos","_skip","elementFromPoint","Proxy","_checkLand","_landing","$dragIn","signal","dragCtl","drag_container","$dragCreate","_setDragOffset","$drag","_skipDropH","_skip_mark","$dragDestroy","_dropHTML","itemPos","Movable","move_setter","_headobj","elOffset","elPos","drag","Modality","_modal_set","_modal_cover","_previous_modality","overflow","_ignore_clicks","topmost","ResizeArea","resize_setter","_resizeHandlers","_renderResizeHandler","_rwHandle","rp","_wrDown","_showResizeFrame","_resizeFrame","_wsReady","_resizeHandlersMove","_wrMove","_resizeHandlersUp","_wrUp","progress","$resizeMove","_wsProgress","$resizeEnd","_bodyobj","_head_cell","toFront","_modal","close","popups","click_view","zIndex_setter","body_setter","new_view","old_view","isBody","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","point","relative","fin_x","fin_y","point_y","point_x","fit","autofit","nochange","delta_x","delta_y","delta_point","deltax","deltay","fixed","_checkFixedPosition","_set_point","_hide_point","_setPosition","_hide_timer","autofocus","_prev_focus","showpopup","_hide_single","_hide_sub_popups","_hiding_process","contains","_hide_callback","order","_inner_body_set","head_setter","icon","getBody","getHead","baseview","_topPositionCallback","headMinWidth","head_size","headHeight","self_size","ContextHelper","attachTo","on_context","_show_at_ui","_show_at_node","_area","setContext","area","_show_at","_show_on_mouse_out","master_setter","clipbuffer","_blur_id","_ctrl","_paste","_isSelectRange","getSelection","last_active","getEditor","CopyPaste","clipboard_setter","templateCopy","clipboard","_selected","insert","modify","custom","templateCopy_setter","CustomPrint","$customPrint","htmlOnly","_prePrint","tableData","_getTableArray","table","_getTableHTML","doc","docFooter","print","prerender","autoheight","xCount","nobreaks","_getPageWidth","Infinity","printPPI","printMargin","newTableStart","colnum","_getVisibleRange","_dx","tableArray","colrow","cellValue","_itemClassName","txt","$css","forEach","tableHTML","column","span","colspan","colSpan","rowspan","rowSpan","br","CustomScroll","scrollStep","_init_once","$customScroll","_last_active_node","_on_reconstruct","_enable_datatable","_custom_scroll_view","_get_datatable_sizes","_y_scroll","_scrollTop","_x_scroll","_scrollLeft","_mouse_in","_mouse_out","mapCells","_custom_scroll_mode","_mouse_wheel","_set_additional_handlers","_custom_scroll_size","_mouse_out_timed","_active_drag_area","_adjust_scroll","_scroll_drag_pos","_mouse_out_timer","scrollWidth","_scroll_x_node","_sx","_vx","trackBar","_bar_x","_create_bar","_scroll_y_node","_sy","_vy","_bar_y","_update_scroll","bar","_scroll_drag_enabled","_set_scroll_value","scrollX","getSize","_last_set_size","scrollY","_removeScroll","_webix_event_sc1","_webix_event_sc2","_webix_event_sc3","_scroll_drag_released","wheelDelta","toblock","detail","scrolledBy","touchpadMoveX","wheelDeltaX","wheelDeltaY","x_dir","pose","max_scroll","now","_scroll_drag","_scroll_drop","left_scroll","shift_left","top_scroll","shift_top","_resize_scroll","DataMarks","addRowCss","hasCss","getItemNode","addMark","removeMark","getMark","clearCss","clearMark","DataMove","sid","tindex","tobj","new_id","newId","_externalData","_next_move_index","nid","new_index","getIndexById","$blockRender","moveUp","step","moveDown","moveTop","moveBottom","newdata","$template","externalData","rules","isEmail","isNumber","isChecked","isNotEmpty","ValidateData","clearValidation","elements","_clear_invalid","failed","_validate_details","isHidden","validateHidden","validateDisabled","$obj","_validate","$all","complexData","subresult","subview","input","validator","required","_mark_invalid","_pull","dp","getOnly","DataProcessor","masterId","autoupdate","updateFromResponse","operationName","trackMove","_ignore","_after_init_call","_updates","store","_promise","_waitSave","_onStoreUpdated","_onDataMove","ignore","off","on","_copy_data","_save_inner","_scheme_serialize","$parent","_invalid","_check_unique","_sendData","targetid","webix_move_index","webix_move_id","webix_move_parent","one","_in_progress","triggerId","wait","marked","to_send","tosave","precise_url","_scheme_save","_updatesData","_proxy_on_save","saveAll","processed","_processResult","_processError","attachProgress","_innerProcessResult","getItemState","setItemState","exists","changeId","undoOnError","undo","removeUndo","finalResult","_get_stack_index","DataStore","setDriver","_marks","_filter_order","recs","_inner_parse","_scheme_group","_group_processing","_not_grouped_order","_scheme_sort","subload","marks","_removeMissed","_scheme_update","_scheme_init","delid","endpos","_render_change_id","changeTrack","_skip_refresh","getRange","to","$min","startOffset","$max","endOffset","getIndexRange","sindex","_move_inner","scheme","_scheme","$save","$change","$update","$serialize","$group","$sort","_scheme_export","$export","serialize","_make_full_copy","oldpull","branch","_filter_branch","_extraParser","_datadriver_child","_set_child_scheme","unsync","_sync_source","sync_logic","_skip_next_sync","_sync_events","_back_sync_handler","data_size","original_index","clearAll","soft","getNextId","getFirstId","getLastId","getPrevId","by","as","parameters","_sort_core","sorter","sorting","pre","$freeze","neworder","_filter_reset","preserve","_filter_core","first","match","_filterMode","_obj_array","_methodPush","provideApi","eventable","onbeforesort","onaftersort","onbeforeadd","onafteradd","onbeforedelete","onafterdelete","ondataupdate","list","old_css","current_css","ids","_dir","_by","DataLoader","_feed_last","_call_onclearall","_call_on_config","feed","_feed","_load_count","_feed_common","_feed_on_load","_feed_callback","filterValue","loadNext","datathrottle","datafetch","_throttle_request","_maybe_loading_already","removeMissed_setter","_init_dataprocessor","save_setter","waitSave","many","scheme_setter","dataFeed_setter","filtervalue","urldata","_this4","_ready_was_used","DataState","cols_n","fillspace","_hidden_column_order","_last_sorted","_last_order","_filter_elements","_dtable_fully_ready","any_filter","_hidden_column_hash","_hidden_split","leftSplit","rightSplit","hihash","hideColumn","hikey","reorder","getColumnConfig","refreshColumns","_setColumnWidth","_updateColsSizeSettings","getColumnIndex","_sort","filterByAll","contentid","contentId","_active_headers","unselect","_select","DragItem","_initHandlers","$dragMark","_auto_scroll_force","drag_setter","_inner_drag_only","_drag_pause","$dropAllow","_target_to_id","_define_index","_context_to_move","getBranchIndex","getParentId","hash_id","fragile","$dragHTML","_toMultipleHTML","multiple","_marked","_remove_css","_add_css","$dropHTML","_set_drop_area","DragOrder","_close_branches","_drag_order_stored_left","_drag_order_complex","$level","_init_drop_area","_drag_direction","ofs","_marked_item_id","_header_height","ot","nt","_id","Undo","_undoHistory","_undoCursor","undo_setter","_init_undo","_draggedItem","$index","_addToHistory","_deletedItem","$branch","oldId","action","_skipHistory","_skipCursorInc","ignoreUndo","_undoAction","parentId","create_suggest","linkInput","getLabel","editValue","label","editors","init_suggest","editor","suggest","boxobj","checked","$inline","collection","rec","isplain","destroy","getPopup","$popup","createPopup","pobj","_linked","popupType","popupInit","moveSelection","color","date","_is_string","stringResult","combo","_create_suggest","_shared_suggest","_suggest","showPopup","getList","_initial_value","showItem","_last_input_target","afterRender","sobj","getItemText","getSuggestion","richselect","password","icons","multiselect","button","EditAbility","editaction","_editors","onDblClick","_refocus_inline_editor","editable","_init_edit_events_once","_refocus_try","newnode","_locateInput","editable_setter","_changeEditorId","edit","_reset_active_editor","_component_specific_edit_init","_handle_live_edits","liveEdit","_set_new_value","_show_editor_form","realform","_get_editor_type","_init_editor","_live_edits_handler","_on_editor_change","$fixEditor","globalState","edit_open_time","getEditorValue","_get_edit_config","_addEditor","_sizeToCell","_locate_cell","_removeEditor","focusEditor","ed","_edit_stop","cancel","_editStop","_for_each_editor","inline","_get_new_value","validateEditor","getEditState","editor_next","_find_cell_next","_after_edit_next","new_value","FlexLayout","_fix_vertical_layout","_beforeResetBorders","_afterResetBorders","g","_sizes","_padding","_set_child_size","st","margin","_margin","paddingTop","paddingBottom","paddingLeft","paddingRight","flexBasis","flexGrow","whs","GroupMethods","sum","summ","some","string","GroupStore","ungroup","_ungroupLevel","_not_grouped_pull","level","changed","$footer","_unregisterItem","_fix_group_levels","_group_prop_accessor","acc","missing","_group_tree","groups","labels","missed","misGroup","$row","_map_group","_fill_pull","topbranch","current_id","ancestor","newitem","_formath","footer","$count","Group","HTMLOptions","customRadio_setter","_moveSelection","_getInputNode","_blur","inp","getOption","optionIndex","addOption","removeOption","_setNextVisible","_getFirstActive","_filterOptions","_setOptionState","field","hideOption","showOption","disableOption","enableOption","HtmlMap","_key","_map","_areas","addRect","points","userdata","_createMapArea","addPoly","shape","coords","extra_data","addSector","alpha0","alpha1","R","ky","PI","cos","sin","querySelectorAll","nodes","nod","coordsdis","IdSpace","_get_self","_run_inner_init_logic","_run_after_inner_init_logic","innerId","onitemclick","KeysNavigation","_set_focusable_item","_set_item_focus","_navigation_helper","navigation","selected","x_layout","_parent_menu","_hide_sub_menu","_skip_item","getSubMenu","_mouse_move_activation","navigation_setter","_global_nav_grid_hotkeys","MapCollection","_create_scheme_init","_scheme_init_order","_build_data_map","_process_field_map","_process_single_map","getSource","dateStr","parseFormatDate","_map_options","_create_collection","options_view","_bind_collection","_map_header_options","refreshFilter","_bind_template","optionslist","multi","separator","MouseEvents","_clickstamp","_dbl_sensetive","_item_clicked","_mouse_action_extend","onClick","onContext","onMouseMove","_onClick","on_dblclick","_onDblClick","_onContext","on_mouse_move","_enable_mouse_move","_mouse_move_enabled","_onMouse","_mouse_move_timer","stamp","_mouseEvent","_onMouseMove","_onMouseOut","mouseEventDelay","pair","vid","wid","w_view","NavigationButtons","_moveActive","_showNavItem","_navPanel","_renderPanel","_renderNavItems","_renderNavButtons","_setLinkEventHandler","bindId","_linkAttr","_showPanelBind","_prevNavButton","_nextNavButton","inc","_active_cell","setActiveIndex","items","linkAttr","_clearPanel","buttons","aria","prevTab","OverlayBox","showOverlay","message","_overlay","hideOverlay","PagingAbility","pager_setter","pager","ui_pager","_count_pager_total","check_pager_sizes","repeat","autosize","getVisibleCount","page","_count_pager_index","$pagesize","_pager","$master","setPage","getPage","getPager","ProgressBar","_progress","showProgress","hideProgress","incss","_progress_animate","_progressTimer","clearInterval","setInterval","_progress_hide","RenderStack","_call_onclick","item_setter","type_setter","_toHTMLObject","search_id","txmin","txmax","tymin","tymax","_setItemActive","cont","_renderobj","Scrollable","_one_time_scroll","scroll_setter","auto","_refresh_scroll","_touch_scroll","overflowX","overflowY","_onoff_scroll","scrollSpeed","SelectionModel","_data_updated","_data_loaded","_data_filtered","_select_check","_id_changed","_set_noselect","loadBranch","$selected","_select_mark","need_unselect","sname","_silent_selection","unselectAll","_refresh_selection","ename","selectAll","isSelected","as_array","getSelectedItem","_is_mass_selection","_toHex","toHex","number","rgbToHex","rgb","hexToDec","hex","toRgb","rgbArr","lastIndexOf","hsvToRgb","hi","q","rgbToHsv","r0","g0","b0","min0","max0","joinAttributes","SVG","xmlns","version","viewBox","_handlers","cp0","cp1","radius","angle0","angle1","definePath","_linePoints","setOpacity","rawColor","opacity","rgbColor","_curvePoints","getPath","getSector","lines","getCurve","getLine","p0","p1","getCircle","getRect","paddingX","paddingY","eventRadius","Line","draw","getPoints","renderer","_applyColor","_getLinePoints","graph","_drawItems","_drawEventItems","styleMap","lineColor","webix_area","minValue","maxValue","unitX","yNum","unitY","ceil","Area","BaseLine","itemCss","Bar","negativeColor","_getOrigin","evPoints","_getEventPoints","evItems","barWidth","originY","Pie","_defColorsCursor","_defColors","_getColor","colorsCount","sectors","getAngles","x0","y0","_context","a1","a0","ratios","_getRatios","_getTotalValue","prevSum","totalValue","Spline","Base","linePoints","_getControlPoints","p2","defaultsArea","SplineArea","Sparklines","linePath","areaPoints","itemPoints","getTemplate","customConfig","slConstructor","_template","getData","sparklines","delimiter","sep","_split_clip_data","_substr_count","tline","quoted","chunk","substring","reg","TablePaste","_sel_to_clip","_clip_to_sel","_get_sel_text","mapSelection","row_ind","newvalue","block","leftTop","col_ind","TreeAPI","openAll","eachSubItem","closeAll","_tree_check_uncheck","threeState","_tree_check_uncheck_3","isBranchOpen","getOpenItems","_repeat_set_state","tree","TreeClick","webix_tree_open","webix_tree_close","webix_tree_checkbox","TreeDataLoader","_sync_hierarchy","_feed_commonA","_sync_to_order","TreeDataMove","_check_branch_child","_remove_childs","target_parent","$child","copy_data","tbranch","sbranch","_set_level_rec","TreeRenderStack","_toHTMLItem","_toHTMLItemObject","_toHTMLLevel","leaves","_tree_branch_render_state","leafs","getNextSiblingId","_branch_render_supported","TreeStateCheckbox","_init_render_tree_state","updated","_setThirdState","threeState_setter","parents","checkedParents","_getAllLeaves","_setParentThirdState","_setCheckboxIndeterminate","chElem","indeterminate","itemId","checkedCount","unsureCount","needrender","eachChild","getChecked","_correctThreeState","checkItem","uncheckItem","_checkUncheckAll","checkAll","uncheckAll","TreeStore","showSubItems","filterMode_setter","filterMode","_filter_branch_rec","child_run","openParents","newsub","eachOpen","_change_branch_id","branches","getPrevSiblingId","getFirstChildId","isBranch","parse_name","pItem","pBranch","webix_kids","parent_branch","itemid","_sync_each_child","getTopRange","eachLeaf","bset","pid","refresh_parent","_rec_remove","_filter_removed","out","TreeTablePaste","TreeType","checkbox","nocheckbox","folder","UploadDriver","$render","_upload_area","files","_stop_file","input_config","tabindex","accept","directory","webkitdirectory","mozdirectory","_add_files","_upload_timer_click","fileDialog","_directoryEntry","isDirectory","_directoryDrop","isFile","addFile","createReader","readEntries","entries","dataTransfer","webkitGetAsEntry","_last_file_context","inputs","_last_assigned_upload_callback","upload","formData","append","inputName","globalData","_get_active_url","$updateProgress","loaded","total","aborted","_file_complete","complete","_upload_complete","_complete","percent","stopUpload","abort","ValidateCollection","_validate_init_once","rules_setter","Values","_inner_setValues","_is_form_dirty","_values","$allowsClear","isDirty","getDirtyValues","_inner_getValues","getCleanValues","markInvalid","invalidMessage","invalid","setBottomText","VirtualRenderStack","_render_visible_rows","_unrendered_area","ind","_render_delayed","_wait_for_render","_create_placeholder","viewport","_max","_from","_height","_filled","holder","holder_row","nextpoint","loading","delta2","loadahead","_top","VRenderStack","_in_touch_scroll","_footer","_run_load_next","cid","conf","errorMessage","getDataHelper","raw","getExportScheme","treeColumn","h_count","f_count","isTable","rawValues","isTree","treeLines","_columns","flatTree","flatKey","fill","fillMode","noExport","rawColumn","sourceColumn","_columns_pull","export_mode","exportType","exportFormat","hcell","getHeaderContent","diff","getExportData","filterHTML","htmlFilter","docHeader","_headers","treeline","plainOutput","_spans_pull","getSpan","trim","footers","_footers","font","getBlob","pdf","blob","Blob","getPdfData","addPDFDoc","orientation","pdfjs","Document","_export_font","threshold","promises","html2canvas","background","logging","useCORS","canvas","image","toDataURL","binary_string","atob","bytes","charCodeAt","Image","buffer","images","viewOptions","textBefore","addText","addPDFTable","textAfter","pageBreak","addPDFHeader","ft","textAlign","dataExport","pageNumber","of","pageCount","horder","docHeaderImage","err","img","getAutowidth","colWidths","tableOps","lineHeight","borderColor","backgroundColor","headerRows","headerOps","borderRightColor","borderBottomColor","footerOps","toExcel","$exportView","dataOnly","exportData","getSpans","WBProps","getExcelData","xls","write","bookType","bookSST","str2array","buf","ArrayBuffer","boolean","ws","C","cell_ref","stringValue","isFormula","SSF","cellStyle","getStyles","encode_range","getRowHeights","hpt","getColumnsWidths","wscols","getHeaderSpans","xc","yc","sc","sr","usercall","modalbox","modal_key","keyboard","lastModalbox","modality","cover","onkeydown","_createBox","ok","_boxStructure","onclick","_box","containerWidth","containerHeight","alertPopup","confirmPopup","boxPopup","box_params","expire","timers","hideAll","wDate","startOnMonday","toFixed","ms","weekStart","getDay","datePart","monthStart","setDate","yearStart","setMonth","dayStart","dateToStr","utc","getMonth","getDate","getFullYear","calendar","dayShort","dayFull","monthShort","monthFull","getHours","getMinutes","pm","am","getSeconds","getMilliseconds","getISOWeek","strToDate","mask","splt","monthShort_hash","monthFull_hash","UTC","ndate","nday","first_thursday","year_number","ordinal_date","getTime","getUTCISOWeek","_correctDate","d0","checkFunc","incorrect","setHours","getYear","setYear","setMinutes","setSeconds","setMilliseconds","timePart","getTimezoneOffset","equal","isHoliday","day","Number","decimalSize","groupSize","dot","decimalDelimiter","groupDelimiter","decimal","sign","decimalOptional","int_value","numToStr","setLocale","locale","locales","priceSettings","_price_format","price","_price_settings","intFormat","priceFormat","numberFormat","dateFormat","timeFormat","longDateFormat","fullDateFormat","fileSize","hours","minutes","today","PDFviewer","automaticZoom","actualSize","pageFit","pageWidth","pageHeight","enterPassword","passwordError","increaseValue","decreaseValue","navMonth","navYear","navDecade","monthFormat","yearFormat","hourFormat","minuteFormat","removeItem","pages","headermenu","openGroup","closeGroup","closeTab","showTabs","resetTreeMap","navTreeMap","nextTab","multitextSection","multitextextraSection","showChart","hideChart","resizeChart","richtext","underline","bold","italic","comments","confirmMessage","placeholder","moreComments","storage","local","localStorage","setItem","session","sessionStorage","cookie","domain","expires","toUTCString","getRaw","check_name","a_all_cookies","a_temp_cookie","cookie_value","unescape","cookies","papers","fits","modes","portrait","landscape","_getHeaderFooter","patterns","phone","card","exit","$html","viewConfig","_pos","_fullscreen","_getHeadConfig","_parent","getActiveId","replaceChild","addView","_setSizes","_clearValues","error_key","RemoteContext","_proxy","_queue","_url","_process","getApi","_getProxy","remote","$key","$vars","_proxy_call","_call","args","_deffer","_start_queue","_timer","_run_queue","defs","$sync","$args","request","_pack","$context","pr","payload","scripts","new_orientation","datafilter","textWaitDelay","trackCells","getHelper","uncheck","checkValue","uncheckValue","component","registerFilter","_comp_id","_on_key_down","_filter_timer","compare","_get_data","emptyOption","option","_on_change","_collectValues","collectValues","collect","serverFilter","$server","textFilter","serverSelectFilter","selectFilter","numberFilter","prepare","equality","intvalue","_greater","_lesser","_equal","dateFilter","reverse","dateFormatDate","restore","factory","configOnly","_restore","$layout","serializer","childs","movePortlet","_parse_cells","_layout_sizes","_responsive","isolate","rows_setter","_vertical_orientation","_collection","cols_setter","whiteSpace","_beforeRemoveView","target_id","_insertBeforeView","verticalAlign","newui","removeView","reconstruct","_hiddencells","_signal_hidden_cells","showBatch","visibleBatch","batch","$nospace","_parse_cells_ext_end","_fix_container_borders","_bubble_size","vertical","fixed_count","_master_size","_desired_size","responsive","_set_child_size_a","ps","_set_size_delta","_set_size_gravity","_responsive_hide","_responsive_width","_responsive_height","_responsive_marker","_responsive_show","responsiveCell","_responsive_cells","oldIndex","_next","_first","_parse_cells_ext","_parse_once","defined","_hasBorders","_render_borders","correction","viewA","structure_changed","_cleanlayout","maxlength","s_inner","s_next","contrstyle","contrpadding","_margin_set","_padding_set","calendarCount","_correct_value","_zoom_level","_types","skinConf","cheight","cwidth","rheight","rwidth","basecss","_steps","events","_isInRange","monthSelect","timepicker","_footer_row","_after_init","value_setter","_cals","showCalendar","_changeDateSilent","_related_date","getVisibleDate","addToRange","_add_date","_string_to_date","_icons","_icons_template","icons_template","itemplate","isOutside","tomorrow","yesterday","cals","_cals_hash","_on_date_select","zoom","_before_zoom","_month_change","oldzoom","_after_zoom","_getIndexById","_time_mode","_zoom_logic","_changeStep","_shift","year","month","_changeDate","_set_time","reldate","vis","richSelectFilter","$webix","getText","marginLeft","$noEmptyOption","richconfig","inputtype","inputConfig","serverRichSelectFilter","multiSelectFilter","serverMultiSelectFilter","multiComboFilter","tagMode","serverMultiComboFilter","datepickerFilter","columnGroup","closed","isOpened","showColumnBatch","firstRun","groupText","dateRangeFilter","daterange","serverDateRangeFilter","_detectScrollSize","div","setSkin","_fixHeight","aniset","cloneNode","ani","animateView","stateHandler","getHTML","currentStyle","currentState","newState","tempParent","fullScreen","fix","onrotate","_template_types","_correct_width_scroll","section","onClick_setter","_render_me","_not_render_me","_probably_render_me","src_setter","content_setter","setHTML","setContent","_template_resize_timer","_get_auto_height","_resizeChildren","cx","cy","desired_size","self_sizes","scroll_size","_native_scroll","showView","topPos","getIframe","getWindow","contentWindow","panelClass","newview","collapsed_setter","panel","_skin_render_collapse","_accLastChild","_afterOpen","_canCollapse","_headlabel","_headbutton","header_setter","headerAlt_setter","fixedHeight","_getHeaderSize","headerHeight","webix_accordionitem_header","_toggle","webix_accordionitem_header_v","_collapse","sibl","expand","_expand","$noresize","headerAlt","headerAltHeight","_last_set_header_size","headerSize","_last_size_y","_key_property","_dragobj","_originobj","border","cursor","_moveev","_onmove","_upev","_onup","_last_result","eventPos","_rsDown","_rsUp","_getResizeDir","_rs_started","_resizer_dir","_resizer_dim","marginRight","marginBottom","_getResizerCells","_rs_process","_rsLimit","_rsStart","cellOffset","posParent","_rs_progress","_resizeStick","resizearea","_rsEnd","_rsResizeHandler","cDiff","limits","limitSizes","totalSize","_rsGetDiffCellSizes","_rsGetLimitCellSizes","_getRsCell","_resizerStick","_rsGetCellSizes","cell_size","size1","size2","styleDim","align_setter","_x_align","_y_align","_p_align","marginTop","_back_queue","_ask_render","cell_id","view_id","_render_hash","_render_queue","_render_activation","subcell","baselayout","_in_animation","cells_setter","_getDirection","vx","animation_options","getTabbar","_next_cell","callback_original","fitBiggest","other","back","viewId","getMultiview","_init_tabview_handlers","tabs","tabbar","mview","_layout","_initLayout","_fix_after_view_add","layoutProp","layoutConfig","_setScroll","getLayout","_nextCell","_size","showNext","showPrev","getActiveIndex","layoutSizes","selfSizes","setActive","selfSize","layoutType","_init_drag_area","_refreshChildScrolls","_restore_scroll_state","markDropArea","_markerbox","isv","_removeEmptySource","childview","maxcount","_portlet_drop_target","_portlet_drop_mode","evObj","_getPortletTarget","_markPortletDrag","drop","erx","ery","autoplace","gridColumns","gridRows","gridRows_setter","_actual_rows","abslayout","_do_compact","_check_default_pos","_buildMatrix","_isFree","exceed","_reserveSpace","_silent","sx","sy","_markMatrix","_canMoveRight","mx","_canMoveLeft","_canMoveTop","_compact","_apply_new_grid","my","compacted","cross","moveView","cellWidth","cellHeight","_getActualSize","_isDragNode","sview","dashboard","_addDragMarker","_dragMarker","_getPosFromCoords","rx","ry","external","inpos","dash","gridlayout","fx","_origin_cells","subcount","_save_data","_fill_data","datalayout","_point_element","_form_classname","_form_vertical","onbeforetabclick","onaftertabclick","onchange","elementsConfig","_rec_apply_settings","nextsettings","_default_height","$cssName","label_setter","_body_view","_last_body_size","labelWidth","labelAlign","_inputPadding","_inputSpacing","_labelTopHeight","labelPosition","lw","bottomLabel","_invalidMessage","fieldset","_tagname","_attribute","_get_html_value","tagname","_get_value","radio","textarea","selectedIndex","_set_html_value","_set_value","firstElementChild","_default_values","_copy_inner_content","_parse_inputs","cant_clear","nameWidth","on_render","on_edit","webix_property_check","registerType","elements_setter","_idToLine","alter_type","_data_width","_clear","_props_dataset","els","weekHeader","monthHeader","weekNumber","skipEmptyWeeks","calendarHeader","DateHelper","minuteStep","timeIcon","timepickerHeight","dayTemplate","dayTemplate_setter","calendarHeader_setter","calendarTime_setter","_calendarTime","date_setter","maxDate_setter","minDate_setter","minTime_setter","parseTimeFormatDate","maxTime_setter","_ariaFocus","relatedTarget","_locate_day","_locate_date","_special_dates","_selected_days","minuteStep_setter","_zoom_in","_fixed","_getDateBoundaries","_rows","_content_padding","getSelectedDate","_keyshift","_set_date_bounds","days","_month","_start","_getColumnConfigSizes","bounds","_columnsHeight","_columnsWidth","columnsNumber","rowsNumber","icons_setter","_icons2","_zoom_size","_current_time","cpad","_week_template","_body_template","_timepicker_template","_changeZoomLevel","calendarTime","timeFormatStr","clock","tpl","range_date","week_template","calendarWeekHeader","day_index","blockDates_setter","_day_css","_checkDate","_selectedDay","sqSize","alabel","_getCalSizesString","_changeDateInternal","_update_zoom_level","_isBlocked","isBlocked","minHour","minTime","maxHour","maxTime","minMinute","maxMinute","blockTime","_setContent","_findActive","newdate","selectDate","blocked","minDate","maxDate","minYear","maxYear","_getTitle","_getContent","_zoom_start_date","setFullYear","_correctBlockedTime","sections","zlogic","_reserve_box_height","_reserve_box_width","timeColNum","enLocale","_timeHeaderTemplate","_timeButtonsTemplate","w2","_mode_selected","_selectDate","cind","rind","webix_cal_prev_button","webix_cal_next_button","webix_cal_day_disabled","webix_cal_outside","webix_cal_day","webix_cal_time","webix_range_time_start","webix_range_time_end","webix_cal_done","webix_cal_month_name","webix_cal_block","blockedDate","blockDates","palette","minLightness","maxLightness","_findIndex","pal","_getBox","$prepareValue","$setValue","_selectBox","_getSelectBox","lastChild","_initPalette","numToHex","hslToRgb","l","hue2rgb","colors","colorRows","colorStep","lightStep","colorRange","renderGrayBar","colCount","gray","lt","itemTpl","firstRow","renderRow","rowHtml","$renderInput","badge","awidth","aheight","_pattern","_set_default_css","_calc_size","hotkey_setter","control","_addElementHotKey","_get_class","webix_danger","webix_transparent","webix_primary","_set_inner_size","imageTop","iconTop","_findAllInputs","tagNames","_disabledTabIndex","$compareValue","_rendered_input","$getValue","_sqrt_2","autowidth","_calck_input_size","_input_width","inputWidth","_input_height","_inputHeight","bheight","dheight","handle","cssFloat","_handle_tab_click","opt","webix_all_segments","webix_all_tabs","webix_inp_counter_next","webix_inp_counter_prev","webix_input_icon","webix_inp_checkbox_border","toggle","webix_inp_checkbox_label","webix_inp_radio_border","webix_tab_more_icon","webix_tab_close","_check_options","_get_div_placeholder","nav_controls","TextPattern","pattern","format_setter","_custom_format","_on_key_pressed","_after_render","_getRawValue","_matchPattern","pattern_setter","_patternScheme","_init_validation","_pattern_chars","_pattern_allows","_property_stamp","chars","_pattern_scheme","_getCaretPos","_input_code","_fixCaretPos","rawIndex","rawLength","rchar","icode","nind","lind","_init_onchange","_onBlur","$renderIcon","addSection","relatedView_setter","relatedAction","viewid","relatedView","validateEvent_setter","bottomLabel_setter","bottomPadding","_getInvalidText","_restorePadding","heightInc","_get_input_width","iconWidth","_render_div_block","inputAlign","_baseInputHTML","$renderLabel","_getLabelHeight","div_start","setValueHere","symbol","suggest_setter","DataCollection","optview","options_setter","rightlabel","labelRight","ch","customCheckbox_setter","eachid","isDisabled","optlabel","rd","focusable","newline","_init_popup","_prepareSingleValue","timeMode","_formatDate","_get_visible_text","_get_visible_text_single","_formatStr","fullDateFormatStr","_set_visible_text","_get_value_single","timeFormatDate","fullDateFormatDate","formatStr","parseTimeFormatStr","_getColorNode","datepicker","popupWidth","_revertValue","_suggest_config","_reset_value","dynamic","_ignoreLabelClick","_show_view","optionWidth","tabbarPopup","isPressed","onLabel","offLabel","onIcon","offIcon","getValueHere","_full_value","_subs","seg","removeSection","_subOnChange","newConfig","subConfig","newone","_listClassName","_auto_resize","dynamic_setter","webix_list_item","_no_animation","_one_height","_auto_height_calc","getUnits","_auto_width_calc","yCount","widthSize","heightSize","classname","webix_selected","disableItem","_set_item_disabled","enableItem","isItemEnabled","isobj","buttonText","fitMaster","$checked","keepText","tagTemplate","_render_value_block","_removeValue","newValues","_click_stamp","_addNewValue","_inputValue","_addValue","newValue","isObj","$customWidth","_dont_unfilter","_suggest_after_filter","inputStyle","inputValue","readOnly","_inputWidth","_getValueListBox","textArr","_toMultiValue","listbox","_getMultiComboInputWidth","_resizeToContent","_focusAtEnd","inputEl","FieldRange","elemLen","inputDiv","_getInputDiv","cHeight","topView","calcHeight","_typing","_enter","_getSelectedOptions","_valueHistory","_calcInputWidth","tmp","calcWidth","_windowHeight","getItemId","_backspaceTime","moveTitle","_handle_id","title_setter","_get_slider_handle","corner1","_sliderPadding","corner2","cornerStr","sizeStr","_sliderHandleWidth","_sliderBorder","part","_set_title","half","pos1","pos2","_set_value_now","_on_mouse_down_start","_handle_move_keyboard","_activeIndex","_handle_drag_events","_mouse_down_process","_start_value","_start_handle_dnd","_get_value_from_event","_handle_move_process","_handle_move_stop","touchContext","ax","_get_value_from_pos","corner","handles","_get_left_pos","_set_left_pos","_set_value_pos","handle0","handle1","left0","left1","parentBox","_title_hidden","_hide_title","sibling","_set_title_n","_set_handle_active","hActive","pos0","slider","_calck_switch_size","_switchWidth","_switchHeight","onWidth","offWidth","topOffset","bottomOffset","tabMinWidth","tabMoreWidth","_getTabbarSizes","totalWidth","limitWidth","popupTemplate","_popupInnerClick","moreTemplate_setter","popupTemplate_setter","moreTemplate","leafWidth","resultHTML","verticalOffset","selectedTab","lastTab","_getTabHTML","_tabTemplate","segmented","_setLayout","_button","_add_data","editField","onAfterRender","_updateValue","_getselection","webix_richtext_editor","editorToolbar","rangeCount","queryCommandState","_execCommandOnElement","commandName","selText","anchorNode","focusNode","getRangeAt","isCollapsed","textValue","textContent","focusEl","focustext","anchorOffset","wordBegining","wordEnd","startWord","endWord","setStart","setEnd","removeAllRanges","addRange","execCommand","removeIcon","fileName","uploader","autosend","apiOnly_setter","link_setter","_format_size","file_struct","sizetext","webkitRelativePath","urlData","subline","addDropZone","hover_text","extra_css","fullcss","timer","isUploaded","$onUploadComplete","filter_setter","_show_on_key_press","etemp","_get_extendable_cell","_set_on_popup_click","_show_selection","_old_text","_get_details","_preselectMasterOption","$setValueHere","setMasterValue","_set_input_value","getMasterValue","input_setter","webix_master_id","_suggestions","_non_ui_mode","_tab_key","_escape_key","$enterKey","_navigate","isContentEditable","_last_delay","_resolve_popup","innerText","_before_filtering","visible","onItemClick","_toggleOption","getButton","onChange","_is_all_selected","_onReady","multisuggest","autoConfig","_getText","grid","_last_cursor_pos","_setValue","formatDate","iValue","_formatValue","getInput","setSheets","scrollPos","scrollVisible","_onscroll","_check_quantum","scrollWidth_setter","scrollHeight_setter","sizeTo","pointerEvents","getScroll","_onscroll_inner","activeArea","x_mode","_x_scroll_mode","_on_wheel","_add_touch_events","pointerType","_start_scroll_pos","deltaMode","deltaX","deltaY","_scroll_trg","Mixin","_init_areaselect","_arSelCheckKeys","_areaSelStorage","refreshSelectArea","_setTabindex","_areaSelHiddenIndex","_excludeColumnFromAreas","_bs_do_select","stopped","addSelectArea","_activeAreaSName","removeSelectArea","_span_correct_range","_ars_down","_block_sel_flag","_updateSelectArea","_extendAreaRange","sci","eci","sri","eri","ci","ri","iri","ici","_extendAreaToData","bsUpdate","areaselect_setter","i0","i1","j0","j1","_lastDefArea","_selected_areas","_renderSelectAreaBox","_render_scroll_shift","xr","yr","center","_render_full_rows","_get_x_range","_get_y_range","_rselect_box","_rselect_box_left","_rselect_box_right","_calcAreaSelectIndexes","startIndex","endIndex","r1","_render_scroll_top","_getSelectAreaCellPositions","c0","c1","_rightSplit","_setSelectAreaBorders","startColumn","endColumn","endPos","splitPos","handleBox","handlePos","_getTopSplitOffset","renderArea","skipLeft","skipRight","bName","hor","borders","_removeAreaNodes","removeNodes","xCorrStart","_left_width","xCorrEnd","_bs_ready","_bs_position","_bs_start","_bs_progress","_bs_select","getSelectArea","getAllSelectAreas","inner_call","spanR0","spanC0","minR0","minC0","maxR1","maxC1","oldv","removeOnly","server","isColumnVisible","originvalue","inputvalue","_multi_compare","_runServerFilter","itemValue","getFilter","checks","lineId","hover_setter","_hover_initialized","experimental","_last_hover","removeRowCss","hover","select_setter","_selections","_commonselect","_select_css","_reinit_selection","webix_cell","_click_before_select","_data_cleared","_data_synced","_selected_rows","_select_key","_selected_pull","asArray","plain","_id_to_string","_unselect","_clear_selection","_finalize_select","_post_select","clearSelection","selectRange","_post_unselect","_add_item_select","_selectRange","_mapSelection","$printView","_beforePrint","paper","_checkOptions","_print","canvases","destCtx","drawImage","_afterPrint","level_in","level_out","single","instance","_reinit","wrap","msToBlob","toBlob","getCsvData","fontName","TTFFont","alert","submit"],"mappings":"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"}