impact-nova 3.0.0-alpha.4 → 3.0.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/components/data/ag-grid-react/cell-renderers/editors/list-select-cell-editor.js +56 -42
  2. package/dist/components/data/ag-grid-react/cell-renderers/editors/select-cell-editor.js +48 -45
  3. package/dist/components/data/ag-grid-react/cell-renderers/list-select-display-renderer.js +31 -33
  4. package/dist/components/data/ag-grid-react/cell-renderers/select-display-renderer.js +18 -17
  5. package/dist/components/data/ag-grid-react/editable-utils.d.ts +9 -1
  6. package/dist/components/data/ag-grid-react/editable-utils.js +46 -41
  7. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +3 -2
  8. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +3 -2
  9. package/dist/components/data/expandable-list-item/sku-picker-chrome.d.ts +2 -1
  10. package/dist/components/data/expandable-list-item/sku-picker-chrome.js +51 -40
  11. package/dist/components/data/expandable-list-item/useServerSkuInfinitePages.d.ts +2 -1
  12. package/dist/components/data/expandable-list-item/virtualized-responsive-grid.catalog.d.ts +5 -4
  13. package/dist/components/data-display/chart/chart-scatter3d.d.ts +39 -0
  14. package/dist/components/data-display/chart/chart-scatter3d.js +180 -0
  15. package/dist/components/data-display/chart/chart.js +125 -112
  16. package/dist/components/data-display/chart/chart.utils.js +122 -92
  17. package/dist/components/feedback/tooltip/button-icon-tooltip.d.ts +4 -1
  18. package/dist/components/feedback/tooltip/button-icon-tooltip.js +14 -12
  19. package/dist/components/feedback/tooltip/tab-tooltip-render.js +3 -2
  20. package/dist/components/feedback/tooltip/use-overflow-tooltip.js +44 -36
  21. package/dist/components/flows/command-palette/shortcut-settings.js +10 -10
  22. package/dist/components/flows/filter-panel/filter-panel.js +4 -4
  23. package/dist/components/flows/iris-chat/iris-chat-menu.js +100 -73
  24. package/dist/components/forms/choice-card/choice-card-percent.js +68 -50
  25. package/dist/components/forms/choice-card/choice-card.js +23 -23
  26. package/dist/components/forms/select/components/SelectMenuPanel.js +15 -15
  27. package/dist/components/forms/select/components/SelectTriggerValue.js +3 -2
  28. package/dist/components/forms/select/components/Submenu.js +3 -2
  29. package/dist/components/layout/horizontal-scroller/horizontal-scroller-mask.d.ts +3 -0
  30. package/dist/components/layout/horizontal-scroller/horizontal-scroller-mask.js +12 -0
  31. package/dist/components/layout/horizontal-scroller/horizontal-scroller.js +181 -125
  32. package/dist/components/layout/horizontal-scroller/horizontal-scroller.types.d.ts +2 -0
  33. package/dist/components/layout/horizontal-scroller/scroll-overflow-affordance.d.ts +3 -1
  34. package/dist/components/layout/horizontal-scroller/scroll-overflow-affordance.js +77 -67
  35. package/dist/components/primitives/iris/iris-insight-truncated-text.d.ts +3 -0
  36. package/dist/components/primitives/iris/iris-insight-truncated-text.js +33 -0
  37. package/dist/components/primitives/iris/iris.d.ts +2 -1
  38. package/dist/components/primitives/iris/iris.js +57 -67
  39. package/dist/components/primitives/iris/iris.types.d.ts +7 -0
  40. package/dist/components/primitives/stepper/internals/stepper-summary.js +5 -5
  41. package/dist/form-react/Fields/VirtualizedListField.js +69 -64
  42. package/dist/impact-nova-components.css +35 -8
  43. package/dist/impact-nova.css +1 -1
  44. package/dist/lib/alphabetical-sort.js +13 -0
  45. package/dist/llms/rules/installation.js +1 -1
  46. package/dist/llms/rules/requirements.js +1 -1
  47. package/package.json +2 -2
@@ -1,13 +1,13 @@
1
- import { jsx as t, jsxs as l } from "react/jsx-runtime";
2
- import { Search as s, CardView as m, ListFilter as h, TextFormat as u, Back as b } from "impact-nova-icons";
1
+ import { jsx as t, jsxs as a } from "react/jsx-runtime";
2
+ import { Search as s, CardView as m, ListFilter as u, Sorting as h, Back as b } from "impact-nova-icons";
3
3
  import "react";
