{"version":3,"file":"percent.js","mappings":"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","sources":["webpack://@amcharts/amcharts5/./src/.internal/charts/percent/PercentDefaultTheme.ts","webpack://@amcharts/amcharts5/./src/.internal/charts/percent/PercentChart.ts","webpack://@amcharts/amcharts5/./src/.internal/charts/percent/PercentSeries.ts","webpack://@amcharts/amcharts5/./src/.internal/charts/pie/PieChart.ts","webpack://@amcharts/amcharts5/./src/.internal/charts/pie/PieSeries.ts","webpack://@amcharts/amcharts5/./src/.internal/charts/funnel/FunnelSlice.ts","webpack://@amcharts/amcharts5/./src/.internal/charts/funnel/FunnelSeries.ts","webpack://@amcharts/amcharts5/./src/.internal/charts/funnel/PyramidSeries.ts","webpack://@amcharts/amcharts5/./src/.internal/charts/funnel/PictorialStackedSeries.ts","webpack://@amcharts/amcharts5/./src/.internal/charts/funnel/SlicedChart.ts","webpack://@amcharts/amcharts5/./tmp/webpack/percent.js"],"sourcesContent":["import { Theme } from \"../../core/Theme\";\r\nimport { percent, p50, p100 } from \"../../core/util/Percent\";\r\nimport { ColorSet } from \"../../core/util/ColorSet\";\r\nimport { setColor } from \"../../themes/DefaultTheme\";\r\n\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class PercentDefaultTheme extends Theme {\r\n\tprotected setupDefaultRules() {\r\n\t\tsuper.setupDefaultRules();\r\n\r\n\t\tconst ic = this._root.interfaceColors;\r\n\t\tconst r = this.rule.bind(this);\r\n\r\n\t\t/**\r\n\t\t * ========================================================================\r\n\t\t * charts/percent\r\n\t\t * ========================================================================\r\n\t\t */\r\n\r\n\t\tr(\"PercentSeries\").setAll({\r\n\t\t\tlegendLabelText: \"{category}\",\r\n\t\t\tlegendValueText: \"{valuePercentTotal.formatNumber('0.00p')}\",\r\n\t\t\tcolors: ColorSet.new(this._root, {}),\r\n\t\t\twidth: p100,\r\n\t\t\theight: p100\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * ========================================================================\r\n\t\t * charts/pie\r\n\t\t * ========================================================================\r\n\t\t */\r\n\r\n\t\tr(\"PieChart\").setAll({\r\n\t\t\tradius: percent(80),\r\n\t\t\tstartAngle: -90,\r\n\t\t\tendAngle: 270\r\n\t\t})\r\n\r\n\t\tr(\"PieSeries\").setAll({\r\n\t\t\talignLabels: true,\r\n\t\t\tstartAngle: -90,\r\n\t\t\tendAngle: 270\r\n\t\t});\r\n\r\n\t\tr(\"PieSeries\").states.create(\"hidden\", { endAngle: -90, opacity: 0 });\r\n\r\n\t\tr(\"Slice\", [\"pie\"]).setAll({\r\n\t\t\tposition: \"absolute\",\r\n\t\t\tisMeasured: false,\r\n\t\t\tx: 0,\r\n\t\t\ty: 0,\r\n\t\t\ttoggleKey: \"active\",\r\n\t\t\ttooltipText: \"{category}: {valuePercentTotal.formatNumber('0.00p')}\",\r\n\t\t\tstrokeWidth: 1,\r\n\t\t\tstrokeOpacity: 1,\r\n\t\t\trole: \"figure\",\r\n\t\t\tlineJoin:\"round\"\r\n\t\t});\r\n\r\n\t\tr(\"Slice\", [\"pie\"]).states.create(\"active\", { shiftRadius: 20, scale: 1 });\r\n\t\tr(\"Slice\", [\"pie\"]).states.create(\"hoverActive\", { scale: 1.04 });\r\n\t\tr(\"Slice\", [\"pie\"]).states.create(\"hover\", { scale: 1.04 });\r\n\r\n\t\tr(\"RadialLabel\", [\"pie\"]).setAll({\r\n\t\t\ttextType: \"aligned\",\r\n\t\t\tradius: 10,\r\n\t\t\ttext: \"{category}: {valuePercentTotal.formatNumber('0.00p')}\",\r\n\t\t\tpaddingTop: 5,\r\n\t\t\tpaddingBottom: 5,\r\n\t\t\tpopulateText: true\r\n\t\t});\r\n\r\n\t\tr(\"Tick\", [\"pie\"]).setAll({\r\n\t\t\tlocation: 1\r\n\t\t});\r\n\r\n\r\n\t\t/**\r\n\t\t * ========================================================================\r\n\t\t * charts/funnel\r\n\t\t * ========================================================================\r\n\t\t */\r\n\r\n\t\tr(\"SlicedChart\").setAll({\r\n\t\t\tpaddingLeft: 10,\r\n\t\t\tpaddingRight: 10,\r\n\t\t\tpaddingTop: 10,\r\n\t\t\tpaddingBottom: 10\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * ------------------------------------------------------------------------\r\n\t\t * charts/funnel: Funnel\r\n\t\t * ------------------------------------------------------------------------\r\n\t\t */\r\n\r\n\t\tr(\"FunnelSeries\").setAll({\r\n\t\t\tstartLocation: 0,\r\n\t\t\tendLocation: 1,\r\n\t\t\torientation: \"vertical\",\r\n\t\t\talignLabels: true,\r\n\t\t\tsequencedInterpolation: true\r\n\t\t});\r\n\r\n\t\tr(\"FunnelSlice\").setAll({\r\n\t\t\tinteractive: true,\r\n\t\t\texpandDistance: 0,\r\n\t\t\t//tooltipText: \"{category}: {valuePercentTotal.formatNumber('0.00p')}\"\r\n\t\t});\r\n\r\n\t\tr(\"FunnelSlice\").states.create(\"hover\", { expandDistance: 0.15 })\r\n\r\n\t\tr(\"Label\", [\"funnel\"]).setAll({\r\n\t\t\tpopulateText: true,\r\n\t\t\ttext: \"{category}: {valuePercentTotal.formatNumber('0.00p')}\",\r\n\t\t\tcenterY: p50\r\n\t\t});\r\n\r\n\t\tr(\"Label\", [\"funnel\", \"horizontal\"]).setAll({\r\n\t\t\tcenterX: 0,\r\n\t\t\tcenterY: p50,\r\n\t\t\trotation: -90\r\n\t\t});\r\n\r\n\t\t// Class: Label\r\n\t\tr(\"Label\", [\"funnel\", \"vertical\"]).setAll({\r\n\t\t\tcenterY: p50,\r\n\t\t\tcenterX: 0\r\n\t\t});\r\n\r\n\t\tr(\"Tick\", [\"funnel\"]).setAll({\r\n\t\t\tlocation: 1\r\n\t\t});\r\n\r\n\t\tr(\"FunnelSlice\", [\"funnel\", \"link\"]).setAll({\r\n\t\t\tfillOpacity: 0.5,\r\n\t\t\tstrokeOpacity: 0,\r\n\t\t\texpandDistance: -0.1\r\n\t\t});\r\n\r\n\t\tr(\"FunnelSlice\", [\"funnel\", \"link\", \"vertical\"]).setAll({\r\n\t\t\theight: 10,\r\n\t\t});\r\n\r\n\t\tr(\"FunnelSlice\", [\"funnel\", \"link\", \"horizontal\"]).setAll({\r\n\t\t\twidth: 10\r\n\t\t});\r\n\r\n\r\n\t\t/**\r\n\t\t * ------------------------------------------------------------------------\r\n\t\t * charts/funnel: Pyramid\r\n\t\t * ------------------------------------------------------------------------\r\n\t\t */\r\n\r\n\t\tr(\"PyramidSeries\").setAll({\r\n\t\t\tvalueIs: \"area\"\r\n\t\t});\r\n\r\n\t\tr(\"FunnelSlice\", [\"pyramid\", \"link\"]).setAll({\r\n\t\t\tfillOpacity: 0.5\r\n\t\t});\r\n\r\n\t\tr(\"FunnelSlice\", [\"pyramid\", \"link\", \"vertical\"]).setAll({\r\n\t\t\theight: 0\r\n\t\t});\r\n\r\n\t\tr(\"FunnelSlice\", [\"pyramid\", \"link\", \"horizontal\"]).setAll({\r\n\t\t\twidth: 0\r\n\t\t});\r\n\r\n\t\tr(\"FunnelSlice\", [\"pyramid\"]).setAll({\r\n\t\t\tinteractive: true,\r\n\t\t\texpandDistance: 0\r\n\t\t});\r\n\r\n\t\tr(\"FunnelSlice\", [\"pyramid\"]).states.create(\"hover\", { expandDistance: 0.15 });\r\n\r\n\t\tr(\"Label\", [\"pyramid\"]).setAll({\r\n\t\t\tpopulateText: true,\r\n\t\t\ttext: \"{category}: {valuePercentTotal.formatNumber('0.00p')}\",\r\n\t\t\tcenterY: p50\r\n\t\t});\r\n\r\n\t\tr(\"Label\", [\"pyramid\", \"horizontal\"]).setAll({\r\n\t\t\tcenterX: 0,\r\n\t\t\tcenterY: p50,\r\n\t\t\trotation: -90\r\n\t\t});\r\n\r\n\t\tr(\"Label\", [\"pyramid\", \"vertical\"]).setAll({\r\n\t\t\tcenterY: p50,\r\n\t\t\tcenterX: 0\r\n\t\t});\r\n\r\n\t\tr(\"Tick\", [\"pyramid\"]).setAll({\r\n\t\t\tlocation: 1\r\n\t\t});\r\n\r\n\r\n\t\t/**\r\n\t\t * ------------------------------------------------------------------------\r\n\t\t * charts/funnel: Pictorial\r\n\t\t * ------------------------------------------------------------------------\r\n\t\t */\r\n\r\n\t\t// Class: FunnelSlice\r\n\t\tr(\"FunnelSlice\", [\"pictorial\"]).setAll({\r\n\t\t\tinteractive: true,\r\n\t\t\ttooltipText: \"{category}: {valuePercentTotal.formatNumber('0.00p')}\"\r\n\t\t});\r\n\r\n\t\tr(\"Label\", [\"pictorial\"]).setAll({\r\n\t\t\tpopulateText: true,\r\n\t\t\ttext: \"{category}: {valuePercentTotal.formatNumber('0.00p')}\",\r\n\t\t\tcenterY: p50\r\n\t\t});\r\n\r\n\t\tr(\"Label\", [\"pictorial\", \"horizontal\"]).setAll({\r\n\t\t\tcenterX: 0,\r\n\t\t\tcenterY: p50,\r\n\t\t\trotation: -90\r\n\t\t});\r\n\r\n\t\tr(\"Label\", [\"pictorial\", \"vertical\"]).setAll({\r\n\t\t\tcenterY: p50,\r\n\t\t\tcenterX: 0\r\n\t\t});\r\n\r\n\t\tr(\"FunnelSlice\", [\"pictorial\", \"link\"]).setAll({\r\n\t\t\tfillOpacity: 0.5,\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t});\r\n\r\n\t\tr(\"Tick\", [\"pictorial\"]).setAll({\r\n\t\t\tlocation: 0.5\r\n\t\t});\r\n\r\n\t\t{\r\n\t\t\tconst rule = r(\"Graphics\", [\"pictorial\", \"background\"]);\r\n\r\n\t\t\trule.setAll({\r\n\t\t\t\tfillOpacity: 0.2\r\n\t\t\t});\r\n\r\n\t\t\tsetColor(rule, \"fill\", ic, \"alternativeBackground\");\r\n\t\t}\r\n\r\n\t}\r\n}\r\n","import type { PercentSeries } from \"./PercentSeries\";\nimport { SerialChart, ISerialChartPrivate, ISerialChartSettings } from \"../../core/render/SerialChart\";\nimport { PercentDefaultTheme } from \"./PercentDefaultTheme\";\n\nexport interface IPercentChartSettings extends ISerialChartSettings {\n}\n\nexport interface IPercentChartPrivate extends ISerialChartPrivate {\n}\n\n/**\n * Base class for [[PieChart]].\n *\n * Also used for percent-based series, like [[FunnelSeries]], [[PyramidSeries]], etc.\n *\n * @important\n */\nexport abstract class PercentChart extends SerialChart {\n\tpublic static className: string = \"PercentChart\";\n\tpublic static classNames: Array = SerialChart.classNames.concat([PercentChart.className]);\n\n\tdeclare public _settings: IPercentChartSettings;\n\tdeclare public _privateSettings: IPercentChartPrivate;\n\tdeclare public _seriesType: PercentSeries;\n\n\tprotected _afterNew() {\n\t\tthis._defaultThemes.push(PercentDefaultTheme.new(this._root));\n\n\t\tsuper._afterNew();\n\n\t\tthis.chartContainer.children.push(this.seriesContainer);\n\t\tthis.seriesContainer.children.push(this.bulletsContainer);\n\t}\n\n\tprotected _processSeries(series: this[\"_seriesType\"]) {\n\t\tsuper._processSeries(series);\n\t\tthis.seriesContainer.children.moveValue(this.bulletsContainer, this.seriesContainer.children.length - 1);\t\n\t}\t\n}\n","import type { DataItem } from \"../../core/render/Component\";\nimport type { Graphics } from \"../../core/render/Graphics\";\nimport type { Label } from \"../../core/render/Label\";\nimport type { Tick } from \"../../core/render/Tick\";\nimport type { ListTemplate } from \"../../core/util/List\";\nimport type { ColorSet } from \"../../core/util/ColorSet\";\nimport type { ILegendDataItem } from \"../../core/render/Legend\";\nimport type { Color } from \"../../core/util/Color\";\nimport type { PercentChart } from \"./PercentChart\";\n\nimport { Series, ISeriesSettings, ISeriesDataItem, ISeriesPrivate } from \"../../core/render/Series\";\nimport { Container } from \"../../core/render/Container\";\nimport { visualSettings } from \"../../core/render/Graphics\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $type from \"../../core/util/Type\";\n\nexport interface IPercentSeriesDataItem extends ISeriesDataItem {\n\n\t/**\n\t * Percent of the series value total.\n\t */\n\tvaluePercentTotal: number;\n\n\t/**\n\t * Category.\n\t */\n\tcategory: string;\n\n\t/**\n\t * Slice visual element.\n\t */\n\tslice: Graphics;\n\n\t/**\n\t * Slice label.\n\t */\n\tlabel: Label;\n\n\t/**\n\t * Slice tick.\n\t */\n\ttick: Tick;\n\n\t/**\n\t * A related legend data item.\n\t */\n\tlegendDataItem: DataItem;\n\n\t/**\n\t * Fill color used for the slice and related elements, e.g. legend marker.\n\t */\n\tfill: Color;\n\n}\n\n//type IPercentSeriesDataItemSettings = { [K in keyof IPercentSeriesDataItem]?: string; };\n\nexport interface IPercentSeriesSettings extends ISeriesSettings {\n\n\t/**\n\t * A [[ColorSet]] to use when asigning colors for slices.\n\t */\n\tcolors?: ColorSet;\n\n\t/**\n\t * A field in data that holds category names.\n\t */\n\tcategoryField?: string;\n\n\t/**\n\t * Should slice labels be aligned in columns/rows?\n\t */\n\talignLabels?: boolean;\n\n\t/**\n\t * A field that holds color for slice fill.\n\t */\n\tfillField?: string;\n\n}\n\nexport interface IPercentSeriesPrivate extends ISeriesPrivate {\n\n\t/**\n\t * Calculate average value in series.\n\t */\n\tvalueAverage?: number;\n\n\t/**\n\t * Count of items in series.\n\t */\n\tvalueCount?: number;\n\n\t/**\n\t * Sum of values in series.\n\t */\n\tvalueSum?: number;\n\n\t/**\n\t * Sum of all absolute values in series.\n\t */\n\tvalueAbsoluteSum?: number;\n\n\t/**\n\t * Lowest value in series.\n\t */\n\tvalueLow?: number;\n\n\t/**\n\t * Highest value in series.\n\t */\n\tvalueHigh?: number;\n\n}\n\n/**\n * A base class for any percent chart series.\n */\nexport abstract class PercentSeries extends Series {\n\tpublic static className: string = \"PercentSeries\";\n\tpublic static classNames: Array = Series.classNames.concat([PercentSeries.className]);\n\n\tdeclare public _settings: IPercentSeriesSettings;\n\tdeclare public _privateSettings: IPercentSeriesPrivate;\n\tdeclare public _dataItemSettings: IPercentSeriesDataItem;\n\n\tdeclare public _sliceType: Graphics;\n\tdeclare public _labelType: Label;\n\tdeclare public _tickType: Tick;\n\n\tpublic readonly slicesContainer = this.children.push(Container.new(this._root, { position: \"absolute\", isMeasured: false }));\n\tpublic readonly labelsContainer = this.children.push(Container.new(this._root, { position: \"absolute\", isMeasured: false }));\n\tpublic readonly ticksContainer = this.children.push(Container.new(this._root, { position: \"absolute\", isMeasured: false }));\n\n\tprotected _lLabels: Array<{ label: Label, y: number }> = [];\n\tprotected _rLabels: Array<{ label: Label, y: number }> = [];\n\tprotected _hLabels: Array<{ label: Label, y: number }> = [];\n\n\t/**\n\t * A [[ListTemplate]] of all slices in series.\n\t *\n\t * `slices.template` can also be used to configure slices.\n\t */\n\tpublic readonly slices: ListTemplate = this._makeSlices();\n\n\tprotected abstract _makeSlices(): ListTemplate;\n\n\tpublic abstract chart: PercentChart | undefined;\n\n\t/**\n\t * @ignore\n\t */\n\tpublic makeSlice(dataItem: DataItem): this[\"_sliceType\"] {\n\t\tconst slice = this.slicesContainer.children.push(this.slices.make());\n\n\t\tslice.on(\"fill\", () => {\n\t\t\tthis.updateLegendMarker(dataItem);\n\t\t})\n\n\t\tslice.on(\"stroke\", () => {\n\t\t\tthis.updateLegendMarker(dataItem);\n\t\t})\n\n\t\tslice._setDataItem(dataItem);\n\t\tdataItem.set(\"slice\", slice);\n\t\tthis.slices.push(slice);\n\n\t\treturn slice;\n\t}\n\n\t/**\n\t * A [[ListTemplate]] of all slice labels in series.\n\t *\n\t * `labels.template` can also be used to configure slice labels.\n\t */\n\tpublic readonly labels: ListTemplate = this._makeLabels();\n\n\tprotected abstract _makeLabels(): ListTemplate;\n\n\t/**\n\t * @ignore\n\t */\n\tpublic makeLabel(dataItem: DataItem): this[\"_labelType\"] {\n\t\tconst label = this.labelsContainer.children.push(this.labels.make());\n\t\tlabel._setDataItem(dataItem);\n\t\tdataItem.set(\"label\", label);\n\t\tthis.labels.push(label);\n\t\treturn label;\n\t}\n\n\t/**\n\t * A [[ListTemplate]] of all slice ticks in series.\n\t *\n\t * `ticks.template` can also be used to configure slice ticks.\n\t */\n\tpublic readonly ticks: ListTemplate = this._makeTicks();\n\n\tprotected abstract _makeTicks(): ListTemplate;\n\n\n\tprotected _shouldMakeBullet(dataItem: DataItem): boolean {\n\t\tif (dataItem.get(\"value\") != null) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic makeTick(dataItem: DataItem): this[\"_tickType\"] {\n\t\tconst tick = this.ticksContainer.children.push(this.ticks.make());\n\t\ttick._setDataItem(dataItem);\n\t\tdataItem.set(\"tick\", tick);\n\t\tthis.ticks.push(tick);\n\t\treturn tick;\n\t}\n\n\tprotected _afterNew() {\n\t\tthis.fields.push(\"category\", \"fill\");\n\t\tsuper._afterNew();\n\t}\n\n\tprotected _onDataClear() {\n\t\tconst colors = this.get(\"colors\");\n\t\tif (colors) {\n\t\t\tcolors.reset();\n\t\t}\n\t}\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tthis._lLabels = [];\n\t\tthis._rLabels = [];\n\t\tthis._hLabels = [];\n\n\t\tif (this._valuesDirty) {\n\t\t\tlet sum = 0;\n\t\t\tlet absSum = 0;\n\t\t\tlet valueHigh = 0;\n\t\t\tlet valueLow = Infinity;\n\t\t\tlet count = 0;\n\t\t\t$array.each(this._dataItems, (dataItem) => {\n\t\t\t\tlet valueWorking = dataItem.get(\"valueWorking\", 0);\n\t\t\t\tsum += valueWorking;\n\t\t\t\tabsSum += Math.abs(valueWorking);\n\t\t\t});\n\n\t\t\t$array.each(this._dataItems, (dataItem) => {\n\t\t\t\tlet value = dataItem.get(\"valueWorking\", 0);\n\n\t\t\t\tif (value > valueHigh) {\n\t\t\t\t\tvalueHigh = value;\n\t\t\t\t}\n\n\t\t\t\tif (value < valueLow) {\n\t\t\t\t\tvalueLow = value;\n\t\t\t\t}\n\n\t\t\t\tcount++;\n\n\t\t\t\tlet percentTotal = value / absSum;\n\n\t\t\t\tif (absSum == 0) {\n\t\t\t\t\tpercentTotal = 0;\n\t\t\t\t}\n\n\t\t\t\tdataItem.setRaw(\"valuePercentTotal\", percentTotal * 100);\n\t\t\t});\n\n\t\t\tthis.setPrivateRaw(\"valueLow\", valueLow);\n\t\t\tthis.setPrivateRaw(\"valueHigh\", valueHigh);\n\t\t\tthis.setPrivateRaw(\"valueSum\", sum);\n\t\t\tthis.setPrivateRaw(\"valueAverage\", sum / count);\n\t\t\tthis.setPrivateRaw(\"valueAbsoluteSum\", absSum);\n\t\t}\n\t}\n\n\t/**\n\t * Shows hidden series.\n\t *\n\t * @param duration Animation duration in milliseconds\n\t * @return Animation promise\n\t */\n\tpublic async show(duration?: number): Promise {\n\t\tlet promises: Array> = [];\n\t\tpromises.push(super.show(duration))\n\n\t\tpromises.push(this._sequencedShowHide(true, duration));\n\t\tawait Promise.all(promises);\n\t}\n\n\t/**\n\t * Hide whole series.\n\t *\n\t * @param duration Animation duration in milliseconds\n\t * @return Animation promise\n\t */\n\tpublic async hide(duration?: number): Promise {\n\t\tlet promises: Array> = [];\n\t\tpromises.push(super.hide(duration))\n\n\t\tpromises.push(this._sequencedShowHide(false, duration));\n\t\tawait Promise.all(promises);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic _updateChildren() {\n\t\tsuper._updateChildren();\n\t\tif (this._valuesDirty) {\n\t\t\t$array.each(this._dataItems, (dataItem) => {\n\t\t\t\tdataItem.get(\"label\").text.markDirtyText();\n\t\t\t});\n\t\t}\n\n\t\tif (this.isDirty(\"legendLabelText\") || this.isDirty(\"legendValueText\")) {\n\t\t\t$array.each(this._dataItems, (dataItem) => {\n\t\t\t\tthis.updateLegendValue(dataItem);\n\t\t\t});\n\t\t}\n\n\t\tthis._arrange();\n\t}\n\n\tprotected _arrange() {\n\t\tthis._arrangeDown(this._lLabels);\n\t\tthis._arrangeUp(this._lLabels);\n\n\t\tthis._arrangeDown(this._rLabels);\n\t\tthis._arrangeUp(this._rLabels);\n\n\t\tthis._arrangeLeft(this._hLabels);\n\t\tthis._arrangeRight(this._hLabels);\n\n\t\t$array.each(this.dataItems, (dataItem) => {\n\t\t\tthis._updateTick(dataItem);\n\t\t})\n\t}\n\n\n\tpublic _afterChanged() {\n\t\tsuper._afterChanged();\n\t\tthis._arrange();\n\t}\n\n\tprotected processDataItem(dataItem: DataItem) {\n\t\tsuper.processDataItem(dataItem);\n\n\t\tif (dataItem.get(\"fill\") == null) {\n\t\t\tlet colors = this.get(\"colors\");\n\t\t\tif (colors) {\n\t\t\t\tdataItem.setRaw(\"fill\", colors.next());\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Shows series's data item.\n\t *\n\t * @param dataItem Data item\n\t * @param duration Animation duration in milliseconds\n\t * @return Promise\n\t */\n\tpublic async showDataItem(dataItem: DataItem, duration?: number): Promise {\n\t\tconst promises = [super.showDataItem(dataItem, duration)];\n\t\tif (!$type.isNumber(duration)) {\n\t\t\tduration = this.get(\"stateAnimationDuration\", 0);\n\t\t}\n\n\t\tconst easing = this.get(\"stateAnimationEasing\");\n\n\t\tlet value = dataItem.get(\"value\");\n\n\t\tconst animation = dataItem.animate({ key: \"valueWorking\", to: value, duration: duration, easing: easing });\n\t\tif (animation) {\n\t\t\tpromises.push(animation.waitForStop());\n\t\t}\n\n\t\tconst tick = dataItem.get(\"tick\");\n\t\tif (tick) {\n\t\t\tpromises.push(tick.show(duration));\n\t\t}\n\t\tconst label = dataItem.get(\"label\");\n\t\tif (label) {\n\t\t\tpromises.push(label.show(duration));\n\t\t}\n\n\t\tconst slice = dataItem.get(\"slice\");\n\t\tif (slice) {\n\t\t\tpromises.push(slice.show(duration));\n\t\t}\n\n\t\tif(slice.get(\"active\")){\n\t\t\tslice.states.applyAnimate(\"active\");\n\t\t}\n\n\t\tawait Promise.all(promises);\n\t}\n\n\t/**\n\t * Hides series's data item.\n\t *\n\t * @param dataItem Data item\n\t * @param duration Animation duration in milliseconds\n\t * @return Promise\n\t */\n\tpublic async hideDataItem(dataItem: DataItem, duration?: number): Promise {\n\t\tconst promises = [super.hideDataItem(dataItem, duration)];\n\t\tconst hiddenState = this.states.create(\"hidden\", {})\n\n\t\tif (!$type.isNumber(duration)) {\n\t\t\tduration = hiddenState.get(\"stateAnimationDuration\", this.get(\"stateAnimationDuration\", 0));\n\t\t}\n\n\t\tconst easing = hiddenState.get(\"stateAnimationEasing\", this.get(\"stateAnimationEasing\"));\n\n\t\tconst animation = dataItem.animate({ key: \"valueWorking\", to: 0, duration: duration, easing: easing });\n\t\tif (animation) {\n\t\t\tpromises.push(animation.waitForStop());\n\t\t}\n\n\t\tconst tick = dataItem.get(\"tick\");\n\t\tif (tick) {\n\t\t\tpromises.push(tick.hide(duration));\n\t\t}\n\t\tconst label = dataItem.get(\"label\");\n\t\tif (label) {\n\t\t\tpromises.push(label.hide(duration));\n\t\t}\n\n\t\tconst slice = dataItem.get(\"slice\");\n\t\tslice.hideTooltip();\n\n\t\tif (slice) {\n\t\t\tpromises.push(slice.hide(duration));\n\t\t}\n\n\t\tawait Promise.all(promises);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic disposeDataItem(dataItem: DataItem) {\n\t\tsuper.disposeDataItem(dataItem);\n\t\tlet label = dataItem.get(\"label\");\n\t\tif (label) {\n\t\t\tthis.labels.removeValue(label);\n\t\t\tlabel.dispose();\n\t\t}\n\t\tlet tick = dataItem.get(\"tick\");\n\t\tif (tick) {\n\t\t\tthis.ticks.removeValue(tick);\n\t\t\ttick.dispose();\n\t\t}\n\t\tlet slice = dataItem.get(\"slice\");\n\t\tif (slice) {\n\t\t\tthis.slices.removeValue(slice);\n\t\t\tslice.dispose();\n\t\t}\n\t}\n\n\t/**\n\t * Triggers hover on a series data item.\n\t *\n\t * @since 5.0.7\n\t * @param dataItem Target data item\n\t */\n\tpublic hoverDataItem(dataItem: DataItem) {\n\t\tconst slice = dataItem.get(\"slice\");\n\t\tif (slice && !slice.isHidden()) {\n\t\t\tslice.hover();\n\t\t}\n\t}\n\n\t/**\n\t * Triggers un-hover on a series data item.\n\t *\n\t * @since 5.0.7\n\t * @param dataItem Target data item\n\t */\n\tpublic unhoverDataItem(dataItem: DataItem) {\n\t\tconst slice = dataItem.get(\"slice\");\n\t\tif (slice) {\n\t\t\tslice.unhover();\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic updateLegendMarker(dataItem: DataItem) {\n\t\tif(dataItem){\n\t\t\tconst slice = dataItem.get(\"slice\");\n\n\t\t\tif (slice) {\n\t\t\t\tconst legendDataItem = dataItem.get(\"legendDataItem\");\n\t\t\t\tif (legendDataItem) {\n\t\t\t\t\tconst markerRectangle = legendDataItem.get(\"markerRectangle\");\n\t\t\t\t\t$array.each(visualSettings, (setting: any) => {\n\t\t\t\t\t\tif (slice.get(setting) != null) {\n\t\t\t\t\t\t\tmarkerRectangle.set(setting, slice.get(setting));\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _arrangeDown(labels?: Array<{ label: Label, y: number }>) {\n\t\tif (labels) {\n\n\t\t\tlet next = this._getNextDown();\n\n\t\t\tlabels.sort((a, b) => {\n\t\t\t\tif (a.y > b.y) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\telse if (a.y < b.y) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t$array.each(labels, (l) => {\n\t\t\t\tconst bounds = l.label.adjustedLocalBounds();\n\t\t\t\tlet labelTop = bounds.top;\n\t\t\t\tif (l.y + labelTop < next) {\n\t\t\t\t\tl.y = next - labelTop;\n\t\t\t\t}\n\t\t\t\tl.label.set(\"y\", l.y);\n\n\t\t\t\tnext = l.y + bounds.bottom;\n\t\t\t})\n\t\t}\n\t}\n\n\tprotected _getNextUp() {\n\t\treturn this.labelsContainer.maxHeight();\n\t}\n\n\tprotected _getNextDown() {\n\t\treturn 0;\n\t}\n\n\tprotected _arrangeUp(labels?: Array<{ label: Label, y: number }>) {\n\t\tif (labels) {\n\t\t\tlet next = this._getNextUp();\n\n\t\t\tlabels.sort((a, b) => {\n\t\t\t\tif (a.y < b.y) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\telse if (a.y > b.y) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t$array.each(labels, (l) => {\n\t\t\t\tconst bounds = l.label.adjustedLocalBounds();\n\t\t\t\tlet labelBottom = bounds.bottom;\n\t\t\t\tif (l.y + labelBottom > next) {\n\t\t\t\t\tl.y = next - labelBottom;\n\t\t\t\t}\n\t\t\t\tl.label.set(\"y\", l.y);\n\t\t\t\tnext = l.y + bounds.top;\n\t\t\t})\n\t\t}\n\t}\n\n\tprotected _arrangeRight(labels?: Array<{ label: Label, y: number }>) {\n\t\tif (labels) {\n\n\t\t\tlet next = 0;\n\n\t\t\tlabels.sort((a, b) => {\n\t\t\t\tif (a.y > b.y) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\telse if (a.y < b.y) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t$array.each(labels, (l) => {\n\t\t\t\tconst bounds = l.label.adjustedLocalBounds();\n\t\t\t\tlet labelLeft = bounds.left;\n\t\t\t\tif (l.y + labelLeft < next) {\n\t\t\t\t\tl.y = next - labelLeft;\n\t\t\t\t}\n\t\t\t\tl.label.set(\"x\", l.y);\n\n\t\t\t\tnext = l.y + bounds.right;\n\t\t\t})\n\t\t}\n\t}\n\n\tprotected _arrangeLeft(labels?: Array<{ label: Label, y: number }>) {\n\t\tif (labels) {\n\t\t\tlet next = this.labelsContainer.maxWidth();\n\n\t\t\tlabels.sort((a, b) => {\n\t\t\t\tif (a.y < b.y) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\telse if (a.y > b.y) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t$array.each(labels, (l) => {\n\t\t\t\tconst bounds = l.label.adjustedLocalBounds();\n\t\t\t\tlet labelRight = bounds.right;\n\t\t\t\tif (l.y + labelRight > next) {\n\t\t\t\t\tl.y = next - labelRight;\n\t\t\t\t}\n\t\t\t\tl.label.set(\"x\", l.y);\n\t\t\t\tnext = l.y + bounds.left;\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic _updateSize() {\n\t\tsuper._updateSize();\n\t\tthis.markDirty();\n\t}\n\n\tprotected _updateTick(_dataItem: DataItem) {\n\n\t}\n\n\tprotected _dispose() {\n\t\tsuper._dispose();\n\n\t\tconst chart = this.chart;\n\t\tif (chart) {\n\t\t\tchart.series.removeValue(this);\n\t\t}\n\t}\n\n\n}\n","import type { PieSeries } from \"./PieSeries\";\n\nimport { Percent } from \"../../core/util/Percent\";\nimport { PercentChart, IPercentChartPrivate, IPercentChartSettings } from \"../percent/PercentChart\";\nimport { p50 } from \"../../core/util/Percent\";\n\nimport * as $utils from \"../../core/util/Utils\";\nimport * as $math from \"../../core/util/Math\";\n\n\nexport interface IPieChartSettings extends IPercentChartSettings {\n\n\t/**\n\t * Outer radius of the pie chart.\n\t *\n\t * Can be set in fixed pixel value, or relative to chart container size in\n\t * percent.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/#Pie_radius} for more info\n\t * @default 80%\n\t */\n\tradius?: number | Percent;\n\n\t/**\n\t * Inner radius of the pie chart. Setting to any non-zero value will result\n\t * in a donut chart.\n\t *\n\t * Can be set in fixed pixel value, or relative to chart container size in\n\t * percent.\n\t *\n\t * Setting to negative number will mean pixels from outer radius.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/#Pie_radius} for more info\n\t */\n\tinnerRadius?: number | Percent;\n\n\t/**\n\t * A start angle of the chart in degrees.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/#Start_end_angles} for more info\n\t * @default -90\n\t */\n\tstartAngle?: number;\n\n\t/**\n\t * An end angle of the chart in degrees.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/#Start_end_angles} for more info\n\t * @default 270\n\t */\n\tendAngle?: number;\n\n}\n\nexport interface IPieChartPrivate extends IPercentChartPrivate {\n\n\t/**\n\t * @ignore\n\t */\n\tirModifyer?: number;\n\n}\n\n/**\n * Creates a pie chart.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/} for more info\n * @important\n */\nexport class PieChart extends PercentChart {\n\n\tpublic static className: string = \"PieChart\";\n\tpublic static classNames: Array = PercentChart.classNames.concat([PieChart.className]);\n\n\tdeclare public _settings: IPieChartSettings;\n\tdeclare public _privateSettings: IPieChartPrivate;\n\tdeclare public _seriesType: PieSeries;\n\n\tpublic _maxRadius: number = 1;\n\n\tprotected _afterNew() {\n\t\tsuper._afterNew();\n\t\tthis.seriesContainer.setAll({ x: p50, y: p50 });\n\t}\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tconst chartContainer = this.chartContainer;\n\t\tconst w = chartContainer.innerWidth();\n\t\tconst h = chartContainer.innerHeight();\n\n\t\tconst startAngle = this.get(\"startAngle\", 0);\n\t\tconst endAngle = this.get(\"endAngle\", 0);\n\t\tconst innerRadius = this.get(\"innerRadius\");\n\n\n\t\tlet bounds = $math.getArcBounds(0, 0, startAngle, endAngle, 1);\n\n\t\tconst wr = w / (bounds.right - bounds.left);\n\t\tconst hr = h / (bounds.bottom - bounds.top);\n\n\t\tlet innerBounds = { left: 0, right: 0, top: 0, bottom: 0 };\n\n\t\tif (innerRadius instanceof Percent) {\n\t\t\tlet value = innerRadius.value;\n\t\t\tlet mr = Math.min(wr, hr);\n\t\t\tvalue = Math.max(mr * value, mr - Math.min(h, w)) / mr;\n\t\t\tinnerBounds = $math.getArcBounds(0, 0, startAngle, endAngle, value);\n\t\t\tthis.setPrivateRaw(\"irModifyer\", value / innerRadius.value);\n\t\t}\n\n\t\tbounds = $math.mergeBounds([bounds, innerBounds]);\n\n\t\tconst prevRadius = this._maxRadius;\n\t\tthis._maxRadius = Math.min(wr, hr);\n\n\t\tconst radius = $utils.relativeToValue(this.get(\"radius\", 0), this._maxRadius);\n\t\tthis.seriesContainer.setAll({\n\t\t\tdy: -radius * (bounds.bottom + bounds.top) / 2, dx: -radius * (bounds.right + bounds.left) / 2\n\t\t})\n\n\t\tif (this.isDirty(\"startAngle\") || this.isDirty(\"endAngle\") || prevRadius != this._maxRadius) {\n\t\t\tthis.series.each((series) => {\n\t\t\t\tseries._markDirtyKey(\"startAngle\");\n\t\t\t})\n\t\t}\n\n\t\tif(this.isDirty(\"innerRadius\") || this.isDirty(\"radius\")){\n\t\t\tthis.series.each((series) => {\n\t\t\t\tseries._markDirtyKey(\"innerRadius\");\n\t\t\t})\t\t\t\n\t\t}\n\t}\n\n\t/**\n\t * Returns outer radius in pixels.\n\t *\n\t * If optional series parameter is passed in, it will return outer radius\n\t * of that particular series.\n\t *\n\t * @param series Series\n\t * @return Radius in pixels\n\t */\n\tpublic radius(series?: PieSeries): number {\n\n\t\tlet radius = $utils.relativeToValue(this.get(\"radius\", 0), this._maxRadius);\n\t\tlet innerRadius = $utils.relativeToValue(this.get(\"innerRadius\", 0), radius);\n\n\t\tif (series) {\n\t\t\tlet index = this.series.indexOf(series);\n\t\t\tlet length = this.series.length;\n\n\t\t\tlet seriesRadius = series.get(\"radius\");\n\t\t\tif (seriesRadius != null) {\n\t\t\t\treturn innerRadius + $utils.relativeToValue(seriesRadius, radius - innerRadius);\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn innerRadius + (radius - innerRadius) / length * (index + 1);\n\t\t\t}\n\t\t}\n\t\treturn radius;\n\t}\n\n\t/**\n\t * Returns inner radius in pixels.\n\t *\n\t * If optional series parameter is passed in, it will return inner radius\n\t * of that particular series.\n\t *\n\t * @param series Series\n\t * @return Radius in pixels\n\t */\n\tpublic innerRadius(series?: PieSeries): number {\n\t\tconst radius = this.radius();\n\t\tlet innerRadius = $utils.relativeToValue(this.get(\"innerRadius\", 0), radius);\n\n\t\tif (innerRadius < 0) {\n\t\t\tinnerRadius = radius + innerRadius;\n\t\t}\n\n\t\tif (series) {\n\t\t\tlet index = this.series.indexOf(series);\n\t\t\tlet length = this.series.length;\n\n\t\t\tlet seriesInnerRadius = series.get(\"innerRadius\");\n\t\t\tif (seriesInnerRadius != null) {\n\t\t\t\treturn innerRadius + $utils.relativeToValue(seriesInnerRadius, radius - innerRadius);\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn innerRadius + (radius - innerRadius) / length * index;\n\t\t\t}\n\t\t}\n\t\treturn innerRadius;\n\t}\n}\n","import type { DataItem } from \"../../core/render/Component\";\nimport type { PieChart } from \"./PieChart\";\n\nimport { PercentSeries, IPercentSeriesSettings, IPercentSeriesDataItem, IPercentSeriesPrivate } from \"../percent/PercentSeries\";\nimport { Template } from \"../../core/util/Template\";\nimport { Slice } from \"../../core/render/Slice\";\nimport { Tick } from \"../../core/render/Tick\";\nimport { RadialLabel } from \"../../core/render/RadialLabel\";\nimport { ListTemplate } from \"../../core/util/List\";\nimport { p100, Percent } from \"../../core/util/Percent\";\nimport type { Bullet } from \"../../core/render/Bullet\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $math from \"../../core/util/Math\";\nimport * as $utils from \"../../core/util/Utils\";\n\nexport interface IPieSeriesDataItem extends IPercentSeriesDataItem {\n\tslice: Slice;\n\tlabel: RadialLabel;\n}\n\nexport interface IPieSeriesSettings extends IPercentSeriesSettings {\n\n\t/**\n\t * Radius of the series in pixels or percent.\n\t */\n\tradius?: Percent | number;\n\n\t/**\n\t * Radius of the series in pixels or percent.\n\t *\n\t * Setting to negative number will mean pixels from outer radius.\n\t */\n\tinnerRadius?: Percent | number;\n\n\t/**\n\t * Start angle of the series in degrees.\n\t *\n\t * @default -90\n\t */\n\tstartAngle?: number;\n\n\t/**\n\t * End angle of the series in degrees.\n\t *\n\t * @default 270\n\t */\n\tendAngle?: number;\n\n}\n\nexport interface IPieSeriesPrivate extends IPercentSeriesPrivate {\n\n\t/**\n\t * Actual radius of the series in pixels.\n\t */\n\tradius?: number;\n\n}\n\n/**\n * Creates a series for a [[PieChart]].\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/} for more info\n * @important\n */\nexport class PieSeries extends PercentSeries {\n\n\tdeclare public chart: PieChart | undefined;\n\n\tpublic static className: string = \"PieSeries\";\n\tpublic static classNames: Array = PercentSeries.classNames.concat([PieSeries.className]);\n\n\tdeclare public _settings: IPieSeriesSettings;\n\tdeclare public _privateSettings: IPieSeriesPrivate;\n\tdeclare public _dataItemSettings: IPieSeriesDataItem;\n\n\tdeclare public _sliceType: Slice;\n\tdeclare public _labelType: RadialLabel;\n\n\tprotected _makeSlices(): ListTemplate {\n\t\treturn new ListTemplate(\n\t\t\tTemplate.new({}),\n\t\t\t() => Slice._new(this._root, {\n\t\t\t\tthemeTags: $utils.mergeTags(this.slices.template.get(\"themeTags\", []), [\"pie\", \"series\"])\n\t\t\t}, [this.slices.template]),\n\t\t);\n\t}\n\n\tprotected _makeLabels(): ListTemplate {\n\t\treturn new ListTemplate(\n\t\t\tTemplate.new({}),\n\t\t\t() => RadialLabel._new(this._root, {\n\t\t\t\tthemeTags: $utils.mergeTags(this.labels.template.get(\"themeTags\", []), [\"pie\", \"series\"])\n\t\t\t}, [this.labels.template]),\n\t\t);\n\t}\n\n\tprotected _makeTicks(): ListTemplate {\n\t\treturn new ListTemplate(\n\t\t\tTemplate.new({}),\n\t\t\t() => Tick._new(this._root, {\n\t\t\t\tthemeTags: $utils.mergeTags(this.ticks.template.get(\"themeTags\", []), [\"pie\", \"series\"])\n\t\t\t}, [this.ticks.template]),\n\t\t);\n\t}\n\n\tprotected processDataItem(dataItem: DataItem) {\n\t\tsuper.processDataItem(dataItem);\n\n\t\tconst slice = this.makeSlice(dataItem);\n\n\t\tslice.on(\"scale\", () => {\n\t\t\tthis._updateTick(dataItem);\n\t\t})\n\t\tslice.on(\"shiftRadius\", () => {\n\t\t\tthis._updateTick(dataItem);\n\t\t})\n\t\tslice.events.on(\"positionchanged\", () => {\n\t\t\tthis._updateTick(dataItem);\n\t\t})\n\n\t\tconst label = this.makeLabel(dataItem);\n\n\t\tlabel.events.on(\"positionchanged\", () => {\n\t\t\tthis._updateTick(dataItem);\n\t\t})\n\n\t\tthis.makeTick(dataItem);\n\n\t\tslice.events.on(\"positionchanged\", () => {\n\t\t\tlabel.markDirty();\n\t\t})\n\t}\n\n\tprotected _getNextUp() {\n\t\tconst chart = this.chart;\n\t\tif (chart) {\n\t\t\treturn chart._maxRadius;\n\t\t}\n\t\treturn this.labelsContainer.maxHeight() / 2;\n\t}\n\n\tprotected _getNextDown() {\n\t\tconst chart = this.chart;\n\t\tif (chart) {\n\t\t\treturn -chart._maxRadius;\n\t\t}\n\t\treturn -this.labelsContainer.maxHeight() / 2;\n\n\t}\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\t\tconst chart = this.chart;\n\t\tif (chart) {\n\n\t\t\tif (this.isDirty(\"alignLabels\")) {\n\t\t\t\tlet labelsTemplate = this.labels.template;\n\n\t\t\t\tif (this.get(\"alignLabels\")) {\n\t\t\t\t\tlabelsTemplate.set(\"textType\", \"aligned\");\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet textType = labelsTemplate.get(\"textType\");\n\t\t\t\t\tif (textType == null || textType == \"aligned\") {\n\t\t\t\t\t\tlabelsTemplate.set(\"textType\", \"adjusted\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tif (this._valuesDirty || this.isDirty(\"radius\") || this.isDirty(\"innerRadius\") || this.isDirty(\"startAngle\") || this.isDirty(\"endAngle\") || this.isDirty(\"alignLabels\")) {\n\t\t\t\tthis.markDirtyBounds();\n\t\t\t\tconst startAngle = this.get(\"startAngle\", chart.get(\"startAngle\", -90));\n\t\t\t\tconst endAngle = this.get(\"endAngle\", chart.get(\"endAngle\", 270));\n\t\t\t\tconst arc = endAngle - startAngle;\n\t\t\t\tlet currentAngle = startAngle;\n\n\t\t\t\tconst radius = chart.radius(this);\n\t\t\t\tthis.setPrivateRaw(\"radius\", radius);\n\t\t\t\tlet innerRadius = chart.innerRadius(this) * chart.getPrivate(\"irModifyer\", 1);\n\n\t\t\t\tif (innerRadius < 0) {\n\t\t\t\t\tinnerRadius = radius + innerRadius;\n\t\t\t\t}\n\n\t\t\t\t//if (radius > 0) {\n\t\t\t\t$array.each(this._dataItems, (dataItem) => {\n\n\t\t\t\t\tthis.updateLegendValue(dataItem);\n\n\t\t\t\t\tlet currentArc = arc * dataItem.get(\"valuePercentTotal\") / 100;\n\t\t\t\t\tconst slice = dataItem.get(\"slice\");\n\t\t\t\t\tif (slice) {\n\t\t\t\t\t\tslice.set(\"radius\", radius);\n\t\t\t\t\t\tslice.set(\"innerRadius\", innerRadius);\n\t\t\t\t\t\tslice.set(\"startAngle\", currentAngle);\n\n\t\t\t\t\t\tslice.set(\"arc\", currentArc);\n\n\t\t\t\t\t\tconst color = dataItem.get(\"fill\");\n\t\t\t\t\t\tslice._setDefault(\"fill\", color);\n\t\t\t\t\t\tslice._setDefault(\"stroke\", color);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet middleAngle = $math.normalizeAngle(currentAngle + currentArc / 2);\n\n\t\t\t\t\tconst label = dataItem.get(\"label\");\n\t\t\t\t\tif (label) {\n\t\t\t\t\t\tlabel.setPrivate(\"radius\", radius);\n\t\t\t\t\t\tlabel.setPrivate(\"innerRadius\", innerRadius);\n\t\t\t\t\t\tlabel.set(\"labelAngle\", middleAngle);\n\n\t\t\t\t\t\tif (label.get(\"textType\") == \"aligned\") {\n\t\t\t\t\t\t\tlet labelRadius = radius + label.get(\"radius\", 0);\n\t\t\t\t\t\t\tlet y = radius * $math.sin(middleAngle);\n\n\t\t\t\t\t\t\tif (middleAngle > 90 && middleAngle <= 270) {\n\t\t\t\t\t\t\t\tif (!label.isHidden() && !label.isHiding()) {\n\t\t\t\t\t\t\t\t\tthis._lLabels.push({ label: label, y: y });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlabelRadius *= -1;\n\t\t\t\t\t\t\t\tlabelRadius -= this.labelsContainer.get(\"paddingLeft\", 0);\n\t\t\t\t\t\t\t\tlabel.set(\"centerX\", p100);\n\t\t\t\t\t\t\t\tlabel.setPrivateRaw(\"left\", true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (!label.isHidden() && !label.isHiding()) {\n\t\t\t\t\t\t\t\t\tthis._rLabels.push({ label: label, y: y });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlabelRadius += this.labelsContainer.get(\"paddingRight\", 0);\n\t\t\t\t\t\t\t\tlabel.set(\"centerX\", 0);\n\t\t\t\t\t\t\t\tlabel.setPrivateRaw(\"left\", false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlabel.set(\"x\", labelRadius);\n\t\t\t\t\t\t\tlabel.set(\"y\", radius * $math.sin(middleAngle));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcurrentAngle += currentArc;\n\t\t\t\t\tthis._updateTick(dataItem);\n\t\t\t\t})\n\t\t\t\t//}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _updateTick(dataItem: DataItem) {\n\t\tconst tick = dataItem.get(\"tick\");\n\t\tconst label = dataItem.get(\"label\");\n\t\tconst slice = dataItem.get(\"slice\");\n\t\tconst location = tick.get(\"location\", 1);\n\t\tif (tick && label && slice) {\n\t\t\tconst radius = (slice.get(\"shiftRadius\", 0) + slice.get(\"radius\", 0)) * slice.get(\"scale\", 1) * location;\n\t\t\tconst labelAngle = label.get(\"labelAngle\", 0);\n\t\t\tconst cos = $math.cos(labelAngle);\n\t\t\tconst sin = $math.sin(labelAngle);\n\n\t\t\tconst labelsContainer = this.labelsContainer;\n\t\t\tconst pl = labelsContainer.get(\"paddingLeft\", 0);\n\t\t\tconst pr = labelsContainer.get(\"paddingRight\", 0);\n\n\t\t\tlet x = 0;\n\t\t\tlet y = 0;\n\n\t\t\tx = label.x();\n\t\t\ty = label.y();\n\n\t\t\tif (label.get(\"textType\") == \"circular\") {\n\t\t\t\tconst labelRadius = label.radius() - label.get(\"paddingBottom\", 0);\n\t\t\t\tconst labelAngle = label.get(\"labelAngle\", 0);\n\t\t\t\tx = labelRadius * $math.cos(labelAngle);\n\t\t\t\ty = labelRadius * $math.sin(labelAngle);\n\t\t\t}\n\n\t\t\tlet dx = -pr;\n\t\t\tif (label.getPrivate(\"left\")) {\n\t\t\t\tdx = pl;\n\t\t\t}\n\n\t\t\ttick.set(\"points\", [{ x: slice.x() + radius * cos, y: slice.y() + radius * sin }, { x: x + dx, y: y }, { x: x, y: y }]);\n\t\t}\n\t}\n\n\tpublic _positionBullet(bullet: Bullet) {\n\n\t\tconst sprite = bullet.get(\"sprite\");\n\t\tif (sprite) {\n\t\t\tconst dataItem = sprite.dataItem as DataItem;\n\t\t\tconst slice = dataItem.get(\"slice\");\n\n\t\t\tif (slice) {\n\t\t\t\tconst innerRadius = slice.get(\"innerRadius\", 0);\n\t\t\t\tconst radius = slice.get(\"radius\", 0);\n\t\t\t\tconst startAngle = slice.get(\"startAngle\", 0);\n\t\t\t\tconst arc = slice.get(\"arc\", 0);\n\t\t\t\tconst locationX = bullet.get(\"locationX\", 0.5);\n\t\t\t\tconst locationY = bullet.get(\"locationY\", 0.5);\n\n\t\t\t\tconst angle = startAngle + arc * locationX;\n\t\t\t\tconst r = innerRadius + (radius - innerRadius) * locationY;\n\n\t\t\t\tsprite.setAll({ x: $math.cos(angle) * r, y: $math.sin(angle) * r });\n\t\t\t}\n\t\t}\n\t}\n}\n","import { Graphics, IGraphicsSettings, IGraphicsPrivate } from \"../../core/render/Graphics\";\nimport type { IPoint } from \"../../core/util/IPoint\";\n\nexport interface IFunnelSliceSettings extends IGraphicsSettings {\n\n\t/**\n\t * Top width in pixels.\n\t */\n\ttopWidth?: number;\n\n\t/**\n\t * Bottom width in pixels.\n\t */\n\tbottomWidth?: number;\n\n\t/**\n\t * Orientation.\n\t */\n\torientation?: \"vertical\" | \"horizontal\";\n\n\t/**\n\t * A distance in pixels the slice should \"puff up\".\n\t *\n\t * Any non-zero value will make sides of the slide curved.\n\t */\n\texpandDistance?: number;\n\n}\n\nexport interface IFunnelSlicePrivate extends IGraphicsPrivate {\n}\n\n/**\n * Draws a slice for [[FunnelSeries]].\n */\nexport class FunnelSlice extends Graphics {\n\tdeclare public _settings: IFunnelSliceSettings;\n\tdeclare public _privateSettings: IFunnelSlicePrivate;\n\n\tpublic static className: string = \"FunnelSlice\";\n\tpublic static classNames: Array = Graphics.classNames.concat([FunnelSlice.className]);\n\tprotected _projectionDirty: boolean = false;\n\n\tprotected _tlx: number = 0;\n\tprotected _tly: number = 0;\n\n\tprotected _trx: number = 0;\n\tprotected _try: number = 0;\n\n\tprotected _blx: number = 0;\n\tprotected _bly: number = 0;\n\n\tprotected _brx: number = 0;\n\tprotected _bry: number = 0;\n\n\tprotected _cprx: number = 0;\n\tprotected _cplx: number = 0;\n\tprotected _cpry: number = 0;\n\tprotected _cply: number = 0;\n\n\tprotected _afterNew() {\n\t\tsuper._afterNew();\n\t\tthis.set(\"draw\", (display) => {\n\t\t\tdisplay.moveTo(this._tlx, this._tly);\n\t\t\tdisplay.lineTo(this._trx, this._try);\n\t\t\tdisplay.quadraticCurveTo(this._cprx, this._cpry, this._brx, this._bry);\n\t\t\tdisplay.lineTo(this._blx, this._bly);\n\t\t\tdisplay.quadraticCurveTo(this._cplx, this._cply, this._tlx, this._tly);\n\t\t})\n\t}\n\n\tpublic getPoint(locationX: number, locationY: number): IPoint {\n\t\tlet w = this.width();\n\t\tlet h = this.height();\n\n\t\tconst tw = this.get(\"topWidth\", 0);\n\t\tconst bw = this.get(\"bottomWidth\", 0);\n\n\t\tif (this.get(\"orientation\") == \"vertical\") {\n\t\t\tlet tlx = -tw / 2;\n\t\t\tlet trx = tw / 2;\n\n\t\t\tlet brx = bw / 2;\n\t\t\tlet blx = - bw / 2;\n\n\t\t\tlet mlx = tlx + (blx - tlx) * locationY;\n\t\t\tlet mrx = trx + (brx - trx) * locationY;\n\n\t\t\treturn { x: mlx + (mrx - mlx) * locationX, y: h * locationY };\n\t\t}\n\t\telse {\n\t\t\tlet tlx = -tw / 2;\n\t\t\tlet trx = tw / 2;\n\n\t\t\tlet brx = bw / 2;\n\t\t\tlet blx = - bw / 2;\n\n\t\t\tlet mlx = tlx + (blx - tlx) * locationX;\n\t\t\tlet mrx = trx + (brx - trx) * locationX;\n\n\t\t\treturn { x: w * locationX, y: mlx + (mrx - mlx) * locationY};\n\t\t}\n\n\t}\n\n\tpublic _changed() {\n\n\t\tif (this.isDirty(\"topWidth\") || this.isDirty(\"bottomWidth\") || this.isDirty(\"expandDistance\") || this.isDirty(\"orientation\") || this.isDirty(\"width\") || this.isDirty(\"height\")) {\n\t\t\tconst w = this.width();\n\t\t\tconst h = this.height();\n\t\t\tconst tw = this.get(\"topWidth\", 0);\n\t\t\tconst bw = this.get(\"bottomWidth\", 0);\n\t\t\tthis._clear = true;\n\n\t\t\tlet ed = this.get(\"expandDistance\", 0);\n\n\t\t\tif (this.get(\"orientation\") == \"vertical\") {\n\t\t\t\tthis._tlx = -tw / 2;\n\t\t\t\tthis._tly = 0;\n\n\t\t\t\tthis._trx = tw / 2;\n\t\t\t\tthis._try = 0;\n\n\t\t\t\tthis._brx = bw / 2;\n\t\t\t\tthis._bry = h;\n\n\t\t\t\tthis._blx = -bw / 2;\n\t\t\t\tthis._bly = h;\n\n\t\t\t\tthis._cprx = this._trx + (this._brx - this._trx) / 2 + ed * h,\n\t\t\t\tthis._cpry = this._try + 0.5 * h;\n\n\t\t\t\tthis._cplx = this._tlx + (this._blx - this._tlx) / 2 - ed * h;\n\t\t\t\tthis._cply = this._tly + 0.5 * h;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._tly = -tw / 2;\n\t\t\t\tthis._tlx = 0;\n\n\t\t\t\tthis._try = tw / 2;\n\t\t\t\tthis._trx = 0;\n\n\t\t\t\tthis._bry = bw / 2;\n\t\t\t\tthis._brx = w;\n\n\t\t\t\tthis._bly = -bw / 2;\n\t\t\t\tthis._blx = w;\n\n\t\t\t\tthis._cpry = this._try + (this._bry - this._try) / 2 + ed * w,\n\t\t\t\tthis._cprx = this._trx + 0.5 * w;\n\n\t\t\t\tthis._cply = this._tly + (this._bly - this._tly) / 2 - ed * w;\n\t\t\t\tthis._cplx = this._tlx + 0.5 * w;\n\t\t\t}\n\t\t}\n\t\tsuper._changed();\n\t}\n}\n","import type { DataItem } from \"../../core/render/Component\";\nimport type { SlicedChart } from \"./SlicedChart\";\n\nimport { PercentSeries, IPercentSeriesSettings, IPercentSeriesDataItem, IPercentSeriesPrivate } from \"../percent/PercentSeries\";\nimport { Template } from \"../../core/util/Template\";\nimport { ListTemplate } from \"../../core/util/List\";\nimport { FunnelSlice } from \"./FunnelSlice\";\nimport { Tick } from \"../../core/render/Tick\";\nimport { Label } from \"../../core/render/Label\";\nimport { percent, p50, p100 } from \"../../core/util/Percent\";\nimport type { Bullet } from \"../../core/render/Bullet\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $type from \"../../core/util/Type\";\nimport * as $utils from \"../../core/util/Utils\";\n\n\nexport interface IFunnelSeriesDataItem extends IPercentSeriesDataItem {\n\n\t/**\n\t * A related slice element.\n\t */\n\tslice: FunnelSlice;\n\n\t/**\n\t * A related slice link element\n\t */\n\tlink: FunnelSlice;\n\n\t/**\n\t * Data item's index.\n\t */\n\tindex: number;\n\n}\n\nexport interface IFunnelSeriesSettings extends IPercentSeriesSettings {\n\n\t/**\n\t * Width of the bottom edge of the slice relative to the top edge of the next\n\t * slice.\n\t *\n\t * `1` - means the full width of the slice, resulting in a rectangle.\n\t * `0` - means using width of the next slice, resulting in a trapezoid.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/sliced-chart/funnel-series/#Slice_bottom_width} for more info\n\t * @default 1\n\t */\n\tbottomRatio?: number;\n\n\t/**\n\t * Orientation of the series.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/sliced-chart/#Series_orientation} for more info\n\t * @default \"vertical\"\n\t */\n\torientation: \"horizontal\" | \"vertical\";\n\n\t/**\n\t * If set to `true`, series will not create slices for data items with zero\n\t * value.\n\t */\n\tignoreZeroValues?: boolean;\n\n\t/**\n\t * Should labels be aligned into columns/rows?\n\t *\n\t * @default false\n\t */\n\talignLabels?: boolean;\n\n\t/**\n\t * Relative location within area available to series where it should start.\n\t *\n\t * `0` - beginning, `1` - end, or any intermediate value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/sliced-chart/funnel-series/#Start_end_locations} for more info\n\t * @default 0\n\t */\n\tstartLocation?: number;\n\n\t/**\n\t * Relative location within area available to series where it should start.\n\t *\n\t * `0` - beginning, `1` - end, or any intermediate value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/sliced-chart/funnel-series/#Start_end_locations} for more info\n\t * @default 0\n\t */\n\tendLocation?: number;\n\n}\n\nexport interface IFunnelSeriesPrivate extends IPercentSeriesPrivate {\n}\n\n/**\n * Creates a funnel series for use in a [[SlicedChart]].\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/sliced-chart/funnel-series/} for more info\n * @important\n */\nexport class FunnelSeries extends PercentSeries {\n\n\t/**\n\t * A chart series is attached to.\n\t */\n\tdeclare public chart: SlicedChart | undefined;\n\n\tprotected _tag = \"funnel\";\n\n\tdeclare public _sliceType: FunnelSlice;\n\tdeclare public _labelType: Label;\n\tdeclare public _tickType: Tick;\n\n\tprotected _makeSlices(): ListTemplate {\n\t\treturn new ListTemplate(\n\t\t\tTemplate.new({}),\n\t\t\t() => FunnelSlice._new(this._root, {\n\t\t\t\tthemeTags: $utils.mergeTags(this.slices.template.get(\"themeTags\", []), [this._tag, \"series\", \"slice\", this.get(\"orientation\")])\n\t\t\t}, [this.slices.template])\n\t\t);\n\t}\n\n\tprotected _makeLabels(): ListTemplate {\n\t\treturn new ListTemplate(\n\t\t\tTemplate.new({}),\n\t\t\t() => Label._new(this._root, {\n\t\t\t\tthemeTags: $utils.mergeTags(this.labels.template.get(\"themeTags\", []), [this._tag, \"series\", \"label\", this.get(\"orientation\")])\n\t\t\t}, [this.labels.template])\n\t\t);\n\t}\n\n\tprotected _makeTicks(): ListTemplate {\n\t\treturn new ListTemplate(\n\t\t\tTemplate.new({}),\n\t\t\t() => Tick._new(this._root, {\n\t\t\t\tthemeTags: $utils.mergeTags(this.ticks.template.get(\"themeTags\", []), [this._tag, \"series\", \"tick\", this.get(\"orientation\")])\n\t\t\t}, [this.ticks.template])\n\t\t);\n\t}\n\n\t/**\n\t * A [[ListTemplate]] of all slice links in series.\n\t *\n\t * `links.template` can also be used to configure slice links.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/sliced-chart/funnel-series/#Slice_links} for more info\n\t */\n\tpublic readonly links: ListTemplate = this._makeLinks();\n\n\tprotected _makeLinks(): ListTemplate {\n\t\treturn new ListTemplate(\n\t\t\tTemplate.new({}),\n\t\t\t() => FunnelSlice._new(this._root, {\n\t\t\t\tthemeTags: $utils.mergeTags(this.links.template.get(\"themeTags\", []), [this._tag, \"series\", \"link\", this.get(\"orientation\")])\n\t\t\t}, [this.links.template]),\n\t\t);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic makeLink(dataItem: DataItem): this[\"_sliceType\"] {\n\t\tconst link = this.slicesContainer.children.push(this.links.make());\n\t\tlink._setDataItem(dataItem);\n\t\tdataItem.set(\"link\", link);\n\t\tthis.links.push(link);\n\t\treturn link;\n\t}\n\n\tpublic static className: string = \"FunnelSeries\";\n\tpublic static classNames: Array = PercentSeries.classNames.concat([FunnelSeries.className]);\n\n\tdeclare public _settings: IFunnelSeriesSettings;\n\tdeclare public _privateSettings: IFunnelSeriesPrivate;\n\tdeclare public _dataItemSettings: IFunnelSeriesDataItem;\n\n\tprotected _total: number = 0;\n\tprotected _count: number = 0;\n\tprotected _nextCoord: number = 0;\n\n\tprotected _opposite: boolean = false;\n\n\tprotected _afterNew() {\n\t\tsuper._afterNew();\n\t\tconst slicesContainer = this.slicesContainer;\n\t\tslicesContainer.setAll({ isMeasured: true, position: \"relative\", width: percent(100), height: percent(100) });\n\t\tslicesContainer.onPrivate(\"width\", () => {\n\t\t\tthis.markDirtySize();\n\t\t})\n\n\t\tslicesContainer.onPrivate(\"height\", () => {\n\t\t\tthis.markDirtySize();\n\t\t})\n\n\t\tif (this.get(\"orientation\") == \"vertical\") {\n\t\t\tthis.set(\"layout\", this._root.horizontalLayout);\n\t\t}\n\t\telse {\n\t\t\tthis.set(\"layout\", this._root.verticalLayout);\n\t\t}\n\t}\n\n\tprotected processDataItem(dataItem: DataItem) {\n\t\tsuper.processDataItem(dataItem);\n\n\t\tconst slice = this.makeSlice(dataItem);\n\n\t\tslice._setDataItem(dataItem);\n\n\t\tdataItem.set(\"slice\", slice);\n\n\t\tthis.makeLink(dataItem);\n\t\tconst label = this.makeLabel(dataItem);\n\n\t\tlabel.on(\"x\", () => {\n\t\t\tthis._updateTick(dataItem);\n\t\t})\n\n\t\tlabel.on(\"y\", () => {\n\t\t\tthis._updateTick(dataItem);\n\t\t})\n\n\t\tthis.makeTick(dataItem);\n\n\t\tslice.events.on(\"positionchanged\", () => {\n\t\t\tlabel.markDirty();\n\t\t})\n\n\t\tslice.events.on(\"boundschanged\", () => {\n\t\t\tconst dataItem = slice.dataItem;\n\t\t\tif (dataItem) {\n\t\t\t\tthis._updateTick(dataItem as any);\n\t\t\t}\n\t\t})\n\t}\n\n\n\tpublic _updateChildren() {\n\t\tthis._opposite = false;\n\t\tif (this.children.indexOf(this.labelsContainer) == 0) {\n\t\t\tthis._opposite = true;\n\t\t}\n\n\t\tlet total = 0;\n\t\tlet count = 0;\n\n\t\t$array.each(this.dataItems, (dataItem) => {\n\t\t\tconst value = dataItem.get(\"value\");\n\t\t\tif ($type.isNumber(value)) {\n\t\t\t\tcount++;\n\t\t\t\tif (value > 0) {\n\t\t\t\t\ttotal += Math.abs(dataItem.get(\"valueWorking\", value) / value);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (this.get(\"ignoreZeroValues\", false)) {\n\t\t\t\t\t\tcount--;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (dataItem.isHidden()) {\n\t\t\t\t\t\t\tcount--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\ttotal += 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tthis._total = 1 / count * total;\n\t\tthis._count = count;\n\n\t\tif (this.isDirty(\"alignLabels\")) {\n\t\t\tthis._fixLayout();\n\t\t}\n\n\t\tif (this._total > 0 && (this._valuesDirty || this._sizeDirty)) {\n\n\t\t\tconst slicesContainer = this.slicesContainer;\n\n\t\t\tlet h: number;\n\t\t\tif (this.get(\"orientation\") == \"vertical\") {\n\t\t\t\th = slicesContainer.innerHeight();\n\t\t\t}\n\t\t\telse {\n\t\t\t\th = slicesContainer.innerWidth();\n\t\t\t}\n\n\t\t\tthis._nextCoord = this.get(\"startLocation\", 0) * h;\n\n\t\t\tthis.markDirtyBounds();\n\n\t\t\tlet i = 0;\n\t\t\t$array.each(this._dataItems, (dataItem) => {\n\t\t\t\tthis.updateLegendValue(dataItem);\n\n\t\t\t\tdataItem.set(\"index\", i);\n\t\t\t\ti++;\n\n\t\t\t\tconst slice = dataItem.get(\"slice\");\n\t\t\t\tconst tick = dataItem.get(\"tick\");\n\t\t\t\tconst label = dataItem.get(\"label\");\n\t\t\t\tconst link = dataItem.get(\"link\");\n\t\t\t\tconst color = dataItem.get(\"fill\");\n\n\t\t\t\tslice._setDefault(\"fill\", color);\n\t\t\t\tslice._setDefault(\"stroke\", color);\n\t\t\t\tlink._setDefault(\"fill\", color);\n\t\t\t\tlink._setDefault(\"stroke\", color);\n\n\t\t\t\tconst value = dataItem.get(\"value\");\n\t\t\t\tif ($type.isNumber(value)) {\n\t\t\t\t\tif (value == 0 && this.get(\"ignoreZeroValues\")) {\n\t\t\t\t\t\tslice.setPrivate(\"visible\", false);\n\t\t\t\t\t\ttick.setPrivate(\"visible\", false);\n\t\t\t\t\t\tlabel.setPrivate(\"visible\", false);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tslice.setPrivate(\"visible\", true);\n\t\t\t\t\t\ttick.setPrivate(\"visible\", true);\n\t\t\t\t\t\tlabel.setPrivate(\"visible\", true);\n\n\t\t\t\t\t\tthis.decorateSlice(dataItem);\n\n\t\t\t\t\t\tif (this.isLast(dataItem)) {\n\t\t\t\t\t\t\tlink.setPrivate(\"visible\", false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (!dataItem.isHidden()) {\n\t\t\t\t\t\t\tlink.setPrivate(\"visible\", true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t\tsuper._updateChildren();\n\t}\n\n\tprotected _fixLayout() {\n\n\t\tconst orientation = this.get(\"orientation\");\n\t\tconst labelsContainer = this.labelsContainer;\n\t\tconst labelsTemplate = this.labels.template;\n\n\t\tif (this.get(\"alignLabels\")) {\n\t\t\tlabelsContainer.set(\"position\", \"relative\");\n\t\t\tlabelsContainer.setAll({ isMeasured: true });\n\t\t\tif (orientation == \"vertical\") {\n\t\t\t\tthis.set(\"layout\", this._root.horizontalLayout);\n\t\t\t\tlabelsTemplate.setAll({ centerX: p100, x: p100 });\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.set(\"layout\", this._root.verticalLayout);\n\t\t\t\tlabelsTemplate.setAll({ centerX: 0, x: 0 });\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tlabelsContainer.setAll({ isMeasured: false, position: \"absolute\" });\n\t\t\tif (orientation == \"vertical\") {\n\t\t\t\tlabelsContainer.setAll({ x: p50 });\n\t\t\t\tlabelsTemplate.setAll({ centerX: p50, x: 0 });\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlabelsContainer.setAll({ y: p50 });\n\t\t\t\tlabelsTemplate.setAll({ centerX: p50, y: 0 });\n\t\t\t}\n\t\t}\n\t\tthis.markDirtySize();\n\t}\n\n\tprotected getNextValue(dataItem: DataItem): number {\n\t\tlet index = dataItem.get(\"index\");\n\t\tlet nextValue = dataItem.get(\"valueWorking\", 0);\n\t\tif (index < this.dataItems.length - 1) {\n\t\t\tlet nextItem = this.dataItems[index + 1];\n\t\t\tnextValue = nextItem.get(\"valueWorking\", 0);\n\n\t\t\tif (nextItem.isHidden() || (nextItem.get(\"value\") == 0 && this.get(\"ignoreZeroValues\"))) {\n\t\t\t\treturn this.getNextValue(nextItem);\n\t\t\t}\n\t\t}\n\t\treturn nextValue;\n\t}\n\n\tprotected isLast(dataItem: DataItem): boolean {\n\t\tlet index = dataItem.get(\"index\");\n\t\tif (index == this.dataItems.length - 1) {\n\t\t\treturn true;\n\t\t}\n\t\telse {\n\t\t\tfor (let i = index + 1; i < this.dataItems.length; i++) {\n\t\t\t\tif (!this.dataItems[i].isHidden()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tprotected decorateSlice(dataItem: DataItem) {\n\t\tconst orientation = this.get(\"orientation\");\n\n\t\tconst slice = dataItem.get(\"slice\");\n\t\tconst label = dataItem.get(\"label\");\n\t\tconst link = dataItem.get(\"link\");\n\n\t\tconst slicesContainer = this.slicesContainer;\n\n\t\tlet maxWidth = slicesContainer.innerWidth();\n\t\tlet maxHeight = slicesContainer.innerHeight();\n\n\t\tlet maxSize = maxWidth;\n\t\tif (orientation == \"horizontal\") {\n\t\t\tmaxSize = maxHeight;\n\t\t}\n\n\t\tconst nextValue = this.getNextValue(dataItem);\n\t\tconst value = dataItem.get(\"value\", 0);\n\t\tconst workingValue = Math.abs(dataItem.get(\"valueWorking\", value));\n\t\tconst bottomRatio = this.get(\"bottomRatio\", 0);\n\t\tconst valueHigh = this.getPrivate(\"valueHigh\", 0);\n\n\n\t\tlet d = 1;\n\t\tif (value != 0) {\n\t\t\td = workingValue / Math.abs(value);\n\t\t}\n\t\telse {\n\t\t\tif (dataItem.isHidden()) {\n\t\t\t\td = 0.000001;\n\t\t\t}\n\t\t}\n\n\t\tif (this._nextCoord == Infinity) {\n\t\t\tthis._nextCoord = 0;\n\t\t}\n\n\t\tlet topWidth = workingValue / valueHigh * maxSize;\n\t\tlet bottomWidth = (workingValue - (workingValue - nextValue) * bottomRatio) / valueHigh * maxSize;\n\n\t\tslice.setAll({ topWidth, bottomWidth, orientation });\n\t\tlink.setAll({ topWidth: bottomWidth, bottomWidth: (workingValue - (workingValue - nextValue)) / valueHigh * maxSize, orientation });\n\n\t\tconst startLocation = this.get(\"startLocation\", 0);\n\t\tconst endLocation = this.get(\"endLocation\", 1);\n\n\t\tif (orientation == \"vertical\") {\n\n\t\t\tlet linkHeight = link.height() * d;\n\n\t\t\tmaxHeight = maxHeight * (endLocation - startLocation) + linkHeight;\n\n\t\t\tslice.set(\"y\", this._nextCoord);\n\n\t\t\tlet height = Math.min(100000, Math.max(0, maxHeight / this._count * d / this._total - linkHeight));\n\n\t\t\tslice.setAll({ height, x: maxWidth / 2 });\n\t\t\tlet labelY = this._nextCoord + height / 2;\n\t\t\tlabel.set(\"y\", labelY);\n\n\t\t\tthis._nextCoord += height + linkHeight;\n\t\t\tlink.setAll({ y: this._nextCoord - linkHeight, x: maxWidth / 2 });\n\t\t}\n\t\telse {\n\t\t\tlet linkHeight = link.width() * d;\n\n\t\t\tmaxWidth = maxWidth * (endLocation - startLocation) + linkHeight;\n\n\t\t\tslice.set(\"x\", this._nextCoord);\n\n\t\t\tlet width = Math.min(100000, Math.max(0, maxWidth / this._count * d / this._total - linkHeight));\n\n\t\t\tslice.setAll({ width, y: maxHeight / 2 });\n\t\t\tconst labelX = this._nextCoord + width / 2;\n\t\t\tlabel.set(\"x\", labelX);\n\n\t\t\tthis._nextCoord += width + linkHeight;\n\t\t\tlink.setAll({ x: this._nextCoord - linkHeight, y: maxHeight / 2 });\n\t\t}\n\t}\n\n\t/**\n\t * Hides series's data item.\n\t *\n\t * @param dataItem Data item\n\t * @param duration Animation duration in milliseconds\n\t * @return Promise\n\t */\n\tpublic async hideDataItem(dataItem: DataItem, duration?: number): Promise {\n\t\tdataItem.get(\"link\").hide(duration);\n\t\treturn super.hideDataItem(dataItem, duration)\n\t}\n\n\t/**\n\t * Shows series's data item.\n\t *\n\t * @param dataItem Data item\n\t * @param duration Animation duration in milliseconds\n\t * @return Promise\n\t */\n\tpublic async showDataItem(dataItem: DataItem, duration?: number): Promise {\n\t\tdataItem.get(\"link\").show(duration);\n\t\treturn super.showDataItem(dataItem, duration)\n\t}\n\n\tprotected _updateTick(dataItem: DataItem) {\n\t\tif (this.get(\"alignLabels\")) {\n\t\t\tconst tick = dataItem.get(\"tick\");\n\t\t\tconst label = dataItem.get(\"label\");\n\t\t\tconst slice = dataItem.get(\"slice\");\n\n\t\t\tif (tick && slice && label) {\n\n\t\t\t\tconst labelsContainer = this.labelsContainer;\n\t\t\t\tconst slicesContainer = this.slicesContainer;\n\t\t\t\tlet tickLocation = tick.get(\"location\", 0.5);\n\n\t\t\t\tconst lcw = labelsContainer.width();\n\t\t\t\tconst lch = labelsContainer.height();\n\n\t\t\t\tconst pl = labelsContainer.get(\"paddingLeft\", 0);\n\t\t\t\tconst pr = labelsContainer.get(\"paddingRight\", 0);\n\t\t\t\tconst pt = labelsContainer.get(\"paddingTop\", 0);\n\t\t\t\tconst pb = labelsContainer.get(\"paddingBottom\", 0);\n\n\t\t\t\tlet p0 = { x: 0, y: 0 };\n\t\t\t\tlet p1 = { x: 0, y: 0 };\n\t\t\t\tlet p2 = { x: 0, y: 0 };\n\n\t\t\t\tif (this._opposite) {\n\t\t\t\t\ttickLocation = 1 - tickLocation;\n\t\t\t\t}\n\n\t\t\t\tif (this.get(\"orientation\") == \"vertical\") {\n\t\t\t\t\tp0 = slice.getPoint(tickLocation, 0.5);\n\t\t\t\t\tp0.x += slice.x() + slicesContainer.x();\n\t\t\t\t\tp0.y += slice.y() + slicesContainer.y();\n\n\t\t\t\t\tif (this._opposite) {\n\t\t\t\t\t\tp1.x = lcw;\n\t\t\t\t\t\tp1.y = label.y();\n\n\t\t\t\t\t\tp2.x = lcw - pl;\n\t\t\t\t\t\tp2.y = p1.y;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tp1.x = slicesContainer.x() + slicesContainer.width();\n\t\t\t\t\t\tp1.y = label.y();\n\n\t\t\t\t\t\tp2.x = p1.x + lcw - label.width() - pr;\n\t\t\t\t\t\tp2.y = p1.y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tp0 = slice.getPoint(0.5, tickLocation);\n\t\t\t\t\tp0.x += slice.x() + slicesContainer.x();\n\t\t\t\t\tp0.y += slice.y() + slicesContainer.y();\n\n\t\t\t\t\tif (this._opposite) {\n\t\t\t\t\t\tp1.y = lch;\n\t\t\t\t\t\tp1.x = label.x();\n\n\t\t\t\t\t\tp2.y = lch - pt;\n\t\t\t\t\t\tp2.x = p1.x;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tp1.y = slicesContainer.y() + slicesContainer.height();\n\t\t\t\t\t\tp1.x = label.x();\n\n\t\t\t\t\t\tp2.y = p1.y + lch - label.height() - pb;\n\t\t\t\t\t\tp2.x = p1.x;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttick.set(\"points\", [p0, p1, p2]);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic disposeDataItem(dataItem: DataItem) {\n\t\tsuper.disposeDataItem(dataItem);\n\t\tlet link = dataItem.get(\"link\");\n\t\tif (link) {\n\t\t\tthis.links.removeValue(link);\n\t\t\tlink.dispose();\n\t\t}\n\t}\n\n\tpublic _positionBullet(bullet: Bullet) {\n\n\t\tconst sprite = bullet.get(\"sprite\");\n\t\tif (sprite) {\n\t\t\tconst dataItem = sprite.dataItem as DataItem;\n\t\t\tconst slice = dataItem.get(\"slice\");\n\n\t\t\tif (slice) {\n\t\t\t\tconst width = slice.width();\n\t\t\t\tconst height = slice.height();\n\t\t\t\tconst locationX = bullet.get(\"locationX\", 0.5);\n\t\t\t\tconst locationY = bullet.get(\"locationY\", 0.5);\n\n\t\t\t\tlet dx = 0;\n\t\t\t\tlet dy = 0;\n\t\t\t\tif (this.get(\"orientation\") == \"horizontal\") {\n\t\t\t\t\tdy = height / 2\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdx = width / 2\n\t\t\t\t}\n\n\t\t\t\tsprite.setAll({ x: slice.x() + width * locationX - dx, y: slice.y() - dy + height * locationY });\n\t\t\t}\n\t\t}\n\t}\n}\n","import type { DataItem } from \"../../core/render/Component\";\nimport { FunnelSeries, IFunnelSeriesSettings, IFunnelSeriesDataItem, IFunnelSeriesPrivate } from \"./FunnelSeries\";\nimport { Percent, p100 } from \"../../core/util/Percent\";\nimport * as $utils from \"../../core/util/Utils\";\nimport * as $type from \"../../core/util/Type\";\n\nexport interface IPyramidSeriesDataItem extends IFunnelSeriesDataItem {\n\n}\n\nexport interface IPyramidSeriesSettings extends IFunnelSeriesSettings {\n\n\t/**\n\t * The width of the tip of the pyramid.\n\t *\n\t * Can either be a fixed pixel value or percent relative to the space\n\t * available to the series.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/sliced-chart/pyramid-series/#Tip_and_base} for more info\n\t * @default 0\n\t */\n\ttopWidth?: number | Percent;\n\n\t/**\n\t * The width of the base of the pyramid.\n\t *\n\t * Can either be a fixed pixel value or percent relative to the space\n\t * available to the series.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/sliced-chart/pyramid-series/#Tip_and_base} for more info\n\t * @default 0\n\t */\n\tbottomWidth?: number | Percent;\n\n\t/**\n\t * Determines calculation mechanism for the slice area based on value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/sliced-chart/pyramid-series/#Slice_size} for more info\n\t * @default \"area\"\n\t */\n\tvalueIs?: \"area\" | \"height\";\n\n}\n\nexport interface IPyramidSeriesPrivate extends IFunnelSeriesPrivate {\n}\n\n/**\n * Creates a pyramid series for use in a [[SlicedChart]].\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/sliced-chart/pyramid-series/} for more info\n * @important\n */\nexport class PyramidSeries extends FunnelSeries {\n\tprotected _tag = \"pyramid\";\n\n\tpublic static className: string = \"PyramidSeries\";\n\tpublic static classNames: Array = FunnelSeries.classNames.concat([PyramidSeries.className]);\n\n\tdeclare public _settings: IPyramidSeriesSettings;\n\tdeclare public _privateSettings: IPyramidSeriesPrivate;\n\tdeclare public _dataItemSettings: IPyramidSeriesDataItem;\n\n\tprotected _nextSize: number | undefined;\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\t\tthis._nextSize = undefined;\n\t}\n\n\tprotected decorateSlice(dataItem: DataItem) {\n\t\tconst orientation = this.get(\"orientation\");\n\t\tconst slicesContainer = this.slicesContainer;\n\n\t\tconst slice = dataItem.get(\"slice\");\n\t\tconst label = dataItem.get(\"label\");\n\t\tconst link = dataItem.get(\"link\");\n\t\tconst valueIs = this.get(\"valueIs\", \"area\");\n\n\t\tconst sum = this.getPrivate(\"valueAbsoluteSum\", 0);\n\n\t\tif (sum == 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst startLocation = this.get(\"startLocation\", 0);\n\t\tconst endLocation = this.get(\"endLocation\", 1);\n\n\t\tconst tw = this.get(\"topWidth\", 0);\n\t\tconst bw = this.get(\"bottomWidth\", p100);\n\n\t\tconst workingValue = Math.abs(dataItem.get(\"valueWorking\", 0));\n\t\tconst value = dataItem.get(\"value\", 0);\n\n\t\tlet sliceHeight: number;\n\t\tlet sliceBottomWidth: number;\n\n\t\tlet pyramidHeight = slicesContainer.innerHeight();\n\t\tlet pyramidWidth = slicesContainer.innerWidth();\n\t\tlet linkWidth = link.width();\n\t\tlet linkHeight = link.height();\n\n\t\tif (orientation == \"horizontal\") {\n\t\t\t[pyramidWidth, pyramidHeight] = [pyramidHeight, pyramidWidth];\n\t\t\t[linkWidth, linkHeight] = [linkHeight, linkWidth];\n\t\t}\n\n\t\tconst center = pyramidWidth / 2;\n\n\t\tlet d = 1;\n\t\tif (value != 0) {\n\t\t\td = workingValue / Math.abs(value);\n\t\t}\n\t\telse {\n\t\t\tif (dataItem.isHidden()) {\n\t\t\t\td = 0.000001;\n\t\t\t}\n\t\t}\n\n\t\tlinkHeight *= d;\n\n\t\tpyramidHeight = pyramidHeight * (endLocation - startLocation) - linkHeight * (this._count * this._total - 1);\n\n\t\tlet topWidth = $utils.relativeToValue(tw, pyramidWidth);\n\n\t\tif (!$type.isNumber(this._nextSize)) {\n\t\t\tthis._nextSize = topWidth;\n\t\t}\n\n\t\tlet bottomWidth = $utils.relativeToValue(bw, pyramidWidth);\n\t\tlet sliceTopWidth = this._nextSize;\n\n\t\tlet angle = Math.atan2(pyramidHeight, topWidth - bottomWidth);\n\t\tlet c = Math.tan(Math.PI / 2 - angle);\n\t\tif (c == 0) {\n\t\t\tc = 0.00000001;\n\t\t}\n\n\t\tif (valueIs == \"area\") {\n\t\t\tlet totalSquare = (topWidth + bottomWidth) / 2 * pyramidHeight;\n\t\t\tlet square = totalSquare * workingValue / sum;\n\n\t\t\tlet s = Math.abs(sliceTopWidth * sliceTopWidth - 2 * square * c);\n\n\t\t\tsliceHeight = (sliceTopWidth - Math.sqrt(s)) / c;\n\n\t\t\tif (sliceHeight > 0) {\n\t\t\t\tsliceBottomWidth = (2 * square - sliceHeight * sliceTopWidth) / sliceHeight;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsliceBottomWidth = sliceTopWidth;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tsliceHeight = pyramidHeight * workingValue / sum;\n\t\t\tsliceBottomWidth = sliceTopWidth - sliceHeight * c;\n\t\t}\n\n\t\tlet labelCoord = this._nextCoord + sliceHeight / 2;\n\t\tlet sliceX = center;\n\t\tlet sliceY = this._nextCoord;\n\n\t\tlet linkX = center;\n\t\tlet linkY = sliceY + sliceHeight;\n\n\t\tif (orientation == \"vertical\") {\n\t\t\tlabel.set(\"y\", labelCoord);\n\t\t\tif (label.get(\"opacity\") > 0) {\n\t\t\t\tthis._rLabels.push({ label: label, y: labelCoord });\n\t\t\t}\n\t\t\tslice.set(\"height\", sliceHeight);\n\t\t}\n\t\telse {\n\t\t\tlabel.set(\"x\", labelCoord);\n\t\t\tif (label.get(\"opacity\") > 0) {\n\t\t\t\tthis._hLabels.push({ label: label, y: labelCoord });\n\t\t\t}\n\t\t\t[sliceX, sliceY] = [sliceY, sliceX];\n\t\t\t[linkX, linkY] = [linkY, linkX];\n\n\t\t\tslice.set(\"width\", sliceHeight);\n\t\t}\n\n\t\tslice.setAll({ orientation, bottomWidth: sliceBottomWidth, topWidth: sliceTopWidth, x: sliceX, y: sliceY });\n\t\tlink.setAll({ orientation, x: linkX, y: linkY, topWidth: sliceBottomWidth, bottomWidth: sliceBottomWidth });\n\n\t\tthis._nextSize = sliceBottomWidth;\n\t\tthis._nextCoord += sliceHeight + linkHeight;\n\t}\n}\n","import { PyramidSeries, IPyramidSeriesSettings, IPyramidSeriesDataItem, IPyramidSeriesPrivate } from \"./PyramidSeries\";\nimport { Graphics } from \"../../core/render/Graphics\";\nimport { p100, p50 } from \"../../core/util/Percent\"\n\n\nexport interface IPictorialStackedSeriesDataItem extends IPyramidSeriesDataItem {\n\n}\n\nexport interface IPictorialStackedSeriesSettings extends IPyramidSeriesSettings {\n\n\t/**\n\t * An SVG path that will define the shape of the pictorial series.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/sliced-chart/pictorial-stacked-series/#Shape_of_the_series} for more info\n\t */\n\tsvgPath?: string;\n\n}\n\nexport interface IPictorialStackedSeriesPrivate extends IPyramidSeriesPrivate {\n}\n\n/**\n * Creates a pictorial series for use in a [[SlicedChart]].\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/sliced-chart/pictorial-stacked-series/} for more info\n * @important\n */\nexport class PictorialStackedSeries extends PyramidSeries {\n\tprotected _tag = \"pictorial\";\n\n\tpublic static className: string = \"PictorialStackedSeries\";\n\tpublic static classNames: Array = PyramidSeries.classNames.concat([PictorialStackedSeries.className]);\n\n\tdeclare public _settings: IPictorialStackedSeriesSettings;\n\tdeclare public _privateSettings: IPictorialStackedSeriesPrivate;\n\tdeclare public _dataItemSettings: IPictorialStackedSeriesDataItem;\n\n\t/**\n\t * A [[Graphics]] element to used as a mask (shape) for the series.\n\t *\n\t * This element is read-only. To modify the mask/shape, use the `svgPath` setting.\n\t */\n\tpublic readonly seriesMask: Graphics = Graphics.new(this._root, { position: \"absolute\", x: p50, y: p50, centerX: p50, centerY: p50 });\n\n\tpublic readonly seriesGraphics: Graphics = this.slicesContainer.children.push(Graphics.new(this._root, { themeTags: [\"pictorial\", \"background\"], position: \"absolute\", x: p50, y: p50, centerX: p50, centerY: p50 }));\n\n\tprotected _afterNew() {\n\t\tsuper._afterNew();\n\t\tthis.set(\"topWidth\", p100);\n\t\tthis.set(\"bottomWidth\", p100);\n\t\tthis.set(\"valueIs\", \"height\");\n\t\tthis.slicesContainer.set(\"mask\", this.seriesMask);\n\t}\n\n\tprotected _updateScale() {\n\t\tlet slicesContainer = this.slicesContainer;\n\n\t\tlet w = slicesContainer.innerWidth();\n\t\tlet h = slicesContainer.innerHeight();\n\n\t\tlet seriesMask = this.seriesMask;\n\t\tlet seriesGraphics = this.seriesGraphics;\n\t\tlet scale = seriesMask.get(\"scale\", 1);\n\n\t\tconst bounds = seriesMask.localBounds();\n\n\t\tlet mw = bounds.right - bounds.left;\n\t\tlet mh = bounds.bottom - bounds.top;\n\t\tif (this.get(\"orientation\") == \"horizontal\") {\n\t\t\tscale = w / mw;\n\t\t}\n\t\telse {\n\t\t\tscale = h / mh;\n\t\t}\n\t\tif (scale != Infinity && scale != NaN) {\n\t\t\tseriesMask.set(\"scale\", scale);\n\t\t\tseriesMask.set(\"x\", w / 2);\n\t\t\tseriesMask.set(\"y\", h / 2);\n\n\t\t\tseriesGraphics.set(\"scale\", scale);\n\t\t\tseriesGraphics.set(\"x\", w / 2);\n\t\t\tseriesGraphics.set(\"y\", h / 2);\n\t\t}\n\t}\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\t\tif (this.isDirty(\"svgPath\")) {\n\t\t\tconst svgPath = this.get(\"svgPath\");\n\t\t\tthis.seriesMask.set(\"svgPath\", svgPath);\n\t\t\tthis.seriesGraphics.set(\"svgPath\", svgPath);\n\t\t}\n\n\t\tthis._updateScale();\n\t}\n\n}\n","import { PercentChart, IPercentChartPrivate, IPercentChartSettings } from \"../percent/PercentChart\";\nimport type { PercentSeries } from \"../percent/PercentSeries\";\n\n\nexport interface ISlicedChartSettings extends IPercentChartSettings {\n}\n\nexport interface ISlicedChartPrivate extends IPercentChartPrivate {\n}\n\n/**\n * Creates a sliced chart for use with [[FunnelSeries]], [[PyramidSeries]], or [[PictorialStackedSeries]].\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/} for more info\n * @important\n */\nexport class SlicedChart extends PercentChart {\n\tprotected _afterNew() {\n\t\tsuper._afterNew();\n\n\t\tthis.seriesContainer.setAll({ isMeasured:true, layout: this._root.horizontalLayout });\n\t}\n\n\tpublic static className: string = \"SlicedChart\";\n\tpublic static classNames: Array = PercentChart.classNames.concat([SlicedChart.className]);\n\n\tdeclare public _settings: ISlicedChartSettings;\n\tdeclare public _privateSettings: ISlicedChartPrivate;\n\tdeclare public _seriesType: PercentSeries;\n}\n","import * as m from \"./../../dist/es2015/percent.js\";\nexport const am5percent = m;"],"names":["PercentDefaultTheme","Theme","setupDefaultRules","super","ic","this","_root","interfaceColors","r","rule","bind","setAll","legendLabelText","legendValueText","colors","ColorSet","width","height","radius","startAngle","endAngle","alignLabels","states","create","opacity","position","isMeasured","x","y","toggleKey","tooltipText","strokeWidth","strokeOpacity","role","lineJoin","shiftRadius","scale","textType","text","paddingTop","paddingBottom","populateText","location","paddingLeft","paddingRight","startLocation","endLocation","orientation","sequencedInterpolation","interactive","expandDistance","centerY","centerX","rotation","fillOpacity","valueIs","PercentChart","SerialChart","_afterNew","_defaultThemes","push","chartContainer","children","seriesContainer","bulletsContainer","_processSeries","series","moveValue","length","className","PercentSeries","Series","Container","_makeSlices","_makeLabels","_makeTicks","makeSlice","dataItem","slice","slicesContainer","slices","make","on","updateLegendMarker","_setDataItem","set","makeLabel","label","labelsContainer","labels","_shouldMakeBullet","get","makeTick","tick","ticksContainer","ticks","fields","_onDataClear","reset","_prepareChildren","_lLabels","_rLabels","_hLabels","_valuesDirty","sum","absSum","valueHigh","valueLow","Infinity","count","_dataItems","valueWorking","Math","abs","value","percentTotal","setRaw","setPrivateRaw","show","duration","promises","_sequencedShowHide","Promise","all","hide","_updateChildren","markDirtyText","isDirty","updateLegendValue","_arrange","_arrangeDown","_arrangeUp","_arrangeLeft","_arrangeRight","dataItems","_updateTick","_afterChanged","processDataItem","next","showDataItem","easing","animation","animate","key","to","waitForStop","applyAnimate","hideDataItem","hiddenState","hideTooltip","disposeDataItem","removeValue","dispose","hoverDataItem","isHidden","hover","unhoverDataItem","unhover","legendDataItem","markerRectangle","setting","_getNextDown","sort","a","b","l","bounds","adjustedLocalBounds","labelTop","top","bottom","_getNextUp","maxHeight","labelBottom","labelLeft","left","right","maxWidth","labelRight","_updateSize","markDirty","_dataItem","_dispose","chart","PieChart","w","innerWidth","h","innerHeight","innerRadius","wr","hr","innerBounds","Percent","mr","min","max","prevRadius","_maxRadius","dy","dx","each","_markDirtyKey","index","indexOf","seriesRadius","seriesInnerRadius","classNames","concat","PieSeries","List","Template","Slice","themeTags","template","RadialLabel","Tick","events","labelsTemplate","markDirtyBounds","arc","currentAngle","getPrivate","currentArc","color","_setDefault","middleAngle","setPrivate","labelRadius","isHiding","labelAngle","cos","sin","pl","pr","_positionBullet","bullet","sprite","angle","FunnelSlice","Graphics","display","moveTo","_tlx","_tly","lineTo","_trx","_try","quadraticCurveTo","_cprx","_cpry","_brx","_bry","_blx","_bly","_cplx","_cply","getPoint","locationX","locationY","tw","bw","tlx","trx","mlx","_changed","_clear","ed","FunnelSeries","_makeLinks","_new","_tag","Label","links","makeLink","link","onPrivate","markDirtySize","horizontalLayout","verticalLayout","_opposite","total","_total","_count","_fixLayout","_sizeDirty","_nextCoord","i","decorateSlice","isLast","getNextValue","nextValue","nextItem","maxSize","workingValue","bottomRatio","d","topWidth","bottomWidth","linkHeight","labelY","labelX","tickLocation","lcw","lch","pt","pb","p0","p1","p2","PyramidSeries","_nextSize","undefined","sliceHeight","sliceBottomWidth","pyramidHeight","pyramidWidth","linkWidth","center","sliceTopWidth","atan2","c","tan","PI","square","s","sqrt","labelCoord","sliceX","sliceY","linkX","linkY","PictorialStackedSeries","seriesMask","_updateScale","seriesGraphics","localBounds","mw","mh","NaN","svgPath","SlicedChart","layout","am5percent"],"sourceRoot":""}