routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
+170
@@ -0,0 +1,170 @@
|
||||
import type { PropType } from 'vue';
|
||||
export type SparklineItem = string | number | {
|
||||
value: number;
|
||||
};
|
||||
export declare const makeLineProps: <Defaults extends {
|
||||
autoDraw?: unknown;
|
||||
autoDrawDuration?: unknown;
|
||||
autoDrawEasing?: unknown;
|
||||
color?: unknown;
|
||||
gradient?: unknown;
|
||||
gradientDirection?: unknown;
|
||||
height?: unknown;
|
||||
labels?: unknown;
|
||||
labelSize?: unknown;
|
||||
lineWidth?: unknown;
|
||||
id?: unknown;
|
||||
itemValue?: unknown;
|
||||
modelValue?: unknown;
|
||||
min?: unknown;
|
||||
max?: unknown;
|
||||
padding?: unknown;
|
||||
showLabels?: unknown;
|
||||
smooth?: unknown;
|
||||
width?: unknown;
|
||||
} = {}>(defaults?: Defaults | undefined) => {
|
||||
autoDraw: unknown extends Defaults["autoDraw"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["autoDraw"] ? boolean : boolean | Defaults["autoDraw"]>;
|
||||
default: unknown extends Defaults["autoDraw"] ? boolean : boolean | Defaults["autoDraw"];
|
||||
};
|
||||
autoDrawDuration: unknown extends Defaults["autoDrawDuration"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["autoDrawDuration"] ? string | number : string | number | Defaults["autoDrawDuration"]>;
|
||||
default: unknown extends Defaults["autoDrawDuration"] ? string | number : Defaults["autoDrawDuration"] | NonNullable<string | number>;
|
||||
};
|
||||
autoDrawEasing: unknown extends Defaults["autoDrawEasing"] ? {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["autoDrawEasing"] ? string : string | Defaults["autoDrawEasing"]>;
|
||||
default: unknown extends Defaults["autoDrawEasing"] ? string : string | Defaults["autoDrawEasing"];
|
||||
};
|
||||
color: unknown extends Defaults["color"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
|
||||
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
|
||||
};
|
||||
gradient: unknown extends Defaults["gradient"] ? {
|
||||
type: PropType<string[]>;
|
||||
default: () => never[];
|
||||
} : Omit<{
|
||||
type: PropType<string[]>;
|
||||
default: () => never[];
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["gradient"] ? string[] : string[] | Defaults["gradient"]>;
|
||||
default: unknown extends Defaults["gradient"] ? string[] : string[] | Defaults["gradient"];
|
||||
};
|
||||
gradientDirection: unknown extends Defaults["gradientDirection"] ? {
|
||||
type: PropType<'top' | 'bottom' | 'left' | 'right'>;
|
||||
validator: (val: string) => boolean;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: PropType<'top' | 'bottom' | 'left' | 'right'>;
|
||||
validator: (val: string) => boolean;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["gradientDirection"] ? "bottom" | "left" | "right" | "top" : "bottom" | "left" | "right" | "top" | Defaults["gradientDirection"]>;
|
||||
default: unknown extends Defaults["gradientDirection"] ? "bottom" | "left" | "right" | "top" : Defaults["gradientDirection"] | NonNullable<"bottom" | "left" | "right" | "top">;
|
||||
};
|
||||
height: unknown extends Defaults["height"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
|
||||
default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
|
||||
};
|
||||
labels: unknown extends Defaults["labels"] ? {
|
||||
type: PropType<SparklineItem[]>;
|
||||
default: () => never[];
|
||||
} : Omit<{
|
||||
type: PropType<SparklineItem[]>;
|
||||
default: () => never[];
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["labels"] ? SparklineItem[] : SparklineItem[] | Defaults["labels"]>;
|
||||
default: unknown extends Defaults["labels"] ? SparklineItem[] : SparklineItem[] | Defaults["labels"];
|
||||
};
|
||||
labelSize: unknown extends Defaults["labelSize"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["labelSize"] ? string | number : string | number | Defaults["labelSize"]>;
|
||||
default: unknown extends Defaults["labelSize"] ? string | number : Defaults["labelSize"] | NonNullable<string | number>;
|
||||
};
|
||||
lineWidth: unknown extends Defaults["lineWidth"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["lineWidth"] ? string | number : string | number | Defaults["lineWidth"]>;
|
||||
default: unknown extends Defaults["lineWidth"] ? string | number : Defaults["lineWidth"] | NonNullable<string | number>;
|
||||
};
|
||||
id: unknown extends Defaults["id"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["id"] ? string : string | Defaults["id"]>;
|
||||
default: unknown extends Defaults["id"] ? string : string | Defaults["id"];
|
||||
};
|
||||
itemValue: unknown extends Defaults["itemValue"] ? {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["itemValue"] ? string : string | Defaults["itemValue"]>;
|
||||
default: unknown extends Defaults["itemValue"] ? string : string | Defaults["itemValue"];
|
||||
};
|
||||
modelValue: unknown extends Defaults["modelValue"] ? {
|
||||
type: PropType<SparklineItem[]>;
|
||||
default: () => never[];
|
||||
} : Omit<{
|
||||
type: PropType<SparklineItem[]>;
|
||||
default: () => never[];
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["modelValue"] ? SparklineItem[] : SparklineItem[] | Defaults["modelValue"]>;
|
||||
default: unknown extends Defaults["modelValue"] ? SparklineItem[] : SparklineItem[] | Defaults["modelValue"];
|
||||
};
|
||||
min: unknown extends Defaults["min"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["min"] ? string | number : string | number | Defaults["min"]>;
|
||||
default: unknown extends Defaults["min"] ? string | number : Defaults["min"] | NonNullable<string | number>;
|
||||
};
|
||||
max: unknown extends Defaults["max"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["max"] ? string | number : string | number | Defaults["max"]>;
|
||||
default: unknown extends Defaults["max"] ? string | number : Defaults["max"] | NonNullable<string | number>;
|
||||
};
|
||||
padding: unknown extends Defaults["padding"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["padding"] ? string | number : string | number | Defaults["padding"]>;
|
||||
default: unknown extends Defaults["padding"] ? string | number : Defaults["padding"] | NonNullable<string | number>;
|
||||
};
|
||||
showLabels: unknown extends Defaults["showLabels"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["showLabels"] ? boolean : boolean | Defaults["showLabels"]>;
|
||||
default: unknown extends Defaults["showLabels"] ? boolean : boolean | Defaults["showLabels"];
|
||||
};
|
||||
smooth: unknown extends Defaults["smooth"] ? (BooleanConstructor | NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["smooth"] ? string | number | boolean : string | number | boolean | Defaults["smooth"]>;
|
||||
default: unknown extends Defaults["smooth"] ? string | number | boolean : Defaults["smooth"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
width: unknown extends Defaults["width"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["width"] ? string | number : string | number | Defaults["width"]>;
|
||||
default: unknown extends Defaults["width"] ? string | number : Defaults["width"] | NonNullable<string | number>;
|
||||
};
|
||||
};
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
// Utilities
|
||||
import { propsFactory } from "../../../util/index.js"; // Types
|
||||
export const makeLineProps = propsFactory({
|
||||
autoDraw: Boolean,
|
||||
autoDrawDuration: [Number, String],
|
||||
autoDrawEasing: {
|
||||
type: String,
|
||||
default: 'ease'
|
||||
},
|
||||
color: String,
|
||||
gradient: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
gradientDirection: {
|
||||
type: String,
|
||||
validator: val => ['top', 'bottom', 'left', 'right'].includes(val),
|
||||
default: 'top'
|
||||
},
|
||||
height: {
|
||||
type: [String, Number],
|
||||
default: 75
|
||||
},
|
||||
labels: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
labelSize: {
|
||||
type: [Number, String],
|
||||
default: 7
|
||||
},
|
||||
lineWidth: {
|
||||
type: [String, Number],
|
||||
default: 4
|
||||
},
|
||||
id: String,
|
||||
itemValue: {
|
||||
type: String,
|
||||
default: 'value'
|
||||
},
|
||||
modelValue: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
min: [String, Number],
|
||||
max: [String, Number],
|
||||
padding: {
|
||||
type: [String, Number],
|
||||
default: 8
|
||||
},
|
||||
showLabels: Boolean,
|
||||
smooth: [Boolean, String, Number],
|
||||
width: {
|
||||
type: [Number, String],
|
||||
default: 300
|
||||
}
|
||||
}, 'Line');
|
||||
//# sourceMappingURL=line.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"line.js","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 = string | 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, String, Number],\n width: {\n type: [Number, String],\n default: 300,\n },\n}, 'Line')\n"],"mappings":"AAAA;AAAA,SACSA,YAAY,kCAErB;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,EAAE,CAACzB,OAAO,EAAEG,MAAM,EAAED,MAAM,CAAC;EACjCwB,KAAK,EAAE;IACLrB,IAAI,EAAE,CAACH,MAAM,EAAEC,MAAM,CAAC;IACtBG,OAAO,EAAE;EACX;AACF,CAAC,EAAE,MAAM,CAAC","ignoreList":[]}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
import { Point } from '../VSparkline.js';
|
||||
/**
|
||||
* From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18
|
||||
*/
|
||||
export declare function genPath(points: Point[], radius: number, fill?: boolean, height?: number): string;
|
||||
/**
|
||||
* https://en.wikipedia.org/wiki/Collinearity
|
||||
* x=(x1+x2)/2
|
||||
* y=(y1+y2)/2
|
||||
*/
|
||||
export declare function checkCollinear(p0: Point, p1: Point, p2: Point): boolean;
|
||||
export declare function getDistance(p1: Point, p2: Point): number;
|
||||
export declare function moveTo(to: Point, from: Point, radius: number): {
|
||||
x: any;
|
||||
y: any;
|
||||
};
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
// @ts-nocheck
|
||||
/* eslint-disable */
|
||||
|
||||
// import { checkCollinear, getDistance, moveTo } from './math'
|
||||
|
||||
/**
|
||||
* From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18
|
||||
*/
|
||||
export function genPath(points, radius, fill = false, height = 75) {
|
||||
if (points.length === 0) return '';
|
||||
const start = points.shift();
|
||||
const end = points[points.length - 1];
|
||||
return (fill ? `M${start.x} ${height - start.x + 2} L${start.x} ${start.y}` : `M${start.x} ${start.y}`) + points.map((point, index) => {
|
||||
const next = points[index + 1];
|
||||
const prev = points[index - 1] || start;
|
||||
const isCollinear = next && checkCollinear(next, point, prev);
|
||||
if (!next || isCollinear) {
|
||||
return `L${point.x} ${point.y}`;
|
||||
}
|
||||
const threshold = Math.min(getDistance(prev, point), getDistance(next, point));
|
||||
const isTooCloseForRadius = threshold / 2 < radius;
|
||||
const radiusForPoint = isTooCloseForRadius ? threshold / 2 : radius;
|
||||
const before = moveTo(prev, point, radiusForPoint);
|
||||
const after = moveTo(next, point, radiusForPoint);
|
||||
return `L${before.x} ${before.y}S${point.x} ${point.y} ${after.x} ${after.y}`;
|
||||
}).join('') + (fill ? `L${end.x} ${height - start.x + 2} Z` : '');
|
||||
}
|
||||
function int(value) {
|
||||
return parseInt(value, 10);
|
||||
}
|
||||
|
||||
/**
|
||||
* https://en.wikipedia.org/wiki/Collinearity
|
||||
* x=(x1+x2)/2
|
||||
* y=(y1+y2)/2
|
||||
*/
|
||||
export function checkCollinear(p0, p1, p2) {
|
||||
return int(p0.x + p2.x) === int(2 * p1.x) && int(p0.y + p2.y) === int(2 * p1.y);
|
||||
}
|
||||
export function getDistance(p1, p2) {
|
||||
return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
|
||||
}
|
||||
export function moveTo(to, from, radius) {
|
||||
const vector = {
|
||||
x: to.x - from.x,
|
||||
y: to.y - from.y
|
||||
};
|
||||
const length = Math.sqrt(vector.x * vector.x + vector.y * vector.y);
|
||||
const unitVector = {
|
||||
x: vector.x / length,
|
||||
y: vector.y / length
|
||||
};
|
||||
return {
|
||||
x: from.x + unitVector.x * radius,
|
||||
y: from.y + unitVector.y * radius
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=path.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user