@vuetify/nightly 3.6.0-alpha.2-dev.2024-04-29 → 3.6.1-dev.2024-05-01
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.
- package/CHANGELOG.md +2 -100
- package/dist/_component-variables-labs.sass +0 -2
- package/dist/_component-variables.sass +2 -0
- package/dist/json/attributes.json +61 -9
- package/dist/json/importMap-labs.json +30 -46
- package/dist/json/importMap.json +116 -96
- package/dist/json/tags.json +19 -1
- package/dist/json/web-types.json +906 -494
- package/dist/vuetify-labs.css +2122 -2065
- package/dist/vuetify-labs.d.ts +5250 -5026
- package/dist/vuetify-labs.esm.js +3962 -3756
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +3962 -3756
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +930 -722
- package/dist/vuetify.d.ts +3309 -968
- package/dist/vuetify.esm.js +1832 -908
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +1832 -908
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +624 -564
- package/dist/vuetify.min.js.map +1 -1
- package/lib/{labs → components}/VConfirmEdit/VConfirmEdit.mjs +1 -1
- package/lib/components/VConfirmEdit/VConfirmEdit.mjs.map +1 -0
- package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs.map +1 -0
- package/lib/components/VConfirmEdit/index.mjs.map +1 -0
- package/lib/components/VDataIterator/index.d.mts +2 -0
- package/lib/components/VDataTable/VDataTable.css +35 -0
- package/lib/components/VDataTable/VDataTable.sass +34 -1
- package/lib/components/VDataTable/VDataTableFooter.css +5 -9
- package/lib/components/VDataTable/VDataTableFooter.sass +21 -21
- package/lib/components/VDataTable/VDataTableHeaders.mjs +66 -7
- package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTableRow.mjs +45 -10
- package/lib/components/VDataTable/VDataTableRow.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTableRows.mjs +8 -2
- package/lib/components/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/components/VDataTable/_variables.scss +9 -4
- package/lib/components/VDataTable/index.d.mts +263 -217
- package/lib/components/VDataTable/types.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.mjs +4 -4
- package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
- package/lib/{labs → components}/VEmptyState/VEmptyState.mjs +4 -4
- package/lib/components/VEmptyState/VEmptyState.mjs.map +1 -0
- package/lib/components/VEmptyState/index.mjs.map +1 -0
- package/lib/{labs → components}/VFab/VFab.mjs +1 -1
- package/lib/components/VFab/VFab.mjs.map +1 -0
- package/lib/components/VFab/index.mjs.map +1 -0
- package/lib/components/VNavigationDrawer/VNavigationDrawer.css +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +1 -1
- package/lib/components/VSnackbar/VSnackbar.mjs +12 -5
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSparkline/VBarline.mjs.map +1 -0
- package/lib/components/VSparkline/VSparkline.mjs +44 -320
- package/lib/components/VSparkline/VSparkline.mjs.map +1 -1
- package/lib/components/VSparkline/VTrendline.mjs.map +1 -0
- package/lib/components/VSparkline/index.mjs +1 -3
- package/lib/components/VSparkline/index.mjs.map +1 -1
- package/lib/components/VSparkline/util/line.mjs.map +1 -0
- package/lib/components/VSparkline/util/path.mjs.map +1 -0
- package/lib/components/VSpeedDial/VSpeedDial.mjs +68 -85
- package/lib/components/VSpeedDial/VSpeedDial.mjs.map +1 -1
- package/lib/components/VSpeedDial/VSpeedDial.sass +20 -72
- package/lib/components/VSpeedDial/index.mjs +1 -3
- package/lib/components/VSpeedDial/index.mjs.map +1 -1
- package/lib/components/index.d.mts +3289 -954
- package/lib/components/index.mjs +6 -2
- package/lib/components/index.mjs.map +1 -1
- package/lib/composables/directiveComponent.mjs +1 -1
- package/lib/composables/directiveComponent.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/entry-bundler.mjs.map +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.mts +44 -43
- package/lib/labs/VDateInput/VDateInput.mjs +2 -2
- package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
- package/lib/labs/VDateInput/index.d.mts +14 -14
- package/lib/labs/VPullToRefresh/VPullToRefresh.css +27 -0
- package/lib/labs/VPullToRefresh/VPullToRefresh.mjs +117 -0
- package/lib/labs/VPullToRefresh/VPullToRefresh.mjs.map +1 -0
- package/lib/labs/VPullToRefresh/VPullToRefresh.sass +23 -0
- package/lib/labs/VPullToRefresh/index.d.mts +189 -0
- package/lib/labs/VPullToRefresh/index.mjs +2 -0
- package/lib/labs/VPullToRefresh/index.mjs.map +1 -0
- package/lib/labs/components.d.mts +1505 -3641
- package/lib/labs/components.mjs +1 -5
- package/lib/labs/components.mjs.map +1 -1
- package/lib/locale/ko.mjs +8 -8
- package/lib/locale/ko.mjs.map +1 -1
- package/package.json +1 -1
- package/lib/components/VSparkline/helpers/core.mjs +0 -49
- package/lib/components/VSparkline/helpers/core.mjs.map +0 -1
- package/lib/components/VSparkline/helpers/math.mjs +0 -34
- package/lib/components/VSparkline/helpers/math.mjs.map +0 -1
- package/lib/components/VSparkline/helpers/path.mjs +0 -27
- package/lib/components/VSparkline/helpers/path.mjs.map +0 -1
- package/lib/components/VSpeedDial/_variables.scss +0 -5
- package/lib/labs/VConfirmEdit/VConfirmEdit.mjs.map +0 -1
- package/lib/labs/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs.map +0 -1
- package/lib/labs/VConfirmEdit/index.mjs.map +0 -1
- package/lib/labs/VEmptyState/VEmptyState.mjs.map +0 -1
- package/lib/labs/VEmptyState/index.mjs.map +0 -1
- package/lib/labs/VFab/VFab.mjs.map +0 -1
- package/lib/labs/VFab/index.mjs.map +0 -1
- package/lib/labs/VSparkline/VBarline.mjs.map +0 -1
- package/lib/labs/VSparkline/VSparkline.mjs +0 -49
- package/lib/labs/VSparkline/VSparkline.mjs.map +0 -1
- package/lib/labs/VSparkline/VTrendline.mjs.map +0 -1
- package/lib/labs/VSparkline/index.mjs +0 -2
- package/lib/labs/VSparkline/index.mjs.map +0 -1
- package/lib/labs/VSparkline/util/line.mjs.map +0 -1
- package/lib/labs/VSparkline/util/path.mjs.map +0 -1
- package/lib/labs/VSpeedDial/VSpeedDial.mjs +0 -77
- package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +0 -1
- package/lib/labs/VSpeedDial/VSpeedDial.sass +0 -27
- package/lib/labs/VSpeedDial/index.mjs +0 -2
- package/lib/labs/VSpeedDial/index.mjs.map +0 -1
- /package/lib/{labs → components}/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs +0 -0
- /package/lib/{labs → components}/VConfirmEdit/index.d.mts +0 -0
- /package/lib/{labs → components}/VConfirmEdit/index.mjs +0 -0
- /package/lib/{labs → components}/VEmptyState/VEmptyState.css +0 -0
- /package/lib/{labs → components}/VEmptyState/VEmptyState.sass +0 -0
- /package/lib/{labs → components}/VEmptyState/_variables.scss +0 -0
- /package/lib/{labs → components}/VEmptyState/index.d.mts +0 -0
- /package/lib/{labs → components}/VEmptyState/index.mjs +0 -0
- /package/lib/{labs → components}/VFab/VFab.css +0 -0
- /package/lib/{labs → components}/VFab/VFab.sass +0 -0
- /package/lib/{labs → components}/VFab/_mixins.scss +0 -0
- /package/lib/{labs → components}/VFab/_variables.scss +0 -0
- /package/lib/{labs → components}/VFab/index.d.mts +0 -0
- /package/lib/{labs → components}/VFab/index.mjs +0 -0
- /package/lib/{labs → components}/VSparkline/VBarline.mjs +0 -0
- /package/lib/{labs → components}/VSparkline/VTrendline.mjs +0 -0
- /package/lib/{labs → components}/VSparkline/index.d.mts +0 -0
- /package/lib/{labs → components}/VSparkline/util/line.mjs +0 -0
- /package/lib/{labs → components}/VSparkline/util/path.mjs +0 -0
- /package/lib/{labs → components}/VSpeedDial/VSpeedDial.css +0 -0
- /package/lib/{labs → components}/VSpeedDial/index.d.mts +0 -0
|
@@ -1,325 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
name: 'VSparkline',
|
|
10
|
-
inheritAttrs: false,
|
|
11
|
-
props: {
|
|
12
|
-
autoDraw: Boolean,
|
|
13
|
-
autoDrawDuration: {
|
|
14
|
-
type: Number,
|
|
15
|
-
default: 2000
|
|
16
|
-
},
|
|
17
|
-
autoDrawEasing: {
|
|
18
|
-
type: String,
|
|
19
|
-
default: 'ease'
|
|
20
|
-
},
|
|
21
|
-
autoLineWidth: {
|
|
22
|
-
type: Boolean,
|
|
23
|
-
default: false
|
|
24
|
-
},
|
|
25
|
-
color: {
|
|
26
|
-
type: String,
|
|
27
|
-
default: 'primary'
|
|
28
|
-
},
|
|
29
|
-
fill: {
|
|
30
|
-
type: Boolean,
|
|
31
|
-
default: false
|
|
32
|
-
},
|
|
33
|
-
gradient: {
|
|
34
|
-
type: Array,
|
|
35
|
-
default: () => []
|
|
36
|
-
},
|
|
37
|
-
gradientDirection: {
|
|
38
|
-
type: String,
|
|
39
|
-
validator: val => ['top', 'bottom', 'left', 'right'].includes(val),
|
|
40
|
-
default: 'top'
|
|
41
|
-
},
|
|
42
|
-
height: {
|
|
43
|
-
type: [String, Number],
|
|
44
|
-
default: 75
|
|
45
|
-
},
|
|
46
|
-
labels: {
|
|
47
|
-
type: Array,
|
|
48
|
-
default: () => []
|
|
49
|
-
},
|
|
50
|
-
labelSize: {
|
|
51
|
-
type: [Number, String],
|
|
52
|
-
default: 7
|
|
53
|
-
},
|
|
54
|
-
lineWidth: {
|
|
55
|
-
type: [String, Number],
|
|
56
|
-
default: 4
|
|
57
|
-
},
|
|
58
|
-
padding: {
|
|
59
|
-
type: [String, Number],
|
|
60
|
-
default: 8
|
|
61
|
-
},
|
|
62
|
-
showLabels: Boolean,
|
|
63
|
-
smooth: {
|
|
64
|
-
type: [Boolean, Number, String],
|
|
65
|
-
default: false
|
|
66
|
-
},
|
|
67
|
-
type: {
|
|
68
|
-
type: String,
|
|
69
|
-
default: 'trend',
|
|
70
|
-
validator: val => ['trend', 'bar'].includes(val)
|
|
71
|
-
},
|
|
72
|
-
value: {
|
|
73
|
-
type: Array,
|
|
74
|
-
default: () => []
|
|
75
|
-
},
|
|
76
|
-
width: {
|
|
77
|
-
type: [Number, String],
|
|
78
|
-
default: 300
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
data: () => ({
|
|
82
|
-
lastLength: 0
|
|
83
|
-
}),
|
|
84
|
-
computed: {
|
|
85
|
-
parsedPadding() {
|
|
86
|
-
return Number(this.padding);
|
|
87
|
-
},
|
|
88
|
-
parsedWidth() {
|
|
89
|
-
return Number(this.width);
|
|
90
|
-
},
|
|
91
|
-
parsedHeight() {
|
|
92
|
-
return parseInt(this.height, 10);
|
|
93
|
-
},
|
|
94
|
-
parsedLabelSize() {
|
|
95
|
-
return parseInt(this.labelSize, 10) || 7;
|
|
96
|
-
},
|
|
97
|
-
totalHeight() {
|
|
98
|
-
let height = this.parsedHeight;
|
|
99
|
-
if (this.hasLabels) height += parseInt(this.labelSize, 10) * 1.5;
|
|
100
|
-
return height;
|
|
101
|
-
},
|
|
102
|
-
totalWidth() {
|
|
103
|
-
let width = this.parsedWidth;
|
|
104
|
-
if (this.type === 'bar') width = Math.max(this.value.length * this._lineWidth, width);
|
|
105
|
-
return width;
|
|
106
|
-
},
|
|
107
|
-
totalValues() {
|
|
108
|
-
return this.value.length;
|
|
109
|
-
},
|
|
110
|
-
_lineWidth() {
|
|
111
|
-
if (this.autoLineWidth && this.type !== 'trend') {
|
|
112
|
-
const totalPadding = this.parsedPadding * (this.totalValues + 1);
|
|
113
|
-
return (this.parsedWidth - totalPadding) / this.totalValues;
|
|
114
|
-
} else {
|
|
115
|
-
return parseFloat(this.lineWidth) || 4;
|
|
116
|
-
}
|
|
117
|
-
},
|
|
118
|
-
boundary() {
|
|
119
|
-
if (this.type === 'bar') return {
|
|
120
|
-
minX: 0,
|
|
121
|
-
maxX: this.totalWidth,
|
|
122
|
-
minY: 0,
|
|
123
|
-
maxY: this.parsedHeight
|
|
124
|
-
};
|
|
125
|
-
const padding = this.parsedPadding;
|
|
126
|
-
return {
|
|
127
|
-
minX: padding,
|
|
128
|
-
maxX: this.totalWidth - padding,
|
|
129
|
-
minY: padding,
|
|
130
|
-
maxY: this.parsedHeight - padding
|
|
131
|
-
};
|
|
132
|
-
},
|
|
133
|
-
hasLabels() {
|
|
134
|
-
return Boolean(this.showLabels || this.labels.length > 0 || this.$scopedSlots.label);
|
|
135
|
-
},
|
|
136
|
-
parsedLabels() {
|
|
137
|
-
const labels = [];
|
|
138
|
-
const points = this._values;
|
|
139
|
-
const len = points.length;
|
|
140
|
-
for (let i = 0; labels.length < len; i++) {
|
|
141
|
-
const item = points[i];
|
|
142
|
-
let value = this.labels[i];
|
|
143
|
-
if (!value) {
|
|
144
|
-
value = typeof item === 'object' ? item.value : item;
|
|
145
|
-
}
|
|
146
|
-
labels.push({
|
|
147
|
-
x: item.x,
|
|
148
|
-
value: String(value)
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
return labels;
|
|
152
|
-
},
|
|
153
|
-
normalizedValues() {
|
|
154
|
-
return this.value.map(item => typeof item === 'number' ? item : item.value);
|
|
155
|
-
},
|
|
156
|
-
_values() {
|
|
157
|
-
return this.type === 'trend' ? genPoints(this.normalizedValues, this.boundary) : genBars(this.normalizedValues, this.boundary);
|
|
158
|
-
},
|
|
159
|
-
textY() {
|
|
160
|
-
let y = this.parsedHeight;
|
|
161
|
-
if (this.type === 'trend') y -= 4;
|
|
162
|
-
return y;
|
|
163
|
-
},
|
|
164
|
-
_radius() {
|
|
165
|
-
return this.smooth === true ? 8 : Number(this.smooth);
|
|
166
|
-
}
|
|
167
|
-
},
|
|
168
|
-
watch: {
|
|
169
|
-
value: {
|
|
170
|
-
immediate: true,
|
|
171
|
-
handler() {
|
|
172
|
-
this.$nextTick(() => {
|
|
173
|
-
if (!this.autoDraw || this.type === 'bar' || !this.$refs.path) return;
|
|
174
|
-
const path = this.$refs.path;
|
|
175
|
-
const length = path.getTotalLength();
|
|
176
|
-
if (!this.fill) {
|
|
177
|
-
path.style.transition = 'none';
|
|
178
|
-
path.style.strokeDasharray = length + ' ' + length;
|
|
179
|
-
path.style.strokeDashoffset = Math.abs(length - (this.lastLength || 0)).toString();
|
|
180
|
-
path.getBoundingClientRect();
|
|
181
|
-
path.style.transition = `stroke-dashoffset ${this.autoDrawDuration}ms ${this.autoDrawEasing}`;
|
|
182
|
-
path.style.strokeDashoffset = '0';
|
|
183
|
-
} else {
|
|
184
|
-
path.style.transformOrigin = 'bottom center';
|
|
185
|
-
path.style.transition = 'none';
|
|
186
|
-
path.style.transform = `scaleY(0)`;
|
|
187
|
-
path.getBoundingClientRect();
|
|
188
|
-
path.style.transition = `transform ${this.autoDrawDuration}ms ${this.autoDrawEasing}`;
|
|
189
|
-
path.style.transform = `scaleY(1)`;
|
|
190
|
-
}
|
|
191
|
-
this.lastLength = length;
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
},
|
|
196
|
-
methods: {
|
|
197
|
-
genGradient() {
|
|
198
|
-
const gradientDirection = this.gradientDirection;
|
|
199
|
-
const gradient = this.gradient.slice();
|
|
1
|
+
import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from "vue";
|
|
2
|
+
// Components
|
|
3
|
+
import { makeVBarlineProps, VBarline } from "./VBarline.mjs";
|
|
4
|
+
import { makeVTrendlineProps, VTrendline } from "./VTrendline.mjs"; // Composables
|
|
5
|
+
import { useTextColor } from "../../composables/color.mjs"; // Utilities
|
|
6
|
+
import { computed, toRef } from 'vue';
|
|
7
|
+
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
8
|
+
// Types
|
|
200
9
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
const stops = gradient.reverse().map((color, index) => this.$createElement('stop', {
|
|
206
|
-
attrs: {
|
|
207
|
-
offset: index / len,
|
|
208
|
-
'stop-color': color || 'currentColor'
|
|
209
|
-
}
|
|
210
|
-
}));
|
|
211
|
-
return this.$createElement('defs', [this.$createElement('linearGradient', {
|
|
212
|
-
attrs: {
|
|
213
|
-
id: this._uid,
|
|
214
|
-
gradientUnits: 'userSpaceOnUse',
|
|
215
|
-
x1: gradientDirection === 'left' ? '100%' : '0',
|
|
216
|
-
y1: gradientDirection === 'top' ? '100%' : '0',
|
|
217
|
-
x2: gradientDirection === 'right' ? '100%' : '0',
|
|
218
|
-
y2: gradientDirection === 'bottom' ? '100%' : '0'
|
|
219
|
-
}
|
|
220
|
-
}, stops)]);
|
|
221
|
-
},
|
|
222
|
-
genG(children) {
|
|
223
|
-
return this.$createElement('g', {
|
|
224
|
-
style: {
|
|
225
|
-
fontSize: '8',
|
|
226
|
-
textAnchor: 'middle',
|
|
227
|
-
dominantBaseline: 'mathematical',
|
|
228
|
-
fill: 'currentColor'
|
|
229
|
-
} // TODO: TS 3.5 is too eager with the array type here
|
|
230
|
-
}, children);
|
|
231
|
-
},
|
|
232
|
-
genPath() {
|
|
233
|
-
const points = genPoints(this.normalizedValues, this.boundary);
|
|
234
|
-
return this.$createElement('path', {
|
|
235
|
-
attrs: {
|
|
236
|
-
d: genPath(points, this._radius, this.fill, this.parsedHeight),
|
|
237
|
-
fill: this.fill ? `url(#${this._uid})` : 'none',
|
|
238
|
-
stroke: this.fill ? 'none' : `url(#${this._uid})`
|
|
239
|
-
},
|
|
240
|
-
ref: 'path'
|
|
241
|
-
});
|
|
242
|
-
},
|
|
243
|
-
genLabels(offsetX) {
|
|
244
|
-
const children = this.parsedLabels.map((item, i) => this.$createElement('text', {
|
|
245
|
-
attrs: {
|
|
246
|
-
x: item.x + offsetX + this._lineWidth / 2,
|
|
247
|
-
y: this.textY + this.parsedLabelSize * 0.75,
|
|
248
|
-
'font-size': Number(this.labelSize) || 7
|
|
249
|
-
}
|
|
250
|
-
}, [this.genLabel(item, i)]));
|
|
251
|
-
return this.genG(children);
|
|
252
|
-
},
|
|
253
|
-
genLabel(item, index) {
|
|
254
|
-
return this.$scopedSlots.label ? this.$scopedSlots.label({
|
|
255
|
-
index,
|
|
256
|
-
value: item.value
|
|
257
|
-
}) : item.value;
|
|
258
|
-
},
|
|
259
|
-
genBars() {
|
|
260
|
-
if (!this.value || this.totalValues < 2) return undefined;
|
|
261
|
-
const bars = genBars(this.normalizedValues, this.boundary);
|
|
262
|
-
const offsetX = (Math.abs(bars[0].x - bars[1].x) - this._lineWidth) / 2;
|
|
263
|
-
return this.$createElement('svg', {
|
|
264
|
-
attrs: {
|
|
265
|
-
display: 'block',
|
|
266
|
-
viewBox: `0 0 ${this.totalWidth} ${this.totalHeight}`
|
|
267
|
-
}
|
|
268
|
-
}, [this.genGradient(), this.genClipPath(bars, offsetX, this._lineWidth, 'sparkline-bar-' + this._uid), this.hasLabels ? this.genLabels(offsetX) : undefined, this.$createElement('g', {
|
|
269
|
-
attrs: {
|
|
270
|
-
'clip-path': `url(#sparkline-bar-${this._uid}-clip)`,
|
|
271
|
-
fill: `url(#${this._uid})`
|
|
272
|
-
}
|
|
273
|
-
}, [this.$createElement('rect', {
|
|
274
|
-
attrs: {
|
|
275
|
-
x: 0,
|
|
276
|
-
y: 0,
|
|
277
|
-
width: this.totalWidth,
|
|
278
|
-
height: this.height
|
|
279
|
-
}
|
|
280
|
-
})])]);
|
|
281
|
-
},
|
|
282
|
-
genClipPath(bars, offsetX, lineWidth, id) {
|
|
283
|
-
const rounding = typeof this.smooth === 'number' ? this.smooth : this.smooth ? 2 : 0;
|
|
284
|
-
return this.$createElement('clipPath', {
|
|
285
|
-
attrs: {
|
|
286
|
-
id: `${id}-clip`
|
|
287
|
-
}
|
|
288
|
-
}, bars.map(item => {
|
|
289
|
-
return this.$createElement('rect', {
|
|
290
|
-
attrs: {
|
|
291
|
-
x: item.x + offsetX,
|
|
292
|
-
y: item.y,
|
|
293
|
-
width: lineWidth,
|
|
294
|
-
height: item.height,
|
|
295
|
-
rx: rounding,
|
|
296
|
-
ry: rounding
|
|
297
|
-
}
|
|
298
|
-
}, [this.autoDraw ? this.$createElement('animate', {
|
|
299
|
-
attrs: {
|
|
300
|
-
attributeName: 'height',
|
|
301
|
-
from: 0,
|
|
302
|
-
to: item.height,
|
|
303
|
-
dur: `${this.autoDrawDuration}ms`,
|
|
304
|
-
fill: 'freeze'
|
|
305
|
-
}
|
|
306
|
-
}) : undefined]);
|
|
307
|
-
}));
|
|
308
|
-
},
|
|
309
|
-
genTrend() {
|
|
310
|
-
return this.$createElement('svg', this.setTextColor(this.color, {
|
|
311
|
-
attrs: {
|
|
312
|
-
...this.$attrs,
|
|
313
|
-
display: 'block',
|
|
314
|
-
'stroke-width': this._lineWidth || 1,
|
|
315
|
-
viewBox: `0 0 ${this.width} ${this.totalHeight}`
|
|
316
|
-
}
|
|
317
|
-
}), [this.genGradient(), this.hasLabels && this.genLabels(-(this._lineWidth / 2)), this.genPath()]);
|
|
318
|
-
}
|
|
10
|
+
export const makeVSparklineProps = propsFactory({
|
|
11
|
+
type: {
|
|
12
|
+
type: String,
|
|
13
|
+
default: 'trend'
|
|
319
14
|
},
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
15
|
+
...makeVBarlineProps(),
|
|
16
|
+
...makeVTrendlineProps()
|
|
17
|
+
}, 'VSparkline');
|
|
18
|
+
export const VSparkline = genericComponent()({
|
|
19
|
+
name: 'VSparkline',
|
|
20
|
+
props: makeVSparklineProps(),
|
|
21
|
+
setup(props, _ref) {
|
|
22
|
+
let {
|
|
23
|
+
slots
|
|
24
|
+
} = _ref;
|
|
25
|
+
const {
|
|
26
|
+
textColorClasses,
|
|
27
|
+
textColorStyles
|
|
28
|
+
} = useTextColor(toRef(props, 'color'));
|
|
29
|
+
const hasLabels = computed(() => {
|
|
30
|
+
return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);
|
|
31
|
+
});
|
|
32
|
+
const totalHeight = computed(() => {
|
|
33
|
+
let height = parseInt(props.height, 10);
|
|
34
|
+
if (hasLabels.value) height += parseInt(props.labelSize, 10) * 1.5;
|
|
35
|
+
return height;
|
|
36
|
+
});
|
|
37
|
+
useRender(() => {
|
|
38
|
+
const Tag = props.type === 'trend' ? VTrendline : VBarline;
|
|
39
|
+
const lineProps = props.type === 'trend' ? VTrendline.filterProps(props) : VBarline.filterProps(props);
|
|
40
|
+
return _createVNode(Tag, _mergeProps({
|
|
41
|
+
"key": props.type,
|
|
42
|
+
"class": textColorClasses.value,
|
|
43
|
+
"style": textColorStyles.value,
|
|
44
|
+
"viewBox": `0 0 ${props.width} ${parseInt(totalHeight.value, 10)}`
|
|
45
|
+
}, lineProps), slots);
|
|
46
|
+
});
|
|
323
47
|
}
|
|
324
48
|
});
|
|
325
49
|
//# sourceMappingURL=VSparkline.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VSparkline.mjs","names":["Colorable","mixins","genPoints","genBars","genPath","extend","name","inheritAttrs","props","autoDraw","Boolean","autoDrawDuration","type","Number","default","autoDrawEasing","String","autoLineWidth","color","fill","gradient","Array","gradientDirection","validator","val","includes","height","labels","labelSize","lineWidth","padding","showLabels","smooth","value","width","data","lastLength","computed","parsedPadding","parsedWidth","parsedHeight","parseInt","parsedLabelSize","totalHeight","hasLabels","totalWidth","Math","max","length","_lineWidth","totalValues","totalPadding","parseFloat","boundary","minX","maxX","minY","maxY","$scopedSlots","label","parsedLabels","points","_values","len","i","item","push","x","normalizedValues","map","textY","y","_radius","watch","immediate","handler","$nextTick","$refs","path","getTotalLength","style","transition","strokeDasharray","strokeDashoffset","abs","toString","getBoundingClientRect","transformOrigin","transform","methods","genGradient","slice","stops","reverse","index","$createElement","attrs","offset","id","_uid","gradientUnits","x1","y1","x2","y2","genG","children","fontSize","textAnchor","dominantBaseline","d","stroke","ref","genLabels","offsetX","genLabel","undefined","bars","display","viewBox","genClipPath","rounding","rx","ry","attributeName","from","to","dur","genTrend","setTextColor","$attrs","render","h"],"sources":["../../../src/components/VSparkline/VSparkline.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { genPoints, genBars } from './helpers/core'\nimport { genPath } from './helpers/path'\n\n// Types\nimport Vue, { VNode } from 'vue'\nimport { Prop, PropValidator } from 'vue/types/options'\n\nexport type SparklineItem = number | { value: number }\n\nexport type SparklineText = {\n x: number\n value: string\n}\n\nexport interface Boundary {\n minX: number\n minY: number\n maxX: number\n maxY: number\n}\n\nexport interface Point {\n x: number\n y: number\n value: number\n}\n\nexport interface Bar {\n x: number\n y: number\n height: number\n value: number\n}\n\ninterface options extends Vue {\n $refs: {\n path: SVGPathElement\n }\n}\n\nexport default mixins<options &\n/* eslint-disable indent */\n ExtractVue<[\n typeof Colorable\n ]>\n/* eslint-enable indent */\n>(\n Colorable\n).extend({\n name: 'VSparkline',\n\n inheritAttrs: false,\n\n props: {\n autoDraw: Boolean,\n autoDrawDuration: {\n type: Number,\n default: 2000,\n },\n autoDrawEasing: {\n type: String,\n default: 'ease',\n },\n autoLineWidth: {\n type: Boolean,\n default: false,\n },\n color: {\n type: String,\n default: 'primary',\n },\n fill: {\n type: Boolean,\n default: false,\n },\n gradient: {\n type: Array,\n default: () => ([]),\n } as PropValidator<string[]>,\n gradientDirection: {\n type: String as Prop<'top' | 'bottom' | 'left' | 'right'>,\n validator: (val: string) => ['top', 'bottom', 'left', 'right'].includes(val),\n default: 'top',\n },\n height: {\n type: [String, Number],\n default: 75,\n },\n labels: {\n type: Array,\n default: () => ([]),\n } as PropValidator<SparklineItem[]>,\n labelSize: {\n type: [Number, String],\n default: 7,\n },\n lineWidth: {\n type: [String, Number],\n default: 4,\n },\n padding: {\n type: [String, Number],\n default: 8,\n },\n showLabels: Boolean,\n smooth: {\n type: [Boolean, Number, String],\n default: false,\n },\n type: {\n type: String as Prop<'trend' | 'bar'>,\n default: 'trend',\n validator: (val: string) => ['trend', 'bar'].includes(val),\n },\n value: {\n type: Array,\n default: () => ([]),\n } as PropValidator<SparklineItem[]>,\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n data: () => ({\n lastLength: 0,\n }),\n\n computed: {\n parsedPadding (): number {\n return Number(this.padding)\n },\n parsedWidth (): number {\n return Number(this.width)\n },\n parsedHeight (): number {\n return parseInt(this.height, 10)\n },\n parsedLabelSize (): number {\n return parseInt(this.labelSize, 10) || 7\n },\n totalHeight (): number {\n let height = this.parsedHeight\n\n if (this.hasLabels) height += parseInt(this.labelSize, 10) * 1.5\n\n return height\n },\n totalWidth (): number {\n let width = this.parsedWidth\n if (this.type === 'bar') width = Math.max(this.value.length * this._lineWidth, width)\n\n return width\n },\n totalValues (): number {\n return this.value.length\n },\n _lineWidth (): number {\n if (this.autoLineWidth && this.type !== 'trend') {\n const totalPadding = this.parsedPadding * (this.totalValues + 1)\n return (this.parsedWidth - totalPadding) / this.totalValues\n } else {\n return parseFloat(this.lineWidth) || 4\n }\n },\n boundary (): Boundary {\n if (this.type === 'bar') return { minX: 0, maxX: this.totalWidth, minY: 0, maxY: this.parsedHeight }\n\n const padding = this.parsedPadding\n\n return {\n minX: padding,\n maxX: this.totalWidth - padding,\n minY: padding,\n maxY: this.parsedHeight - padding,\n }\n },\n hasLabels (): boolean {\n return Boolean(\n this.showLabels ||\n this.labels.length > 0 ||\n this.$scopedSlots.label\n )\n },\n parsedLabels (): SparklineText[] {\n const labels = []\n const points = this._values\n const len = points.length\n\n for (let i = 0; labels.length < len; i++) {\n const item = points[i]\n let value = this.labels[i]\n\n if (!value) {\n value = typeof item === 'object'\n ? item.value\n : item\n }\n\n labels.push({\n x: item.x,\n value: String(value),\n })\n }\n\n return labels\n },\n normalizedValues (): number[] {\n return this.value.map(item => (typeof item === 'number' ? item : item.value))\n },\n _values (): Point[] | Bar[] {\n return this.type === 'trend' ? genPoints(this.normalizedValues, this.boundary) : genBars(this.normalizedValues, this.boundary)\n },\n textY (): number {\n let y = this.parsedHeight\n if (this.type === 'trend') y -= 4\n return y\n },\n _radius (): number {\n return this.smooth === true ? 8 : Number(this.smooth)\n },\n },\n\n watch: {\n value: {\n immediate: true,\n handler () {\n this.$nextTick(() => {\n if (\n !this.autoDraw ||\n this.type === 'bar' ||\n !this.$refs.path\n ) return\n\n const path = this.$refs.path\n const length = path.getTotalLength()\n\n if (!this.fill) {\n path.style.transition = 'none'\n path.style.strokeDasharray = length + ' ' + length\n path.style.strokeDashoffset = Math.abs(length - (this.lastLength || 0)).toString()\n path.getBoundingClientRect()\n path.style.transition = `stroke-dashoffset ${this.autoDrawDuration}ms ${this.autoDrawEasing}`\n path.style.strokeDashoffset = '0'\n } else {\n path.style.transformOrigin = 'bottom center'\n path.style.transition = 'none'\n path.style.transform = `scaleY(0)`\n path.getBoundingClientRect()\n path.style.transition = `transform ${this.autoDrawDuration}ms ${this.autoDrawEasing}`\n path.style.transform = `scaleY(1)`\n }\n this.lastLength = length\n })\n },\n },\n },\n\n methods: {\n genGradient () {\n const gradientDirection = this.gradientDirection\n const gradient = this.gradient.slice()\n\n // Pushes empty string to force\n // a fallback to currentColor\n if (!gradient.length) gradient.push('')\n\n const len = Math.max(gradient.length - 1, 1)\n const stops = gradient.reverse().map((color, index) =>\n this.$createElement('stop', {\n attrs: {\n offset: index / len,\n 'stop-color': color || 'currentColor',\n },\n })\n )\n\n return this.$createElement('defs', [\n this.$createElement('linearGradient', {\n attrs: {\n id: this._uid,\n gradientUnits: 'userSpaceOnUse',\n x1: gradientDirection === 'left' ? '100%' : '0',\n y1: gradientDirection === 'top' ? '100%' : '0',\n x2: gradientDirection === 'right' ? '100%' : '0',\n y2: gradientDirection === 'bottom' ? '100%' : '0',\n },\n }, stops),\n ])\n },\n genG (children: VNode[]) {\n return this.$createElement('g', {\n style: {\n fontSize: '8',\n textAnchor: 'middle',\n dominantBaseline: 'mathematical',\n fill: 'currentColor',\n } as object, // TODO: TS 3.5 is too eager with the array type here\n }, children)\n },\n genPath () {\n const points = genPoints(this.normalizedValues, this.boundary)\n\n return this.$createElement('path', {\n attrs: {\n d: genPath(points, this._radius, this.fill, this.parsedHeight),\n fill: this.fill ? `url(#${this._uid})` : 'none',\n stroke: this.fill ? 'none' : `url(#${this._uid})`,\n },\n ref: 'path',\n })\n },\n genLabels (offsetX: number) {\n const children = this.parsedLabels.map((item, i) => (\n this.$createElement('text', {\n attrs: {\n x: item.x + offsetX + this._lineWidth / 2,\n y: this.textY + (this.parsedLabelSize * 0.75),\n 'font-size': Number(this.labelSize) || 7,\n },\n }, [this.genLabel(item, i)])\n ))\n\n return this.genG(children)\n },\n genLabel (item: SparklineText, index: number) {\n return this.$scopedSlots.label\n ? this.$scopedSlots.label({ index, value: item.value })\n : item.value\n },\n genBars () {\n if (!this.value || this.totalValues < 2) return undefined as never\n\n const bars = genBars(this.normalizedValues, this.boundary)\n const offsetX = (Math.abs(bars[0].x - bars[1].x) - this._lineWidth) / 2\n\n return this.$createElement('svg', {\n attrs: {\n display: 'block',\n viewBox: `0 0 ${this.totalWidth} ${this.totalHeight}`,\n },\n }, [\n this.genGradient(),\n this.genClipPath(bars, offsetX, this._lineWidth, 'sparkline-bar-' + this._uid),\n this.hasLabels ? this.genLabels(offsetX) : undefined as never,\n this.$createElement('g', {\n attrs: {\n 'clip-path': `url(#sparkline-bar-${this._uid}-clip)`,\n fill: `url(#${this._uid})`,\n },\n }, [\n this.$createElement('rect', {\n attrs: {\n x: 0,\n y: 0,\n width: this.totalWidth,\n height: this.height,\n },\n }),\n ]),\n ])\n },\n genClipPath (bars: Bar[], offsetX: number, lineWidth: number, id: string) {\n const rounding = typeof this.smooth === 'number'\n ? this.smooth\n : this.smooth ? 2 : 0\n\n return this.$createElement('clipPath', {\n attrs: {\n id: `${id}-clip`,\n },\n }, bars.map(item => {\n return this.$createElement('rect', {\n attrs: {\n x: item.x + offsetX,\n y: item.y,\n width: lineWidth,\n height: item.height,\n rx: rounding,\n ry: rounding,\n },\n }, [\n this.autoDraw ? this.$createElement('animate', {\n attrs: {\n attributeName: 'height',\n from: 0,\n to: item.height,\n dur: `${this.autoDrawDuration}ms`,\n fill: 'freeze',\n },\n }) : undefined as never,\n ])\n }))\n },\n genTrend () {\n return this.$createElement('svg', this.setTextColor(this.color, {\n attrs: {\n ...this.$attrs,\n display: 'block',\n 'stroke-width': this._lineWidth || 1,\n viewBox: `0 0 ${this.width} ${this.totalHeight}`,\n },\n }), [\n this.genGradient(),\n this.hasLabels && this.genLabels(-(this._lineWidth / 2)),\n this.genPath(),\n ])\n },\n },\n\n render (h): VNode {\n if (this.totalValues < 2) return undefined as never\n\n return this.type === 'trend' ? this.genTrend() : this.genBars()\n },\n})\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VSparkline.mjs","names":["makeVBarlineProps","VBarline","makeVTrendlineProps","VTrendline","useTextColor","computed","toRef","genericComponent","propsFactory","useRender","makeVSparklineProps","type","String","default","VSparkline","name","props","setup","_ref","slots","textColorClasses","textColorStyles","hasLabels","Boolean","showLabels","labels","length","label","totalHeight","height","parseInt","value","labelSize","Tag","lineProps","filterProps","_createVNode","_mergeProps","width"],"sources":["../../../src/components/VSparkline/VSparkline.tsx"],"sourcesContent":["// Components\nimport { makeVBarlineProps, VBarline } from './VBarline'\nimport { makeVTrendlineProps, VTrendline } from './VTrendline'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\n\nexport const makeVSparklineProps = propsFactory({\n type: {\n type: String as PropType<'trend' | 'bar'>,\n default: 'trend',\n },\n\n ...makeVBarlineProps(),\n ...makeVTrendlineProps(),\n}, 'VSparkline')\n\nexport type VSparklineSlots = {\n default: void\n label: { index: number, value: string }\n}\n\nexport const VSparkline = genericComponent<VSparklineSlots>()({\n name: 'VSparkline',\n\n props: makeVSparklineProps(),\n\n setup (props, { slots }) {\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n const hasLabels = computed(() => {\n return Boolean(\n props.showLabels ||\n props.labels.length > 0 ||\n !!slots?.label\n )\n })\n const totalHeight = computed(() => {\n let height = parseInt(props.height, 10)\n\n if (hasLabels.value) height += parseInt(props.labelSize, 10) * 1.5\n\n return height\n })\n\n useRender(() => {\n const Tag = props.type === 'trend' ? VTrendline : VBarline\n const lineProps = props.type === 'trend' ? VTrendline.filterProps(props) : VBarline.filterProps(props)\n\n return (\n <Tag\n key={ props.type }\n class={ textColorClasses.value }\n style={ textColorStyles.value }\n viewBox={ `0 0 ${props.width} ${parseInt(totalHeight.value, 10)}` }\n { ...lineProps }\n v-slots={ slots }\n />\n )\n })\n },\n})\n\nexport type VSparkline = InstanceType<typeof VSparkline>\n"],"mappings":";AAAA;AAAA,SACSA,iBAAiB,EAAEC,QAAQ;AAAA,SAC3BC,mBAAmB,EAAEC,UAAU,4BAExC;AAAA,SACSC,YAAY,uCAErB;AACA,SAASC,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAGA;;AAEA,OAAO,MAAMC,mBAAmB,GAAGF,YAAY,CAAC;EAC9CG,IAAI,EAAE;IACJA,IAAI,EAAEC,MAAmC;IACzCC,OAAO,EAAE;EACX,CAAC;EAED,GAAGb,iBAAiB,CAAC,CAAC;EACtB,GAAGE,mBAAmB,CAAC;AACzB,CAAC,EAAE,YAAY,CAAC;AAOhB,OAAO,MAAMY,UAAU,GAAGP,gBAAgB,CAAkB,CAAC,CAAC;EAC5DQ,IAAI,EAAE,YAAY;EAElBC,KAAK,EAAEN,mBAAmB,CAAC,CAAC;EAE5BO,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE,gBAAgB;MAAEC;IAAgB,CAAC,GAAGjB,YAAY,CAACE,KAAK,CAACU,KAAK,EAAE,OAAO,CAAC,CAAC;IACjF,MAAMM,SAAS,GAAGjB,QAAQ,CAAC,MAAM;MAC/B,OAAOkB,OAAO,CACZP,KAAK,CAACQ,UAAU,IAChBR,KAAK,CAACS,MAAM,CAACC,MAAM,GAAG,CAAC,IACvB,CAAC,CAACP,KAAK,EAAEQ,KACX,CAAC;IACH,CAAC,CAAC;IACF,MAAMC,WAAW,GAAGvB,QAAQ,CAAC,MAAM;MACjC,IAAIwB,MAAM,GAAGC,QAAQ,CAACd,KAAK,CAACa,MAAM,EAAE,EAAE,CAAC;MAEvC,IAAIP,SAAS,CAACS,KAAK,EAAEF,MAAM,IAAIC,QAAQ,CAACd,KAAK,CAACgB,SAAS,EAAE,EAAE,CAAC,GAAG,GAAG;MAElE,OAAOH,MAAM;IACf,CAAC,CAAC;IAEFpB,SAAS,CAAC,MAAM;MACd,MAAMwB,GAAG,GAAGjB,KAAK,CAACL,IAAI,KAAK,OAAO,GAAGR,UAAU,GAAGF,QAAQ;MAC1D,MAAMiC,SAAS,GAAGlB,KAAK,CAACL,IAAI,KAAK,OAAO,GAAGR,UAAU,CAACgC,WAAW,CAACnB,KAAK,CAAC,GAAGf,QAAQ,CAACkC,WAAW,CAACnB,KAAK,CAAC;MAEtG,OAAAoB,YAAA,CAAAH,GAAA,EAAAI,WAAA;QAAA,OAEUrB,KAAK,CAACL,IAAI;QAAA,SACRS,gBAAgB,CAACW,KAAK;QAAA,SACtBV,eAAe,CAACU,KAAK;QAAA,WAClB,OAAMf,KAAK,CAACsB,KAAM,IAAGR,QAAQ,CAACF,WAAW,CAACG,KAAK,EAAE,EAAE,CAAE;MAAC,GAC5DG,SAAS,GACJf,KAAK;IAGrB,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VTrendline.mjs","names":["computed","nextTick","ref","watch","makeLineProps","genPath","_genPath","genericComponent","getPropertyFromItem","getUid","propsFactory","useRender","makeVTrendlineProps","fill","Boolean","VTrendline","name","props","setup","_ref","slots","uid","id","autoDrawDuration","Number","lastLength","path","genPoints","values","boundary","minX","maxX","minY","maxY","totalValues","length","maxValue","max","Math","minValue","min","gridX","gridY","map","value","index","x","y","hasLabels","showLabels","labels","label","lineWidth","parseFloat","totalWidth","width","padding","parseInt","height","items","modelValue","item","itemValue","parsedLabels","points","len","i","push","String","autoDraw","pathRef","getTotalLength","style","strokeDasharray","strokeDashoffset","getBoundingClientRect","transition","autoDrawEasing","transformOrigin","transform","immediate","smooth","gradientData","gradient","slice","reverse","_createVNode","gradientDirection","color","textAnchor","dominantBaseline","labelSize"],"sources":["../../../src/components/VSparkline/VTrendline.tsx"],"sourcesContent":["// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { makeLineProps } from './util/line'\nimport { genPath as _genPath } from './util/path'\nimport { genericComponent, getPropertyFromItem, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VTrendlineSlots = {\n default: void\n label: { index: number, value: string }\n}\n\nexport type SparklineItem = number | { value: number }\n\nexport type SparklineText = {\n x: number\n value: string\n}\n\nexport interface Boundary {\n minX: number\n minY: number\n maxX: number\n maxY: number\n}\n\nexport interface Point {\n x: number\n y: number\n value: number\n}\n\nexport const makeVTrendlineProps = propsFactory({\n fill: Boolean,\n\n ...makeLineProps(),\n}, 'VTrendline')\n\nexport const VTrendline = genericComponent<VTrendlineSlots>()({\n name: 'VTrendline',\n\n props: makeVTrendlineProps(),\n\n setup (props, { slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `trendline-${uid}`)\n const autoDrawDuration = computed(() => Number(props.autoDrawDuration) || (props.fill ? 500 : 2000))\n\n const lastLength = ref(0)\n const path = ref<SVGPathElement | null>(null)\n\n function genPoints (\n values: number[],\n boundary: Boundary\n ): Point[] {\n const { minX, maxX, minY, maxY } = boundary\n const totalValues = values.length\n const maxValue = props.max != null ? Number(props.max) : Math.max(...values)\n const minValue = props.min != null ? Number(props.min) : Math.min(...values)\n\n const gridX = (maxX - minX) / (totalValues - 1)\n const gridY = (maxY - minY) / ((maxValue - minValue) || 1)\n\n return values.map((value, index) => {\n return {\n x: minX + index * gridX,\n y: maxY - (value - minValue) * gridY,\n value,\n }\n })\n }\n const hasLabels = computed(() => {\n return Boolean(\n props.showLabels ||\n props.labels.length > 0 ||\n !!slots?.label\n )\n })\n const lineWidth = computed(() => {\n return parseFloat(props.lineWidth) || 4\n })\n const totalWidth = computed(() => Number(props.width))\n\n const boundary = computed<Boundary>(() => {\n const padding = Number(props.padding)\n\n return {\n minX: padding,\n maxX: totalWidth.value - padding,\n minY: padding,\n maxY: parseInt(props.height, 10) - padding,\n }\n })\n const items = computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)))\n const parsedLabels = computed(() => {\n const labels = []\n const points = genPoints(items.value, boundary.value)\n const len = points.length\n\n for (let i = 0; labels.length < len; i++) {\n const item = points[i]\n let value = props.labels[i]\n\n if (!value) {\n value = typeof item === 'object'\n ? item.value\n : item\n }\n\n labels.push({\n x: item.x,\n value: String(value),\n })\n }\n\n return labels\n })\n\n watch(() => props.modelValue, async () => {\n await nextTick()\n\n if (!props.autoDraw || !path.value) return\n\n const pathRef = path.value\n const length = pathRef.getTotalLength()\n\n if (!props.fill) {\n // Initial setup to \"hide\" the line by using the stroke dash array\n pathRef.style.strokeDasharray = `${length}`\n pathRef.style.strokeDashoffset = `${length}`\n\n // Force reflow to ensure the transition starts from this state\n pathRef.getBoundingClientRect()\n\n // Animate the stroke dash offset to \"draw\" the line\n pathRef.style.transition = `stroke-dashoffset ${autoDrawDuration.value}ms ${props.autoDrawEasing}`\n pathRef.style.strokeDashoffset = '0'\n } else {\n // Your existing logic for filled paths remains the same\n pathRef.style.transformOrigin = 'bottom center'\n pathRef.style.transition = 'none'\n pathRef.style.transform = `scaleY(0)`\n pathRef.getBoundingClientRect()\n pathRef.style.transition = `transform ${autoDrawDuration.value}ms ${props.autoDrawEasing}`\n pathRef.style.transform = `scaleY(1)`\n }\n\n lastLength.value = length\n }, { immediate: true })\n\n function genPath (fill: boolean) {\n return _genPath(\n genPoints(items.value, boundary.value),\n props.smooth ? 8 : Number(props.smooth),\n fill,\n parseInt(props.height, 10)\n )\n }\n\n useRender(() => {\n const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse()\n\n return (\n <svg\n display=\"block\"\n stroke-width={ parseFloat(props.lineWidth) ?? 4 }\n >\n <defs>\n <linearGradient\n id={ id.value }\n gradientUnits=\"userSpaceOnUse\"\n x1={ props.gradientDirection === 'left' ? '100%' : '0' }\n y1={ props.gradientDirection === 'top' ? '100%' : '0' }\n x2={ props.gradientDirection === 'right' ? '100%' : '0' }\n y2={ props.gradientDirection === 'bottom' ? '100%' : '0' }\n >\n {\n gradientData.map((color, index) => (\n <stop offset={ index / (Math.max(gradientData.length - 1, 1)) } stop-color={ color || 'currentColor' } />\n ))\n }\n </linearGradient>\n </defs>\n\n { hasLabels.value && (\n <g\n key=\"labels\"\n style={{\n textAnchor: 'middle',\n dominantBaseline: 'mathematical',\n fill: 'currentColor',\n }}\n >\n {\n parsedLabels.value.map((item, i) => (\n <text\n x={ item.x + (lineWidth.value / 2) + lineWidth.value / 2 }\n y={ (parseInt(props.height, 10) - 4) + (parseInt(props.labelSize, 10) || 7 * 0.75) }\n font-size={ Number(props.labelSize) || 7 }\n >\n { slots.label?.({ index: i, value: item.value }) ?? item.value }\n </text>\n ))\n }\n </g>\n )}\n\n <path\n ref={ path }\n d={ genPath(props.fill) }\n fill={ props.fill ? `url(#${id.value})` : 'none' }\n stroke={ props.fill ? 'none' : `url(#${id.value})` }\n />\n\n { props.fill && (\n <path\n d={ genPath(false) }\n fill=\"none\"\n stroke={ props.color ?? props.gradient?.[0] }\n />\n )}\n </svg>\n )\n })\n },\n})\n\nexport type VTrendline = InstanceType<typeof VTrendline>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["VSparkline"],"sources":["../../../src/components/VSparkline/index.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["VSparkline"],"sources":["../../../src/components/VSparkline/index.ts"],"sourcesContent":["export { VSparkline } from './VSparkline'\n"],"mappings":"SAASA,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line.mjs","names":["propsFactory","makeLineProps","autoDraw","Boolean","autoDrawDuration","Number","String","autoDrawEasing","type","default","color","gradient","Array","gradientDirection","validator","val","includes","height","labels","labelSize","lineWidth","id","itemValue","modelValue","min","max","padding","showLabels","smooth","width"],"sources":["../../../../src/components/VSparkline/util/line.ts"],"sourcesContent":["// Utilities\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type SparklineItem = number | { value: number }\n\nexport const makeLineProps = propsFactory({\n autoDraw: Boolean,\n autoDrawDuration: [Number, String],\n autoDrawEasing: {\n type: String,\n default: 'ease',\n },\n color: String,\n gradient: {\n type: Array as PropType<string[]>,\n default: () => ([]),\n },\n gradientDirection: {\n type: String as PropType<'top' | 'bottom' | 'left' | 'right'>,\n validator: (val: string) => ['top', 'bottom', 'left', 'right'].includes(val),\n default: 'top',\n },\n height: {\n type: [String, Number],\n default: 75,\n },\n labels: {\n type: Array as PropType<SparklineItem[]>,\n default: () => ([]),\n },\n labelSize: {\n type: [Number, String],\n default: 7,\n },\n lineWidth: {\n type: [String, Number],\n default: 4,\n },\n id: String,\n itemValue: {\n type: String,\n default: 'value',\n },\n modelValue: {\n type: Array as PropType<SparklineItem[]>,\n default: () => ([]),\n },\n min: [String, Number],\n max: [String, Number],\n padding: {\n type: [String, Number],\n default: 8,\n },\n showLabels: Boolean,\n smooth: Boolean,\n width: {\n type: [Number, String],\n default: 300,\n },\n}, 'Line')\n"],"mappings":"AAAA;AAAA,SACSA,YAAY,mCAErB;AAKA,OAAO,MAAMC,aAAa,GAAGD,YAAY,CAAC;EACxCE,QAAQ,EAAEC,OAAO;EACjBC,gBAAgB,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;EAClCC,cAAc,EAAE;IACdC,IAAI,EAAEF,MAAM;IACZG,OAAO,EAAE;EACX,CAAC;EACDC,KAAK,EAAEJ,MAAM;EACbK,QAAQ,EAAE;IACRH,IAAI,EAAEI,KAA2B;IACjCH,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EACDI,iBAAiB,EAAE;IACjBL,IAAI,EAAEF,MAAuD;IAC7DQ,SAAS,EAAGC,GAAW,IAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAACC,QAAQ,CAACD,GAAG,CAAC;IAC5EN,OAAO,EAAE;EACX,CAAC;EACDQ,MAAM,EAAE;IACNT,IAAI,EAAE,CAACF,MAAM,EAAED,MAAM,CAAC;IACtBI,OAAO,EAAE;EACX,CAAC;EACDS,MAAM,EAAE;IACNV,IAAI,EAAEI,KAAkC;IACxCH,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EACDU,SAAS,EAAE;IACTX,IAAI,EAAE,CAACH,MAAM,EAAEC,MAAM,CAAC;IACtBG,OAAO,EAAE;EACX,CAAC;EACDW,SAAS,EAAE;IACTZ,IAAI,EAAE,CAACF,MAAM,EAAED,MAAM,CAAC;IACtBI,OAAO,EAAE;EACX,CAAC;EACDY,EAAE,EAAEf,MAAM;EACVgB,SAAS,EAAE;IACTd,IAAI,EAAEF,MAAM;IACZG,OAAO,EAAE;EACX,CAAC;EACDc,UAAU,EAAE;IACVf,IAAI,EAAEI,KAAkC;IACxCH,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EACDe,GAAG,EAAE,CAAClB,MAAM,EAAED,MAAM,CAAC;EACrBoB,GAAG,EAAE,CAACnB,MAAM,EAAED,MAAM,CAAC;EACrBqB,OAAO,EAAE;IACPlB,IAAI,EAAE,CAACF,MAAM,EAAED,MAAM,CAAC;IACtBI,OAAO,EAAE;EACX,CAAC;EACDkB,UAAU,EAAExB,OAAO;EACnByB,MAAM,EAAEzB,OAAO;EACf0B,KAAK,EAAE;IACLrB,IAAI,EAAE,CAACH,MAAM,EAAEC,MAAM,CAAC;IACtBG,OAAO,EAAE;EACX;AACF,CAAC,EAAE,MAAM,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.mjs","names":["genPath","points","radius","fill","arguments","length","undefined","height","start","shift","end","x","y","map","point","index","next","prev","isCollinear","checkCollinear","threshold","Math","min","getDistance","isTooCloseForRadius","radiusForPoint","before","moveTo","after","join","int","value","parseInt","p0","p1","p2","sqrt","pow","to","from","vector","unitVector"],"sources":["../../../../src/components/VSparkline/util/path.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\nimport { Point } from '../VSparkline'\n// import { checkCollinear, getDistance, moveTo } from './math'\n\n/**\n * From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18\n */\nexport function genPath (points: Point[], radius: number, fill = false, height = 75) {\n if (points.length === 0) return ''\n const start = points.shift()!\n const end = points[points.length - 1]\n\n return (\n (fill ? `M${start.x} ${height - start.x + 2} L${start.x} ${start.y}` : `M${start.x} ${start.y}`) +\n points\n .map((point, index) => {\n const next = points[index + 1]\n const prev = points[index - 1] || start\n const isCollinear = next && checkCollinear(next, point, prev)\n\n if (!next || isCollinear) {\n return `L${point.x} ${point.y}`\n }\n\n const threshold = Math.min(\n getDistance(prev, point),\n getDistance(next, point)\n )\n const isTooCloseForRadius = threshold / 2 < radius\n const radiusForPoint = isTooCloseForRadius ? threshold / 2 : radius\n\n const before = moveTo(prev, point, radiusForPoint)\n const after = moveTo(next, point, radiusForPoint)\n\n return `L${before.x} ${before.y}S${point.x} ${point.y} ${after.x} ${after.y}`\n })\n .join('') +\n (fill ? `L${end.x} ${height - start.x + 2} Z` : '')\n )\n}\n\nfunction int (value: string | number): number {\n return parseInt(value, 10)\n}\n\n/**\n * https://en.wikipedia.org/wiki/Collinearity\n * x=(x1+x2)/2\n * y=(y1+y2)/2\n */\nexport function checkCollinear (p0: Point, p1: Point, p2: Point): boolean {\n return int(p0.x + p2.x) === int(2 * p1.x) && int(p0.y + p2.y) === int(2 * p1.y)\n}\n\nexport function getDistance (p1: Point, p2: Point): number {\n return Math.sqrt(\n Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)\n )\n}\n\nexport function moveTo (to: Point, from: Point, radius: number) {\n const vector = { x: to.x - from.x, y: to.y - from.y }\n const length = Math.sqrt((vector.x * vector.x) + (vector.y * vector.y))\n const unitVector = { x: vector.x / length, y: vector.y / length }\n\n return {\n x: from.x + unitVector.x * radius,\n y: from.y + unitVector.y * radius,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|