4
4
  import { Badge as v } from "../../data-display/badge/badge.js";
5
- import { ButtonIconTooltip as r } from "../../feedback/tooltip/button-icon-tooltip.js";
5
+ import { ButtonIconTooltip as c } from "../../feedback/tooltip/button-icon-tooltip.js";
6
6
  import { Input as f } from "../../forms/input/input.js";
7
7
  import { Accordion as x, AccordionItem as g, AccordionTrigger as w, AccordionContent as C } from "../../primitives/accordion/accordion.js";
8
8
  import { Button as i } from "../../primitives/button/button.js";
9
9
  import { cn as N } from "../../../lib/utils.js";
10
- const d = "picker";
10
+ const o = "picker";
11
11
  function S(e) {
12
12
  return N(
13
13
  e && "border-brand bg-accent text-brand hover:bg-accent hover:text-brand"
@@ -16,25 +16,25 @@ function S(e) {
16
16
  function y(e) {
17
17
  if (e.selectedCount === 0)
18
18
  return /* @__PURE__ */ t("p", { className: "text-xs font-medium text-content-muted", children: e.emptyLabel });
19
- const a = Math.max(0, e.selectedCount - e.previewCodes.length);
20
- return /* @__PURE__ */ l("div", { className: "flex min-w-0 items-center gap-1", children: [
19
+ const l = Math.max(0, e.selectedCount - e.previewCodes.length);
20
+ return /* @__PURE__ */ a("div", { className: "flex min-w-0 items-center gap-1", children: [
21
21
  /* @__PURE__ */ t("p", { className: "truncate text-xs font-medium text-content-muted", children: e.previewCodes.join(", ") }),
22
- a > 0 ? /* @__PURE__ */ l(v, { variant: "subtle", color: "primary", size: "sm", shape: "square", children: [
22
+ l > 0 ? /* @__PURE__ */ a(v, { variant: "subtle", color: "primary", size: "sm", shape: "square", children: [
23
23
  "+",
24
- a
24
+ l
25
25
  ] }) : null
26
26
  ] });
27
27
  }
28
- function V(e) {
29
- const a = e.title ?? "SKU", n = /* @__PURE__ */ t(
28
+ function U(e) {
29
+ const l = e.title ?? "SKU", n = /* @__PURE__ */ t(
30
30
  y,
31
31
  {
32
32
  selectedCount: e.selectedCount,
33
33
  previewCodes: e.previewCodes,
34
34
  emptyLabel: e.emptyLabel ?? "No SKUs selected"
35
35
  }
36
- ), c = /* @__PURE__ */ l("div", { className: "flex items-center justify-between gap-3", children: [
37
- /* @__PURE__ */ l("div", { className: "flex items-center gap-3", children: [
36
+ ), r = /* @__PURE__ */ a("div", { className: "flex items-center justify-between gap-3", children: [
37
+ /* @__PURE__ */ a("div", { className: "flex items-center gap-3", children: [
38
38
  /* @__PURE__ */ t(
39
39
  f,
40
40
  {
@@ -42,13 +42,13 @@ function V(e) {
42
42
  className: "w-[200px]",
43
43
  placeholder: "Search",
44
44
  value: e.search,
45
- onChange: (o) => e.onSearchChange(o.target.value),
45
+ onChange: (d) => e.onSearchChange(d.target.value),
46
46
  prefix: /* @__PURE__ */ t(s, { className: "size-4 text-content-placeholder", "aria-hidden": !0 }),
47
47
  "aria-label": e.searchLabel ?? "Search SKUs"
48
48
  }
49
49
  ),
50
50
  /* @__PURE__ */ t(
51
- r,
51
+ c,
52
52
  {
53
53
  label: e.view === "card" ? "Switch to list view" : "Switch to card view",
54
54
  children: /* @__PURE__ */ t(
@@ -60,26 +60,37 @@ function V(e) {
60
60
  "aria-label": e.view === "card" ? "Switch to list view" : "Switch to card view",
61
61
  "aria-pressed": e.view === "list",
62
62
  onClick: () => e.onViewChange(e.view === "card" ? "list" : "card"),
63
- children: e.view === "card" ? /* @__PURE__ */ t(m, {}) : /* @__PURE__ */ t(h, {})
63
+ children: e.view === "card" ? /* @__PURE__ */ t(m, {}) : /* @__PURE__ */ t(u, {})
64
64
  }
65
65
  )
66
66
  }
67
67
  ),
68
- /* @__PURE__ */ t(r, { label: "Sort Alphabetically", children: /* @__PURE__ */ t(
69
- i,
68
+ /* @__PURE__ */ t(
69
+ c,
70
70
  {
71
- type: "button",
72
- size: "icon",
73
- variant: "tertiary",
74
- "aria-label": "Sort alphabetically",
75
- "aria-pressed": e.sortAlphabetically,
76
- className: S(e.sortAlphabetically),
77
- onClick: e.onToggleSort,
78
- children: /* @__PURE__ */ t(u, {})
71
+ label: e.sortDirection === "desc" ? "Sort Z to A" : "Sort A to Z",
72
+ children: /* @__PURE__ */ t(
73
+ i,
74
+ {
75
+ type: "button",
76
+ size: "icon",
77
+ variant: "tertiary",
78
+ "aria-label": e.sortDirection === "desc" ? "Sort Z to A" : "Sort A to Z",
79
+ "aria-pressed": e.sortDirection !== "none",
80
+ className: S(e.sortDirection !== "none"),
81
+ onClick: e.onToggleSort,
82
+ children: /* @__PURE__ */ t(
83
+ h,
84
+ {
85
+ className: e.sortDirection === "desc" ? "rotate-180" : void 0
86
+ }
87
+ )
88
+ }
89
+ )
79
90
  }
80
- ) })
91
+ )
81
92
  ] }),
82
- /* @__PURE__ */ l("div", { className: "flex items-center gap-3", children: [
93
+ /* @__PURE__ */ a("div", { className: "flex items-center gap-3", children: [
83
94
  /* @__PURE__ */ t(
84
95
  i,
85
96
  {
@@ -109,36 +120,36 @@ function V(e) {
109
120
  {
110
121
  type: "single",
111
122
  collapsible: !0,
112
- defaultValue: e.defaultCollapsed ? void 0 : d,
123
+ defaultValue: e.defaultCollapsed ? void 0 : o,
113
124
  className: "w-full",
114
- children: /* @__PURE__ */ l(g, { value: d, className: "border border-stroke-subtle", children: [
115
- /* @__PURE__ */ t(w, { headingLevel: 3, rightActions: n, children: /* @__PURE__ */ l("span", { className: "truncate text-sm font-semibold leading-6 text-content-title", children: [
116
- a,
125
+ children: /* @__PURE__ */ a(g, { value: o, className: "border border-stroke-subtle", children: [
126
+ /* @__PURE__ */ t(w, { headingLevel: 3, rightActions: n, children: /* @__PURE__ */ a("span", { className: "truncate text-sm font-semibold leading-6 text-content-title", children: [
127
+ l,
117
128
  e.required ? /* @__PURE__ */ t("span", { className: "text-destructive", children: " *" }) : null
118
129
  ] }) }),
119
- /* @__PURE__ */ l(C, { className: "flex flex-col gap-3", children: [
120
- c,
130
+ /* @__PURE__ */ a(C, { className: "flex flex-col gap-3", children: [
131
+ r,
121
132
  e.children,
122
133
  e.footer
123
134
  ] })
124
135
  ] })
125
136
  }
126
- ) : /* @__PURE__ */ l("div", { className: "flex w-full flex-col gap-3 overflow-hidden rounded-lg border border-stroke-subtle bg-canvas-elevated px-4 py-2", children: [
127
- /* @__PURE__ */ l("div", { className: "flex items-center justify-between gap-3", children: [
128
- /* @__PURE__ */ l("div", { className: "flex items-center gap-3", children: [
137
+ ) : /* @__PURE__ */ a("div", { className: "flex w-full flex-col gap-3 overflow-hidden rounded-lg border border-stroke-subtle bg-canvas-elevated px-4 py-2", children: [
138
+ /* @__PURE__ */ a("div", { className: "flex items-center justify-between gap-3", children: [
139
+ /* @__PURE__ */ a("div", { className: "flex items-center gap-3", children: [
129
140
  e.showBack === !1 ? null : /* @__PURE__ */ t(i, { type: "button", size: "icon", variant: "ghost", "aria-label": "Back", children: /* @__PURE__ */ t(b, {}) }),
130
- /* @__PURE__ */ l("p", { className: "text-sm font-semibold leading-6 text-content-title", children: [
131
- a,
141
+ /* @__PURE__ */ a("p", { className: "text-sm font-semibold leading-6 text-content-title", children: [
142
+ l,
132
143
  e.required ? /* @__PURE__ */ t("span", { className: "text-destructive", children: " *" }) : null
133
144
  ] })
134
145
  ] }),
135
146
  n
136
147
  ] }),
137
- c,
148
+ r,
138
149
  e.children,
139
150
  e.footer
140
151
  ] });
141
152
  }
142
153
  export {
143
- V as SkuPickerChrome
154
+ U as SkuPickerChrome
144
155
  };
@@ -1,4 +1,5 @@
1
- export declare function useServerSkuInfinitePages(search: string, sortAlphabetically: boolean): {
1
+ import { AlphabeticalSortDirection } from '../../../lib/alphabetical-sort';
2
+ export declare function useServerSkuInfinitePages(search: string, sortDirection: AlphabeticalSortDirection): {
2
3
  debouncedSearch: string;
3
4
  query: import('@tanstack/react-query').UseInfiniteQueryResult<import('@tanstack/query-core').InfiniteData<import('./virtualized-responsive-grid.catalog').SkuServerPage, unknown>, Error>;
4
5
  loadedCatalogIndices: number[];
@@ -1,4 +1,5 @@
1
1
  import { ImageComponent } from 'impact-nova-icons';
2
+ import { AlphabeticalSortDirection } from '../../../lib/alphabetical-sort';
2
3
  export declare const SKU_CATALOG_TOTAL = 50000;
3
4
  export declare const ITEM_CATALOG_TOTAL = 50000;
4
5
  export declare const SERVER_PAGE_SIZE = 200;
@@ -8,7 +9,7 @@ export declare const SKU_CARD_COLUMN_GAP = 12;
8
9
  export declare const SKU_CARD_HEIGHT = 66;
9
10
  export declare const SKU_LIST_MINIMUM_WIDTH = 155;
10
11
  export declare const SKU_LIST_COLUMN_GAP = 80;
11
- export declare const SKU_LIST_ROW_HEIGHT = 24;
12
+ export declare const SKU_LIST_ROW_HEIGHT = 36;
12
13
  export declare const SKU_LIST_ROW_GAP = 16;
13
14
  export declare const SKU_STRIP_OVERSCAN = 12;
14
15
  export declare const BY_ITEM_VISUAL_GRID_COLUMN_COUNT = 4;
@@ -57,11 +58,11 @@ export type SkuServerPage = {
57
58
  nextStartIndex?: number;
58
59
  };
59
60
  /** Reuse the filtered catalog for later pages of the same search. Does not mutate cached arrays. */
60
- export declare function getCachedSkuMatchingIndices(searchQuery: string, sortAlphabetically: boolean): number[] | null;
61
+ export declare function getCachedSkuMatchingIndices(searchQuery: string, sortDirection: AlphabeticalSortDirection): number[] | null;
61
62
  export declare function fetchSkuServerPage(options: {
62
63
  startIndex: number;
63
64
  searchQuery: string;
64
- sortAlphabetically: boolean;
65
+ sortDirection: AlphabeticalSortDirection;
65
66
  pageSize?: number;
66
67
  }): Promise<SkuServerPage>;
67
68
  export declare function getItemCatalogRecord(catalogIndex: number): ItemCatalogRecord;
@@ -75,7 +76,7 @@ export declare function collectStripCatalogIndices(options: {
75
76
  export declare function filterAndSortCatalogIndices(options: {
76
77
  totalCount: number;
77
78
  searchQuery: string;
78
- sortAlphabetically: boolean;
79
+ sortDirection: AlphabeticalSortDirection;
79
80
  getSearchText: (catalogIndex: number) => string;
80
81
  getSortKey: (catalogIndex: number) => string;
81
82
  }): number[] | null;
@@ -0,0 +1,39 @@
1
+ import { default as Highcharts, Chart3dOptions } from 'highcharts';
2
+ import { ChartProps } from './chart.types';
3
+ type DragChart = {
4
+ container: object;
5
+ pointer: {
6
+ normalize: (event: unknown) => {
7
+ chartX: number;
8
+ chartY: number;
9
+ };
10
+ };
11
+ options: {
12
+ chart?: {
13
+ options3d?: {
14
+ alpha?: number;
15
+ beta?: number;
16
+ };
17
+ };
18
+ };
19
+ update: (options: {
20
+ chart: {
21
+ options3d: {
22
+ alpha: number;
23
+ beta: number;
24
+ };
25
+ };
26
+ }, redraw?: boolean, oneToOne?: boolean, animation?: boolean) => void;
27
+ };
28
+ type Unbind = () => void;
29
+ type AddEvent = (element: object, type: string, handler: (event: unknown) => void) => Unbind | void;
30
+ /** Drag-to-rotate for Highcharts 3D charts (bound from `chart.events.load`). */
31
+ export declare function attach3dDragRotation(chart: DragChart, addEvent: AddEvent): void;
32
+ export declare function enable3dDragRotation(this: DragChart): void;
33
+ export declare function chartUsesScatter3d(props: Pick<ChartProps, 'is3D' | 'type' | 'series'>): boolean;
34
+ type Chart3dFrame = NonNullable<Chart3dOptions['frame']>;
35
+ export declare function mergeScatter3dChartLoadHandlers(userLoad: Highcharts.ChartLoadCallbackFunction | undefined): Highcharts.ChartLoadCallbackFunction;
36
+ export declare function mergeScatter3dOptions3dFrame(base: Chart3dFrame | undefined, override: Chart3dFrame | undefined): Chart3dFrame | undefined;
37
+ /** Design-system defaults for 3D scatter (axes, frame, markers, drag rotation). */
38
+ export declare function getScatter3dHighchartsOptions(props: Pick<ChartProps, 'xAxisTitle' | 'yAxisTitle' | 'options'>): Highcharts.Options;
39
+ export {};
@@ -0,0 +1,180 @@
1
+ import L from "highcharts";
2
+ import { getInitializedHighcharts as v } from "./initializeHighcharts.js";
3
+ const c = "var(--color-surface-muted)", g = 5;
4
+ function n(t) {
5
+ return typeof t == "function" ? t : void 0;
6
+ }
7
+ function S(t, e) {
8
+ let i;
9
+ const o = (l) => {
10
+ const h = t.pointer.normalize(l), y = h.chartX, x = h.chartY, A = t.options.chart?.options3d?.alpha ?? 0, z = t.options.chart?.options3d?.beta ?? 0, r = [], p = (d) => {
11
+ const m = t.pointer.normalize(d);
12
+ t.update(
13
+ {
14
+ chart: {
15
+ options3d: {
16
+ alpha: A + (m.chartY - x) / g,
17
+ beta: z + (y - m.chartX) / g
18
+ }
19
+ }
20
+ },
21
+ void 0,
22
+ void 0,
23
+ !1
24
+ );
25
+ }, f = () => {
26
+ r.forEach((d) => d?.()), r.length = 0, i = void 0;
27
+ };
28
+ i = f, r.push(n(e(document, "mousemove", p))), r.push(n(e(document, "touchmove", p))), r.push(n(e(document, "mouseup", f))), r.push(n(e(document, "touchend", f)));
29
+ }, s = [
30
+ n(e(t.container, "mousedown", o)),
31
+ n(e(t.container, "touchstart", o))
32
+ ];
33
+ n(e(t, "destroy", () => {
34
+ i?.(), s.forEach((l) => l?.());
35
+ }));
36
+ }
37
+ function T() {
38
+ v();
39
+ const t = L.addEvent;
40
+ typeof t == "function" && S(this, t);
41
+ }
42
+ function F(t) {
43
+ return t.is3D ? t.type === "scatter3d" || t.series?.some((e) => "type" in e && e.type === "scatter3d") ? !0 : t.type === "scatter" : !1;
44
+ }
45
+ const k = {
46
+ color: "var(--color-foreground-tertiary)",
47
+ fontFamily: '"Manrope", sans-serif',
48
+ fontSize: "12px",
49
+ fontWeight: "500"
50
+ }, u = {
51
+ color: "var(--color-foreground-tertiary)",
52
+ fontFamily: '"Manrope", sans-serif',
53
+ fontSize: "14px",
54
+ fontWeight: "500",
55
+ lineHeight: "20px"
56
+ };
57
+ function D() {
58
+ return {
59
+ type: "linear",
60
+ categories: void 0,
61
+ startOnTick: !0,
62
+ endOnTick: !0,
63
+ showFirstLabel: !0,
64
+ showLastLabel: !0,
65
+ gridLineWidth: 1,
66
+ gridLineColor: "var(--color-border)",
67
+ gridLineDashStyle: "Solid",
68
+ minorGridLineWidth: 0,
69
+ lineWidth: 1,
70
+ lineColor: "var(--color-border)",
71
+ tickWidth: 0,
72
+ tickLength: 0,
73
+ labels: {
74
+ style: k,
75
+ position3d: "offset",
76
+ skew3d: !1
77
+ }
78
+ };
79
+ }
80
+ function b(t, e) {
81
+ if (!e)
82
+ return t;
83
+ const i = ["bottom", "back", "left", "right", "top", "front"], o = { ...t, ...e };
84
+ for (const s of i)
85
+ e[s] && (o[s] = { ...t?.[s], ...e[s] });
86
+ return o;
87
+ }
88
+ function O(t) {
89
+ return function(...i) {
90
+ T.call(this), typeof t == "function" && t.apply(this, i);
91
+ };
92
+ }
93
+ function R(t, e) {
94
+ return b(t, e);
95
+ }
96
+ function W(t) {
97
+ const i = t.options?.chart?.options3d, o = Array.isArray(t.options?.zAxis) ? t.options?.zAxis[0] : t.options?.zAxis, s = {
98
+ size: 1,
99
+ bottom: { color: c, size: 1, visible: !0 },
100
+ back: { color: c, size: 1, visible: !0 },
101
+ left: { color: c, size: 1, visible: !0 },
102
+ right: { color: c, size: 1, visible: !1 },
103
+ top: { color: "transparent", size: 0, visible: !1 },
104
+ front: { color: "transparent", size: 0, visible: !1 }
105
+ }, a = D();
106
+ return {
107
+ chart: {
108
+ type: "scatter3d",
109
+ spacingLeft: 0,
110
+ spacingRight: 0,
111
+ marginLeft: 24,
112
+ marginRight: 8,
113
+ options3d: {
114
+ enabled: !0,
115
+ alpha: 16,
116
+ beta: 22,
117
+ depth: 320,
118
+ viewDistance: 18,
119
+ fitToPlot: !0,
120
+ ...i,
121
+ frame: b(s, i?.frame)
122
+ }
123
+ },
124
+ xAxis: {
125
+ ...a,
126
+ crosshair: !1,
127
+ title: t.xAxisTitle ? {
128
+ text: t.xAxisTitle,
129
+ style: u,
130
+ position3d: "offset",
131
+ skew3d: !1
132
+ } : void 0
133
+ },
134
+ yAxis: {
135
+ ...a,
136
+ title: t.yAxisTitle ? {
137
+ text: t.yAxisTitle,
138
+ style: u,
139
+ position3d: "offset",
140
+ skew3d: !1,
141
+ reserveSpace: !0,
142
+ margin: 18,
143
+ x: 0
144
+ } : void 0
145
+ },
146
+ zAxis: {
147
+ ...a,
148
+ showFirstLabel: !1,
149
+ labels: {
150
+ ...a.labels,
151
+ step: 5,
152
+ y: 14
153
+ },
154
+ title: {
155
+ text: o?.title?.text ?? "",
156
+ style: u,
157
+ position3d: "offset",
158
+ skew3d: !1
159
+ },
160
+ ...o
161
+ },
162
+ plotOptions: {
163
+ scatter3d: {
164
+ marker: {
165
+ radius: 5,
166
+ symbol: "circle",
167
+ lineWidth: 0
168
+ }
169
+ }
170
+ }
171
+ };
172
+ }
173
+ export {
174
+ S as attach3dDragRotation,
175
+ F as chartUsesScatter3d,
176
+ T as enable3dDragRotation,
177
+ W as getScatter3dHighchartsOptions,
178
+ O as mergeScatter3dChartLoadHandlers,
179
+ R as mergeScatter3dOptions3dFrame
180
+ };