vvplot 0.1.3 → 0.2.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vvplot",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist"
@@ -10,18 +10,16 @@
10
10
  "dev": "vite dev"
11
11
  },
12
12
  "type": "module",
13
- "module": "./dist/index.js",
14
- "types": "./dist/index.d.ts",
13
+ "module": "./dist/vvplot.esm.js",
14
+ "types": "./dist/vvplot.d.ts",
15
15
  "imports": {
16
16
  "#base/*": "./src/*"
17
17
  },
18
18
  "exports": {
19
- ".": "./dist/index.js",
20
- "./components": "./dist/components.js",
21
- "./scale": "./dist/scale.js",
22
- "./break": "./dist/break.js",
23
- "./theme": "./dist/theme.js",
24
- "./label": "./dist/label.js",
19
+ ".": {
20
+ "import": "./dist/vvplot.esm.js",
21
+ "types": "./dist/vvplot.d.ts"
22
+ },
25
23
  "./style.css": "./dist/style.css"
26
24
  },
27
25
  "homepage": "https://fan-ix.github.io/vvplot/",
package/dist/break.d.ts DELETED
@@ -1 +0,0 @@
1
- export { }
package/dist/break.js DELETED
@@ -1,118 +0,0 @@
1
- function break_number({ step: $step, minor: $minor = false } = {}) {
2
- return function({ min, max, minor = $minor } = {}) {
3
- let interval = max - min, step = $step;
4
- if (isNaN(interval) || interval < 0) return [];
5
- if (interval == 0) return [min];
6
- let exp = 10 ** Math.floor(Math.log10(interval) - 1), m = interval / exp;
7
- if (step == null)
8
- step = ([5, 10, 20].find((x) => x * 5 > m) ?? 20) * exp;
9
- if (minor) step /= 2;
10
- let nMin = Math.ceil(min / step);
11
- let nMax = Math.floor(max / step);
12
- return new Array(nMax - nMin + 1).fill(null).map((_, i) => (nMin + i) * step);
13
- };
14
- }
15
- function break_datetime() {
16
- return function({ min, max } = {}) {
17
- let interval = max - min;
18
- if (isNaN(interval) || interval < 0) return [];
19
- if (interval == 0) return [new Date(min)];
20
- let s = new Date(min), e = new Date(max);
21
- let sYear = s.getUTCFullYear(), sMonth = s.getUTCMonth(), sDate = s.getUTCDate(), sHours = s.getUTCHours(), sMinutes = s.getUTCMinutes(), sSeconds = s.getUTCSeconds();
22
- let breaks = [];
23
- if (interval > 3 * 31536e6) {
24
- let itvlYear = interval / 31536e6;
25
- let exp = 10 ** Math.floor(Math.log10(itvlYear) - 1), m = itvlYear / exp;
26
- let step = Math.max((m > 50 ? 10 : m > 25 ? 5 : 2) * exp, 1);
27
- s = new Date(Date.UTC(
28
- Math.ceil(sYear / step) * step
29
- ));
30
- do {
31
- breaks.push(new Date(s));
32
- } while (s.setUTCFullYear(s.getUTCFullYear() + step) < e);
33
- } else if (interval > 3 * 2592e6) {
34
- let itvlMonth = interval / 2592e6;
35
- let step = [2, 3, 6].findLast((x) => x * 3 <= itvlMonth) || 1;
36
- s = new Date(Date.UTC(
37
- sYear,
38
- Math.ceil(sMonth / step) * step
39
- ));
40
- do {
41
- breaks.push(new Date(s));
42
- } while (s.setUTCMonth(s.getUTCMonth() + step) < e);
43
- } else if (interval > 21 * 864e5) {
44
- s = new Date(Date.UTC(
45
- sYear,
46
- sMonth,
47
- sDate + (7 - s.getUTCDay()) % 7
48
- ));
49
- do {
50
- breaks.push(new Date(s));
51
- } while (s.setUTCDate(s.getUTCDate() + 7) < e);
52
- } else if (interval > 3 * 864e5) {
53
- let itvlDate = interval / 864e5;
54
- let step = [2, 3].findLast((x) => x * 3 <= itvlDate) || 1;
55
- s = new Date(Date.UTC(
56
- sYear,
57
- sMonth,
58
- Math.ceil(sDate)
59
- ));
60
- do {
61
- breaks.push(new Date(s));
62
- } while (s.setUTCDate(s.getUTCDate() + step) < e);
63
- } else if (interval > 3 * 36e5) {
64
- let itvlHours = interval / 36e5;
65
- let step = [2, 3, 6].findLast((x) => x * 3 <= itvlHours) || 1;
66
- s = new Date(Date.UTC(
67
- sYear,
68
- sMonth,
69
- sDate,
70
- Math.ceil(sHours / step) * step
71
- ));
72
- do {
73
- breaks.push(new Date(s));
74
- } while (s.setUTCHours(s.getUTCHours() + step) < e);
75
- } else if (interval > 3 * 6e4) {
76
- let itvlMinutes = interval / 6e4;
77
- let step = [2, 5, 10, 30].findLast((x) => x * 3 <= itvlMinutes) || 1;
78
- s = new Date(Date.UTC(
79
- sYear,
80
- sMonth,
81
- sDate,
82
- sHours,
83
- Math.ceil(sMinutes / step) * step
84
- ));
85
- do {
86
- breaks.push(new Date(s));
87
- } while (s.setUTCMinutes(s.getUTCMinutes() + step) < e);
88
- } else if (interval > 3e3) {
89
- let itvlSeconds = interval / 1e3;
90
- let step = [2, 5, 10, 30].findLast((x) => x * 3 <= itvlSeconds) || 1;
91
- s = new Date(Date.UTC(
92
- sYear,
93
- sMonth,
94
- sDate,
95
- sHours,
96
- sMinutes,
97
- Math.ceil(sSeconds / step) * step
98
- ));
99
- do {
100
- breaks.push(new Date(s));
101
- } while (s.setUTCSeconds(s.getUTCSeconds() + step) < e);
102
- } else {
103
- let exp = 10 ** Math.floor(Math.log10(interval) - 1), m = interval / exp;
104
- let step = (m > 50 ? 20 : m > 25 ? 10 : 5) * exp;
105
- let nMin = Math.ceil(min / step);
106
- let nMax = Math.floor(max / step);
107
- return new Array(nMax - nMin + 1).fill(null).map((_, i) => new Date((nMin + i) * step));
108
- }
109
- return breaks;
110
- };
111
- }
112
- const vvbreak = {
113
- number: break_number,
114
- datetime: break_datetime
115
- };
116
- export {
117
- vvbreak as default
118
- };
@@ -1,74 +0,0 @@
1
- import { default as VVAction } from './Action.vue';
2
- import { default as VVAxis } from './Axis.vue';
3
- import { default as VVAxisX } from './AxisX.vue';
4
- import { default as VVAxisY } from './AxisY.vue';
5
- import { default as VVGeom } from './Geom.vue';
6
- import { default as VVGeomBar } from './GeomBar.vue';
7
- import { default as VVGeomBlank } from './GeomBlank.vue';
8
- import { default as VVGeomBoxplot } from './GeomBoxplot.vue';
9
- import { default as VVGeomCurve } from './GeomCurve.vue';
10
- import { default as VVGeomDensity } from './GeomDensity.vue';
11
- import { default as VVGeomHistogram } from './GeomHistogram.vue';
12
- import { default as VVGeomLine } from './GeomLine.vue';
13
- import { default as VVGeomLinerange } from './GeomLinerange.vue';
14
- import { default as VVGeomPath } from './GeomPath.vue';
15
- import { default as VVGeomPoint } from './GeomPoint.vue';
16
- import { default as VVGeomPolygon } from './GeomPolygon.vue';
17
- import { default as VVGeomRect } from './GeomRect.vue';
18
- import { default as VVGeomSegment } from './GeomSegment.vue';
19
- import { default as VVGeomStick } from './GeomStick.vue';
20
- import { default as VVGeomText } from './GeomText.vue';
21
- import { default as VVGeomTextsegment } from './GeomTextsegment.vue';
22
- import { default as VVGeomTile } from './GeomTile.vue';
23
- import { default as VVPlot } from './Plot.vue';
24
- import { default as VVSelection } from './Selection.vue';
25
-
26
- export { VVAction }
27
-
28
- export { VVAxis }
29
-
30
- export { VVAxisX }
31
-
32
- export { VVAxisY }
33
-
34
- export { VVGeom }
35
-
36
- export { VVGeomBar }
37
-
38
- export { VVGeomBlank }
39
-
40
- export { VVGeomBoxplot }
41
-
42
- export { VVGeomCurve }
43
-
44
- export { VVGeomDensity }
45
-
46
- export { VVGeomHistogram }
47
-
48
- export { VVGeomLine }
49
-
50
- export { VVGeomLinerange }
51
-
52
- export { VVGeomPath }
53
-
54
- export { VVGeomPoint }
55
-
56
- export { VVGeomPolygon }
57
-
58
- export { VVGeomRect }
59
-
60
- export { VVGeomSegment }
61
-
62
- export { VVGeomStick }
63
-
64
- export { VVGeomText }
65
-
66
- export { VVGeomTextsegment }
67
-
68
- export { VVGeomTile }
69
-
70
- export { VVPlot }
71
-
72
- export { VVSelection }
73
-
74
- export { }
@@ -1,27 +0,0 @@
1
- import { _sfc_main$1, _sfc_main$3, _sfc_main$4, _sfc_main$5, _sfc_main$6, _sfc_main$7, _sfc_main$8, _sfc_main$9, _sfc_main$10, _sfc_main$11, _sfc_main$12, _sfc_main$13, _sfc_main$14, _sfc_main$15, _sfc_main$16, _sfc_main$17, _sfc_main$18, _sfc_main$19, _sfc_main$20, _sfc_main$21, _sfc_main$22, _sfc_main$23, _sfc_main, _sfc_main$2 } from "./Selection.js";
2
- export {
3
- _sfc_main$1 as VVAction,
4
- _sfc_main$3 as VVAxis,
5
- _sfc_main$4 as VVAxisX,
6
- _sfc_main$5 as VVAxisY,
7
- _sfc_main$6 as VVGeom,
8
- _sfc_main$7 as VVGeomBar,
9
- _sfc_main$8 as VVGeomBlank,
10
- _sfc_main$9 as VVGeomBoxplot,
11
- _sfc_main$10 as VVGeomCurve,
12
- _sfc_main$11 as VVGeomDensity,
13
- _sfc_main$12 as VVGeomHistogram,
14
- _sfc_main$13 as VVGeomLine,
15
- _sfc_main$14 as VVGeomLinerange,
16
- _sfc_main$15 as VVGeomPath,
17
- _sfc_main$16 as VVGeomPoint,
18
- _sfc_main$17 as VVGeomPolygon,
19
- _sfc_main$18 as VVGeomRect,
20
- _sfc_main$19 as VVGeomSegment,
21
- _sfc_main$20 as VVGeomStick,
22
- _sfc_main$21 as VVGeomText,
23
- _sfc_main$22 as VVGeomTextsegment,
24
- _sfc_main$23 as VVGeomTile,
25
- _sfc_main as VVPlot,
26
- _sfc_main$2 as VVSelection
27
- };
package/dist/index.d.ts DELETED
@@ -1,74 +0,0 @@
1
- import { default as VVAction } from './Action.vue';
2
- import { default as VVAxis } from './Axis.vue';
3
- import { default as VVAxisX } from './AxisX.vue';
4
- import { default as VVAxisY } from './AxisY.vue';
5
- import { default as VVGeom } from './Geom.vue';
6
- import { default as VVGeomBar } from './GeomBar.vue';
7
- import { default as VVGeomBlank } from './GeomBlank.vue';
8
- import { default as VVGeomBoxplot } from './GeomBoxplot.vue';
9
- import { default as VVGeomCurve } from './GeomCurve.vue';
10
- import { default as VVGeomDensity } from './GeomDensity.vue';
11
- import { default as VVGeomHistogram } from './GeomHistogram.vue';
12
- import { default as VVGeomLine } from './GeomLine.vue';
13
- import { default as VVGeomLinerange } from './GeomLinerange.vue';
14
- import { default as VVGeomPath } from './GeomPath.vue';
15
- import { default as VVGeomPoint } from './GeomPoint.vue';
16
- import { default as VVGeomPolygon } from './GeomPolygon.vue';
17
- import { default as VVGeomRect } from './GeomRect.vue';
18
- import { default as VVGeomSegment } from './GeomSegment.vue';
19
- import { default as VVGeomStick } from './GeomStick.vue';
20
- import { default as VVGeomText } from './GeomText.vue';
21
- import { default as VVGeomTextsegment } from './GeomTextsegment.vue';
22
- import { default as VVGeomTile } from './GeomTile.vue';
23
- import { default as VVPlot } from './Plot.vue';
24
- import { default as VVSelection } from './Selection.vue';
25
-
26
- export { VVAction }
27
-
28
- export { VVAxis }
29
-
30
- export { VVAxisX }
31
-
32
- export { VVAxisY }
33
-
34
- export { VVGeom }
35
-
36
- export { VVGeomBar }
37
-
38
- export { VVGeomBlank }
39
-
40
- export { VVGeomBoxplot }
41
-
42
- export { VVGeomCurve }
43
-
44
- export { VVGeomDensity }
45
-
46
- export { VVGeomHistogram }
47
-
48
- export { VVGeomLine }
49
-
50
- export { VVGeomLinerange }
51
-
52
- export { VVGeomPath }
53
-
54
- export { VVGeomPoint }
55
-
56
- export { VVGeomPolygon }
57
-
58
- export { VVGeomRect }
59
-
60
- export { VVGeomSegment }
61
-
62
- export { VVGeomStick }
63
-
64
- export { VVGeomText }
65
-
66
- export { VVGeomTextsegment }
67
-
68
- export { VVGeomTile }
69
-
70
- export { VVPlot }
71
-
72
- export { VVSelection }
73
-
74
- export { }
package/dist/index.js DELETED
@@ -1,27 +0,0 @@
1
- import { _sfc_main$1, _sfc_main$3, _sfc_main$4, _sfc_main$5, _sfc_main$6, _sfc_main$7, _sfc_main$8, _sfc_main$9, _sfc_main$10, _sfc_main$11, _sfc_main$12, _sfc_main$13, _sfc_main$14, _sfc_main$15, _sfc_main$16, _sfc_main$17, _sfc_main$18, _sfc_main$19, _sfc_main$20, _sfc_main$21, _sfc_main$22, _sfc_main$23, _sfc_main, _sfc_main$2 } from "./Selection.js";
2
- export {
3
- _sfc_main$1 as VVAction,
4
- _sfc_main$3 as VVAxis,
5
- _sfc_main$4 as VVAxisX,
6
- _sfc_main$5 as VVAxisY,
7
- _sfc_main$6 as VVGeom,
8
- _sfc_main$7 as VVGeomBar,
9
- _sfc_main$8 as VVGeomBlank,
10
- _sfc_main$9 as VVGeomBoxplot,
11
- _sfc_main$10 as VVGeomCurve,
12
- _sfc_main$11 as VVGeomDensity,
13
- _sfc_main$12 as VVGeomHistogram,
14
- _sfc_main$13 as VVGeomLine,
15
- _sfc_main$14 as VVGeomLinerange,
16
- _sfc_main$15 as VVGeomPath,
17
- _sfc_main$16 as VVGeomPoint,
18
- _sfc_main$17 as VVGeomPolygon,
19
- _sfc_main$18 as VVGeomRect,
20
- _sfc_main$19 as VVGeomSegment,
21
- _sfc_main$20 as VVGeomStick,
22
- _sfc_main$21 as VVGeomText,
23
- _sfc_main$22 as VVGeomTextsegment,
24
- _sfc_main$23 as VVGeomTile,
25
- _sfc_main as VVPlot,
26
- _sfc_main$2 as VVSelection
27
- };
package/dist/label.d.ts DELETED
@@ -1 +0,0 @@
1
- export { }
package/dist/label.js DELETED
@@ -1,151 +0,0 @@
1
- import { GEnumElement } from "./utils.js";
2
- let $datetime_fn = {
3
- y: (d) => d.getUTCFullYear(),
4
- M: (d) => d.getUTCMonth() + 1,
5
- d: (d) => d.getUTCDate(),
6
- h: (d) => d.getUTCHours(),
7
- m: (d) => d.getUTCMinutes(),
8
- s: (d) => d.getUTCSeconds()
9
- };
10
- function $datetime_format(date, fmt = "yyyy-MM-dd hh:mm:ss") {
11
- return fmt.replace(/(y|M|d|h|m|s)\1*/g, (m, f) => {
12
- let s = String($datetime_fn[f](date)), l = m.length;
13
- if (f == "y") return s.slice(-l);
14
- return s.padStart(l, "0");
15
- });
16
- }
17
- const number_cut = {
18
- default: {
19
- "": 1,
20
- "k": 1e3,
21
- "M": 1e6,
22
- "G": 1e9,
23
- "T": 1e12,
24
- "P": 1e15,
25
- "E": 1e18,
26
- "Z": 1e21,
27
- "Y": 1e24
28
- },
29
- si: {
30
- "y": 1e-24,
31
- "z": 1e-21,
32
- "a": 1e-18,
33
- "f": 1e-15,
34
- "p": 1e-12,
35
- "n": 1e-9,
36
- "μ": 1e-6,
37
- "m": 1e-3,
38
- "": 1,
39
- "k": 1e3,
40
- "M": 1e6,
41
- "G": 1e9,
42
- "T": 1e12,
43
- "P": 1e15,
44
- "E": 1e18,
45
- "Z": 1e21,
46
- "Y": 1e24
47
- },
48
- binary: {
49
- "": 1,
50
- "Ki": 1024,
51
- "Mi": 1024 ** 2,
52
- "Gi": 1024 ** 3,
53
- "Ti": 1024 ** 4,
54
- "Pi": 1024 ** 5,
55
- "Ei": 1024 ** 6,
56
- "Zi": 1024 ** 7,
57
- "Yi": 1024 ** 8
58
- },
59
- time: {
60
- "ns": 1e-9,
61
- "μs": 1e-6,
62
- "ms": 1e-3,
63
- "s": 1,
64
- "m": 60,
65
- "h": 3600,
66
- "d": 86400,
67
- "w": 604800,
68
- "M": 2592e3,
69
- "y": 31536e3
70
- }
71
- };
72
- function format_asis() {
73
- return function(x) {
74
- if (x == null) return "";
75
- if (x instanceof Date) return $datetime_format(x);
76
- return String(x);
77
- };
78
- }
79
- function format_number({
80
- accuracy,
81
- scale = 1,
82
- prefix = "",
83
- suffix = "",
84
- big_mark = " ",
85
- style_positive = "none",
86
- style_negative = "hyphen",
87
- scale_cut = { "": 1 }
88
- } = {}) {
89
- let pos_mark = { plus: "+", space: " " }[style_positive] ?? "", neg_mark = { hyphen: "-", minus: "−", parens: "(" }[style_negative] ?? "";
90
- return function(x, i, arr = [x]) {
91
- let acc;
92
- if (accuracy) {
93
- acc = accuracy;
94
- } else if (arr.length > 1) {
95
- let ar = arr.filter((x2) => isFinite(x2)).sort((a, b) => a - b);
96
- let minInterval = ar.slice(1).map((v, j) => v - ar[j]).reduce((a, b) => a < b ? a : b);
97
- acc = minInterval * scale;
98
- } else {
99
- acc = x || 1;
100
- }
101
- let cut = Object.entries(scale_cut).sort((a, b) => b[1] - a[1]).find((x2) => x2[1] <= acc)?.[0] ?? "";
102
- let suf = (cut == "" ? "" : " ") + cut + suffix;
103
- acc = acc / (scale_cut[cut] ?? 1);
104
- let digit = Math.max(0, Math.ceil(-Math.log10(acc)));
105
- let num = Math.round(x * scale / (scale_cut[cut] ?? 1) / acc) * acc;
106
- let pre = prefix + (num > 0 ? pos_mark : num < 0 ? neg_mark : "");
107
- if (num < 0 && style_negative == "parens") suf = ")" + suf;
108
- num = Math.abs(num).toFixed(digit).replace(new RegExp("(?<!\\..*)(\\d)(?=(?:\\d{3})+(?:\\.|$))", "g"), "$1" + big_mark);
109
- return pre + num + suf;
110
- };
111
- }
112
- function format_datetime({
113
- format
114
- } = {}) {
115
- let $cut = { y: 31536e3, M: 2678400, d: 86400, h: 3600, m: 60, s: 1 };
116
- let offset_left = { y: 0, M: 5, d: 8, h: 11, m: 14, s: 17 };
117
- let offset_right = { y: 4, M: 7, d: 10, h: 13, m: 16, s: 19 };
118
- return function(x, i, arr = [x]) {
119
- if (arr.length <= 1) return $datetime_format(new Date(x), format);
120
- if (format == null) {
121
- let a = Array.from(arr).sort((a2, b) => a2 - b);
122
- let minInterval = a.slice(1).map((v, j) => v - a[j]).reduce((a2, b) => a2 < b ? a2 : b) / 1e3, maxInterval = (a[a.length - 1] - a[0]) / 1e3;
123
- let minCut = ["y", "M", "d", "m", "s"].find((k) => $cut[k] <= minInterval);
124
- let maxCut = maxInterval > 2678400 ? "y" : maxInterval > 86400 ? "M" : "h";
125
- format = "yyyy-MM-dd hh:mm:ss".slice(offset_left[maxCut], offset_right[minCut]);
126
- }
127
- return $datetime_format(new Date(x), format);
128
- };
129
- }
130
- function format_auto(opts) {
131
- let formatter_number = format_number(opts), formatter_datetime = format_datetime(opts);
132
- return function(x, i, arr = [x]) {
133
- if (x instanceof GEnumElement) return String(x);
134
- if (x instanceof Date) return formatter_datetime(x, i, arr);
135
- return formatter_number(x, i, arr);
136
- };
137
- }
138
- const vvlabel = {
139
- number: format_number,
140
- datetime: format_datetime,
141
- timestamp: format_datetime,
142
- asis: format_asis,
143
- auto: format_auto,
144
- default: function(opts) {
145
- return format_auto({ scale_cut: number_cut.default, ...opts });
146
- }
147
- };
148
- export {
149
- vvlabel as default,
150
- number_cut
151
- };
package/dist/scale.d.ts DELETED
@@ -1 +0,0 @@
1
- export { }