{"version":3,"file":"js/chunk-vendors-56bdb96b.e236f019.js","mappings":"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","sources":["webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/core/Component.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/core/Container.js"],"sourcesContent":["import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"./Container\";\r\nimport { List, ListDisposer } from \"./utils/List\";\r\nimport { OrderedListTemplate } from \"./utils/SortedList\";\r\nimport { Dictionary } from \"./utils/Dictionary\";\r\nimport { Disposer, MultiDisposer } from \"./utils/Disposer\";\r\nimport { DataSource } from \"./data/DataSource\";\r\nimport { Responsive } from \"./utils/Responsive\";\r\nimport { system } from \"./System\";\r\nimport { DataItem } from \"./DataItem\";\r\nimport { registry } from \"./Registry\";\r\nimport * as $math from \"./utils/Math\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $ease from \"./utils/Ease\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $iter from \"./utils/Iterator\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A Component represents an independent functional element or control, that\r\n * can have it's own behavior, children, data, etc.\r\n *\r\n * A few examples of a Component: [[Legend]], [[Series]], [[Scrollbar]].\r\n *\r\n * @see {@link IComponentEvents} for a list of available events\r\n * @see {@link IComponentAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar Component = /** @class */ (function (_super) {\r\n __extends(Component, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Component() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Holds data field names.\r\n *\r\n * Data fields define connection beween [[DataItem]] and actual properties\r\n * in raw data.\r\n */\r\n _this.dataFields = {};\r\n /**\r\n * A list of [[DataSource]] definitions of external data source.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._dataSources = {};\r\n /**\r\n * This is used when only new data is invalidated (if added using `addData`\r\n * method).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._parseDataFrom = 0;\r\n /**\r\n * Holds the disposers for the dataItems and dataUsers\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._dataDisposers = [];\r\n /**\r\n * Currently selected \"data set\".\r\n *\r\n * If it's set to `\"\"`, main data set (unaggregated data) is used.\r\n */\r\n _this._currentDataSetId = \"\";\r\n /**\r\n * [_start description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._start = 0;\r\n /**\r\n * [_end description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._end = 1;\r\n /**\r\n * If set to `true`, changing data range in element will not trigger\r\n * `daterangechanged` event.\r\n */\r\n _this.skipRangeEvent = false;\r\n /**\r\n * Whenever selected scope changes (chart is zoomed or panned), for example\r\n * by interaction from a Scrollbar, or API, a chart needs to reposition\r\n * its contents.\r\n *\r\n * `rangeChangeDuration` influences how this is performed.\r\n *\r\n * If set to zero (0), the change will happen instantenously.\r\n *\r\n * If set to non-zero value, the chart will gradually animate into new\r\n * position for the set amount of milliseconds.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.rangeChangeDuration = 0;\r\n /**\r\n * An easing function to use for range change animation.\r\n *\r\n * @see {@link Ease}\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.rangeChangeEasing = $ease.cubicOut;\r\n /**\r\n * A duration (ms) of each data parsing step. A Component parses its data in\r\n * chunks in order to avoid completely freezing the machine when large data\r\n * sets are used. This setting will control how many milliseconds should pass\r\n * when parsing data until parser stops for a brief moment to let other\r\n * processes catch up.\r\n */\r\n _this.parsingStepDuration = 50;\r\n /**\r\n * [dataInvalid description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.dataInvalid = false;\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.rawDataInvalid = false;\r\n /**\r\n * [dataRangeInvalid description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.dataRangeInvalid = false;\r\n /**\r\n * [dataItemsInvalid description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.dataItemsInvalid = false;\r\n /**\r\n * If set to a non-zero number the element will \"animate\" data values of its\r\n * children.\r\n *\r\n * This will happen on first load and whenever data values change.\r\n *\r\n * Enabling interpolation will mean that elements will transit smoothly into\r\n * new values rather than updating instantly.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.interpolationDuration = 0;\r\n /**\r\n * An easing function to use for interpolating values when transiting from\r\n * one source value to another.\r\n *\r\n * @default cubicOut\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n * @see {@link Ease}\r\n */\r\n _this.interpolationEasing = $ease.cubicOut;\r\n /**\r\n * Indicates whether transition between data item's values should start and\r\n * play out all at once, or with a small delay (as defined by\r\n * `sequencedInterpolationDelay`) for each subsequent data item.\r\n *\r\n * @default true\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.sequencedInterpolation = true;\r\n /**\r\n * A delay (ms) to wait between animating each subsequent data item's\r\n * interpolation animation.\r\n *\r\n * Relative only if `sequencedInterpolation = true`.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.sequencedInterpolationDelay = 0;\r\n /**\r\n * A progress (0-1) for the data validation process.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.dataValidationProgress = 0;\r\n _this._addAllDataItems = true;\r\n _this._usesData = true;\r\n _this.className = \"Component\";\r\n _this.minZoomCount = 1;\r\n _this.maxZoomCount = 0;\r\n _this._dataItems = new OrderedListTemplate(_this.createDataItem());\r\n _this._dataItems.events.on(\"inserted\", _this.handleDataItemAdded, _this, false);\r\n _this._dataItems.events.on(\"removed\", _this.handleDataItemRemoved, _this, false);\r\n _this._disposers.push(new ListDisposer(_this._dataItems));\r\n _this._disposers.push(_this._dataItems.template);\r\n _this.invalidateData();\r\n // TODO what about remove ?\r\n _this.dataUsers.events.on(\"inserted\", _this.handleDataUserAdded, _this, false);\r\n // Set up disposers\r\n _this._disposers.push(new MultiDisposer(_this._dataDisposers));\r\n _this._start = 0;\r\n _this._end = 1;\r\n _this.maxZoomDeclination = 1;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n Component.prototype.createDataItem = function () {\r\n return new DataItem();\r\n };\r\n /**\r\n * [handleDataUserAdded description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param event Event object\r\n */\r\n Component.prototype.handleDataUserAdded = function (event) {\r\n var dataUser = event.newValue;\r\n dataUser.dataProvider = this;\r\n };\r\n /**\r\n * [handleDataItemValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.handleDataItemValueChange = function (dataItem, name) {\r\n if (!this.dataItemsInvalid) {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\r\n };\r\n /**\r\n * [handleDataItemWorkingLocationChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.handleDataItemWorkingLocationChange = function (dataItem, name) {\r\n };\r\n /**\r\n * [handleDataItemCalculatedValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.handleDataItemCalculatedValueChange = function (dataItem, name) {\r\n };\r\n /**\r\n * [handleDataItemPropertyChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.handleDataItemPropertyChange = function (dataItem, name) {\r\n };\r\n /**\r\n * Populates a [[DataItem]] width data from data source.\r\n *\r\n * Loops through all the fields and if such a field is found in raw data\r\n * object, a corresponding value on passed in `dataItem` is set.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item\r\n */\r\n Component.prototype.processDataItem = function (dataItem, dataContext) {\r\n var _this = this;\r\n if (dataItem) {\r\n if (!dataContext) {\r\n dataContext = {};\r\n }\r\n // store reference to original data item\r\n dataItem.dataContext = dataContext;\r\n var hasSomeValues_1 = false;\r\n $object.each(this.dataFields, function (key, fieldValue) {\r\n var fieldName = key;\r\n var value = dataContext[fieldValue];\r\n // Apply adapters to a retrieved value\r\n if (_this._adapterO) {\r\n if (_this._adapterO.isEnabled(\"dataContextValue\")) {\r\n value = _this._adapterO.apply(\"dataContextValue\", {\r\n field: fieldName,\r\n value: value,\r\n dataItem: dataItem\r\n }).value;\r\n }\r\n }\r\n if ($type.hasValue(value)) {\r\n hasSomeValues_1 = true;\r\n if (dataItem.hasChildren[fieldName]) {\r\n var template = _this.createDataItem();\r\n template.copyFrom(_this.mainDataSet.template);\r\n var children = new OrderedListTemplate(template);\r\n children.events.on(\"inserted\", _this.handleDataItemAdded, _this, false);\r\n children.events.on(\"removed\", _this.handleDataItemRemoved, _this, false);\r\n _this._dataDisposers.push(new ListDisposer(children));\r\n var count = value.length;\r\n for (var i = 0; i < count; i++) {\r\n var rawDataItem = value[i];\r\n var childDataItem = children.create();\r\n childDataItem.parent = dataItem;\r\n _this.processDataItem(childDataItem, rawDataItem);\r\n }\r\n var anyDataItem = dataItem;\r\n anyDataItem[fieldName] = children;\r\n }\r\n else {\r\n // data is converted to numbers/dates in each dataItem\r\n dataItem[fieldName] = value;\r\n }\r\n }\r\n });\r\n $object.each(this.propertyFields, function (key, fieldValue) {\r\n var f = key;\r\n var value = dataContext[fieldValue];\r\n if ($type.hasValue(value)) {\r\n hasSomeValues_1 = true;\r\n dataItem.setProperty(f, value);\r\n }\r\n });\r\n // @todo we might need some flag which would tell whether we should create empty data items or not.\r\n if (!this._addAllDataItems && !hasSomeValues_1) {\r\n this.mainDataSet.remove(dataItem);\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n * When validating raw data, instead of processing data item, we update it\r\n *\r\n * @ignore Exclude from docs\r\n * @param item\r\n */\r\n Component.prototype.updateDataItem = function (dataItem) {\r\n var _this = this;\r\n if (dataItem) {\r\n var dataContext_1 = dataItem.dataContext;\r\n $object.each(this.dataFields, function (key, fieldValue) {\r\n var fieldName = key;\r\n var value = dataContext_1[fieldValue];\r\n // Apply adapters to a retrieved value\r\n if (_this._adapterO) {\r\n value = _this._adapterO.apply(\"dataContextValue\", {\r\n field: fieldName,\r\n value: value,\r\n dataItem: dataItem\r\n }).value;\r\n }\r\n if ($type.hasValue(value)) {\r\n if (dataItem.hasChildren[fieldName]) {\r\n var anyDataItem = dataItem;\r\n var children = (anyDataItem[fieldName]);\r\n children.each(function (child) {\r\n _this.updateDataItem(child);\r\n });\r\n }\r\n else {\r\n // data is converted to numbers/dates in each dataItem\t\t\t\t\t\r\n dataItem[fieldName] = value;\r\n }\r\n }\r\n });\r\n $object.each(this.propertyFields, function (key, fieldValue) {\r\n var f = key;\r\n var value = dataContext_1[fieldValue];\r\n if ($type.hasValue(value)) {\r\n dataItem.setProperty(f, value);\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * [validateDataElements description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.validateDataElements = function () {\r\n var count = this.endIndex;\r\n for (var i = this.startIndex; i < count; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n // TODO is this correct\r\n if (dataItem) {\r\n this.validateDataElement(dataItem);\r\n }\r\n }\r\n };\r\n /**\r\n * Validates this element and its related elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.validate = function () {\r\n this.validateDataElements();\r\n _super.prototype.validate.call(this);\r\n };\r\n /**\r\n * [validateDataElement description]\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem [description]\r\n */\r\n Component.prototype.validateDataElement = function (dataItem) {\r\n };\r\n /**\r\n * Adds one or several (array) of data items to the existing data.\r\n *\r\n * @param rawDataItem One or many raw data item objects\r\n */\r\n Component.prototype.addData = function (rawDataItem, removeCount, skipRaw) {\r\n var _this = this;\r\n // need to check if data is invalid, as addData might be called multiple times\r\n if (!this.dataInvalid && this.inited) {\r\n this._parseDataFrom = this.data.length; // save length of parsed data\r\n }\r\n if (!skipRaw) {\r\n if (rawDataItem instanceof Array) {\r\n // can't use concat because new array is returned\r\n $array.each(rawDataItem, function (dataItem) {\r\n _this.data.push(dataItem);\r\n });\r\n }\r\n else {\r\n this.data.push(rawDataItem); // add to raw data array\r\n }\r\n }\r\n if (this.inited) {\r\n this.removeData(removeCount, skipRaw);\r\n }\r\n else {\r\n if ($type.isNumber(removeCount)) {\r\n while (removeCount > 0) {\r\n this.data.shift();\r\n removeCount--;\r\n }\r\n }\r\n }\r\n this.invalidateData();\r\n };\r\n /**\r\n * Removes elements from the beginning of data\r\n *\r\n * @param count number of elements to remove\r\n */\r\n Component.prototype.removeData = function (count, skipRaw) {\r\n if ($type.isNumber(count) && count > 0) {\r\n while (count > 0) {\r\n var dataItem = this.mainDataSet.getIndex(0);\r\n if (dataItem) {\r\n this.mainDataSet.remove(dataItem);\r\n }\r\n this.dataUsers.each(function (dataUser) {\r\n if (!dataUser.data || dataUser.data.length == 0) {\r\n var dataItem_1 = dataUser.mainDataSet.getIndex(0);\r\n if (dataItem_1) {\r\n dataUser.mainDataSet.remove(dataItem_1);\r\n }\r\n }\r\n });\r\n if (!skipRaw) {\r\n this.data.shift();\r\n }\r\n if (this._parseDataFrom > 0) {\r\n this._parseDataFrom--;\r\n }\r\n count--;\r\n }\r\n // changed from invalidateData since 4.7.19 to solve #51551\r\n this.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * Triggers a data (re)parsing.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.invalidateData = function () {\r\n if (this.disabled || this.isTemplate) {\r\n return;\r\n }\r\n //if(!this.dataInvalid){\r\n registry.addToInvalidComponents(this);\r\n system.requestFrame();\r\n this.dataInvalid = true;\r\n $iter.each(this.dataUsers.iterator(), function (x) {\r\n x.invalidateDataItems();\r\n });\r\n //}\r\n };\r\n /**\r\n * [invalidateDataUsers description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.invalidateDataUsers = function () {\r\n $iter.each(this.dataUsers.iterator(), function (x) {\r\n x.invalidate();\r\n });\r\n };\r\n /**\r\n * Invalidates data values. When data array is not changed, but values within\r\n * it changes, we invalidate data so that component would process changes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.invalidateDataItems = function () {\r\n if (this.disabled || this.isTemplate) {\r\n return;\r\n }\r\n //if(!this.dataItemsInvalid){\r\n $array.move(registry.invalidDataItems, this);\r\n system.requestFrame();\r\n this.dataItemsInvalid = true;\r\n $iter.each(this.dataUsers.iterator(), function (x) {\r\n x.invalidateDataItems();\r\n });\r\n //}\r\n };\r\n /**\r\n * Invalidates data range. This is done when data which must be shown\r\n * changes (chart is zoomed for example).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.invalidateDataRange = function () {\r\n if (this.disabled || this.isTemplate) {\r\n return;\r\n }\r\n //if(!this.dataRangeInvalid){\r\n this.dataRangeInvalid = true;\r\n $array.move(registry.invalidDataRange, this);\r\n system.requestFrame();\r\n //}\r\n };\r\n /**\r\n * Processes data range.\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.validateDataRange = function () {\r\n $array.remove(registry.invalidDataRange, this);\r\n this.dataRangeInvalid = false;\r\n if (this.startIndex != this._prevStartIndex || this.endIndex != this._prevEndIndex) {\r\n this.rangeChangeUpdate();\r\n this.appendDataItems();\r\n this.invalidate();\r\n this.dispatchImmediately(\"datarangechanged\");\r\n }\r\n };\r\n /**\r\n * [sliceData description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.sliceData = function () {\r\n this._workingStartIndex = this.startIndex;\r\n this._workingEndIndex = this.endIndex;\r\n };\r\n /**\r\n * [rangeChangeUpdate description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.rangeChangeUpdate = function () {\r\n this.sliceData();\r\n this._prevStartIndex = this.startIndex;\r\n this._prevEndIndex = this.endIndex;\r\n };\r\n /**\r\n * [appendDataItems description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.appendDataItems = function () {\r\n // TODO use an iterator instead\r\n var count = this.endIndex;\r\n for (var i = this.startIndex; i < count; i++) {\r\n // data item\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n dataItem.__disabled = false;\r\n }\r\n }\r\n for (var i = 0; i < this.startIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n dataItem.__disabled = true;\r\n }\r\n }\r\n for (var i = this.endIndex; i < this.dataItems.length; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n dataItem.__disabled = true;\r\n }\r\n }\r\n };\r\n /**\r\n * If you want to have a smooth transition from one data values to another, you change your raw data and then you must call this method.\r\n * then instead of redrawing everything, the chart will check raw data and smoothly transit from previous to new data\r\n */\r\n Component.prototype.invalidateRawData = function () {\r\n if (this.disabled || this.isTemplate) {\r\n return;\r\n }\r\n //if(!this.rawDataInvalid){\r\n $array.move(registry.invalidRawDatas, this);\r\n system.requestFrame();\r\n this.rawDataInvalid = true;\r\n $iter.each(this.dataUsers.iterator(), function (x) {\r\n x.invalidateRawData();\r\n });\r\n //}\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Component.prototype.validateRawData = function () {\r\n var _this = this;\r\n $array.remove(registry.invalidRawDatas, this);\r\n $iter.each(this.mainDataSet.iterator(), function (dataItem) {\r\n if (dataItem) {\r\n _this.updateDataItem(dataItem);\r\n }\r\n });\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n Component.prototype.dispose = function () {\r\n var _this = this;\r\n this.mainDataSet.template.clones.clear();\r\n $object.each(this._dataSources, function (key, source) {\r\n _this.removeDispose(source);\r\n });\r\n this.disposeData();\r\n _super.prototype.dispose.call(this);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Component.prototype.disposeData = function () {\r\n this.mainDataSet.template.clones.clear();\r\n $array.each(this._dataDisposers, function (x) {\r\n x.dispose();\r\n });\r\n // and for all components\r\n $iter.each(this.dataUsers.iterator(), function (dataUser) {\r\n dataUser.disposeData();\r\n });\r\n this._dataDisposers.length = 0;\r\n this._startIndex = undefined;\r\n this._endIndex = undefined;\r\n // dispose old\r\n this.mainDataSet.clear();\r\n this.mainDataSet.template.clones.clear();\r\n if (this._dataSets) {\r\n this._dataSets.clear();\r\n }\r\n };\r\n Component.prototype.getDataItem = function (dataContext) {\r\n return this.mainDataSet.create();\r\n };\r\n /**\r\n * Validates (processes) data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.validateData = function () {\r\n this.dispatchImmediately(\"beforedatavalidated\");\r\n this.dataInvalid = false;\r\n registry.removeFromInvalidComponents(this);\r\n if (this.__disabled) {\r\n return;\r\n }\r\n this.dataValidationProgress = 0;\r\n // need this to slice new data\r\n this._prevStartIndex = undefined;\r\n this._prevEndIndex = undefined;\r\n // todo: this needs some overthinking, maybe some extra settings like zoomOotonDataupdate like in v3 or so. some charts like pie chart probably should act like this always\r\n this._startIndex = undefined;\r\n this._endIndex = undefined;\r\n if (this.dataFields.data && this.dataItem) {\r\n var dataContext = this.dataItem.dataContext;\r\n this._data = dataContext[this.dataFields.data];\r\n }\r\n // data items array is reset only if all data is validated, if _parseDataFrom is not 0, we append new data only\r\n // check heatmap demo if uncommented\r\n // fixed both issues by adding && this.data.length > 0\r\n // check adding series example if changed\r\n if (this._parseDataFrom === 0 && this.data.length > 0) {\r\n this.disposeData();\r\n }\r\n if (this.data.length > 0) {\r\n var preloader = this.preloader;\r\n // and for all components\r\n $iter.each(this.dataUsers.iterator(), function (dataUser) {\r\n // todo: this needs some overthinking, maybe some extra settings like zoomOUtonDataupdate like in v3 or so. some charts like pie chart probably should act like this always\r\n dataUser._startIndex = undefined;\r\n dataUser._endIndex = undefined;\r\n });\r\n var counter = 0;\r\n var startTime = Date.now();\r\n // parse data\r\n var i = this._parseDataFrom;\r\n var n = this.data.length;\r\n var _loop_1 = function () {\r\n var rawDataItem = this_1.data[i];\r\n if (this_1._usesData) {\r\n var dataItem = this_1.getDataItem(rawDataItem);\r\n this_1.processDataItem(dataItem, rawDataItem);\r\n }\r\n this_1.dataUsers.each(function (dataUser) {\r\n if (dataUser.data.length == 0) { // checking if data is not set directly\r\n var dataUserDataItem = dataUser.getDataItem(rawDataItem);\r\n dataUser.processDataItem(dataUserDataItem, rawDataItem);\r\n }\r\n });\r\n counter++;\r\n // show preloader if this takes too many time\r\n if (counter == 100) { // no need to check it on each data item\r\n counter = 0;\r\n var elapsed = Date.now() - startTime;\r\n if (elapsed > this_1.parsingStepDuration) {\r\n if (i < this_1.data.length - 10) {\r\n this_1._parseDataFrom = i + 1;\r\n // update preloader\r\n if (preloader) {\r\n if (i / this_1.data.length > 0.5 && !preloader.visible) {\r\n // do not start showing\r\n }\r\n else {\r\n preloader.progress = i / this_1.data.length;\r\n }\r\n }\r\n this_1.dataValidationProgress = i / this_1.data.length;\r\n i = this_1.data.length; // stops cycle\r\n this_1.invalidateData();\r\n return { value: void 0 };\r\n }\r\n }\r\n }\r\n };\r\n var this_1 = this;\r\n for (i; i < n; i++) {\r\n var state_1 = _loop_1();\r\n if (typeof state_1 === \"object\")\r\n return state_1.value;\r\n }\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n this.dataUsers.each(function (dataUser) {\r\n if (dataUser.hidden || (dataUser.appeared && !dataUser.visible && dataUser.stacked)) {\r\n dataUser.hide(0);\r\n }\r\n });\r\n }\r\n this.dataValidationProgress = 1;\r\n this._parseDataFrom = 0; // reset this index, it is set to dataItems.length if addData() method was used.\r\n this.invalidateDataItems();\r\n if (!this._internalDefaultsApplied) {\r\n this.applyInternalDefaults();\r\n }\r\n this.dispatch(\"datavalidated\"); // can't zoom chart if dispatched immediately\r\n };\r\n /**\r\n * Validates (processes) data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.validateDataItems = function () {\r\n $array.remove(registry.invalidDataItems, this);\r\n this.dataItemsInvalid = false;\r\n this.invalidateDataRange();\r\n this.invalidate();\r\n this.dispatch(\"dataitemsvalidated\");\r\n };\r\n Object.defineProperty(Component.prototype, \"data\", {\r\n /**\r\n * Returns element's source (raw) data.\r\n *\r\n * @return Data\r\n */\r\n get: function () {\r\n if (!this._data) {\r\n this._data = [];\r\n }\r\n if (!this._adapterO) {\r\n return this._data;\r\n }\r\n else {\r\n return this._adapterO.apply(\"data\", this._data);\r\n }\r\n },\r\n /**\r\n * Sets source (raw) data for the element. The \"data\" is always an `Array`\r\n * of objects.\r\n *\r\n * IMPORTANT: The order of data items in `data` array is important as it\r\n * might affect chart look and behavior. [More details](https://www.amcharts.com/docs/v4/concepts/data/#Order_of_data_items).\r\n *\r\n * @param value Data\r\n */\r\n set: function (value) {\r\n this.setData(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Component.prototype.setData = function (value) {\r\n // array might be the same, but there might be items added\r\n // todo: check if array changed, toString maybe?\r\n if (!this.isDisposed()) {\r\n this._parseDataFrom = 0;\r\n this.disposeData();\r\n this._data = value;\r\n if (value && value.length > 0) {\r\n this.invalidateData();\r\n }\r\n else {\r\n this.dispatchImmediately(\"beforedatavalidated\");\r\n this.dispatch(\"datavalidated\");\r\n }\r\n }\r\n };\r\n /**\r\n * Returns (creates if necessary) a [[DataSource]] bound to any specific\r\n * property.\r\n *\r\n * For example if I want to bind `data` to an external JSON file, I'd create\r\n * a DataSource for it.\r\n *\r\n * @param property Property to bind external data to\r\n * @return A DataSource for property\r\n */\r\n Component.prototype.getDataSource = function (property) {\r\n var _this = this;\r\n if (!$type.hasValue(this._dataSources[property])) {\r\n this._dataSources[property] = new DataSource();\r\n this._dataSources[property].component = this;\r\n this.setDataSourceEvents(this._dataSources[property], property);\r\n this._dataSources[property].adapter.add(\"dateFields\", function (val) {\r\n return _this.dataSourceDateFields(val);\r\n });\r\n this._dataSources[property].adapter.add(\"numberFields\", function (val) {\r\n return _this.dataSourceNumberFields(val);\r\n });\r\n this.events.on(\"inited\", function () {\r\n _this.loadData(property);\r\n }, this, false);\r\n }\r\n return this._dataSources[property];\r\n };\r\n Object.defineProperty(Component.prototype, \"dataSource\", {\r\n /**\r\n * @return Data source\r\n */\r\n get: function () {\r\n if (!this._dataSources[\"data\"]) {\r\n this.getDataSource(\"data\");\r\n }\r\n return this._dataSources[\"data\"];\r\n },\r\n /**\r\n *A [[DataSource]] to be used for loading Component's data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/loading-external-data/} for more on loading external data\r\n * @param value Data source\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n if (this._dataSources[\"data\"]) {\r\n this.removeDispose(this._dataSources[\"data\"]);\r\n }\r\n this._dataSources[\"data\"] = value;\r\n this._dataSources[\"data\"].component = this;\r\n this.events.on(\"inited\", function () {\r\n _this.loadData(\"data\");\r\n }, this, false);\r\n this.setDataSourceEvents(value, \"data\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Initiates loading of the external data via [[DataSource]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.loadData = function (property) {\r\n this._dataSources[property].load();\r\n };\r\n /**\r\n * This function is called by the [[DataSource]]'s `dateFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Array of date fields\r\n * @return Array of date fields populated with chart's date fields\r\n */\r\n Component.prototype.dataSourceDateFields = function (value) {\r\n return value;\r\n };\r\n /**\r\n * This function is called by the [[DataSource]]'s `numberFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Array of number fields\r\n * @return Array of number fields populated with chart's number fields\r\n */\r\n Component.prototype.dataSourceNumberFields = function (value) {\r\n return value;\r\n };\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param list [description]\r\n * @param dataFields [description]\r\n * @param targetList [description]\r\n * @return [description]\r\n */\r\n Component.prototype.populateDataSourceFields = function (list, dataFields, targetList) {\r\n $array.each(targetList, function (value) {\r\n if (dataFields[value] && $array.indexOf(list, dataFields[value]) === -1) {\r\n list.push(dataFields[value]);\r\n }\r\n });\r\n return list;\r\n };\r\n /**\r\n * Sets events on a [[DataSource]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.setDataSourceEvents = function (ds, property) {\r\n var _this = this;\r\n ds.events.on(\"started\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0;\r\n //preloader.label.text = this.language.translate(\"Loading\");\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"loadstarted\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0.25;\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"loadended\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0.5;\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"parseended\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0.75;\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"ended\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"error\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n _this.openModal(ev.message);\r\n }, undefined, false);\r\n if (property) {\r\n ds.events.on(\"done\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n if (property == \"data\" && !$type.isArray(ev.data)) {\r\n ev.data = [ev.data];\r\n }\r\n if (ds.incremental && property == \"data\" && _this.data.length) {\r\n _this.addData(ev.data, ds.keepCount ? ev.data.length : 0);\r\n }\r\n else if (ds.updateCurrentData && property == \"data\" && _this.data.length) {\r\n // cycle through existing data items\r\n $array.each(_this.data, function (item, index) {\r\n if ($type.hasValue(ev.data[index])) {\r\n $object.each(item, function (key, val) {\r\n if ($type.hasValue(ev.data[index][key])) {\r\n item[key] = ev.data[index][key];\r\n }\r\n });\r\n }\r\n });\r\n _this.invalidateRawData();\r\n }\r\n else {\r\n _this[property] = ev.data;\r\n }\r\n });\r\n }\r\n };\r\n Object.defineProperty(Component.prototype, \"responsive\", {\r\n /**\r\n * @return Responsive rules handler\r\n */\r\n get: function () {\r\n if (!this._responsive) {\r\n this._responsive = new Responsive();\r\n this._responsive.component = this;\r\n }\r\n return this._responsive;\r\n },\r\n /**\r\n * A [[Responsive]] instance to be used when applying conditional\r\n * property values.\r\n *\r\n * NOTE: Responsive features are currently in development and may not work\r\n * as expected, if at all.\r\n *\r\n * @param value Responsive rules handler\r\n */\r\n set: function (value) {\r\n this._responsive = value;\r\n this._responsive.component = this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets current zoom.\r\n *\r\n * The range uses relative values from 0 to 1, with 0 marking beginning and 1\r\n * marking end of the available data range.\r\n *\r\n * This method will not have any effect when called on a chart object.\r\n * Since the chart can have a number of axes and series, each with its own\r\n * data, the meaning of \"range\" is very ambiguous.\r\n *\r\n * To zoom the chart use `zoom*` methods on its respective axes.\r\n *\r\n * @param range Range\r\n * @param skipRangeEvent Should rangechanged event not be triggered?\r\n * @param instantly Do not animate?\r\n * @return Actual modidied range (taking `maxZoomFactor` into account)\r\n */\r\n Component.prototype.zoom = function (range, skipRangeEvent, instantly, declination) {\r\n var _this = this;\r\n if (skipRangeEvent === void 0) { skipRangeEvent = false; }\r\n if (instantly === void 0) { instantly = false; }\r\n var start = range.start;\r\n var end = range.end;\r\n var priority = range.priority;\r\n if (range.start == range.end) {\r\n range.start = range.start - 0.5 / this.maxZoomFactor;\r\n range.end = range.end + 0.5 / this.maxZoomFactor;\r\n }\r\n if (priority == \"end\" && end == 1 && start != 0) {\r\n if (start < this.start) {\r\n priority = \"start\";\r\n }\r\n }\r\n if (priority == \"start\" && start == 0) {\r\n if (end > this.end) {\r\n priority = \"end\";\r\n }\r\n }\r\n if (!$type.isNumber(declination)) {\r\n declination = this.maxZoomDeclination;\r\n }\r\n if (!$type.isNumber(start) || !$type.isNumber(end)) {\r\n return { start: this.start, end: this.end };\r\n }\r\n if (this._finalStart != start || this._finalEnd != end) {\r\n var maxZoomFactor = this.maxZoomFactor / this.minZoomCount;\r\n var minZoomFactor = this.maxZoomFactor / this.maxZoomCount;\r\n // most likely we are dragging left scrollbar grip here, so we tend to modify end\r\n if (priority == \"start\") {\r\n if (this.maxZoomCount > 0) {\r\n // add to the end\r\n if (1 / (end - start) < minZoomFactor) {\r\n end = start + 1 / minZoomFactor;\r\n }\r\n }\r\n // add to the end\r\n if (1 / (end - start) > maxZoomFactor) {\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n //unless end is > 0\r\n if (end > 1 && end - start < 1 / maxZoomFactor) {\r\n //end = 1;\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n }\r\n // most likely we are dragging right, so we modify left\r\n else {\r\n if (this.maxZoomCount > 0) {\r\n // add to the end\r\n if (1 / (end - start) < minZoomFactor) {\r\n start = end - 1 / minZoomFactor;\r\n }\r\n }\r\n // remove from start\r\n if (1 / (end - start) > maxZoomFactor) {\r\n if (start <= 0) {\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n else {\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n }\r\n if (start < 0 && end - start < 1 / maxZoomFactor) {\r\n //start = 0;\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n }\r\n if (start < -declination) {\r\n start = -declination;\r\n }\r\n if (1 / (end - start) > maxZoomFactor) {\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n if (end > 1 + declination) {\r\n end = 1 + declination;\r\n }\r\n if (1 / (end - start) > maxZoomFactor) {\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n this._finalEnd = end;\r\n this._finalStart = start;\r\n this.skipRangeEvent = skipRangeEvent;\r\n this.dispatchImmediately(\"rangechangestarted\");\r\n if (this.rangeChangeDuration > 0 && !instantly) {\r\n // todo: maybe move this to Animation\r\n var rangeChangeAnimation = this.rangeChangeAnimation;\r\n if (rangeChangeAnimation && rangeChangeAnimation.progress < 1) {\r\n var options = rangeChangeAnimation.animationOptions;\r\n if (options.length > 1) {\r\n if (options[0].to == start && options[1].to == end) {\r\n return { start: start, end: end };\r\n }\r\n else {\r\n if (!rangeChangeAnimation.isDisposed()) {\r\n rangeChangeAnimation.stop();\r\n }\r\n }\r\n }\r\n }\r\n if (this.rangeChangeAnimation) {\r\n this.rangeChangeAnimation.kill();\r\n }\r\n rangeChangeAnimation = this.animate([{ property: \"start\", to: start }, { property: \"end\", to: end }], this.rangeChangeDuration, this.rangeChangeEasing);\r\n this.rangeChangeAnimation = rangeChangeAnimation;\r\n if (rangeChangeAnimation && !rangeChangeAnimation.isFinished()) {\r\n rangeChangeAnimation.events.on(\"animationended\", function () {\r\n _this.dispatchImmediately(\"rangechangeended\");\r\n });\r\n }\r\n else {\r\n this.dispatchImmediately(\"rangechangeended\");\r\n }\r\n }\r\n else {\r\n this.start = start;\r\n this.end = end;\r\n this.dispatch(\"rangechangeended\");\r\n }\r\n }\r\n return { start: start, end: end };\r\n };\r\n /**\r\n * Zooms to specific data items using their index in data.\r\n *\r\n * This method will not have any effect when called on a chart object.\r\n * Since the chart can have a number of axes and series, each with its own\r\n * data, the meaning of \"index\" is very ambiguous.\r\n *\r\n * To zoom the chart use `zoom*` methods on its respective axes.\r\n *\r\n * @param startIndex Index of the starting data item\r\n * @param endIndex Index of the ending data item\r\n * @param skipRangeEvent Should rangechanged event not be triggered?\r\n * @param instantly Do not animate?\r\n */\r\n Component.prototype.zoomToIndexes = function (startIndex, endIndex, skipRangeEvent, instantly) {\r\n if (!$type.isNumber(startIndex) || !$type.isNumber(endIndex)) {\r\n return;\r\n }\r\n var start = startIndex / this.dataItems.length;\r\n var end = endIndex / this.dataItems.length;\r\n this.zoom({ start: start, end: end }, skipRangeEvent, instantly);\r\n };\r\n Object.defineProperty(Component.prototype, \"zoomFactor\", {\r\n /**\r\n * A current zoom factor (0-1). 1 meaning fully zoomed out. (showing all of\r\n * the available data)\r\n *\r\n * @return Zoom factor\r\n */\r\n get: function () {\r\n return $math.fitToRange(1 / (this.end - this.start), 1, this.maxZoomFactor);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"maxZoomFactor\", {\r\n /**\r\n * @return Maximum zoomFactor\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxZoomFactor\");\r\n },\r\n /**\r\n * Max available `zoomFactor`.\r\n *\r\n * The element will not allow zoom to occur beyond this factor.\r\n *\r\n * [[DateAxis]] and [[CategoryAxis]] calculate this atutomatically so that\r\n * category axis could be zoomed to one category and date axis allows to be\r\n * zoomed up to one base interval.\r\n *\r\n * In case you want to restrict category or date axis to be zoomed to more\r\n * than one category or more than one base interval, use `minZoomCount`\r\n * property (set it to `> 1`).\r\n *\r\n * Default value of [[ValueAxis]]'s `maxZoomFactor` is `1000`.\r\n *\r\n * Feel free to modify it to allow bigger zoom or to restrict zooming.\r\n *\r\n * @param value Maximum zoomFactor\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"maxZoomFactor\", value)) {\r\n if (value == 1) {\r\n this.maxZoomDeclination = 0;\r\n }\r\n this.invalidateDataRange();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"maxZoomDeclination\", {\r\n /**\r\n * @ignore\r\n * @return Maximum zoom declination\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxZoomDeclination\");\r\n },\r\n /**\r\n * Max zoom declination.\r\n *\r\n * @ignore\r\n * @default 1\r\n * @param value Maximum zoom declination\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"maxZoomDeclination\", value)) {\r\n this.invalidateDataRange();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"startIndex\", {\r\n /**\r\n * Current starting index.\r\n *\r\n * @return Start index\r\n */\r\n get: function () {\r\n if (!$type.isNumber(this._startIndex)) {\r\n this._startIndex = 0;\r\n }\r\n return this._startIndex;\r\n },\r\n /**\r\n * Sets current starting index.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Start index\r\n */\r\n set: function (value) {\r\n this._startIndex = $math.fitToRange(Math.round(value), 0, this.dataItems.length);\r\n //this._workingStartIndex = this._startIndex; // not good, breaks adjusted working start index of line series\r\n this.start = this.indexToPosition(this._startIndex);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n * @todo:review description\r\n * returns item's relative position by the index of the item\r\n * @param index\r\n */\r\n Component.prototype.indexToPosition = function (index) {\r\n return index / this.dataItems.length;\r\n };\r\n Object.defineProperty(Component.prototype, \"endIndex\", {\r\n /**\r\n * Current ending index.\r\n *\r\n * @return End index\r\n */\r\n get: function () {\r\n var count = this.dataItems.length;\r\n if (!$type.isNumber(this._endIndex) || this._endIndex > count) {\r\n this._endIndex = count;\r\n }\r\n return this._endIndex;\r\n },\r\n /**\r\n * Sets current ending index.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value End index\r\n */\r\n set: function (value) {\r\n this._endIndex = $math.fitToRange(Math.round(value), 0, this.dataItems.length);\r\n //this._workingEndIndex = this._endIndex; // not good, breaks adjusted workingend index of line series\r\n this.end = this.indexToPosition(this._endIndex);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"start\", {\r\n /**\r\n * @return Start (0-1)\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n return this._start;\r\n }\r\n else {\r\n return this._adapterO.apply(\"start\", this._start);\r\n }\r\n },\r\n /**\r\n * Start of the current data range (zoom).\r\n *\r\n * These are relative values from 0 (beginning) to 1 (end).\r\n *\r\n * @param value Start (0-1)\r\n */\r\n set: function (value) {\r\n // value = $math.round(value, 10); not good\r\n //if (1 / (this.end - value) > this.maxZoomFactor) {\r\n //\tvalue = this.end - 1 / this.maxZoomFactor;\r\n //}\r\n if (this._start != value) {\r\n this._start = value;\r\n var startIndex = Math.max(0, Math.floor(this.dataItems.length * value) || 0);\r\n this._startIndex = Math.min(startIndex, this.dataItems.length);\r\n this.invalidateDataRange();\r\n this.invalidate();\r\n this.dispatchImmediately(\"startchanged\");\r\n this.dispatch(\"startendchanged\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"end\", {\r\n /**\r\n * @return End (0-1)\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n return this._end;\r\n }\r\n else {\r\n return this._adapterO.apply(\"end\", this._end);\r\n }\r\n },\r\n /**\r\n * End of the current data range (zoom).\r\n *\r\n * These are relative values from 0 (beginning) to 1 (end).\r\n *\r\n * @param value End (0-1)\r\n */\r\n set: function (value) {\r\n // value = $math.round(value, 10); // not good\r\n //if (1 / (value - this.start) > this.maxZoomFactor) {\r\n //\tvalue = 1 / this.maxZoomFactor + this.start;\r\n //}\r\n if (this._end != value) {\r\n this._end = value;\r\n this._endIndex = Math.min(this.dataItems.length, Math.ceil(this.dataItems.length * value) || 0);\r\n this.invalidateDataRange();\r\n this.invalidate();\r\n this.dispatchImmediately(\"endchanged\");\r\n this.dispatch(\"startendchanged\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [removeFromInvalids description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.removeFromInvalids = function () {\r\n _super.prototype.removeFromInvalids.call(this);\r\n registry.removeFromInvalidComponents(this);\r\n $array.remove(registry.invalidDataItems, this);\r\n $array.remove(registry.invalidDataRange, this);\r\n $array.remove(registry.invalidRawDatas, this);\r\n };\r\n Object.defineProperty(Component.prototype, \"dataItems\", {\r\n /**\r\n * Returns a list of source [[DataItem]] objects currently used in the chart.\r\n *\r\n * @return List of data items\r\n */\r\n get: function () {\r\n if (this._currentDataSetId != \"\") {\r\n var dataItems = this.dataSets.getKey(this._currentDataSetId);\r\n if (dataItems) {\r\n return dataItems;\r\n }\r\n }\r\n return this._dataItems;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"dataSets\", {\r\n /**\r\n * Holds data items for data sets (usually aggregated data).\r\n *\r\n * @ignore\r\n * @since 4.7.0\r\n * @return Data sets\r\n */\r\n get: function () {\r\n if (!this._dataSets) {\r\n this._dataSets = new Dictionary();\r\n }\r\n return this._dataSets;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Makes the chart use particular data set.\r\n *\r\n * If `id` is not provided or there is no such data set, main data will be\r\n * used.\r\n *\r\n * @ignore\r\n * @since 4.7.0\r\n * @param id Data set id\r\n */\r\n Component.prototype.setDataSet = function (id) {\r\n if (this._currentDataSetId != id) {\r\n var dataSet = this.dataSets.getKey(id);\r\n if (!dataSet) {\r\n if (this._currentDataSetId != \"\") {\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.__disabled = true;\r\n });\r\n this._currentDataSetId = \"\";\r\n this.invalidateDataRange();\r\n this._prevStartIndex = undefined;\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.__disabled = false;\r\n });\r\n return true;\r\n }\r\n }\r\n else {\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.__disabled = true;\r\n });\r\n this._currentDataSetId = id;\r\n this.invalidateDataRange();\r\n this._prevStartIndex = undefined;\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.__disabled = false;\r\n });\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(Component.prototype, \"currentDataSetId\", {\r\n /**\r\n * Returns id of the currently used data set, or `undefined` if main data set\r\n * is in use.\r\n *\r\n * @since 4.7.0\r\n * @return Current data set id\r\n */\r\n get: function () {\r\n return this._currentDataSetId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"mainDataSet\", {\r\n /**\r\n * Returns reference to \"main\" data set (unaggregated data as it was supplied\r\n * in `data`).\r\n *\r\n * @since 4.7.0\r\n * @return Main data set\r\n */\r\n get: function () {\r\n return this._dataItems;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates the indexes for the dataItems\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype._updateDataItemIndexes = function (startIndex) {\r\n var dataItems = this.mainDataSet.values;\r\n var length = dataItems.length;\r\n for (var i = startIndex; i < length; ++i) {\r\n dataItems[i]._index = i;\r\n }\r\n };\r\n /**\r\n * Processes newly added [[DataItem]] as well as triggers data re-validation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event [description]\r\n */\r\n Component.prototype.handleDataItemAdded = function (event) {\r\n event.newValue.component = this;\r\n this._updateDataItemIndexes(event.index);\r\n if (!this.dataItemsInvalid) {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * removes [[DataItem]] as well as triggers data re-validation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event [description]\r\n */\r\n Component.prototype.handleDataItemRemoved = function (event) {\r\n //\t\tevent.oldValue.component = undefined; // not good, as some items might be not removed from component lists\r\n this._updateDataItemIndexes(event.index);\r\n if (!this.dataItemsInvalid) {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * Binds a data element's field to a specific field in raw data.\r\n * For example, for the very basic column chart you'd want to bind a `value`\r\n * field to a field in data, such as `price`.\r\n *\r\n * Some more advanced Components, like [[CandlestickSeries]] need several\r\n * data fields bound to data, such as ones for open, high, low and close\r\n * values.\r\n *\r\n * @todo Example\r\n * @param field Field name\r\n * @param value Field name in data\r\n */\r\n Component.prototype.bindDataField = function (field, value) {\r\n this.dataFields[field] = value;\r\n this.invalidateDataRange();\r\n };\r\n /**\r\n * Invalidates processed data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.invalidateProcessedData = function () {\r\n this.resetProcessedRange();\r\n this.invalidateDataRange();\r\n };\r\n /**\r\n * [resetProcessedRange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.resetProcessedRange = function () {\r\n this._prevEndIndex = null;\r\n this._prevStartIndex = null;\r\n };\r\n Object.defineProperty(Component.prototype, \"dataUsers\", {\r\n /**\r\n * Returns all other [[Component]] objects that are using this element's\r\n * data.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @return [description]\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._dataUsers) {\r\n this._dataUsers = new List();\r\n //this._disposers.push(new ListDisposer(this._dataUsers));\r\n // TODO better way of handling this? e.g. move into another module ?\r\n this._disposers.push(new Disposer(function () {\r\n // TODO clear the list ?\r\n $iter.each(_this._dataUsers.iterator(), function (x) {\r\n x.dispose();\r\n });\r\n }));\r\n }\r\n return this._dataUsers;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a clone of this element.\r\n *\r\n * @return Clone\r\n */\r\n Component.prototype.clone = function () {\r\n var component = _super.prototype.clone.call(this);\r\n component.dataFields = $utils.copyProperties(this.dataFields, {});\r\n return component;\r\n };\r\n /**\r\n * Copies all parameters from another [[Component]].\r\n *\r\n * @param source Source Component\r\n */\r\n Component.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.data = source.data;\r\n this.sequencedInterpolation = source.sequencedInterpolation;\r\n this.sequencedInterpolationDelay = source.sequencedInterpolationDelay;\r\n this.interpolationDuration = source.interpolationDuration;\r\n this.interpolationEasing = source.interpolationEasing;\r\n };\r\n /**\r\n * Invalidates the whole element, including all its children, causing\r\n * complete re-parsing of data and redraw.\r\n *\r\n * Use sparingly!\r\n */\r\n Component.prototype.reinit = function () {\r\n this._inited = false;\r\n this.deepInvalidate();\r\n };\r\n /**\r\n * Add an adapter for data.\r\n *\r\n * @return Exporting\r\n */\r\n Component.prototype.getExporting = function () {\r\n var _export = _super.prototype.getExporting.call(this);\r\n if (!_export.adapter.has(\"data\", this._exportData, -1, this)) {\r\n _export.adapter.add(\"data\", this._exportData, -1, this);\r\n this.events.on(\"datavalidated\", function (ev) {\r\n _export.handleDataUpdated();\r\n });\r\n }\r\n return _export;\r\n };\r\n Component.prototype._exportData = function (arg) {\r\n arg.data = this.data;\r\n return arg;\r\n };\r\n Component.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (changed) {\r\n this.invalidateData();\r\n }\r\n return changed;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Component.prototype.setShowOnInit = function (value) {\r\n if (value != this.getPropertyValue(\"showOnInit\")) {\r\n if (value && !this.inited && !this.hidden) {\r\n this._showOnInitDisposer2 = this.events.once(\"dataitemsvalidated\", this.hideInitially, this, false);\r\n this._disposers.push(this._showOnInitDisposer2);\r\n }\r\n else {\r\n if (this._showOnInitDisposer2) {\r\n this.removeDispose(this._showOnInitDisposer2);\r\n }\r\n }\r\n }\r\n // important order here\r\n _super.prototype.setShowOnInit.call(this, value);\r\n };\r\n Component.prototype.setBaseId = function (value) {\r\n if (value != this._baseId) {\r\n if (this.dataInvalid) {\r\n this.dataInvalid = false;\r\n registry.removeFromInvalidComponents(this);\r\n this._baseId = value;\r\n this.invalidateData();\r\n }\r\n }\r\n _super.prototype.setBaseId.call(this, value);\r\n };\r\n Object.defineProperty(Component.prototype, \"minZoomCount\", {\r\n /**\r\n * @return Min zoom count\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minZoomCount\");\r\n },\r\n /**\r\n * Use this for [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * Allows restricting zoom in beyond certain number of categories or base\r\n * intervals.\r\n *\r\n * @default 1\r\n * @param value Min zoom count\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minZoomCount\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"maxZoomCount\", {\r\n /**\r\n * @return Max zoom count\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxZoomCount\");\r\n },\r\n /**\r\n * Use this for [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * Limits how many categories or base intervals can be shown at the same\r\n * time.\r\n *\r\n * If there are more items in the chart, the chart will auto-zoom.\r\n *\r\n * @default 0 (no limit)\r\n * @since 4.6.2\r\n * @param value Max zoom count\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxZoomCount\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype._systemCheckIfValidate = function () {\r\n if (this.dataInvalid || (this.dataProvider && this.dataProvider.dataInvalid)) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\r\n Component.prototype.asFunction = function (field) {\r\n return field == \"interpolationEasing\" || field == \"rangeChangeEasing\" || _super.prototype.asIs.call(this, field);\r\n };\r\n return Component;\r\n}(Container));\r\nexport { Component };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Component\"] = Component;\r\n//# sourceMappingURL=Component.js.map","/**\r\n * Container module\r\n * @todo Needs description\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"./Sprite\";\r\nimport { SpriteState } from \"./SpriteState\";\r\nimport { List } from \"./utils/List\";\r\nimport { MultiDisposer } from \"./utils/Disposer\";\r\nimport { Dictionary, DictionaryDisposer } from \"./utils/Dictionary\";\r\nimport { getInteraction } from \"./interaction/Interaction\";\r\nimport { Rectangle } from \"./elements/Rectangle\";\r\nimport { Percent } from \"./utils/Percent\";\r\nimport { registry } from \"./Registry\";\r\nimport { InterfaceColorSet } from \"../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"./utils/Iterator\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $math from \"./utils/Math\";\r\nimport * as $type from \"./utils/Type\";\r\nimport * as $dom from \"./utils/DOM\";\r\nimport { system } from \"./System\";\r\nimport { options } from \"./Options\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Container can contain multiple sprites and arrange them in various layouts.\r\n *\r\n * @see {@link IContainerEvents} for a list of available events\r\n * @see {@link IContainerAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar Container = /** @class */ (function (_super) {\r\n __extends(Container, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Container() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Container children. (sorted by layout)\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._childrenByLayout = [];\r\n /**\r\n * Container's disposers for its child elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._childrenDisposers = new Dictionary();\r\n /**\r\n * Indicates if this container contains any focused elements, including\r\n * itself.\r\n */\r\n _this.hasFocused = false;\r\n /**\r\n * An array of references to elements the state should be set, when it is set\r\n * on this element.\r\n */\r\n _this.setStateOnSprites = [];\r\n /*\r\n * @ignore\r\n */\r\n _this.layoutInvalid = false;\r\n _this._absoluteWidth = 0;\r\n _this._absoluteHeight = 0;\r\n /**\r\n * An array of child Sprites that should be ready before this object can\r\n * fire a \"ready\" event.\r\n */\r\n _this._shouldBeReady = [];\r\n /**\r\n * Enables touch tap protection.\r\n */\r\n _this._tapToActivate = false;\r\n /**\r\n * If `tapToActivate` is used, this setting will determine how long the chart\r\n * will stay in \"active\" mode.\r\n *\r\n * @default 3000\r\n * @since 4.4.0\r\n */\r\n _this.tapTimeout = 3000;\r\n _this.className = \"Container\";\r\n _this._element = _this.paper.addGroup(\"g\");\r\n _this.group.add(_this.element);\r\n _this.setPropertyValue(\"pixelPerfect\", false);\r\n _this.setPropertyValue(\"layout\", \"absolute\");\r\n _this.setPropertyValue(\"fixedWidthGrid\", false);\r\n _this.setPropertyValue(\"verticalCenter\", \"none\");\r\n _this.setPropertyValue(\"horizontalCenter\", \"none\");\r\n _this._positionPrecision = 4;\r\n _this._disposers.push(new DictionaryDisposer(_this._childrenDisposers));\r\n _this.children.events.on(\"inserted\", _this.handleChildAdded, _this);\r\n _this.children.events.on(\"removed\", _this.handleChildRemoved, _this);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Handles adding of a new child into `children`. Adding new children might\r\n * affect the whole layout so it needs to be revalidated.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n * @todo Throw an exception on adding a disposed object. Of course it's better NOT TO add disposed objects, so that what we should focus on.\r\n */\r\n Container.prototype.handleChildAdded = function (event) {\r\n this.processChild(event.newValue);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Container.prototype.processChild = function (child) {\r\n // try solves the problem when somedy adds child directly to children\r\n try {\r\n this._childrenDisposers.insertKey(child.uid, new MultiDisposer([\r\n // it's not enough to listen to POSITION_CHANGED only, as some extra redrawals will happen.\r\n child.events.on(\"transformed\", this.handleChildTransform, this),\r\n child.events.on(\"zIndexChanged\", this.sortAndAdd, this)\r\n ]));\r\n }\r\n catch (err) {\r\n // void\r\n }\r\n if (this.element) {\r\n var group = this.element;\r\n group.add(child.group);\r\n }\r\n child.parent = this;\r\n child.paper = this.paper;\r\n this.dispatchImmediately(\"childadded\", { type: \"childadded\", newValue: child });\r\n this.invalidate();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Container.prototype.sortAndAdd = function () {\r\n this.sortChildren();\r\n this.addChildren();\r\n };\r\n /**\r\n * Handles child removal. Changing size of the child may change the\r\n * whole layout of the Container, hence layout needs to be invalidated.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n */\r\n Container.prototype.handleChildRemoved = function (event) {\r\n var child = event.oldValue;\r\n // TODO figure out why the key sometimes doesn't exist\r\n this._childrenDisposers.removeKey(child.uid);\r\n if (this.element) {\r\n var group = this.element;\r\n group.removeElement(child.group);\r\n }\r\n if (child.isMeasured) {\r\n this.invalidateLayout();\r\n }\r\n this.dispatchImmediately(\"childremoved\", { type: \"childremoved\", oldValue: child });\r\n };\r\n /**\r\n * Handles child transformation. Changing size of the child may change the\r\n * whole layout of the Container, hence layout needs to be invalidated.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n */\r\n Container.prototype.handleChildTransform = function (event) {\r\n var child = event.target;\r\n if (child.isMeasured) { // && this.layout != \"none\" && this.layout != \"absolute\") {\r\n this.invalidateLayout();\r\n }\r\n };\r\n /**\r\n * Invalidates Container's layout, causing it to be re-evaluated again.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.invalidateLayout = function () {\r\n if (this.layoutInvalid || this.disabled || this.isTemplate || this.layout == \"none\" || this.__disabled) {\r\n return;\r\n }\r\n this.layoutInvalid = true;\r\n registry.addToInvalidLayouts(this);\r\n system.requestFrame();\r\n };\r\n /**\r\n * Invalidates element.\r\n *\r\n * Object will be redrawn during the next update cycle.\r\n *\r\n * Please note that in most cases elements will auto-invalidate when needed. If\r\n * everything works, DO NOT use this method. Use it only if some changes do\r\n * not take otherwise.\r\n */\r\n Container.prototype.invalidate = function () {\r\n _super.prototype.invalidate.call(this);\r\n this.invalidateLayout();\r\n };\r\n /**\r\n * Invalidates the whole element, including layout AND all its child\r\n * elements.\r\n *\r\n * As this will essentially force all elements to redraw, use only if\r\n * absolutely necessary.\r\n */\r\n Container.prototype.deepInvalidate = function () {\r\n _super.prototype.invalidate.call(this);\r\n //this.sortChildren();\r\n $array.each(this._childrenByLayout, function (child) {\r\n if (child instanceof Container) {\r\n child.deepInvalidate();\r\n }\r\n else {\r\n child.invalidate();\r\n }\r\n });\r\n this.invalidateLayout();\r\n };\r\n Object.defineProperty(Container.prototype, \"children\", {\r\n /**\r\n * Returns a list of the child [[Sprite]] elements contained in this\r\n * Container.\r\n *\r\n * @return List of child elements (Sprites)\r\n */\r\n get: function () {\r\n // @todo Review if we can add all children to disposers\r\n if (!this._children) {\r\n this._children = new List();\r\n //this._disposers.push(new ListDisposer(this._children));\r\n }\r\n return this._children;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"minWidth\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minWidth\");\r\n },\r\n /**\r\n * Minimum width (px) for the Container. A container will not\r\n * auto-shrink beyond this value, even if child elements are smaller.\r\n *\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"minWidth\", value)) {\r\n this.invalidateLayout();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"minHeight\", {\r\n /**\r\n * @return Height (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minHeight\");\r\n },\r\n /**\r\n * Minimum height (px) for the Container. A container will not\r\n * auto-shrink beyond this value, even if child elements are smaller.\r\n *\r\n * @param value Height (px)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"minHeight\", value)) {\r\n this.invalidateLayout();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Overrides the original `removeElement` so that Container's actual element\r\n * is not removed. We do not need to remove element of a Container.\r\n *\r\n * We do this because remove element each time will fail the `getBBox`.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.removeElement = function () {\r\n };\r\n /**\r\n * Sorts Container's children: the ones with variable width and height are\r\n * put at the end of the list (depending on layout type), so that fixed-width\r\n * ones can be drawn first.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.sortChildren = function () {\r\n var _this = this;\r\n this._childrenByLayout = [];\r\n if (this.layout == \"none\" || this.layout == \"absolute\" || !this.layout) {\r\n //$iter.each(this.children.iterator(), (child) => {\r\n //\tthis._childrenByLayout.push(child);\r\n //});\r\n this._childrenByLayout = this.children.values;\r\n }\r\n else {\r\n // Assemble fixed-size and relative lists\r\n var fixed_1 = [];\r\n var relative_1 = [];\r\n $iter.each(this.children.iterator(), function (child) {\r\n if (_this.layout == \"horizontal\" || _this.layout == \"grid\") {\r\n if (!$type.isNumber(child.percentWidth)) {\r\n fixed_1.push(child);\r\n }\r\n else {\r\n relative_1.push(child);\r\n }\r\n }\r\n else if (_this.layout == \"vertical\") {\r\n if (!$type.isNumber(child.percentHeight)) {\r\n fixed_1.push(child);\r\n }\r\n else {\r\n relative_1.push(child);\r\n }\r\n }\r\n else {\r\n fixed_1.push(child);\r\n }\r\n });\r\n // Concat everything into list\r\n this._childrenByLayout = fixed_1.concat(relative_1);\r\n }\r\n this.calculateRelativeSize();\r\n };\r\n /**\r\n * Calculates relative sizes for all Container's children.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make it protected?\r\n */\r\n Container.prototype.calculateRelativeSize = function () {\r\n var _this = this;\r\n var totalRelativeWidth = 0;\r\n var totalRelativeHeight = 0;\r\n $array.each(this._childrenByLayout, function (child) {\r\n // if child is not measured, we do not care about it at all.\r\n if (child.isMeasured) {\r\n if ($type.isNumber(child.percentWidth)) {\r\n totalRelativeWidth += child.percentWidth;\r\n }\r\n if ($type.isNumber(child.percentHeight)) {\r\n totalRelativeHeight += child.percentHeight;\r\n }\r\n }\r\n });\r\n $array.each(this._childrenByLayout, function (child) {\r\n if (child.isMeasured) {\r\n if (_this.layout == \"horizontal\") {\r\n if ($type.isNumber(child.percentWidth)) {\r\n child.relativeWidth = child.percentWidth / totalRelativeWidth;\r\n }\r\n if ($type.isNumber(child.percentHeight)) {\r\n child.relativeHeight = child.percentHeight / 100;\r\n }\r\n }\r\n if (_this.layout == \"vertical\") {\r\n if ($type.isNumber(child.percentHeight)) {\r\n child.relativeHeight = child.percentHeight / totalRelativeHeight;\r\n }\r\n if ($type.isNumber(child.percentWidth)) {\r\n child.relativeWidth = child.percentWidth / 100;\r\n }\r\n }\r\n if (_this.layout == \"grid\") {\r\n if ($type.isNumber(child.percentHeight)) {\r\n child.relativeHeight = child.percentHeight / 100;\r\n }\r\n if ($type.isNumber(child.percentWidth)) {\r\n child.relativeWidth = child.percentWidth / 100;\r\n }\r\n }\r\n }\r\n if (_this.layout == \"absolute\" || !child.isMeasured) {\r\n if ($type.isNumber(child.percentWidth)) {\r\n child.relativeWidth = child.percentWidth / 100;\r\n }\r\n if ($type.isNumber(child.percentHeight)) {\r\n child.relativeHeight = child.percentHeight / 100;\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Adds all children to Container's SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.addChildren = function () {\r\n /*\r\n Need this check because a child might be assigned to parent even before element is created, for example a theme\r\n access scrollbar.thumb\r\n */\r\n if (this.element) {\r\n var zindexed = $array.copy(this.children.values); // not children by layout!\r\n var sortArray = zindexed.map(function (data, idx) {\r\n return { idx: idx, data: data };\r\n });\r\n sortArray.sort(function (a, b) {\r\n var ai = (a.data.zIndex || 0);\r\n var bi = (b.data.zIndex || 0);\r\n if (ai < bi) {\r\n return -1;\r\n }\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n return a.idx - b.idx;\r\n });\r\n zindexed = sortArray.map(function (val) {\r\n return val.data;\r\n });\r\n var group_1 = this.element;\r\n // check, maybe the order is good already\r\n var isCorrect = true;\r\n if (group_1.node && group_1.node.childNodes) {\r\n for (var i = 0, len = group_1.node.childNodes.length; i < len; i++) {\r\n if (group_1.node.childNodes[i] != zindexed[i].group.node) {\r\n isCorrect = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (!isCorrect) {\r\n $array.each(zindexed, function (child) {\r\n if (child.group) {\r\n group_1.add(child.group);\r\n }\r\n });\r\n if (this._background) {\r\n this.group.addToBack(this._background.group);\r\n }\r\n this.invalidateLayout();\r\n }\r\n }\r\n };\r\n /**\r\n * Creates a new element of specific type and assigns as a child to the\r\n * Container.\r\n *\r\n * @param Class type for the new element\r\n * @return New element\r\n */\r\n Container.prototype.createChild = function (classType) {\r\n var sprite = new classType();\r\n sprite.parent = this;\r\n return sprite;\r\n };\r\n /**\r\n * Removes all Container's children without actually destroying them.\r\n *\r\n * To destroy children use `disposeChildren()` instead.\r\n */\r\n Container.prototype.removeChildren = function () {\r\n // remove all children\r\n // TODO use iteration instead\r\n while (this.children.length > 0) {\r\n var child = this.children.getIndex(0);\r\n child.parent = undefined;\r\n this.children.removeValue(child);\r\n }\r\n };\r\n /**\r\n * Removes and destroys all Container's children.\r\n *\r\n * To remove children from Container without destroying them, use\r\n * `removeChildren()`.\r\n */\r\n Container.prototype.disposeChildren = function () {\r\n // TODO use iteration instead\r\n while (this.children.length > 0) {\r\n var child = this.children.getIndex(0);\r\n child.dispose();\r\n this.children.removeValue(child);\r\n }\r\n };\r\n Object.defineProperty(Container.prototype, \"background\", {\r\n /**\r\n * @return Background element\r\n */\r\n get: function () {\r\n if (!this._background) {\r\n this._background = this.createBackground();\r\n this.processBackground();\r\n }\r\n return this._background;\r\n },\r\n /**\r\n * An element to use as container background.\r\n *\r\n * @param background Background element\r\n */\r\n set: function (background) {\r\n if (this._background && this.background != background) {\r\n this.removeDispose(this._background);\r\n }\r\n if (background) {\r\n this._background = background;\r\n this._disposers.push(background);\r\n this.processBackground();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles the situation where parent element is resized.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.handleGlobalScale = function () {\r\n _super.prototype.handleGlobalScale.call(this);\r\n this.children.each(function (child) {\r\n child.handleGlobalScale();\r\n });\r\n };\r\n /**\r\n * Creates and returns a [[Rectangle]] to use as a background for Container.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Background Rectangle element\r\n */\r\n Container.prototype.createBackground = function () {\r\n return new Rectangle();\r\n };\r\n /**\r\n * Decorates background element with required properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.processBackground = function () {\r\n var background = this._background;\r\n if (background) {\r\n background.isMeasured = false;\r\n this._background.fill = new InterfaceColorSet().getFor(\"background\");\r\n background.parent = this;\r\n background.isMeasured = false;\r\n this.children.removeValue(background);\r\n this._disposers.push(background);\r\n this.group.addToBack(this._background.group);\r\n }\r\n };\r\n /**\r\n * Measures the size of container and informs its children of how much size\r\n * they can occupy, by setting their relative `maxWidth` and `maxHeight`\r\n * properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.validateLayout = function () {\r\n var _this = this;\r\n registry.removeFromInvalidLayouts(this);\r\n this.layoutInvalid = false;\r\n // prevents from drawing if topparent is 0x0\r\n /*\r\n let topParent = this.topParent;\r\n if (topParent) {\r\n if (!topParent.maxWidth || !topParent.maxHeight) {\r\n this._disposers.push(topParent.events.once(\"maxsizechanged\", this.invalidateLayout, this));\r\n }\r\n }*/\r\n this._availableWidth = this.innerWidth;\r\n this._availableHeight = this.innerHeight;\r\n var measuredWidth = 0;\r\n var measuredHeight = 0;\r\n var allValid = true;\r\n if (this.children) {\r\n this.sortChildren();\r\n // we itterate through list of children, sorted by layout priority. sprites which width non-relative width/height will go first, so we will reduce available width before proceeding to sprites with relative width/height\r\n $array.each(this._childrenByLayout, function (child) {\r\n var maxWidth;\r\n var maxHeight;\r\n if ($type.isNumber(child.relativeWidth)) {\r\n maxWidth = $math.round(_this._availableWidth * child.relativeWidth, 2);\r\n if (_this.layout == \"horizontal\") { // || this.layout == \"absolute\") {\r\n maxWidth -= child.pixelMarginRight + child.pixelMarginLeft;\r\n }\r\n }\r\n else {\r\n if (_this.layout == \"horizontal\") {\r\n if (child.invalid) {\r\n child.validate();\r\n }\r\n }\r\n }\r\n if ($type.isNumber(child.relativeHeight)) {\r\n maxHeight = $math.round(_this._availableHeight * child.relativeHeight, 2);\r\n if (_this.layout == \"vertical\") { // || this.layout == \"absolute\") {\r\n maxHeight -= child.pixelMarginTop + child.pixelMarginBottom;\r\n }\r\n }\r\n else {\r\n if (_this.layout == \"vertical\") {\r\n if (child.invalid) {\r\n child.validate();\r\n }\r\n }\r\n }\r\n // if child is valid\r\n if (child.invalid == false) {\r\n if ($type.isNumber(child.relativeWidth)) {\r\n child.maxWidth = maxWidth;\r\n }\r\n if ($type.isNumber(child.relativeHeight)) {\r\n child.maxHeight = maxHeight;\r\n }\r\n if (child.isMeasured) {\r\n // reduce available width if this is horizontal layout\r\n if (_this.layout == \"horizontal\") {\r\n if (!$type.isNumber(child.percentWidth)) {\r\n if (child.measuredWidth > 0) {\r\n _this._availableWidth -= child.measuredWidth + child.pixelMarginLeft + child.pixelMarginRight;\r\n }\r\n }\r\n }\r\n // reduce available height if this is vertical layout\r\n if (_this.layout == \"vertical\") {\r\n if (!$type.isNumber(child.percentHeight)) {\r\n if (child.measuredHeight > 0) {\r\n _this._availableHeight -= child.measuredHeight + child.pixelMarginTop + child.pixelMarginBottom;\r\n }\r\n }\r\n }\r\n var childMeasuredWidth = child.measuredWidth;\r\n var childMeasuredHeight = child.measuredHeight;\r\n if (child.align != \"none\") {\r\n childMeasuredWidth += child.pixelMarginLeft + child.pixelMarginRight;\r\n }\r\n if (child.valign != \"none\") {\r\n childMeasuredHeight += child.pixelMarginTop + child.pixelMarginBottom;\r\n }\r\n measuredWidth = Math.max(measuredWidth, childMeasuredWidth);\r\n measuredHeight = Math.max(measuredHeight, childMeasuredHeight);\r\n }\r\n }\r\n // if child is not valid\r\n else {\r\n // tell child what maximum width/ height it can occupy\r\n if (child.isMeasured) {\r\n if ($type.isNumber(child.relativeWidth)) {\r\n if (child.maxWidth != maxWidth) { // need to check this because of allValid\r\n child.maxWidth = maxWidth;\r\n allValid = false;\r\n }\r\n }\r\n if ($type.isNumber(child.relativeHeight)) {\r\n if (child.maxHeight != maxHeight) { // need to check this because of allValid\r\n child.maxHeight = maxHeight;\r\n allValid = false;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n this._absoluteWidth = measuredWidth;\r\n this._absoluteHeight = measuredHeight;\r\n // arrange after measuring, only if all children are valid already\r\n if (allValid) {\r\n this.arrange();\r\n }\r\n };\r\n /**\r\n * Arranges children according to layout specs and available space / child\r\n * sizes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.arrange = function () {\r\n var _this = this;\r\n var children = this.children;\r\n /*\r\n in this method we not only arrange children but also find out the size of the container\r\n it might seem it would be easier to get container size using sprite's measure method,\r\n however it would return only actual size of the bbox. However as each child meight have\r\n margins set, we need to check each child - we do it here.\r\n\r\n This method doesn't do anything with DOM, so it's not expensive\r\n */\r\n var measuredWidth = 0;\r\n var measuredHeight = 0;\r\n //let innerWidth: number = this.innerWidth; //$math.max(this.innerWidth, this._measuredWidth - paddingLeft - paddingRight);\r\n //let innerHeight: number = this.innerHeight; //$math.max(this.innerHeight, this._measuredHeight - paddingTop - paddingBottom);\r\n // above is wrong, as if a w/h is not specified, it is 0 and alignment doesn't work at all.\r\n var innerWidth = $math.max(this.innerWidth, this._absoluteWidth);\r\n var innerHeight = $math.max(this.innerHeight, this._absoluteHeight);\r\n var left; // = 0;\r\n var right; // = innerWidth;\r\n var top; // = 0;\r\n var bottom; // = innerHeight;\r\n var paddingLeft = this.pixelPaddingLeft;\r\n var paddingRight = this.pixelPaddingRight;\r\n var paddingTop = this.pixelPaddingTop;\r\n var paddingBottom = this.pixelPaddingBottom;\r\n var nextX = 0;\r\n var nextY = 0;\r\n var row = 0;\r\n var column = 0;\r\n var columnWidth = [];\r\n var rowHeight = [];\r\n var maxCellWidth;\r\n var minCellWidth;\r\n var columnCount;\r\n var maxWidth = this.maxWidth;\r\n var maxHeight = this.maxHeight;\r\n var minWidth = this.minWidth;\r\n var minHeight = this.minHeight;\r\n var childrenCopy = $array.copy(children.values);\r\n if (this.reverseOrder) {\r\n childrenCopy.reverse();\r\n }\r\n // GRID PRECALCULATIONS\r\n if (this.layout == \"grid\") {\r\n minCellWidth = maxWidth;\r\n maxCellWidth = 1;\r\n for (var i = 0, len = childrenCopy.length; i < len; i++) {\r\n var child = childrenCopy[i];\r\n if (child.isMeasured && !child.disabled && !child.__disabled) {\r\n var childMeasuredWidth = child.measuredWidth;\r\n if (childMeasuredWidth < minCellWidth) {\r\n minCellWidth = childMeasuredWidth;\r\n }\r\n if (childMeasuredWidth > maxCellWidth) {\r\n maxCellWidth = childMeasuredWidth;\r\n }\r\n }\r\n }\r\n minCellWidth = $math.fitToRange(minCellWidth, 1, maxWidth);\r\n maxCellWidth = $math.fitToRange(maxCellWidth, 1, maxWidth);\r\n if (this.fixedWidthGrid) {\r\n columnCount = maxWidth / maxCellWidth;\r\n }\r\n else {\r\n columnCount = maxWidth / minCellWidth; // predicted number of columns, yes it is usually much more than real number, but we fix that later\r\n }\r\n columnCount = $math.max(1, Math.floor(columnCount));\r\n columnCount = $math.min(this.maxColumns, columnCount);\r\n columnWidth = this.getColumnWidth(childrenCopy, columnCount, maxCellWidth);\r\n }\r\n var contentLeft;\r\n var contentRight;\r\n var contentTop;\r\n var contentBottom;\r\n // we itterate through array of children\r\n // TODO use iterator instead\r\n for (var i = 0, len = childrenCopy.length; i < len; i++) {\r\n var child = childrenCopy[i];\r\n if (child.isMeasured && !child.disabled && !child.__disabled) {\r\n var x = undefined; //child.pixelX; // must reset\r\n var y = undefined; //child.pixelY; // must reset\r\n var childMarginLeft = child.pixelMarginLeft;\r\n var childMarginRight = child.pixelMarginRight;\r\n var childMarginTop = child.pixelMarginTop;\r\n var childMarginBottom = child.pixelMarginBottom;\r\n var childWidth = child.measuredWidth;\r\n var childHeight = child.measuredHeight;\r\n var childLeft = void 0;\r\n var childRight = void 0;\r\n var childTop = void 0;\r\n var childBottom = void 0;\r\n switch (this.layout) {\r\n case \"none\":\r\n break;\r\n // absolute layout\r\n case \"absolute\":\r\n // horizontal alignment\r\n switch (child.align) {\r\n case \"left\":\r\n x = childMarginLeft - child.maxLeft;\r\n break;\r\n case \"center\":\r\n x = (innerWidth - childWidth) / 2 - child.maxLeft;\r\n break;\r\n case \"right\":\r\n x = innerWidth - childMarginRight - child.maxRight;\r\n break;\r\n default:\r\n if (!(child.x instanceof Percent)) {\r\n x = child.pixelX;\r\n }\r\n break;\r\n }\r\n // vertical alignment\r\n switch (child.valign) {\r\n case \"top\":\r\n y = childMarginTop - child.maxTop;\r\n break;\r\n case \"middle\":\r\n y = (innerHeight - childHeight) / 2 - child.maxTop;\r\n break;\r\n case \"bottom\":\r\n y = innerHeight - childMarginBottom - child.maxBottom;\r\n break;\r\n default:\r\n if (!(child.y instanceof Percent)) {\r\n y = child.pixelY;\r\n }\r\n break;\r\n }\r\n break;\r\n // vertical layout\r\n case \"vertical\":\r\n //if ($type.isNumber(child.relativeHeight)) {\r\n //\tchildHeight = child.maxHeight;\r\n //}\r\n switch (child.align) {\r\n case \"left\":\r\n x = childMarginLeft - child.maxLeft;\r\n break;\r\n case \"center\":\r\n x = (innerWidth - childWidth) / 2 - child.maxLeft;\r\n break;\r\n case \"right\":\r\n x = innerWidth - childMarginRight - child.maxRight;\r\n break;\r\n default:\r\n x = child.pixelX;\r\n break;\r\n }\r\n y = nextY + childMarginTop - child.maxTop;\r\n nextY = y + child.maxBottom + childMarginBottom;\r\n break;\r\n // horizontal layout\r\n case \"horizontal\":\r\n //if ($type.isNumber(child.relativeHeight)) {\r\n //\tchildHeight = child.maxHeight;\r\n //}\r\n switch (child.valign) {\r\n case \"top\":\r\n y = childMarginTop - child.maxTop;\r\n break;\r\n case \"middle\":\r\n y = (innerHeight - childHeight) / 2 - child.maxTop;\r\n break;\r\n case \"bottom\":\r\n y = innerHeight - childMarginBottom - child.maxBottom;\r\n break;\r\n default:\r\n y = child.pixelY;\r\n break;\r\n }\r\n x = nextX + childMarginLeft - child.maxLeft;\r\n nextX = x + child.maxRight + childMarginRight;\r\n break;\r\n case \"grid\":\r\n x = nextX + childMarginLeft - child.maxLeft;\r\n switch (child.valign) {\r\n case \"top\":\r\n y = nextY + childMarginTop - child.maxTop;\r\n break;\r\n case \"middle\":\r\n y = nextY + (innerHeight - childHeight) / 2 - child.maxTop;\r\n break;\r\n case \"bottom\":\r\n y = nextY + innerHeight - childMarginBottom - child.maxBottom;\r\n break;\r\n default:\r\n y = nextY - child.maxTop;\r\n break;\r\n }\r\n nextX += columnWidth[column];\r\n rowHeight[row] = $math.max(rowHeight[row], childHeight);\r\n column++;\r\n var nextColumnWidth = columnWidth[column];\r\n if (!$type.isNumber(nextColumnWidth)) {\r\n nextColumnWidth = maxCellWidth;\r\n }\r\n if (nextX > $math.min(this.innerWidth, maxWidth) - nextColumnWidth + 1 && column < columnCount) {\r\n columnCount = column;\r\n nextX = 0;\r\n nextY = 0;\r\n row = 0;\r\n column = 0;\r\n columnWidth = this.getColumnWidth(childrenCopy, columnCount, maxCellWidth);\r\n rowHeight = [];\r\n i = -1;\r\n continue;\r\n }\r\n if (column >= columnCount) {\r\n column = 0;\r\n nextY += rowHeight[row];\r\n row++;\r\n nextX = 0;\r\n }\r\n break;\r\n }\r\n if (this.layout !== \"none\") {\r\n child.moveTo({ x: x, y: y }); // must use moveTo, otherwise x/y set in percent won't work\r\n childLeft = x + child.maxLeft - childMarginLeft;\r\n childRight = x + child.maxRight + childMarginRight;\r\n childTop = y + child.maxTop - childMarginTop;\r\n childBottom = y + child.maxBottom + childMarginBottom;\r\n if (childRight > right || !$type.isNumber(right)) {\r\n right = childRight;\r\n }\r\n if (childLeft < left || !$type.isNumber(left)) {\r\n left = childLeft;\r\n }\r\n if (childTop < top || !$type.isNumber(top)) {\r\n top = childTop;\r\n }\r\n if (childBottom > bottom || !$type.isNumber(bottom)) {\r\n bottom = childBottom;\r\n }\r\n if (childRight > contentRight || !$type.isNumber(contentRight)) {\r\n contentRight = childRight;\r\n }\r\n if (childLeft < contentLeft || !$type.isNumber(contentLeft)) {\r\n contentLeft = childLeft;\r\n }\r\n if (childTop < contentTop || !$type.isNumber(contentTop)) {\r\n contentTop = childTop;\r\n }\r\n if (childBottom > contentBottom || !$type.isNumber(contentBottom)) {\r\n contentBottom = contentBottom;\r\n }\r\n }\r\n }\r\n else {\r\n child.validatePosition();\r\n }\r\n }\r\n if (this.layout == \"none\") {\r\n var noneBBox = this.bbox;\r\n left = noneBBox.x;\r\n right = noneBBox.x + noneBBox.width;\r\n top = noneBBox.y;\r\n bottom = noneBBox.y + noneBBox.height;\r\n }\r\n if (!$type.isNumber(left)) {\r\n left = 0;\r\n contentLeft = 0;\r\n }\r\n if (!$type.isNumber(right)) {\r\n right = this._availableWidth;\r\n contentRight = right;\r\n }\r\n if (!$type.isNumber(top)) {\r\n top = 0;\r\n contentTop = 0;\r\n }\r\n if (!$type.isNumber(bottom)) {\r\n bottom = this._availableHeight;\r\n contentBottom = bottom;\r\n }\r\n if (!$type.isNumber(contentTop)) {\r\n contentTop = 0;\r\n }\r\n if (!$type.isNumber(contentBottom)) {\r\n contentBottom = contentTop;\r\n }\r\n if (!$type.isNumber(contentLeft)) {\r\n contentLeft = 0;\r\n }\r\n if (!$type.isNumber(contentRight)) {\r\n contentRight = contentLeft;\r\n }\r\n measuredWidth = right - left;\r\n measuredHeight = bottom - top;\r\n if ($type.isNumber(this.relativeWidth)) {\r\n measuredWidth = maxWidth - paddingLeft - paddingRight;\r\n left = 0;\r\n right = measuredWidth;\r\n }\r\n if ($type.isNumber(this.relativeHeight)) {\r\n measuredHeight = maxHeight - paddingTop - paddingBottom;\r\n top = 0;\r\n bottom = measuredHeight;\r\n }\r\n if ($type.isNumber(this._pixelWidth)) {\r\n left = 0;\r\n measuredWidth = this._pixelWidth - paddingLeft - paddingRight;\r\n }\r\n if ($type.isNumber(minWidth) && measuredWidth < minWidth) {\r\n left = 0;\r\n measuredWidth = this.minWidth - paddingLeft - paddingRight;\r\n }\r\n if ($type.isNumber(this._pixelHeight)) {\r\n top = 0;\r\n measuredHeight = this._pixelHeight - paddingTop - paddingBottom;\r\n }\r\n if ($type.isNumber(minHeight) && measuredHeight < minHeight) {\r\n top = 0;\r\n measuredHeight = minHeight - paddingTop - paddingBottom;\r\n }\r\n var measuredContentWidth = contentRight - contentLeft;\r\n var measuredContentHeight = contentBottom - contentTop;\r\n /// handle content alignment\r\n if (this.layout != \"none\" && (this.contentAlign || this.contentValign) && children.length > 0) {\r\n var dx_1;\r\n var dy_1;\r\n var mwa = measuredWidth;\r\n var mha = measuredHeight;\r\n if (mwa < measuredContentWidth) {\r\n mwa = measuredContentWidth;\r\n }\r\n if (mha < measuredContentHeight) {\r\n mha = measuredContentHeight;\r\n }\r\n if (this.contentAlign == \"center\") {\r\n dx_1 = (mwa - measuredContentWidth) / 2;\r\n }\r\n if (this.contentAlign == \"right\") {\r\n dx_1 = mwa - measuredContentWidth;\r\n }\r\n if (this.contentValign == \"middle\") {\r\n dy_1 = (mha - measuredContentHeight) / 2;\r\n }\r\n if (this.contentValign == \"bottom\") {\r\n dy_1 = mha - measuredContentHeight;\r\n }\r\n if ($type.isNumber(dx_1)) {\r\n $iter.each(children.iterator(), function (child) {\r\n var childLeft = child.maxLeft;\r\n var ddx = dx_1;\r\n if (_this.layout == \"horizontal\") {\r\n child.x = child.pixelX + ddx;\r\n }\r\n // individual grid elements can not be aligned vertically, that's why it's different from horizontal\r\n if (_this.layout == \"grid\") {\r\n child.x = child.pixelX + ddx;\r\n }\r\n if (_this.layout == \"vertical\") {\r\n ddx += child.pixelMarginLeft;\r\n if (child.align == \"none\") {\r\n child.x = ddx - childLeft;\r\n }\r\n }\r\n if (_this.layout == \"absolute\") {\r\n ddx += child.pixelMarginLeft;\r\n if (child.align == \"none\") {\r\n child.x = ddx - childLeft;\r\n }\r\n }\r\n });\r\n }\r\n if ($type.isNumber(dy_1)) {\r\n $iter.each(children.iterator(), function (child) {\r\n var childTop = child.maxTop;\r\n var ddy = dy_1;\r\n if (_this.layout == \"horizontal\") {\r\n ddy += child.pixelMarginTop;\r\n if (child.valign == \"none\") {\r\n child.y = ddy - childTop;\r\n }\r\n }\r\n // individual grid elements can not be aligned vertically, that's why it's different from horizontal\r\n if (_this.layout == \"grid\") {\r\n ddy += child.pixelMarginTop;\r\n child.y = ddy - childTop;\r\n }\r\n if (_this.layout == \"vertical\") {\r\n child.y = child.pixelY + ddy;\r\n }\r\n if (_this.layout == \"absolute\") {\r\n ddy += child.pixelMarginTop;\r\n if (child.valign == \"none\") {\r\n child.y = ddy - childTop;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n var oldBBox = this.bbox;\r\n // this will mess up maxw/maxh set by container layout, we need a separate min/maxwidth for users\r\n // this prevents invalidating layout in such cases as scrolling category axis, when labels go outside bounds and results transformed event\r\n // todo: need to check if this doesn't cause other problems.\r\n //if (this.maxWidth > 0) {\r\n //measuredWidth = $math.min(measuredWidth, this.maxWidth);\r\n //measuredWidth = $math.max(measuredWidth, this.minWidth);\r\n //}\r\n //if (this.maxHeight > 0) {\r\n //measuredHeight = $math.min(measuredHeight, this.maxHeight);\r\n //measuredHeight = $math.max(measuredHeight, this.minHeight);\r\n //}\r\n measuredWidth = $math.max(measuredWidth, minWidth);\r\n measuredHeight = $math.max(measuredHeight, minHeight);\r\n this.contentWidth = measuredWidth;\r\n this.contentHeight = measuredHeight;\r\n // new\r\n measuredWidth = $math.min(measuredWidth, maxWidth);\r\n measuredHeight = $math.min(measuredHeight, maxHeight);\r\n this._bbox = { x: left, y: top, width: measuredWidth, height: measuredHeight };\r\n var prevLeft = this.maxLeft;\r\n var prevTop = this.maxTop;\r\n var prevBotttom = this.maxBottom;\r\n var prevRight = this.maxRight;\r\n this.measure();\r\n if (prevLeft != this.maxLeft || prevRight != this.maxRight || prevTop != this.maxTop || prevBotttom != this.maxBottom) {\r\n if (this.events.isEnabled(\"transformed\")) {\r\n var event_1 = {\r\n type: \"transformed\",\r\n target: this\r\n };\r\n if (oldBBox) {\r\n event_1.dummyData = oldBBox.width + \" \" + measuredWidth + \" \" + oldBBox.height + \" \" + measuredHeight;\r\n }\r\n this.events.dispatchImmediately(\"transformed\", event_1);\r\n }\r\n }\r\n this.dispatchImmediately(\"layoutvalidated\");\r\n };\r\n /**\r\n * Positions element according its center settings.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.updateCenter = function () {\r\n _super.prototype.updateCenter.call(this);\r\n this.updateBackground();\r\n };\r\n /**\r\n * Update the background to fit into specific dimensions.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make it protected?\r\n */\r\n Container.prototype.updateBackground = function () {\r\n var background = this._background; // accessing protected, as getter creates instance if it doesn't exist\r\n if (background) {\r\n background.x = this.maxLeft;\r\n background.y = this.maxTop;\r\n background.width = this.maxRight - this.maxLeft;\r\n background.height = this.maxBottom - this.maxTop;\r\n }\r\n };\r\n /**\r\n * Returns widths of all columns in a horizontal Container layout.\r\n *\r\n * @ignore Exclude from docs\r\n * @param columnCount Number of columns\r\n * @param maxCellWidth Maximum width of one grid cell\r\n * @return An array of column widths\r\n */\r\n Container.prototype.getColumnWidth = function (children, columnCount, maxCellWidth) {\r\n var _this = this;\r\n var columnWidth = [];\r\n var column = 0;\r\n $array.each(children, function (child) {\r\n if (child.isMeasured && !child.disabled && !child.__disabled) {\r\n if (_this.fixedWidthGrid) {\r\n columnWidth[column] = maxCellWidth;\r\n }\r\n else {\r\n columnWidth[column] = $math.max(columnWidth[column], child.measuredWidth + child.pixelMarginRight + child.pixelMarginLeft);\r\n }\r\n column++;\r\n if (column == columnCount) {\r\n column = 0;\r\n }\r\n }\r\n });\r\n return columnWidth;\r\n };\r\n Object.defineProperty(Container.prototype, \"layout\", {\r\n /**\r\n * @return Layout\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"layout\");\r\n },\r\n /**\r\n * Container layout.\r\n *\r\n * Options: \"absolute\" (default), \"vertical\", \"horizontal\", \"grid\", \"none\". \"none\" is quite the same as \"absolute\" - the objects will\r\n * be positioned at their x, y coordinates, the difference is that with \"absolute\" you can still use align/valign for children and with \"none\" you can not.\r\n * Use \"none\" as much as you can as it's most cpu-saving layout.\r\n *\r\n * @default \"absolute\"\r\n * @param value Layout\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"layout\", value)) {\r\n this.invalidateLayout();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"contentValign\", {\r\n /**\r\n * @return Vertical alignment\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"contentValign\");\r\n },\r\n /**\r\n * Vertical alignment of the elements for the vertical Container.\r\n *\r\n * This is used when Container is larger than the height of all its children.\r\n *\r\n * @param value vertical alignment\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"contentValign\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"contentAlign\", {\r\n /**\r\n * @return Horizontal alignment\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"contentAlign\");\r\n },\r\n /**\r\n * Horizontal alignment of the elements for the horizontal Container.\r\n *\r\n * This is used when Container is larger than the height of all its children.\r\n *\r\n * @param value Horizontal alignment\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"contentAlign\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"fixedWidthGrid\", {\r\n /**\r\n * @return Should use fixed width grid?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fixedWidthGrid\");\r\n },\r\n /**\r\n * Controls if the grid of the Container should use fixed width. Fixed width\r\n * grid will divide available space to all its columns/rows equally, without\r\n * adapting to actual child sizes or size requirements.\r\n *\r\n * @default false\r\n * @param value Should use fixed width grid?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fixedWidthGrid\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"maxColumns\", {\r\n /**\r\n * @return Should use fixed width grid?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxColumns\");\r\n },\r\n /**\r\n * Maximum number of columns (when using `\"grid\"` layout).\r\n *\r\n * @param value Should use fixed width grid?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxColumns\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"reverseOrder\", {\r\n /**\r\n * @return Reverse children?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"reverseOrder\");\r\n },\r\n /**\r\n * If set to `true`, the children of the container will be drawn in reverse\r\n * order.\r\n *\r\n * @default false\r\n * @param value Reverse children?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"reverseOrder\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"setStateOnChildren\", {\r\n /**\r\n * @return Set state on children\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"setStateOnChildren\");\r\n },\r\n /**\r\n * Specifies if, when state is applied on this container, the same state\r\n * should be applied to container's children as well as `background`.\r\n *\r\n * @default false\r\n * @param value Set state on children\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"setStateOnChildren\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @param point A coordinate to check\r\n * @return `true` if it fits within container\r\n */\r\n Container.prototype.fitsToBounds = function (point) {\r\n var x = point.x;\r\n var y = point.y;\r\n var deviation = 0.5; // sometimes coordinates are rounded to numbers like .999 so we add deviation here\r\n if (x >= -deviation && x <= this.pixelWidth + deviation && y >= -deviation && y <= this.pixelHeight + deviation) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n /**\r\n * Copies all properties from different Container, including background\r\n * clone.\r\n *\r\n * @param source Source Container to copy from\r\n */\r\n Container.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n _super.prototype.copyFrom.call(this, source);\r\n this.layout = source.layout;\r\n this.setStateOnChildren = source.setStateOnChildren;\r\n if (source._background) {\r\n this.background = source._background.clone();\r\n this.background.copyFrom(source._background); // won't work without this\r\n }\r\n $iter.each(source.children.iterator(), function (child) {\r\n if (child.shouldClone) {\r\n var clonedChild = child.clone();\r\n clonedChild.parent = _this;\r\n }\r\n });\r\n };\r\n Object.defineProperty(Container.prototype, \"preloader\", {\r\n /**\r\n * @return Preloader instance\r\n */\r\n get: function () {\r\n var preloader = this._preloader;\r\n if (preloader) {\r\n return preloader;\r\n }\r\n else if (this.parent) {\r\n return this.parent.preloader;\r\n }\r\n },\r\n /**\r\n * A [[Preloader]] instance to be used when Container is busy.\r\n *\r\n * @param preloader Preloader instance\r\n */\r\n set: function (preloader) {\r\n if (this._preloader) {\r\n this.removeDispose(this._preloader);\r\n }\r\n this._preloader = preloader;\r\n if (preloader) {\r\n preloader.parent = this.tooltipContainer;\r\n this._disposers.push(preloader);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets [[Paper]] instance to use to draw elements.\r\n * @ignore\r\n * @param paper Paper\r\n * @return true if paper was changed, false, if it's the same\r\n */\r\n Container.prototype.setPaper = function (paper) {\r\n var _this = this;\r\n var changed = _super.prototype.setPaper.call(this, paper);\r\n if (changed) {\r\n if (this._background) {\r\n this._background.paper = paper;\r\n this._background.topParent = this.topParent;\r\n }\r\n this.children.each(function (child) {\r\n child.setPaper(paper);\r\n child.topParent = _this.topParent;\r\n });\r\n }\r\n return changed;\r\n };\r\n /**\r\n * Removes Container from the system-wide list of invalid Containers.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.removeFromInvalids = function () {\r\n _super.prototype.removeFromInvalids.call(this);\r\n registry.removeFromInvalidLayouts(this);\r\n };\r\n /**\r\n * Sets a [[DataItem]] to be used as data for the Container.\r\n *\r\n * @todo Description\r\n * @param dataItem DataItem\r\n */\r\n Container.prototype.setDataItem = function (dataItem) {\r\n // this place is potentially dangerous, as if we set datItem for some dummy container, all children dataItems will be overriden\r\n // the main reason for doing this is that we need a setDataItem code to be called for each sprite, otherwise property fields won't be\r\n // applied. Also, getting dataItem from parent all the time is more expensive than saving value.\r\n if (this._dataItem != dataItem) {\r\n $iter.each(this.children.iterator(), function (child) {\r\n child.dataItem = dataItem;\r\n });\r\n if (this._background) {\r\n this._background.dataItem = dataItem;\r\n }\r\n }\r\n _super.prototype.setDataItem.call(this, dataItem);\r\n };\r\n /**\r\n * Measures the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.measureElement = function () {\r\n if (this.disabled || this.isTemplate || this.layout == \"none\" || this.__disabled) {\r\n // void\r\n }\r\n else {\r\n this.validateLayout();\r\n }\r\n };\r\n Object.defineProperty(Container.prototype, \"fontFamily\", {\r\n /**\r\n * @return Font family\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fontFamily\");\r\n },\r\n /**\r\n * Font family to be used for the text.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Font family value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"fontFamily\", value, true)) {\r\n this.setSVGAttribute({ \"font-family\": value });\r\n this.invalidateLabels();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"fontSize\", {\r\n /**\r\n * @return Font size\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fontSize\");\r\n },\r\n /**\r\n * Font size to be used for the text. The size can either be numeric, in\r\n * pixels, or other measurements.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Font size value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"fontSize\", value, true)) {\r\n this.setSVGAttribute({ \"font-size\": value });\r\n this.invalidateLabels();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * When fontSize of fontFamily changes we need to hard-invalidate all Labels of this container to position them properly.\r\n */\r\n Container.prototype.invalidateLabels = function () {\r\n this.children.each(function (child) {\r\n // can't import Label because of Circular dependencies\r\n if (child[\"hardInvalidate\"]) {\r\n child[\"hardInvalidate\"]();\r\n // this fixes firefox and viewport issue\r\n child.events.once(\"validated\", child.handleValidate, child, false);\r\n }\r\n else if (child instanceof Container) {\r\n child.invalidateLabels();\r\n }\r\n });\r\n };\r\n Object.defineProperty(Container.prototype, \"fontWeight\", {\r\n /**\r\n * @return Font weight\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fontWeight\");\r\n },\r\n /**\r\n * Font weight to use for text.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Font weight\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fontWeight\", value);\r\n this.setSVGAttribute({ \"font-weight\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"textDecoration\", {\r\n /**\r\n * @return Decoration\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"textDecoration\");\r\n },\r\n /**\r\n * A text decoration to use for text.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Decoration\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"textDecoration\", value);\r\n this.setSVGAttribute({ \"text-decoration\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Disposes (destroys) the element and all its children.\r\n */\r\n Container.prototype.dispose = function () {\r\n if (this._background) {\r\n this._background.dispose();\r\n }\r\n this._shouldBeReady = [];\r\n this.disposeChildren();\r\n _super.prototype.dispose.call(this);\r\n };\r\n /**\r\n * Applies a [[SpriteState]] on this element.\r\n *\r\n * The first parameter can either be a name of the state or a [[SpriteState]]\r\n * instance.\r\n *\r\n * When run, this method will apply SVG properties defined in a\r\n * [[SpriteState]], but only those that are relevant to this particular\r\n * element, that is are listed in its respective `properties` array.\r\n *\r\n * @see {@link SpriteState}\r\n * @param value A state - name key or instance\r\n * @param transitionDuration Duration of the transition between current and new state\r\n * @param easing An easing function\r\n */\r\n Container.prototype.setState = function (value, transitionDuration, easing) {\r\n var stateName = value;\r\n if (value instanceof SpriteState) {\r\n stateName = value.name;\r\n }\r\n if (this.setStateOnChildren) {\r\n $iter.each(this.children.iterator(), function (child) {\r\n child.setState(stateName, transitionDuration, easing);\r\n // not good to set it in child setState\r\n if (stateName != \"active\") {\r\n child.isActive = false;\r\n }\r\n });\r\n }\r\n if (this._background) {\r\n this._background.setState(stateName);\r\n }\r\n if (this.setStateOnSprites.length) {\r\n $array.each(this.setStateOnSprites, function (item) {\r\n item.setState(stateName, transitionDuration, easing);\r\n });\r\n }\r\n return _super.prototype.setState.call(this, value, transitionDuration, easing);\r\n };\r\n // otherwise isActive won't work properly with background\r\n Container.prototype.setActive = function (value) {\r\n _super.prototype.setActive.call(this, value);\r\n if (this._background) {\r\n this._background.isActive = value;\r\n }\r\n };\r\n /**\r\n * Dispatches ready event. Dispatches when all children are ready.\r\n */\r\n Container.prototype.dispatchReady = function () {\r\n var _this = this;\r\n if (!this.isReady() && !this.isDisposed()) {\r\n var allReady_1 = true;\r\n $iter.eachContinue(this.children.iterator(), function (sprite) {\r\n if (!sprite.__disabled && !sprite.disabled && !sprite.isReady()) {\r\n allReady_1 = false;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n $array.eachContinue(this._shouldBeReady, function (sprite) {\r\n if (!sprite.__disabled && !sprite.disabled && !sprite.isReady()) {\r\n allReady_1 = false;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n if (allReady_1) {\r\n _super.prototype.dispatchReady.call(this);\r\n }\r\n else {\r\n registry.events.once(\"exitframe\", function () {\r\n _this.dispatchReady();\r\n system.requestFrame();\r\n }, undefined, false);\r\n }\r\n }\r\n };\r\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype._systemUpdate = function (skippedSprites) {\r\n this.children.each(function (child) {\r\n if (child.invalid) {\r\n if (!child._systemCheckIfValidate()) {\r\n skippedSprites.push(child);\r\n }\r\n else if (child.dataItem && child.dataItem.component && child.dataItem.component.dataInvalid) {\r\n skippedSprites.push(child);\r\n }\r\n else {\r\n child.validate();\r\n }\r\n }\r\n });\r\n _super.prototype._systemUpdate.call(this, skippedSprites);\r\n };\r\n /**\r\n * Called during the System.validatePositions method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype._systemValidatePositions = function () {\r\n this.children.each(function (sprite) {\r\n if (sprite.positionInvalid) {\r\n sprite.validatePosition();\r\n }\r\n });\r\n _super.prototype._systemValidatePositions.call(this);\r\n };\r\n /**\r\n * Called during the System.validateLayouts method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype._systemValidateLayouts = function () {\r\n if (this.layoutInvalid && !this.isDisposed()) {\r\n this.validateLayout();\r\n }\r\n };\r\n Object.defineProperty(Container.prototype, \"tapToActivate\", {\r\n /**\r\n * @return Enable touch protection?\r\n */\r\n get: function () {\r\n return this._tapToActivate;\r\n },\r\n /**\r\n * If set to `true` the chart's regular touch functionality will be suspended\r\n * so that the whole page it is located in remains scrollable, even when\r\n * swiping over the chart's body.\r\n *\r\n * User will need to tap the chart in order to activate its regular touch\r\n * functionality.\r\n *\r\n * The chart will remain \"active\" as long as user keeps interacting with the\r\n * chart. After `tapTimeout` milliseconds the chart will return to its\r\n * \"protected\" mode.\r\n *\r\n * @default false\r\n * @since 4.4.0\r\n * @param value Enable touch protection?\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/touch/} For more information.\r\n */\r\n set: function (value) {\r\n if (this._tapToActivate != value) {\r\n this.setTapToActivate(value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Container.prototype.setTapToActivate = function (value) {\r\n var _this = this;\r\n this._tapToActivate = value;\r\n this.interactions.isTouchProtected = value;\r\n // setEventDisposer will also remove listeners if value == false\r\n if (value) {\r\n this.interactions.setEventDisposer(\"container-tapToActivate\", value, function () { return new MultiDisposer([\r\n _this.events.on(\"hit\", _this.handleTapToActivate, _this, false),\r\n _this.events.on(\"down\", _this.initTapTimeout, _this, false),\r\n _this.events.on(\"track\", _this.initTapTimeout, _this, false),\r\n //this.events.on(\"drag\", this.initTapTimeout, this, false),\r\n getInteraction().body.events.on(\"down\", function (ev) {\r\n if (!getInteraction().isLocalElement(ev.pointer, _this.paper.svg, _this.uid)) {\r\n _this.handleTapToActivateDeactivation();\r\n }\r\n }, _this, false)\r\n ]); });\r\n }\r\n getInteraction();\r\n };\r\n /**\r\n * @todo Ignore on non-touch events\r\n */\r\n Container.prototype.handleTapToActivate = function () {\r\n this.interactions.isTouchProtected = false;\r\n this.initTapTimeout();\r\n };\r\n Container.prototype.handleTapToActivateDeactivation = function () {\r\n this.interactions.isTouchProtected = true;\r\n };\r\n Container.prototype.initTapTimeout = function () {\r\n var _this = this;\r\n if (this._tapToActivateTimeout) {\r\n this._tapToActivateTimeout.dispose();\r\n }\r\n if (this.tapToActivate && !this.interactions.isTouchProtected && this.tapTimeout) {\r\n this._tapToActivateTimeout = this.setTimeout(function () {\r\n _this.handleTapToActivateDeactivation();\r\n }, this.tapTimeout);\r\n }\r\n };\r\n /**\r\n * Moves the whole chart to other HTML container.\r\n *\r\n * `htmlElement` can either be a reference to a DOM element, or an id of\r\n * such element.\r\n *\r\n * @since 4.9.24\r\n * @param htmlElement Target element\r\n */\r\n Container.prototype.moveHtmlContainer = function (htmlElement) {\r\n var newContainer = $dom.getElement(htmlElement);\r\n if (newContainer) {\r\n this.htmlContainer = newContainer;\r\n var svgDiv = this.svgContainer;\r\n svgDiv.htmlElement = newContainer;\r\n svgDiv.htmlElement.appendChild(svgDiv.SVGContainer);\r\n svgDiv.initSensor();\r\n svgDiv.measure();\r\n }\r\n else if ($type.isString(htmlElement) && htmlElement != \"\") {\r\n system.log(\"html container '\" + htmlElement + \"' not found\");\r\n //throw new Error(\"html container not found\");\r\n }\r\n };\r\n /**\r\n * @ignore\r\n * @return Has license?\r\n */\r\n Container.prototype.hasLicense = function () {\r\n if (options.commercialLicense) {\r\n return true;\r\n }\r\n for (var i = 0; i < options.licenses.length; i++) {\r\n if (options.licenses[i].match(/^CH.{5,}/i)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n return Container;\r\n}(Sprite));\r\nexport { Container };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Container\"] = Container;\r\n//# sourceMappingURL=Container.js.map"],"names":["Component","_super","_this","call","this","dataFields","_dataSources","_parseDataFrom","_dataDisposers","_currentDataSetId","_start","_end","skipRangeEvent","rangeChangeDuration","rangeChangeEasing","parsingStepDuration","dataInvalid","rawDataInvalid","dataRangeInvalid","dataItemsInvalid","interpolationDuration","interpolationEasing","sequencedInterpolation","sequencedInterpolationDelay","dataValidationProgress","_addAllDataItems","_usesData","className","minZoomCount","maxZoomCount","_dataItems","createDataItem","events","on","handleDataItemAdded","handleDataItemRemoved","_disposers","push","template","invalidateData","dataUsers","handleDataUserAdded","maxZoomDeclination","applyTheme","prototype","event","dataUser","newValue","dataProvider","handleDataItemValueChange","dataItem","name","invalidateDataItems","handleDataItemWorkingValueChange","handleDataItemWorkingLocationChange","handleDataItemCalculatedValueChange","handleDataItemPropertyChange","processDataItem","dataContext","hasSomeValues_1","key","fieldValue","fieldName","value","_adapterO","isEnabled","apply","field","hasChildren","copyFrom","mainDataSet","children","count","length","i","rawDataItem","childDataItem","create","parent","anyDataItem","propertyFields","f","setProperty","remove","updateDataItem","dataContext_1","each","child","validateDataElements","endIndex","startIndex","dataItems","getIndex","validateDataElement","validate","addData","removeCount","skipRaw","inited","data","Array","removeData","shift","dataItem_1","disabled","isTemplate","iterator","x","invalidateDataUsers","invalidate","invalidateDataRange","validateDataRange","_prevStartIndex","_prevEndIndex","rangeChangeUpdate","appendDataItems","dispatchImmediately","sliceData","_workingStartIndex","_workingEndIndex","__disabled","invalidateRawData","validateRawData","dispose","clones","clear","source","removeDispose","disposeData","_startIndex","undefined","_endIndex","_dataSets","getDataItem","validateData","_data","preloader","counter","startTime","Date","now","n","_loop_1","this_1","dataUserDataItem","elapsed","visible","progress","state_1","hidden","appeared","stacked","hide","_internalDefaultsApplied","applyInternalDefaults","dispatch","validateDataItems","Object","defineProperty","get","set","setData","enumerable","configurable","isDisposed","getDataSource","property","component","setDataSourceEvents","adapter","add","val","dataSourceDateFields","dataSourceNumberFields","loadData","load","populateDataSourceFields","list","targetList","ds","ev","openModal","message","incremental","keepCount","updateCurrentData","item","index","_responsive","zoom","range","instantly","declination","start","end","priority","maxZoomFactor","_finalStart","_finalEnd","minZoomFactor","rangeChangeAnimation","options","animationOptions","to","stop","kill","animate","isFinished","zoomToIndexes","getPropertyValue","setPropertyValue","Math","round","indexToPosition","max","floor","min","ceil","removeFromInvalids","dataSets","getKey","setDataSet","id","dataSet","_updateDataItemIndexes","values","_index","bindDataField","invalidateProcessedData","resetProcessedRange","_dataUsers","clone","reinit","_inited","deepInvalidate","getExporting","_export","has","_exportData","handleDataUpdated","arg","setDisabled","changed","setShowOnInit","_showOnInitDisposer2","once","hideInitially","setBaseId","_baseId","_systemCheckIfValidate","asFunction","asIs","Container","_childrenByLayout","_childrenDisposers","hasFocused","setStateOnSprites","layoutInvalid","_absoluteWidth","_absoluteHeight","_shouldBeReady","_tapToActivate","tapTimeout","_element","paper","addGroup","group","element","_positionPrecision","handleChildAdded","handleChildRemoved","processChild","insertKey","uid","handleChildTransform","sortAndAdd","err","type","sortChildren","addChildren","oldValue","removeKey","removeElement","isMeasured","invalidateLayout","target","layout","_children","fixed_1","relative_1","percentWidth","percentHeight","concat","calculateRelativeSize","totalRelativeWidth","totalRelativeHeight","relativeWidth","relativeHeight","zindexed","sortArray","map","idx","sort","a","b","ai","zIndex","bi","group_1","isCorrect","node","childNodes","len","_background","addToBack","createChild","classType","sprite","removeChildren","removeValue","disposeChildren","createBackground","processBackground","background","handleGlobalScale","fill","getFor","validateLayout","_availableWidth","innerWidth","_availableHeight","innerHeight","measuredWidth","measuredHeight","allValid","maxWidth","maxHeight","pixelMarginRight","pixelMarginLeft","invalid","pixelMarginTop","pixelMarginBottom","childMeasuredWidth","childMeasuredHeight","align","valign","arrange","left","right","top","bottom","maxCellWidth","minCellWidth","columnCount","contentLeft","contentRight","contentTop","contentBottom","paddingLeft","pixelPaddingLeft","paddingRight","pixelPaddingRight","paddingTop","pixelPaddingTop","paddingBottom","pixelPaddingBottom","nextX","nextY","row","column","columnWidth","rowHeight","minWidth","minHeight","childrenCopy","reverseOrder","reverse","fixedWidthGrid","maxColumns","getColumnWidth","validatePosition","y","childMarginLeft","childMarginRight","childMarginTop","childMarginBottom","childWidth","childHeight","childLeft","childRight","childTop","childBottom","maxLeft","maxRight","pixelX","maxTop","maxBottom","pixelY","nextColumnWidth","moveTo","noneBBox","bbox","width","height","_pixelWidth","_pixelHeight","measuredContentWidth","measuredContentHeight","contentAlign","contentValign","dx_1","dy_1","mwa","mha","ddx","ddy","oldBBox","contentWidth","contentHeight","_bbox","prevLeft","prevTop","prevBotttom","prevRight","measure","event_1","dummyData","updateCenter","updateBackground","fitsToBounds","point","deviation","pixelWidth","pixelHeight","setStateOnChildren","shouldClone","clonedChild","_preloader","tooltipContainer","setPaper","topParent","setDataItem","_dataItem","measureElement","setSVGAttribute","invalidateLabels","handleValidate","setState","transitionDuration","easing","stateName","isActive","setActive","dispatchReady","isReady","allReady_1","_systemUpdate","skippedSprites","_systemValidatePositions","positionInvalid","_systemValidateLayouts","setTapToActivate","interactions","isTouchProtected","setEventDisposer","handleTapToActivate","initTapTimeout","body","isLocalElement","pointer","svg","handleTapToActivateDeactivation","_tapToActivateTimeout","tapToActivate","setTimeout","moveHtmlContainer","htmlElement","newContainer","htmlContainer","svgDiv","svgContainer","appendChild","SVGContainer","initSensor","hasLicense","match"],"sourceRoot":""}