/* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */
import { log as F } from "@arcgis/toolkit/log";
import { C as M } from "./chart-model.js";
import { m as s } from "./model-setter.js";
import { b as c, a as f } from "./common.js";
import { M as v, a as W, W as A, b as w } from "./model-with-tooltips.js";
import { W as G } from "./data-labels-symbol.js";
import { a as P, b as k, e as z } from "./utils.js";
import "@arcgis/toolkit/type";
import { W as p } from "./series-types.js";
import "@arcgis/toolkit/intl";
import { cloneDeep as B } from "lodash-es";
import "luxon";
import "d3-array";
import { aX as d, bf as T, aT as b, ax as V, o as S, dp as h, _ as R, bo as E, bh as j, bR as U } from "./index.js";
import "@arcgis/core/Graphic.js";
import "@arcgis/core/renderers/support/jsonUtils.js";
import "@arcgis/core/symbols/support/symbolUtils.js";
import "@esri/arcgis-html-sanitizer";
import "@arcgis/core/intl.js";
import "@arcgis/core/layers/support/FeatureFilter.js";
import "@arcgis/core/smartMapping/statistics/histogram.js";
import "@arcgis/core/smartMapping/statistics/summaryStatistics.js";
import "simple-statistics";
import "@arcgis/core/request.js";
import "@arcgis/core/core/sql.js";
import "@arcgis/core/AttributeBinsGraphic.js";
import "@arcgis/core/geometry/support/jsonUtils.js";
import "@arcgis/core/rest/support/AttributeBinsQuery.js";
import "@arcgis/core/rest/support/StatisticDefinition.js";
import "@arcgis/core/time/TimeExtent.js";
import "@arcgis/core/core/promiseUtils.js";
import "./runtime.js";
import "@arcgis/toolkit/dom";
import { g as _, s as K, a as $, c as X, b as q, d as H, e as J, f as Q, h as L, i as O, j as Y } from "./pie-chart-data.js";
import { f as m } from "./rest-js-object-literals.js";
const Z = (t) => t.legend?.displayNumericValue ?? !1, ee = (t, e) => {
  e.series[0]?.type === p.PieSeries && (e.legend === void 0 && (e.legend = d()), e.legend.displayNumericValue = t);
}, te = (t) => t.legend?.displayCategory ?? !1, ie = (t, e) => {
  e.series[0]?.type === p.PieSeries && (e.legend === void 0 && (e.legend = d()), e.legend.displayCategory = t);
}, se = (t) => t.legend?.displayPercentage ?? !1, re = (t, e) => {
  e.series[0]?.type === p.PieSeries && (e.legend === void 0 && (e.legend = d()), e.legend.displayPercentage = t);
}, ae = (t) => t.legend?.labelMaxWidth ?? 200, oe = (t, e) => {
  e.series[0]?.type === p.PieSeries && (e.legend === void 0 && (e.legend = d()), e.legend.labelMaxWidth = t);
}, le = (t) => t.legend?.valueLabelMaxWidth ?? 200, ne = (t, e) => {
  e.series[0]?.type === p.PieSeries && (e.legend === void 0 && (e.legend = d()), e.legend.valueLabelMaxWidth = t);
};
var ge = Object.defineProperty, ce = Object.getOwnPropertyDescriptor, y = (t, e, i, o) => {
  for (var l = ce(e, i), n = t.length - 1, g; n >= 0; n--)
    (g = t[n]) && (l = g(e, i, l) || l);
  return l && ge(e, i, l), l;
};
class u extends v {
  /**
   * Gets the setting for the display of numerical value in the legend items.
   *
   * **Note**: Only applicable to pie charts.
   */
  getDisplayNumericValue() {
    return Z(this._config);
  }
  setDisplayNumericValue(e) {
    ee(e, this._config);
  }
  /**
   * Gets the setting for the display of percentage in the legend items.
   *
   * **Note**: Only applicable to pie charts.
   */
  getDisplayPercentage() {
    return se(this._config);
  }
  setDisplayPercentage(e) {
    re(e, this._config);
  }
  /**
   * Gets the maximum width in pixel for the legend item labels.
   *
   * **Note**: Only applicable to pie charts.
   */
  getLabelMaxWidth() {
    return ae(this._config);
  }
  setLabelMaxWidth(e) {
    oe(e, this._config);
  }
  /**
   * The maximum width in pixel for the legend value labels.
   * @returns {number}
   */
  get valueLabelMaxWidth() {
    return le(this._config);
  }
  set valueLabelMaxWidth(e) {
    ne(e, this._config), this.emitConfigUpdate("valueLabelMaxWidth");
  }
  /**
   * Whether to display the category in the legend.
   */
  get displayCategory() {
    return te(this._config);
  }
  set displayCategory(e) {
    ie(e, this._config), this.emitConfigUpdate("displayCategory");
  }
}
y([
  s
], u.prototype, "setDisplayNumericValue");
y([
  s
], u.prototype, "setDisplayPercentage");
y([
  s
], u.prototype, "setLabelMaxWidth");
const pe = [v];
P(u, pe);
const de = (t) => t.series?.[0]?.innerRadius, ue = (t, e) => {
  e.series?.[0] && (e.series[0].innerRadius = t);
}, fe = (t) => t.series?.[0]?.dataLabelsCharacterLimit, he = (t, e) => {
  e.series?.[0] && (e.series[0].dataLabelsCharacterLimit = t);
}, D = (t) => t.series[0]?.startAngle, me = (t, e) => {
  e.series?.[0] && (e.series[0].startAngle = t);
}, ye = (t, e) => {
  e.series?.[0] && (e.series[0].endAngle = t);
}, be = (t) => t.series?.[0]?.displayCategoryOnTooltip ?? !0, Se = (t) => t.series?.[0]?.displayCategoryOnDataLabel ?? !0, _e = (t) => t.series?.[0]?.displayNumericValueOnDataLabel ?? !0, Le = (t) => t.series?.[0]?.displayPercentageOnDataLabel ?? !1, Oe = (t) => t.series?.[0]?.displayNumericValueOnTooltip ?? !0, De = (t) => t.series?.[0]?.displayPercentageOnTooltip ?? !0, Ce = (t, e) => {
  e.series[0] && (e.series[0].displayPercentageOnTooltip = t);
}, ve = (t) => t.series?.[0]?.valuePrefix, Pe = (t, e) => {
  e.series?.[0] && (e.series[0].valuePrefix = t);
}, Te = (t) => t.series?.[0]?.valueSuffix, Ve = (t, e) => {
  e.series?.[0] && (e.series[0].valueSuffix = t);
}, xe = (t) => t.series?.[0]?.percentagePrefix, Ie = (t, e) => {
  e.series?.[0] && (e.series[0].percentagePrefix = t);
}, Ne = (t) => t.series?.[0]?.percentageSuffix, Fe = (t, e) => {
  e.series?.[0] && (e.series[0].percentageSuffix = t);
}, Me = (t) => {
  let e;
  const i = t.series?.[0];
  return i?.displayNumericValueOnDataLabel === !0 && i?.displayPercentageOnDataLabel === !0 ? e = c.Both : i?.displayNumericValueOnDataLabel === !0 ? e = c.Value : e = c.Percentage, e;
}, We = (t, e) => {
  const i = t === c.Value || t === c.Both, o = t === c.Percentage || t === c.Both;
  e.series?.[0] && (e.series[0].displayNumericValueOnDataLabel = i, e.series[0].displayPercentageOnDataLabel = o), e.legend && (e.legend = {
    ...e.legend,
    displayNumericValue: i,
    displayPercentage: o
  });
}, Ae = (t) => t.series?.[0]?.alignDataLabels ?? !1, we = (t, e) => {
  e.series[0] && (e.series[0].alignDataLabels = t);
}, Ge = (t) => t.series?.[0]?.dataLabelsInside ?? !1, ke = (t, e) => {
  e.series[0] && (e.series[0].dataLabelsInside = t);
}, ze = (t) => t.series?.[0]?.dataLabelsOffset ?? 10, Be = (t, e) => {
  e.series[0] && (e.series[0].dataLabelsOffset = t);
}, Re = (t) => t.series?.[0]?.numericValueFormat?.intlOptions?.minimumFractionDigits, Ee = (t, e) => {
  e.series?.[0] && (e.series[0].numericValueFormat ??= b(), e.series[0].numericValueFormat.intlOptions.minimumFractionDigits = t, e.series[0].numericValueFormat.intlOptions.maximumFractionDigits = t, e.series[0].percentValueFormat ??= b(), e.series[0].percentValueFormat.intlOptions.minimumFractionDigits = t, e.series[0].percentValueFormat.intlOptions.maximumFractionDigits = t);
}, je = (t) => t.series?.[0]?.optimizeDataLabelsOverlapping ?? !1, Ue = (t, e) => {
  e.series[0] && (e.series[0].optimizeDataLabelsOverlapping = t);
}, Ke = (t) => t.series[0]?.ticks?.visible ?? !1, $e = (t, e) => {
  e.series?.[0] && (e.series[0].ticks ??= T(), e.series[0].ticks.visible = t);
}, Xe = (t) => t.series[0]?.ticks?.lineSymbol, qe = (t, e) => {
  t && e.series?.[0] && (e.series[0].ticks ??= T(), e.series[0].ticks.lineSymbol = B(t));
}, He = (t, e) => e.series?.[0]?.slices?.[t]?.originalLabel, Je = (t, e) => e.series?.[0]?.slices?.[t]?.label, Qe = (t, e, i) => {
  i.series?.[0]?.slices?.[e] && (i.series[0].slices[e].label = t);
}, Ye = (t, e) => e.series?.[0]?.slices?.[t]?.fillSymbol?.color, Ze = (t, e, i) => {
  const o = i.series?.[0]?.slices?.[e]?.fillSymbol;
  o !== void 0 ? (o.color = t, o.outline !== void 0 ? o.outline.color = t : o.outline = { type: m.SLS, color: t }) : i.series?.[0]?.slices?.[e] !== void 0 && (i.series[0].slices[e].fillSymbol = {
    type: m.SFS,
    color: t,
    outline: { type: m.SLS, color: t }
  });
}, et = (t) => t.series?.[0]?.slices?.map((e) => e.sliceId), C = (t, e) => {
  e.series?.[0]?.slices?.sort(
    (i, o) => t.findIndex((l) => i.sliceId === l) - t.findIndex((l) => o.sliceId === l)
  );
}, tt = (t) => t.series?.[0]?.sliceGrouping, x = (t, e) => {
  e.series?.[0] && (e.series[0].sliceGrouping = t);
}, I = (t) => t.series?.[0]?.sliceGrouping?.percentageThreshold, it = (t, e) => {
  e.series?.[0]?.sliceGrouping !== void 0 ? e.series[0].sliceGrouping.percentageThreshold = t : e.series[0].sliceGrouping = {
    sliceId: V.defaultGroupOfSlicesId,
    percentageThreshold: t
  };
}, st = (t) => t.series?.[0]?.slices, N = (t, e) => {
  e.series?.[0] && (e.series[0].slices = t);
}, rt = (t) => {
  N(void 0, t), x(
    {
      sliceId: V.defaultGroupOfSlicesId,
      percentageThreshold: I(t) ?? 0
    },
    t
  );
}, at = (t, e) => e.series[0]?.slices?.[t]?.sliceId, ot = (t, e) => e.series[0]?.slices?.findIndex((i) => i.sliceId === t), lt = (t) => t.series[0]?.slices?.length ?? 0;
var nt = Object.defineProperty, gt = Object.getOwnPropertyDescriptor, a = (t, e, i, o) => {
  for (var l = gt(e, i), n = t.length - 1, g; n >= 0; n--)
    (g = t[n]) && (l = g(e, i, l) || l);
  return l && nt(e, i, l), l;
};
class r extends M {
  constructor() {
    super(...arguments), this._chartType = p.PieSeries, this._mode = f.Category, this._groupedSliceIds = [];
  }
  async setup(e) {
    await this.loadConfigFromLayer(e);
    const { config: i } = e;
    if (i !== void 0) {
      const o = S(i.series);
      this._mode = o !== h.PieFromFields ? f.Category : f.Fields;
    }
    typeof this.resolveSetup == "function" && this.resolveSetup();
  }
  // ---------------------------------------------------------------------------------------------
  // #region Data Props
  // ---------------------------------------------------------------------------------------------
  /**
   * Category field for the pie chart.
   */
  get category() {
    return _(this._config);
  }
  set category(e) {
    (!R(this._config) || e.trim() !== "") && (K({
      newCategory: e,
      config: this._config,
      layerInfo: this.layerInfo,
      commonStrings: this.commonStrings,
      mode: this._mode
    }), this.dispatchEvent(new CustomEvent("arcgisChartsModelDataChange")));
  }
  /**
   * Numeric fields for the pie chart.
   */
  get numericFields() {
    return $(this._config);
  }
  set numericFields(e) {
    typeof e == "string" && (e = [e]), (this.layerInfo !== void 0 ? k(this.layerInfo.layerFieldsInfo, e) : !0) ? (X({
      newNumericFields: e,
      config: this._config,
      layerInfo: this.layerInfo,
      commonStrings: this.commonStrings,
      mode: this._mode
    }), this.dispatchEvent(new CustomEvent("arcgisChartsModelDataChange"))) : F("error", "pie-chart-model", "Invalid `numericFields`");
  }
  /**
   * Aggregation type for the pie chart.
   */
  get aggregationType() {
    return q(this._config, this._mode);
  }
  set aggregationType(e) {
    H({
      newAggregationType: e,
      config: this._config,
      layerInfo: this.layerInfo,
      commonStrings: this.commonStrings,
      mode: this._mode
    }), this.dispatchEvent(new CustomEvent("arcgisChartsModelDataChange"));
  }
  /**
   * Gets the sort order for the pie chart.
   */
  getSortOrder() {
    return J(this._config, this._mode);
  }
  setSortOrder(e, i) {
    Q({
      newSortOrderKind: e,
      config: this._config,
      orderByList: i
    });
  }
  /**
   * List of category's values for custom sort.
   *
   * @example
   * ```ts
   * pieChartModel.orderByList = ["Field1", "Field2", "Field3"];
   * ```
   */
  get orderByList() {
    return L(this._config, this._mode);
  }
  set orderByList(e) {
    O({
      values: e,
      config: this._config,
      mode: this._mode
    });
  }
  /**
   * The pie chart data mode.
   *
   * `category` - The chart is using values from the category field to determine each slice.
   * `fields` - The chart is using aggregated values from the numeric fields to determine each slice.
   */
  get mode() {
    return this._mode;
  }
  set mode(e) {
    this._mode = e;
  }
  /**
   * Gets the list of the category values for the chart.
   */
  async getCustomSortValues() {
    const e = _(this._config), i = S(this._config.series);
    let o = [];
    return i === h.PieFromFields ? o = this.numericFields : e.trim() !== "" && i === h.PieFromCategory && (o = await z({
      category: e,
      config: this._config,
      layerInfo: this.layerInfo
    })), o;
  }
  moveCustomSortValuesInOrderByList(e, i) {
    const o = L(this._config, this._mode), [l] = o.splice(e, 1);
    o.splice(i, 0, l), O({
      values: o,
      config: this._config,
      mode: this._mode
    });
  }
  // ---------------------------------------------------------------------------------------------
  // #region Format Props
  // ---------------------------------------------------------------------------------------------
  /**
   * Ticks symbol connecting slices to labels.
   */
  get ticksSymbol() {
    return Xe(this._config);
  }
  set ticksSymbol(e) {
    qe(e, this._config);
  }
  // ---------------------------------------------------------------------------------------------
  // #region Slices Props
  // ---------------------------------------------------------------------------------------------
  /**
   * Array of slices for the pie chart.
   */
  get slices() {
    return st(this._config);
  }
  set slices(e) {
    N(e, this._config);
  }
  /**
   * Array of grouped slice ids for the pie chart.
   */
  get groupedSliceIds() {
    return this._groupedSliceIds;
  }
  set groupedSliceIds(e) {
    this._groupedSliceIds = e;
  }
  /**
   * Slice grouping configuration for the pie chart.
   */
  get sliceGrouping() {
    return tt(this._config);
  }
  set sliceGrouping(e) {
    x(e, this._config);
  }
  /**
   * Inner radius size for the pie chart.
   */
  get innerRadiusSize() {
    return de(this._config) ?? 0;
  }
  set innerRadiusSize(e) {
    ue(e, this._config);
  }
  /**
   * Threshold below which slices will be grouped.
   */
  get groupingThreshold() {
    return I(this._config) ?? 0;
  }
  set groupingThreshold(e) {
    it(e, this._config);
  }
  /**
   * Character limit for the slice labels.
   */
  get labelCharacterLimit() {
    return fe(this._config) ?? null;
  }
  set labelCharacterLimit(e) {
    he(e, this._config);
  }
  /**
   * Number of decimal places to display in the slice values.
   */
  get decimalPlaces() {
    return Re(this._config) ?? 1;
  }
  set decimalPlaces(e) {
    Ee(e, this._config);
  }
  /**
   * Display type for the pie chart slices. Specifies whether to display the slices as a `percentage`, `value`, or `both`.
   */
  get displayType() {
    return Me(this._config);
  }
  set displayType(e) {
    We(e, this._config);
  }
  // ---------------------------------------------------------------------------------------------
  // #region Protected methods
  // ---------------------------------------------------------------------------------------------
  /** @private */
  generateDefaultConfig() {
    const e = E(this.commonStrings);
    return e.series = [j(this.commonStrings, U(this.layerInfo.layer).idField)], e;
  }
  // ---------------------------------------------------------------------------------------------
  // #region Series Methods
  // ---------------------------------------------------------------------------------------------
  /**
   * Gets the original name of the slice based on the slice index.
   *
   * @param sliceIndex - The index of the slice.
   */
  getOriginalSliceName(e) {
    return He(e, this._config);
  }
  /**
   * Gets the name of the slice based on the slice index. If the index is out of bounds, this function will return `undefined`.
   *
   * @param sliceIndex - The index of the slice.
   */
  getSliceName(e) {
    return Je(e, this._config);
  }
  setSliceName(e, i) {
    Qe(e, i, this._config);
  }
  /**
   * Gets the color of the slice based on the slice index. If the index is out of bounds, this function will return `undefined`.
   *
   * @param sliceIndex - The index of the slice.
   */
  getSliceColor(e) {
    return Ye(e, this._config);
  }
  setSliceColor(e, i) {
    Ze(e, i, this._config);
  }
  /**
   * Order of the slice array by returning an array of slice ids
   */
  get orderOfSlices() {
    return et(this._config);
  }
  set orderOfSlices(e) {
    e !== void 0 && C(e, this._config);
  }
  moveSeries(e, i) {
    const o = this.orderOfSlices;
    if (o !== void 0) {
      const [l] = o.splice(e, 1);
      o.splice(i, 0, l), C(o, this._config);
    }
  }
  /**
   * Gets the slice id for a given slice index. If the index is out of bounds, this function will return `undefined`.
   *
   * @param sliceIndex - The index of the slice.
   */
  getSliceId(e) {
    return at(e, this._config);
  }
  /**
   * Gets the slice index for a given slice id. If the `sliceId` is not found, this function will return `undefined`.
   *
   * @param sliceId - The id of the slice.
   */
  getSliceIndex(e) {
    return ot(e, this._config);
  }
  /**
   * Gets the length of the slices array.
   */
  getSlicesLength() {
    return lt(this._config);
  }
  resetSlices() {
    rt(this._config);
  }
  /**
   * Returns whether the series styling is able to be reset.
   */
  resetAvailable() {
    const e = !this.colorMatch;
    let i = !1;
    const o = this.slices?.length ?? 0;
    for (let l = 0; l < o; l += 1) {
      const n = this.getOriginalSliceName(l), g = this.getSliceName(l);
      if (n !== void 0 && n?.toString() !== g?.toString()) {
        i = !0;
        break;
      }
    }
    return this.sliceGrouping?.originalLabel !== void 0 && this.sliceGrouping?.label !== this.sliceGrouping.originalLabel && (i = !0), e || i;
  }
  /**
   * Visibility of the ticks.
   */
  get ticksVisibility() {
    return Ke(this._config);
  }
  set ticksVisibility(e) {
    $e(e, this._config);
  }
  /**
   * Start angle of the pie chart.
   */
  get startAngle() {
    return D(this._config);
  }
  set startAngle(e) {
    me(e, this._config);
  }
  /**
   * End angle of the pie chart.
   */
  get endAngle() {
    return D(this._config);
  }
  set endAngle(e) {
    ye(e, this._config);
  }
  /**
   * Whether to display the category on the data label.
   * **Note:** If the setting is not found in the config, it will default to `true`.
   */
  get displayCategoryOnDataLabel() {
    return Se(this._config);
  }
  set displayCategoryOnDataLabel(e) {
    this.guardSetterFromAsyncOverwrite(() => {
      this._config.series[0].displayCategoryOnDataLabel = e, this.emitConfigUpdate("displayCategoryOnDataLabel");
    });
  }
  /**
   * Display category value on tooltip setting from the chart config.
   *
   * **Note**: If the setting is not found in the config, it will default to `true`.
   */
  get displayCategoryValueOnTooltip() {
    return be(this._config);
  }
  set displayCategoryValueOnTooltip(e) {
    this._config.series[0].displayCategoryOnTooltip = e;
  }
  /**
   * Whether to display the numeric value on the data label.
   * **Note:** If the setting is not found in the config, it will default to `true`.
   */
  get displayNumericValueOnDataLabel() {
    return _e(this._config);
  }
  set displayNumericValueOnDataLabel(e) {
    this.guardSetterFromAsyncOverwrite(() => {
      this._config.series[0].displayNumericValueOnDataLabel = e, this.emitConfigUpdate("displayNumericValueOnDataLabel");
    });
  }
  /**
   * Whether to display the percentage on the data label.
   *
   * **Note:** If the setting is not found in the config, it will default to `true`.
   */
  get displayPercentageOnDataLabel() {
    return Le(this._config);
  }
  set displayPercentageOnDataLabel(e) {
    this.guardSetterFromAsyncOverwrite(() => {
      this._config.series[0].displayPercentageOnDataLabel = e, this.emitConfigUpdate("displayPercentageOnDataLabel");
    });
  }
  /**
   * Display numeric value on tooltip setting from the chart config.
   *
   * **Note**: If the setting is not found in the config, it will default to `true`.
   */
  get displayNumericValueOnTooltip() {
    return Oe(this._config);
  }
  set displayNumericValueOnTooltip(e) {
    this._config.series[0].displayNumericValueOnTooltip = e;
  }
  /**
   * Display percentage on tooltip setting from the chart config.
   *
   * **Note**: If the setting is not found in the config, it will default to `true`.
   */
  get displayPercentageOnTooltip() {
    return De(this._config);
  }
  set displayPercentageOnTooltip(e) {
    Ce(e, this._config);
  }
  /**
   * Prefix of the values of the slices.
   */
  get valuePrefix() {
    return ve(this._config);
  }
  set valuePrefix(e) {
    Pe(e, this._config);
  }
  /**
   * Suffix of the values of the slice.
   */
  get valueSuffix() {
    return Te(this._config);
  }
  set valueSuffix(e) {
    Ve(e, this._config);
  }
  /**
   * Prefix of the percentages of the slices.
   */
  get percentagePrefix() {
    return xe(this._config);
  }
  set percentagePrefix(e) {
    Ie(e, this._config);
  }
  /**
   * Suffix of the percentages of the slices.
   */
  get percentageSuffix() {
    return Ne(this._config);
  }
  set percentageSuffix(e) {
    Fe(e, this._config);
  }
  /**
   * Offset for the data labels.
   */
  get dataLabelsOffset() {
    return ze(this._config);
  }
  set dataLabelsOffset(e) {
    Be(e, this._config);
  }
  /**
   * Align the data labels on the left or right side of the chart instead of the default position around the chart.
   */
  get alignDataLabels() {
    return Ae(this._config);
  }
  set alignDataLabels(e) {
    we(e, this._config);
  }
  /**
   * Setting for placing the data labels inside of the slices.
   */
  get dataLabelsInside() {
    return Ge(this._config);
  }
  set dataLabelsInside(e) {
    ke(e, this._config);
  }
  /**
   * Optimize data labels overlapping setting for the pie chart.
   */
  get optimizeDataLabelsOverlapping() {
    return je(this._config);
  }
  set optimizeDataLabelsOverlapping(e) {
    Ue(e, this._config);
  }
  // ---------------------------------------------------------------------------------------------
  // #region General Props
  // ---------------------------------------------------------------------------------------------
  /**
   * Generate the proper chart title given the current config.
   */
  generateChartTitle() {
    return Y({
      config: this._config,
      layerInfo: this.layerInfo,
      commonStrings: this.commonStrings,
      mode: this._mode
    });
  }
}
a([
  s
], r.prototype, "category");
a([
  s
], r.prototype, "numericFields");
a([
  s
], r.prototype, "aggregationType");
a([
  s
], r.prototype, "setSortOrder");
a([
  s
], r.prototype, "orderByList");
a([
  s
], r.prototype, "mode");
a([
  s
], r.prototype, "moveCustomSortValuesInOrderByList");
a([
  s
], r.prototype, "ticksSymbol");
a([
  s
], r.prototype, "slices");
a([
  s
], r.prototype, "groupedSliceIds");
a([
  s
], r.prototype, "sliceGrouping");
a([
  s
], r.prototype, "innerRadiusSize");
a([
  s
], r.prototype, "groupingThreshold");
a([
  s
], r.prototype, "labelCharacterLimit");
a([
  s
], r.prototype, "decimalPlaces");
a([
  s
], r.prototype, "displayType");
a([
  s
], r.prototype, "setSliceName");
a([
  s
], r.prototype, "setSliceColor");
a([
  s
], r.prototype, "orderOfSlices");
a([
  s
], r.prototype, "moveSeries");
a([
  s
], r.prototype, "resetSlices");
a([
  s
], r.prototype, "ticksVisibility");
a([
  s
], r.prototype, "startAngle");
a([
  s
], r.prototype, "endAngle");
a([
  s
], r.prototype, "displayCategoryValueOnTooltip");
a([
  s
], r.prototype, "displayNumericValueOnTooltip");
a([
  s
], r.prototype, "displayPercentageOnTooltip");
a([
  s
], r.prototype, "valuePrefix");
a([
  s
], r.prototype, "valueSuffix");
a([
  s
], r.prototype, "percentagePrefix");
a([
  s
], r.prototype, "percentageSuffix");
a([
  s
], r.prototype, "dataLabelsOffset");
a([
  s
], r.prototype, "alignDataLabels");
a([
  s
], r.prototype, "dataLabelsInside");
a([
  s
], r.prototype, "optimizeDataLabelsOverlapping");
const ct = [
  u,
  W,
  A,
  w,
  G
];
P(r, ct);
export {
  r as PieChartModel
};
