@sentropic/design-system-vue 0.36.38 → 0.36.40

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.
@@ -0,0 +1,86 @@
1
+ export type ContourChartTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
2
+ export type ContourChartDatum = {
3
+ x: number;
4
+ y: number;
5
+ /** Valeur scalaire de la cellule : pilote la bande de couleur. */
6
+ value: number;
7
+ };
8
+ export type ContourChartProps = {
9
+ data: ContourChartDatum[];
10
+ levels?: number;
11
+ label?: string;
12
+ width?: number;
13
+ height?: number;
14
+ size?: number;
15
+ class?: string;
16
+ };
17
+ export declare const ContourChart: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
18
+ data: {
19
+ type: () => ContourChartDatum[];
20
+ default: () => never[];
21
+ };
22
+ levels: {
23
+ type: NumberConstructor;
24
+ default: number;
25
+ };
26
+ label: {
27
+ type: StringConstructor;
28
+ default: undefined;
29
+ };
30
+ width: {
31
+ type: NumberConstructor;
32
+ default: number;
33
+ };
34
+ height: {
35
+ type: NumberConstructor;
36
+ default: number;
37
+ };
38
+ size: {
39
+ type: NumberConstructor;
40
+ default: undefined;
41
+ };
42
+ class: {
43
+ type: StringConstructor;
44
+ default: undefined;
45
+ };
46
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
47
+ [key: string]: any;
48
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
49
+ data: {
50
+ type: () => ContourChartDatum[];
51
+ default: () => never[];
52
+ };
53
+ levels: {
54
+ type: NumberConstructor;
55
+ default: number;
56
+ };
57
+ label: {
58
+ type: StringConstructor;
59
+ default: undefined;
60
+ };
61
+ width: {
62
+ type: NumberConstructor;
63
+ default: number;
64
+ };
65
+ height: {
66
+ type: NumberConstructor;
67
+ default: number;
68
+ };
69
+ size: {
70
+ type: NumberConstructor;
71
+ default: undefined;
72
+ };
73
+ class: {
74
+ type: StringConstructor;
75
+ default: undefined;
76
+ };
77
+ }>> & Readonly<{}>, {
78
+ size: number;
79
+ class: string;
80
+ data: ContourChartDatum[];
81
+ label: string;
82
+ height: number;
83
+ width: number;
84
+ levels: number;
85
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
86
+ //# sourceMappingURL=ContourChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContourChart.d.ts","sourceRoot":"","sources":["../src/ContourChart.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAeF,eAAO,MAAM,YAAY;;cAGE,MAAM,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAzB,MAAM,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA2NlD,CAAC"}
@@ -0,0 +1,167 @@
1
+ import { defineComponent, h, ref } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ import { chartDataList, formatTick, niceTicks, scaleLinear } from "./chartScale.js";
4
+ const MARGIN = { top: 16, right: 18, bottom: 36, left: 48 };
5
+ const TONES = [
6
+ "category1",
7
+ "category2",
8
+ "category3",
9
+ "category4",
10
+ "category5",
11
+ "category6",
12
+ "category7",
13
+ "category8",
14
+ ];
15
+ export const ContourChart = defineComponent({
16
+ name: "ContourChart",
17
+ props: {
18
+ data: { type: Array, default: () => [] },
19
+ levels: { type: Number, default: 6 },
20
+ label: { type: String, default: undefined },
21
+ width: { type: Number, default: 640 },
22
+ height: { type: Number, default: 320 },
23
+ size: { type: Number, default: undefined },
24
+ class: { type: String, default: undefined },
25
+ },
26
+ setup(props, { attrs }) {
27
+ const hoveredKey = ref(null);
28
+ function handlePointerMove(event) {
29
+ const target = event.target;
30
+ if (!(target instanceof Element)) {
31
+ hoveredKey.value = null;
32
+ return;
33
+ }
34
+ hoveredKey.value = target.getAttribute("data-chart-key");
35
+ }
36
+ return () => {
37
+ const data = props.data ?? [];
38
+ const label = props.label;
39
+ const width = props.width ?? 640;
40
+ const height = props.height ?? 320;
41
+ const levels = props.levels ?? 6;
42
+ // Points valides : coordonnées finies, valeur finie.
43
+ const validData = data.filter((d) => d && Number.isFinite(d.x) && Number.isFinite(d.y) && Number.isFinite(d.value));
44
+ // Nombre de paliers effectif : entier ≥ 1, plafonné à 8 (les tons disponibles).
45
+ const levelCount = Math.max(1, Math.min(TONES.length, Math.floor(Number.isFinite(levels) ? levels : 6)));
46
+ const vals = validData.map((d) => d.value);
47
+ const valueMin = vals.length ? Math.min(...vals) : 0;
48
+ const valueMax = vals.length ? Math.max(...vals) : 0;
49
+ const toneForBand = (band) => {
50
+ const toneIndex = Math.max(0, Math.min(TONES.length - 1, Math.floor((band / Math.max(levelCount - 1, 1)) * (TONES.length - 1))));
51
+ return TONES[toneIndex];
52
+ };
53
+ const bandOf = (value) => {
54
+ const ratio = valueMax > valueMin ? (value - valueMin) / (valueMax - valueMin) : 0;
55
+ const band = Math.max(0, Math.min(levelCount - 1, Math.floor(ratio * levelCount)));
56
+ return { band, tone: toneForBand(band) };
57
+ };
58
+ const xs = validData.map((d) => d.x);
59
+ const ys = validData.map((d) => d.y);
60
+ const xValues = Array.from(new Set(xs)).sort((a, b) => a - b);
61
+ const yValues = Array.from(new Set(ys)).sort((a, b) => a - b);
62
+ const xTicks = niceTicks(Math.min(...xs), Math.max(...xs));
63
+ const yTicks = niceTicks(Math.min(...ys), Math.max(...ys));
64
+ const plotW = Math.max(width - MARGIN.left - MARGIN.right, 1);
65
+ const plotH = Math.max(height - MARGIN.top - MARGIN.bottom, 1);
66
+ const xMin = xTicks[0];
67
+ const xMax = xTicks[xTicks.length - 1];
68
+ const yMin = yTicks[0];
69
+ const yMax = yTicks[yTicks.length - 1];
70
+ const dx = xValues.length > 1 ? xValues[1] - xValues[0] : 1;
71
+ const dy = yValues.length > 1 ? yValues[1] - yValues[0] : 1;
72
+ // Une bande rectangulaire par cellule de grille, peinte selon sa value.
73
+ const cells = validData.map((d, i) => {
74
+ const left = MARGIN.left + scaleLinear(d.x - dx / 2, xMin, xMax, 0, plotW);
75
+ const right = MARGIN.left + scaleLinear(d.x + dx / 2, xMin, xMax, 0, plotW);
76
+ const top = MARGIN.top + scaleLinear(d.y + dy / 2, yMin, yMax, plotH, 0);
77
+ const bottom = MARGIN.top + scaleLinear(d.y - dy / 2, yMin, yMax, plotH, 0);
78
+ const { tone } = bandOf(d.value);
79
+ return {
80
+ key: `${i}`,
81
+ datum: d,
82
+ x: Math.min(left, right),
83
+ y: Math.min(top, bottom),
84
+ width: Math.abs(right - left),
85
+ height: Math.abs(bottom - top),
86
+ cx: (left + right) / 2,
87
+ cy: (top + bottom) / 2,
88
+ tone,
89
+ };
90
+ });
91
+ const dataValueItems = validData.map((d) => `x ${d.x}, y ${d.y} · ${formatTick(d.value)}`);
92
+ const legendItems = Array.from({ length: levelCount }, (_, band) => ({ band, tone: toneForBand(band) }));
93
+ const hasLegend = validData.length > 0;
94
+ const hoveredCell = hoveredKey.value === null ? null : cells.find((c) => c.key === hoveredKey.value) ?? null;
95
+ const svgChildren = [];
96
+ cells.forEach((cell) => {
97
+ svgChildren.push(h("rect", {
98
+ key: cell.key,
99
+ class: classNames("st-contourChart__cell", `st-contourChart__cell--${cell.tone}`, hoveredKey.value !== null && hoveredKey.value !== cell.key ? "st-contourChart__cell--dim" : undefined),
100
+ x: cell.x,
101
+ y: cell.y,
102
+ width: cell.width,
103
+ height: cell.height,
104
+ "data-chart-key": cell.key,
105
+ }));
106
+ });
107
+ for (const t of yTicks) {
108
+ const y = MARGIN.top + scaleLinear(t, yMin, yMax, plotH, 0);
109
+ svgChildren.push(h("line", { key: `gy${t}`, class: "st-contourChart__grid", x1: MARGIN.left, x2: width - MARGIN.right, y1: y, y2: y }), h("text", { key: `ty${t}`, class: "st-contourChart__tick", x: MARGIN.left - 6, y, "text-anchor": "end", "dominant-baseline": "middle" }, formatTick(t)));
110
+ }
111
+ for (const t of xTicks) {
112
+ const x = MARGIN.left + scaleLinear(t, xMin, xMax, 0, plotW);
113
+ svgChildren.push(h("text", { key: `tx${t}`, class: "st-contourChart__tick", x, y: height - MARGIN.bottom + 16, "text-anchor": "middle" }, formatTick(t)));
114
+ }
115
+ svgChildren.push(h("line", { class: "st-contourChart__axis", x1: MARGIN.left, x2: MARGIN.left, y1: MARGIN.top, y2: height - MARGIN.bottom }), h("line", {
116
+ class: "st-contourChart__axis",
117
+ x1: MARGIN.left,
118
+ x2: width - MARGIN.right,
119
+ y1: height - MARGIN.bottom,
120
+ y2: height - MARGIN.bottom,
121
+ }));
122
+ const children = [
123
+ h("div", {
124
+ class: "st-contourChart__visual",
125
+ role: "img",
126
+ "aria-label": label,
127
+ onPointermove: handlePointerMove,
128
+ onPointerleave: () => (hoveredKey.value = null),
129
+ }, [
130
+ h("svg", {
131
+ viewBox: `0 0 ${width} ${height}`,
132
+ preserveAspectRatio: "xMidYMid meet",
133
+ width: "100%",
134
+ height: "100%",
135
+ focusable: "false",
136
+ "aria-hidden": "true",
137
+ }, svgChildren),
138
+ ]),
139
+ ];
140
+ if (hasLegend) {
141
+ children.push(h("div", { class: "st-contourChart__legend", "aria-hidden": "true" }, [
142
+ h("span", { class: "st-contourChart__legendText" }, "Low"),
143
+ h("span", { class: "st-contourChart__legendRamp" }, legendItems.map((item) => h("span", {
144
+ key: item.band,
145
+ class: classNames("st-contourChart__legendSwatch", `st-contourChart__legendSwatch--${item.tone}`),
146
+ }))),
147
+ h("span", { class: "st-contourChart__legendText" }, "High"),
148
+ ]));
149
+ }
150
+ const list = chartDataList(label ?? "contour", dataValueItems);
151
+ if (list)
152
+ children.push(list);
153
+ if (hoveredCell) {
154
+ children.push(h("div", {
155
+ class: "st-contourChart__tooltip",
156
+ role: "presentation",
157
+ style: { left: `${(hoveredCell.cx / width) * 100}%`, top: `${(hoveredCell.cy / height) * 100}%` },
158
+ }, [
159
+ h("span", { class: "st-contourChart__tooltipLabel" }, `x ${hoveredCell.datum.x} · y ${hoveredCell.datum.y}`),
160
+ h("span", { class: "st-contourChart__tooltipValue" }, `${formatTick(hoveredCell.datum.value)}`),
161
+ ]));
162
+ }
163
+ return h("div", { ...attrs, class: classNames("st-contourChart", props.class) }, children);
164
+ };
165
+ },
166
+ });
167
+ //# sourceMappingURL=ContourChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContourChart.js","sourceRoot":"","sources":["../src/ContourChart.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ export type EventFeedPanelSeverity = "info" | "success" | "warning" | "error" | (string & {});
2
+ export type EventFeedPanelEvent = {
3
+ /** Horodatage en millisecondes epoch (ou tout nombre croissant). */
4
+ at: number;
5
+ /** Catégorie libre de l'événement (« deploy », « alert »…). */
6
+ type: string;
7
+ /** Sévérité : pilote la couleur/pastille (sémantique feedback). */
8
+ severity: EventFeedPanelSeverity;
9
+ /** Message principal affiché. */
10
+ message: string;
11
+ };
12
+ export type EventFeedPanelProps = {
13
+ data: EventFeedPanelEvent[];
14
+ label?: string;
15
+ maxHeight?: number;
16
+ height?: number;
17
+ class?: string;
18
+ };
19
+ export declare const EventFeedPanel: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
20
+ data: {
21
+ type: () => EventFeedPanelEvent[];
22
+ default: () => never[];
23
+ };
24
+ label: {
25
+ type: StringConstructor;
26
+ default: undefined;
27
+ };
28
+ maxHeight: {
29
+ type: NumberConstructor;
30
+ default: undefined;
31
+ };
32
+ height: {
33
+ type: NumberConstructor;
34
+ default: undefined;
35
+ };
36
+ class: {
37
+ type: StringConstructor;
38
+ default: undefined;
39
+ };
40
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
41
+ [key: string]: any;
42
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
43
+ data: {
44
+ type: () => EventFeedPanelEvent[];
45
+ default: () => never[];
46
+ };
47
+ label: {
48
+ type: StringConstructor;
49
+ default: undefined;
50
+ };
51
+ maxHeight: {
52
+ type: NumberConstructor;
53
+ default: undefined;
54
+ };
55
+ height: {
56
+ type: NumberConstructor;
57
+ default: undefined;
58
+ };
59
+ class: {
60
+ type: StringConstructor;
61
+ default: undefined;
62
+ };
63
+ }>> & Readonly<{}>, {
64
+ class: string;
65
+ data: EventFeedPanelEvent[];
66
+ label: string;
67
+ height: number;
68
+ maxHeight: number;
69
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
70
+ //# sourceMappingURL=EventFeedPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventFeedPanel.d.ts","sourceRoot":"","sources":["../src/EventFeedPanel.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE9F,MAAM,MAAM,mBAAmB,GAAG;IAChC,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,QAAQ,EAAE,sBAAsB,CAAC;IACjC,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAeF,eAAO,MAAM,cAAc;;cAGA,MAAM,mBAAmB,EAAE;;;;;;;;;;;;;;;;;;;;;;;cAA3B,MAAM,mBAAmB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;4EAwEpD,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { defineComponent, h } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ const KNOWN_SEVERITIES = ["info", "success", "warning", "error"];
4
+ function severityTone(severity) {
5
+ return KNOWN_SEVERITIES.includes(severity) ? severity : "neutral";
6
+ }
7
+ function formatTime(at) {
8
+ if (!Number.isFinite(at))
9
+ return "";
10
+ const date = new Date(at);
11
+ if (Number.isNaN(date.getTime()))
12
+ return String(at);
13
+ return date.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
14
+ }
15
+ export const EventFeedPanel = defineComponent({
16
+ name: "EventFeedPanel",
17
+ props: {
18
+ data: { type: Array, default: () => [] },
19
+ label: { type: String, default: undefined },
20
+ maxHeight: { type: Number, default: undefined },
21
+ height: { type: Number, default: undefined },
22
+ class: { type: String, default: undefined },
23
+ },
24
+ setup(props, { attrs }) {
25
+ return () => {
26
+ const data = props.data ?? [];
27
+ const label = props.label;
28
+ const items = data
29
+ .filter((d) => d && Number.isFinite(d.at) && typeof d.message === "string")
30
+ .map((d, index) => ({
31
+ index,
32
+ datum: d,
33
+ tone: severityTone(String(d.severity)),
34
+ time: formatTime(d.at),
35
+ }))
36
+ .sort((a, b) => b.datum.at - a.datum.at);
37
+ const resolvedMaxHeight = props.maxHeight ?? props.height;
38
+ const scrollStyle = typeof resolvedMaxHeight === "number" && Number.isFinite(resolvedMaxHeight)
39
+ ? { maxHeight: `${resolvedMaxHeight}px` }
40
+ : undefined;
41
+ const children = [];
42
+ if (label) {
43
+ children.push(h("p", { class: "st-eventFeedPanel__label", id: "st-eventFeedPanel-label" }, label));
44
+ }
45
+ children.push(h("ul", {
46
+ class: "st-eventFeedPanel__list",
47
+ role: "feed",
48
+ "aria-label": label,
49
+ "aria-busy": "false",
50
+ style: scrollStyle,
51
+ }, items.map((item) => h("li", {
52
+ key: item.index,
53
+ class: classNames("st-eventFeedPanel__item", `st-eventFeedPanel__item--${item.tone}`),
54
+ role: "article",
55
+ "aria-label": `${item.datum.type} — ${item.datum.message}`,
56
+ }, [
57
+ h("span", {
58
+ class: classNames("st-eventFeedPanel__badge", `st-eventFeedPanel__badge--${item.tone}`),
59
+ "aria-hidden": "true",
60
+ }),
61
+ h("div", { class: "st-eventFeedPanel__body" }, [
62
+ h("div", { class: "st-eventFeedPanel__meta" }, [
63
+ h("span", { class: "st-eventFeedPanel__type" }, item.datum.type),
64
+ h("time", { class: "st-eventFeedPanel__time" }, item.time),
65
+ ]),
66
+ h("p", { class: "st-eventFeedPanel__message" }, item.datum.message),
67
+ ]),
68
+ ]))));
69
+ return h("div", { ...attrs, class: classNames("st-eventFeedPanel", props.class) }, children);
70
+ };
71
+ },
72
+ });
73
+ //# sourceMappingURL=EventFeedPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventFeedPanel.js","sourceRoot":"","sources":["../src/EventFeedPanel.ts"],"names":[],"mappings":"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"}
@@ -96,7 +96,7 @@ export declare const RadarChart: import("vue").DefineComponent<import("vue").Ext
96
96
  legend: boolean;
97
97
  height: number;
98
98
  width: number;
99
- maxValue: number;
100
99
  levels: number;
100
+ maxValue: number;
101
101
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
102
102
  //# sourceMappingURL=RadarChart.d.ts.map
@@ -0,0 +1,78 @@
1
+ export type VectorFieldChartTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
2
+ export type VectorFieldChartDatum = {
3
+ x: number;
4
+ y: number;
5
+ /** Magnitude (≥ 0) : pilote la longueur normalisée et la couleur. */
6
+ length: number;
7
+ /** Direction en DEGRÉS (0° = +X, sens trigonométrique). */
8
+ direction: number;
9
+ };
10
+ export type VectorFieldChartProps = {
11
+ data: VectorFieldChartDatum[];
12
+ label?: string;
13
+ width?: number;
14
+ height?: number;
15
+ size?: number;
16
+ class?: string;
17
+ };
18
+ export declare const VectorFieldChart: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
19
+ data: {
20
+ type: () => VectorFieldChartDatum[];
21
+ default: () => never[];
22
+ };
23
+ label: {
24
+ type: StringConstructor;
25
+ default: undefined;
26
+ };
27
+ width: {
28
+ type: NumberConstructor;
29
+ default: number;
30
+ };
31
+ height: {
32
+ type: NumberConstructor;
33
+ default: number;
34
+ };
35
+ size: {
36
+ type: NumberConstructor;
37
+ default: number;
38
+ };
39
+ class: {
40
+ type: StringConstructor;
41
+ default: undefined;
42
+ };
43
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
44
+ [key: string]: any;
45
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
46
+ data: {
47
+ type: () => VectorFieldChartDatum[];
48
+ default: () => never[];
49
+ };
50
+ label: {
51
+ type: StringConstructor;
52
+ default: undefined;
53
+ };
54
+ width: {
55
+ type: NumberConstructor;
56
+ default: number;
57
+ };
58
+ height: {
59
+ type: NumberConstructor;
60
+ default: number;
61
+ };
62
+ size: {
63
+ type: NumberConstructor;
64
+ default: number;
65
+ };
66
+ class: {
67
+ type: StringConstructor;
68
+ default: undefined;
69
+ };
70
+ }>> & Readonly<{}>, {
71
+ size: number;
72
+ class: string;
73
+ data: VectorFieldChartDatum[];
74
+ label: string;
75
+ height: number;
76
+ width: number;
77
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
78
+ //# sourceMappingURL=VectorFieldChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VectorFieldChart.d.ts","sourceRoot":"","sources":["../src/VectorFieldChart.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,qBAAqB,GAAG;IAClC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,qBAAqB,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAeF,eAAO,MAAM,gBAAgB;;cAGF,MAAM,qBAAqB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;cAA7B,MAAM,qBAAqB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA4MtD,CAAC"}