@xyo-network/react-price-forecast-plugin 2.48.8
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/LICENSE +165 -0
- package/README.md +13 -0
- package/dist/cjs/Plugin.js +15 -0
- package/dist/cjs/Plugin.js.map +1 -0
- package/dist/cjs/components/DetailsBox.js +33 -0
- package/dist/cjs/components/DetailsBox.js.map +1 -0
- package/dist/cjs/components/index.js +5 -0
- package/dist/cjs/components/index.js.map +1 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/DataLineStyles.js +10 -0
- package/dist/cjs/lib/DataLineStyles.js.map +1 -0
- package/dist/cjs/lib/DataPointStyles.js +12 -0
- package/dist/cjs/lib/DataPointStyles.js.map +1 -0
- package/dist/cjs/lib/ForecastLineChartConfigBuilder.js +133 -0
- package/dist/cjs/lib/ForecastLineChartConfigBuilder.js.map +1 -0
- package/dist/cjs/lib/MockSourcePayloads.js +24 -0
- package/dist/cjs/lib/MockSourcePayloads.js.map +1 -0
- package/dist/cjs/lib/SourcePayloads.js +49 -0
- package/dist/cjs/lib/SourcePayloads.js.map +1 -0
- package/dist/cjs/lib/index.js +7 -0
- package/dist/cjs/lib/index.js.map +1 -0
- package/dist/docs.json +18568 -0
- package/dist/esm/Plugin.js +14 -0
- package/dist/esm/Plugin.js.map +1 -0
- package/dist/esm/components/DetailsBox.js +27 -0
- package/dist/esm/components/DetailsBox.js.map +1 -0
- package/dist/esm/components/index.js +2 -0
- package/dist/esm/components/index.js.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/DataLineStyles.js +6 -0
- package/dist/esm/lib/DataLineStyles.js.map +1 -0
- package/dist/esm/lib/DataPointStyles.js +8 -0
- package/dist/esm/lib/DataPointStyles.js.map +1 -0
- package/dist/esm/lib/ForecastLineChartConfigBuilder.js +130 -0
- package/dist/esm/lib/ForecastLineChartConfigBuilder.js.map +1 -0
- package/dist/esm/lib/MockSourcePayloads.js +20 -0
- package/dist/esm/lib/MockSourcePayloads.js.map +1 -0
- package/dist/esm/lib/SourcePayloads.js +41 -0
- package/dist/esm/lib/SourcePayloads.js.map +1 -0
- package/dist/esm/lib/index.js +4 -0
- package/dist/esm/lib/index.js.map +1 -0
- package/dist/types/Plugin.d.ts +3 -0
- package/dist/types/Plugin.d.ts.map +1 -0
- package/dist/types/components/DetailsBox.d.ts +9 -0
- package/dist/types/components/DetailsBox.d.ts.map +1 -0
- package/dist/types/components/index.d.ts +2 -0
- package/dist/types/components/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/lib/DataLineStyles.d.ts +5 -0
- package/dist/types/lib/DataLineStyles.d.ts.map +1 -0
- package/dist/types/lib/DataPointStyles.d.ts +8 -0
- package/dist/types/lib/DataPointStyles.d.ts.map +1 -0
- package/dist/types/lib/ForecastLineChartConfigBuilder.d.ts +47 -0
- package/dist/types/lib/ForecastLineChartConfigBuilder.d.ts.map +1 -0
- package/dist/types/lib/MockSourcePayloads.d.ts +18 -0
- package/dist/types/lib/MockSourcePayloads.d.ts.map +1 -0
- package/dist/types/lib/SourcePayloads.d.ts +30 -0
- package/dist/types/lib/SourcePayloads.d.ts.map +1 -0
- package/dist/types/lib/index.d.ts +4 -0
- package/dist/types/lib/index.d.ts.map +1 -0
- package/package.json +82 -0
- package/src/Plugin.ts +15 -0
- package/src/components/DetailsBox.stories.tsx +78 -0
- package/src/components/DetailsBox.tsx +55 -0
- package/src/components/index.ts +1 -0
- package/src/index.ts +2 -0
- package/src/lib/DataLineStyles.ts +6 -0
- package/src/lib/DataPointStyles.ts +7 -0
- package/src/lib/ForecastLineChartConfigBuilder.ts +169 -0
- package/src/lib/MockSourcePayloads.ts +19 -0
- package/src/lib/SourcePayloads.ts +47 -0
- package/src/lib/index.ts +3 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createPayloadRenderPlugin } from '@xyo-network/react-payload-plugin';
|
|
2
|
+
import { PriceForecastDetailsBox } from './components';
|
|
3
|
+
export const PriceForecastRenderPlugin = {
|
|
4
|
+
...createPayloadRenderPlugin({
|
|
5
|
+
canRender: () => true,
|
|
6
|
+
components: {
|
|
7
|
+
box: {
|
|
8
|
+
detailsBox: PriceForecastDetailsBox,
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
name: 'PriceForecast',
|
|
12
|
+
}),
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=Plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAuB,MAAM,mCAAmC,CAAA;AAElG,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,MAAM,yBAAyB,GAAwB;IAC5D,GAAG,yBAAyB,CAAC;QAC3B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;QACrB,UAAU,EAAE;YACV,GAAG,EAAE;gBACH,UAAU,EAAE,uBAAuB;aACpC;SACF;QACD,IAAI,EAAE,eAAe;KACtB,CAAC;CACH,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import 'chartjs-adapter-luxon';
|
|
3
|
+
import { useTheme } from '@mui/material';
|
|
4
|
+
import { useAsyncEffect } from '@xylabs/react-async-effect';
|
|
5
|
+
import { FlexCol } from '@xylabs/react-flexbox';
|
|
6
|
+
import { CategoryScale, Chart as ChartJS, Legend, LinearScale, LineElement, PointElement, TimeScale, Title, Tooltip, } from 'chart.js';
|
|
7
|
+
import { useState } from 'react';
|
|
8
|
+
import { Line } from 'react-chartjs-2';
|
|
9
|
+
import { ForecastLineChartConfigBuilder } from '../lib';
|
|
10
|
+
ChartJS.register(CategoryScale, TimeScale, PointElement, LineElement, LinearScale, Title, Tooltip, Legend);
|
|
11
|
+
export const PriceForecastDetailsBox = ({ payload, ...props }) => {
|
|
12
|
+
const priceForecastPayload = payload;
|
|
13
|
+
const theme = useTheme();
|
|
14
|
+
const [data, setData] = useState({ datasets: [] });
|
|
15
|
+
const [options, setOptions] = useState({});
|
|
16
|
+
useAsyncEffect(
|
|
17
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
18
|
+
async (mounted) => {
|
|
19
|
+
const { data, options } = await ForecastLineChartConfigBuilder.create(theme, priceForecastPayload, { fetch: true });
|
|
20
|
+
if (mounted()) {
|
|
21
|
+
setData(data);
|
|
22
|
+
setOptions(options);
|
|
23
|
+
}
|
|
24
|
+
}, [priceForecastPayload, theme]);
|
|
25
|
+
return (_jsx(FlexCol, { ...props, busy: priceForecastPayload === undefined, minHeight: "25vh", children: priceForecastPayload ? _jsx(Line, { options: options, data: data }) : null }));
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=DetailsBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DetailsBox.js","sourceRoot":"","sources":["../../../src/components/DetailsBox.tsx"],"names":[],"mappings":";AAAA,OAAO,uBAAuB,CAAA;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAgB,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAG7D,OAAO,EACL,aAAa,EACb,KAAK,IAAI,OAAO,EAGhB,MAAM,EACN,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,KAAK,EACL,OAAO,GACR,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,8BAA8B,EAAE,MAAM,QAAQ,CAAA;AAEvD,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAM1G,MAAM,CAAC,MAAM,uBAAuB,GAA2C,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACvG,MAAM,oBAAoB,GAAG,OAAsC,CAAA;IACnE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAoB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;IACrE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAuB,EAAE,CAAC,CAAA;IAEhE,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,8BAA8B,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACnH,IAAI,OAAO,EAAE,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,CAAA;YACb,UAAU,CAAC,OAAO,CAAC,CAAA;SACpB;IACH,CAAC,EACD,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAC9B,CAAA;IAED,OAAO,CACL,KAAC,OAAO,OAAK,KAAK,EAAE,IAAI,EAAE,oBAAoB,KAAK,SAAS,EAAE,SAAS,EAAC,MAAM,YAC3E,oBAAoB,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC,CAAC,IAAI,GAC7D,CACX,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataLineStyles.js","sourceRoot":"","sources":["../../../src/lib/DataLineStyles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC;IACjD,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;IACtD,WAAW,EAAE,KAAK;CACnB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataPointStyles.js","sourceRoot":"","sources":["../../../src/lib/DataPointStyles.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,yBAAkC,EAAE,EAAE,CAAC,CAAC;IACtE,cAAc,EAAE,EAAE;IAClB,yBAAyB;IACzB,gBAAgB,EAAE,EAAE;IACpB,WAAW,EAAE,CAAC;IACd,UAAU,EAAE,QAAQ;CACrB,CAAC,CAAA"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { DataLineStyles } from './DataLineStyles';
|
|
2
|
+
import { DataPointStyles } from './DataPointStyles';
|
|
3
|
+
import { SourcePayloads } from './SourcePayloads';
|
|
4
|
+
const defaultOptions = () => ({
|
|
5
|
+
plugins: {
|
|
6
|
+
legend: {
|
|
7
|
+
position: 'top',
|
|
8
|
+
},
|
|
9
|
+
},
|
|
10
|
+
responsive: true,
|
|
11
|
+
});
|
|
12
|
+
export class ForecastLineChartConfigBuilder {
|
|
13
|
+
payload;
|
|
14
|
+
data = {
|
|
15
|
+
datasets: [],
|
|
16
|
+
};
|
|
17
|
+
options = defaultOptions();
|
|
18
|
+
themeColors;
|
|
19
|
+
constructor(theme, payload) {
|
|
20
|
+
this.payload = payload;
|
|
21
|
+
this.themeColors = this.parseTheme(theme);
|
|
22
|
+
}
|
|
23
|
+
get forecastPayload() {
|
|
24
|
+
if (this.payload) {
|
|
25
|
+
return this.payload;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
throw Error('ForecastPayload was not defined');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
static async create(theme, payload, sourcePayloadConfig) {
|
|
32
|
+
const instance = new ForecastLineChartConfigBuilder(theme, payload);
|
|
33
|
+
await instance.build(sourcePayloadConfig?.fetch);
|
|
34
|
+
instance.refreshValues();
|
|
35
|
+
return instance;
|
|
36
|
+
}
|
|
37
|
+
async build(includeSources) {
|
|
38
|
+
this.buildOptions();
|
|
39
|
+
await this.buildData(includeSources);
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
async buildData(includeSources) {
|
|
43
|
+
const forecastData = this.generateDataSetForecastData();
|
|
44
|
+
const datasets = [forecastData];
|
|
45
|
+
if (includeSources) {
|
|
46
|
+
// build data from sources in forecastPayload
|
|
47
|
+
const sourceData = await this.generateDataSetSourcePayloads();
|
|
48
|
+
datasets.unshift(sourceData);
|
|
49
|
+
// add last source point as first item in prediction to connect the lines
|
|
50
|
+
const lastSourceDataItem = sourceData.data.at(-1);
|
|
51
|
+
forecastData.data.unshift(lastSourceDataItem);
|
|
52
|
+
}
|
|
53
|
+
this.data = {
|
|
54
|
+
datasets,
|
|
55
|
+
};
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
buildOptions() {
|
|
59
|
+
if (this.options.plugins) {
|
|
60
|
+
this.options.plugins.title = this.generateTitle();
|
|
61
|
+
this.options.plugins.legend = this.generateLegend();
|
|
62
|
+
}
|
|
63
|
+
this.options.scales = this.generateScales();
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
refreshValues() {
|
|
67
|
+
this.data = { ...this.data };
|
|
68
|
+
this.options = { ...this.options };
|
|
69
|
+
}
|
|
70
|
+
generateLegend() {
|
|
71
|
+
return {
|
|
72
|
+
labels: {
|
|
73
|
+
pointStyle: 'circle',
|
|
74
|
+
usePointStyle: true,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
generateScales() {
|
|
79
|
+
return {
|
|
80
|
+
x: {
|
|
81
|
+
grid: {
|
|
82
|
+
color: this.themeColors?.gridColor,
|
|
83
|
+
},
|
|
84
|
+
time: {
|
|
85
|
+
unit: 'minute',
|
|
86
|
+
},
|
|
87
|
+
type: 'time',
|
|
88
|
+
},
|
|
89
|
+
y: {
|
|
90
|
+
grid: {
|
|
91
|
+
color: this.themeColors?.gridColor,
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
generateTitle() {
|
|
97
|
+
return {
|
|
98
|
+
display: true,
|
|
99
|
+
text: `Gas Price Forecaster (GWEI over time from ${this.forecastPayload?.values[0].timestamp ? new Date(this.forecastPayload.values[0].timestamp).toLocaleDateString() : ''})`,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
parseTheme(theme) {
|
|
103
|
+
const dark = theme.palette.mode === 'dark';
|
|
104
|
+
return {
|
|
105
|
+
dataSetColorPrimary: theme.palette.primary.light,
|
|
106
|
+
dataSetColorSecondary: theme.palette.secondary.light,
|
|
107
|
+
gridColor: dark ? theme.palette.grey[800] : theme.palette.grey[300],
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
generateDataSetForecastData() {
|
|
111
|
+
return {
|
|
112
|
+
borderDash: [5],
|
|
113
|
+
borderDashOffset: 0.5,
|
|
114
|
+
data: this.forecastPayload.values.map((price) => ({ x: price.timestamp ?? 0, y: price.value })),
|
|
115
|
+
label: 'Forecast Price',
|
|
116
|
+
...DataPointStyles(this.themeColors?.dataSetColorPrimary),
|
|
117
|
+
...DataLineStyles(this.themeColors?.dataSetColorPrimary),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
async generateDataSetSourcePayloads() {
|
|
121
|
+
const { sourcePrices } = await SourcePayloads.build('feePerGas.medium');
|
|
122
|
+
return {
|
|
123
|
+
data: sourcePrices,
|
|
124
|
+
label: 'Source Prices',
|
|
125
|
+
...DataLineStyles(this.themeColors?.dataSetColorSecondary),
|
|
126
|
+
...DataPointStyles(this.themeColors?.dataSetColorSecondary),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=ForecastLineChartConfigBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ForecastLineChartConfigBuilder.js","sourceRoot":"","sources":["../../../src/lib/ForecastLineChartConfigBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const MockSourcePayloads = () => {
|
|
2
|
+
const tenMin = 600000;
|
|
3
|
+
return [
|
|
4
|
+
{
|
|
5
|
+
baseFee: 38.90155387825,
|
|
6
|
+
feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 39.306868093, veryHigh: 44.45384380525 },
|
|
7
|
+
priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },
|
|
8
|
+
schema: 'network.xyo.blockchain.ethereum.gas',
|
|
9
|
+
timestamp: Date.now() - tenMin,
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
baseFee: 38.90155387825,
|
|
13
|
+
feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 100, veryHigh: 44.45384380525 },
|
|
14
|
+
priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },
|
|
15
|
+
schema: 'network.xyo.blockchain.ethereum.gas',
|
|
16
|
+
timestamp: Date.now(),
|
|
17
|
+
},
|
|
18
|
+
];
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=MockSourcePayloads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockSourcePayloads.js","sourceRoot":"","sources":["../../../src/lib/MockSourcePayloads.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,MAAM,MAAM,GAAG,MAAM,CAAA;IACrB,OAAO;QACL;YACE,OAAO,EAAE,cAAc;YACvB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE;YACrG,iBAAiB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE;YACtH,MAAM,EAAE,qCAAqC;YAC7C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM;SAC/B;QACD;YACE,OAAO,EAAE,cAAc;YACvB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE;YAC5F,iBAAiB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE;YACtH,MAAM,EAAE,qCAAqC;YAC7C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB;KACF,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { MockSourcePayloads } from './MockSourcePayloads';
|
|
2
|
+
export class SourcePayloads {
|
|
3
|
+
sourcePayloads;
|
|
4
|
+
sourcePrices = [];
|
|
5
|
+
constructor(sourcePayloads) {
|
|
6
|
+
this.sourcePayloads = sourcePayloads;
|
|
7
|
+
}
|
|
8
|
+
get payloads() {
|
|
9
|
+
return this.sourcePayloads;
|
|
10
|
+
}
|
|
11
|
+
static async build(jsonPath) {
|
|
12
|
+
const sourcePayloads = await this.fetchSourcePayloads();
|
|
13
|
+
const instance = new this(sourcePayloads);
|
|
14
|
+
const paths = jsonPath.split('.');
|
|
15
|
+
instance.sourcePrices = sourcePayloads.map((payload) => {
|
|
16
|
+
return { x: payload.timestamp, y: instance.jsonPathTraverser(payload, paths) };
|
|
17
|
+
});
|
|
18
|
+
return instance;
|
|
19
|
+
}
|
|
20
|
+
// TODO - fetch from archivist
|
|
21
|
+
static async fetchSourcePayloads() {
|
|
22
|
+
const payloads = await Promise.resolve(MockSourcePayloads());
|
|
23
|
+
return payloads;
|
|
24
|
+
}
|
|
25
|
+
jsonPathTraverser(obj, path) {
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
+
let result = obj;
|
|
28
|
+
for (const key of path) {
|
|
29
|
+
if (key in result) {
|
|
30
|
+
const foundKey = key;
|
|
31
|
+
result = result[foundKey];
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
result = undefined;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=SourcePayloads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SourcePayloads.js","sourceRoot":"","sources":["../../../src/lib/SourcePayloads.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,MAAM,OAAO,cAAc;IAGN;IAFnB,YAAY,GAAY,EAAE,CAAA;IAE1B,YAAmB,cAAyB;QAAzB,mBAAc,GAAd,cAAc,CAAW;IAAG,CAAC;IAEhD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAgB;QACjC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAA;QACvD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,CAAA;QAEzC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACjC,QAAQ,CAAC,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACrD,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAA;QAChF,CAAC,CAAC,CAAA;QACF,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,8BAA8B;IAC9B,MAAM,CAAC,KAAK,CAAC,mBAAmB;QAC9B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;QAC5D,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,iBAAiB,CAAC,GAAY,EAAE,IAAc;QAC5C,8DAA8D;QAC9D,IAAI,MAAM,GAAQ,GAAG,CAAA;QACrB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,GAAG,IAAI,MAAM,EAAE;gBACjB,MAAM,QAAQ,GAAG,GAA0B,CAAA;gBAC3C,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;aAC1B;iBAAM;gBACL,MAAM,GAAG,SAAS,CAAA;gBAClB,MAAK;aACN;SACF;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA;AAChD,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAIlG,eAAO,MAAM,yBAAyB,EAAE,mBAUvC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import 'chartjs-adapter-luxon';
|
|
3
|
+
import { FlexBoxProps } from '@xylabs/react-flexbox';
|
|
4
|
+
import { Payload } from '@xyo-network/payload-model';
|
|
5
|
+
export interface PriceForecastDetailsBoxProps extends FlexBoxProps {
|
|
6
|
+
payload?: Payload;
|
|
7
|
+
}
|
|
8
|
+
export declare const PriceForecastDetailsBox: React.FC<PriceForecastDetailsBoxProps>;
|
|
9
|
+
//# sourceMappingURL=DetailsBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DetailsBox.d.ts","sourceRoot":"","sources":["../../../src/components/DetailsBox.tsx"],"names":[],"mappings":";AAAA,OAAO,uBAAuB,CAAA;AAI9B,OAAO,EAAE,YAAY,EAAW,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAqBpD,MAAM,WAAW,4BAA6B,SAAQ,YAAY;IAChE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAuB1E,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataLineStyles.d.ts","sourceRoot":"","sources":["../../../src/lib/DataLineStyles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,WAAY,MAAM;;;CAG3C,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const DataPointStyles: (pointHoverBackgroundColor?: string) => {
|
|
2
|
+
pointHitRadius: number;
|
|
3
|
+
pointHoverBackgroundColor: string | undefined;
|
|
4
|
+
pointHoverRadius: number;
|
|
5
|
+
pointRadius: number;
|
|
6
|
+
pointStyle: string;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=DataPointStyles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataPointStyles.d.ts","sourceRoot":"","sources":["../../../src/lib/DataPointStyles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,+BAAgC,MAAM;;;;;;CAMhE,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Theme } from '@mui/material';
|
|
2
|
+
import { ForecastPayload } from '@xyo-network/diviner-forecasting-model';
|
|
3
|
+
import { ChartData, ChartOptions, LegendOptions, ScaleChartOptions } from 'chart.js';
|
|
4
|
+
import { _DeepPartialObject } from 'chart.js/dist/types/utils';
|
|
5
|
+
interface SourcePayloadConfig {
|
|
6
|
+
fetch: boolean;
|
|
7
|
+
sampleSize?: number;
|
|
8
|
+
}
|
|
9
|
+
interface ThemeColors {
|
|
10
|
+
dataSetColorPrimary: string;
|
|
11
|
+
dataSetColorSecondary: string;
|
|
12
|
+
gridColor: string;
|
|
13
|
+
}
|
|
14
|
+
export declare class ForecastLineChartConfigBuilder {
|
|
15
|
+
private payload?;
|
|
16
|
+
data: ChartData<'line'>;
|
|
17
|
+
options: ChartOptions<'line'>;
|
|
18
|
+
themeColors: ThemeColors | undefined;
|
|
19
|
+
constructor(theme: Theme, payload?: (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
|
|
20
|
+
schema: "network.xyo.diviner.forecasting.forecast";
|
|
21
|
+
values: import("@xyo-network/diviner-forecasting-model").Forecast[];
|
|
22
|
+
}) | undefined);
|
|
23
|
+
get forecastPayload(): import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
|
|
24
|
+
schema: "network.xyo.diviner.forecasting.forecast";
|
|
25
|
+
values: import("@xyo-network/diviner-forecasting-model").Forecast[];
|
|
26
|
+
};
|
|
27
|
+
static create(theme: Theme, payload?: ForecastPayload, sourcePayloadConfig?: SourcePayloadConfig): Promise<ForecastLineChartConfigBuilder>;
|
|
28
|
+
build(includeSources?: boolean): Promise<this>;
|
|
29
|
+
buildData(includeSources?: boolean): Promise<this>;
|
|
30
|
+
buildOptions(): this;
|
|
31
|
+
refreshValues(): void;
|
|
32
|
+
protected generateLegend(): _DeepPartialObject<LegendOptions<'line'>>;
|
|
33
|
+
protected generateScales(): _DeepPartialObject<ScaleChartOptions<'line'>['scales']>;
|
|
34
|
+
protected generateTitle(): {
|
|
35
|
+
display: boolean;
|
|
36
|
+
text: string;
|
|
37
|
+
};
|
|
38
|
+
protected parseTheme(theme: Theme): {
|
|
39
|
+
dataSetColorPrimary: string;
|
|
40
|
+
dataSetColorSecondary: string;
|
|
41
|
+
gridColor: string;
|
|
42
|
+
};
|
|
43
|
+
private generateDataSetForecastData;
|
|
44
|
+
private generateDataSetSourcePayloads;
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=ForecastLineChartConfigBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ForecastLineChartConfigBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/ForecastLineChartConfigBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,SAAS,EAAgB,YAAY,EAAE,aAAa,EAAS,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAM9D,UAAU,mBAAmB;IAC3B,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,WAAW;IACnB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB;AAWD,qBAAa,8BAA8B;IAOf,OAAO,CAAC,OAAO,CAAC;IAN1C,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAEtB;IACD,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAmB;IAChD,WAAW,EAAE,WAAW,GAAG,SAAS,CAAA;gBAExB,KAAK,EAAE,KAAK,EAAU,OAAO,CAAC;;;kBAAiB;IAI3D,IAAI,eAAe;;;MAMlB;WAEY,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,eAAe,EAAE,mBAAmB,CAAC,EAAE,mBAAmB;IAUhG,KAAK,CAAC,cAAc,CAAC,EAAE,OAAO;IAM9B,SAAS,CAAC,cAAc,CAAC,EAAE,OAAO;IAsBxC,YAAY;IAUZ,aAAa;IAKb,SAAS,CAAC,cAAc,IAAI,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IASrE,SAAS,CAAC,cAAc,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;IAmBnF,SAAS,CAAC,aAAa;;;;IASvB,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK;;;;;IASjC,OAAO,CAAC,2BAA2B;YAWrB,6BAA6B;CAS5C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const MockSourcePayloads: () => {
|
|
2
|
+
baseFee: number;
|
|
3
|
+
feePerGas: {
|
|
4
|
+
high: number;
|
|
5
|
+
low: number;
|
|
6
|
+
medium: number;
|
|
7
|
+
veryHigh: number;
|
|
8
|
+
};
|
|
9
|
+
priorityFeePerGas: {
|
|
10
|
+
high: number;
|
|
11
|
+
low: number;
|
|
12
|
+
medium: number;
|
|
13
|
+
veryHigh: number;
|
|
14
|
+
};
|
|
15
|
+
schema: string;
|
|
16
|
+
timestamp: number;
|
|
17
|
+
}[];
|
|
18
|
+
//# sourceMappingURL=MockSourcePayloads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockSourcePayloads.d.ts","sourceRoot":"","sources":["../../../src/lib/MockSourcePayloads.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;GAkB9B,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Payload } from '@xyo-network/payload-model';
|
|
2
|
+
import { Point } from 'chart.js';
|
|
3
|
+
export declare class SourcePayloads {
|
|
4
|
+
sourcePayloads: Payload[];
|
|
5
|
+
sourcePrices: Point[];
|
|
6
|
+
constructor(sourcePayloads: Payload[]);
|
|
7
|
+
get payloads(): (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
|
|
8
|
+
schema: string;
|
|
9
|
+
})[];
|
|
10
|
+
static build(jsonPath: string): Promise<SourcePayloads>;
|
|
11
|
+
static fetchSourcePayloads(): Promise<{
|
|
12
|
+
baseFee: number;
|
|
13
|
+
feePerGas: {
|
|
14
|
+
high: number;
|
|
15
|
+
low: number;
|
|
16
|
+
medium: number;
|
|
17
|
+
veryHigh: number;
|
|
18
|
+
};
|
|
19
|
+
priorityFeePerGas: {
|
|
20
|
+
high: number;
|
|
21
|
+
low: number;
|
|
22
|
+
medium: number;
|
|
23
|
+
veryHigh: number;
|
|
24
|
+
};
|
|
25
|
+
schema: string;
|
|
26
|
+
timestamp: number;
|
|
27
|
+
}[]>;
|
|
28
|
+
jsonPathTraverser(obj: Payload, path: string[]): any;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=SourcePayloads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SourcePayloads.d.ts","sourceRoot":"","sources":["../../../src/lib/SourcePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAIhC,qBAAa,cAAc;IAGN,cAAc,EAAE,OAAO,EAAE;IAF5C,YAAY,EAAE,KAAK,EAAE,CAAK;gBAEP,cAAc,EAAE,OAAO,EAAE;IAE5C,IAAI,QAAQ;;SAEX;WAEY,KAAK,CAAC,QAAQ,EAAE,MAAM;WAYtB,mBAAmB;;;;;;;;;;;;;;;;;IAKhC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;CAe/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA;AAChD,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xyo-network/react-price-forecast-plugin",
|
|
3
|
+
"author": {
|
|
4
|
+
"email": "support@xyo.network",
|
|
5
|
+
"name": "XYO Development Team",
|
|
6
|
+
"url": "https://xyo.network"
|
|
7
|
+
},
|
|
8
|
+
"bugs": {
|
|
9
|
+
"email": "support@xyo.network",
|
|
10
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@xylabs/react-async-effect": "^2.17.1",
|
|
14
|
+
"@xylabs/react-flexbox": "^2.17.1",
|
|
15
|
+
"@xyo-network/diviner-forecasting-model": "^2.56.0",
|
|
16
|
+
"@xyo-network/payload-model": "^2.56.0",
|
|
17
|
+
"@xyo-network/react-payload-plugin": "^2.49.2",
|
|
18
|
+
"chart.js": "^4.3.0",
|
|
19
|
+
"chartjs-adapter-luxon": "^1.3.1",
|
|
20
|
+
"luxon": "^3.3.0",
|
|
21
|
+
"react-chartjs-2": "^5.2.0"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@storybook/react": "^7.0.7",
|
|
25
|
+
"@xylabs/ts-scripts-yarn3": "^2.17.6",
|
|
26
|
+
"@xylabs/tsconfig-react": "^2.17.5",
|
|
27
|
+
"typescript": "^5.0.4"
|
|
28
|
+
},
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"@mui/icons-material": "^5",
|
|
31
|
+
"@mui/material": "^5",
|
|
32
|
+
"@mui/styles": "^5",
|
|
33
|
+
"axios": "^1.3.4",
|
|
34
|
+
"react": "^18",
|
|
35
|
+
"react-dom": "^18",
|
|
36
|
+
"react-router-dom": "^6"
|
|
37
|
+
},
|
|
38
|
+
"description": "Common React library for all XYO projects that use React",
|
|
39
|
+
"browser": "dist/esm/index.js",
|
|
40
|
+
"docs": "dist/docs.json",
|
|
41
|
+
"exports": {
|
|
42
|
+
".": {
|
|
43
|
+
"node": {
|
|
44
|
+
"import": "./dist/esm/index.js",
|
|
45
|
+
"require": "./dist/cjs/index.js"
|
|
46
|
+
},
|
|
47
|
+
"browser": {
|
|
48
|
+
"import": "./dist/esm/index.js",
|
|
49
|
+
"require": "./dist/cjs/index.js"
|
|
50
|
+
},
|
|
51
|
+
"default": "./dist/esm/index.js"
|
|
52
|
+
},
|
|
53
|
+
"./dist/docs.json": {
|
|
54
|
+
"default": "./dist/docs.json"
|
|
55
|
+
},
|
|
56
|
+
"./package.json": "./package.json"
|
|
57
|
+
},
|
|
58
|
+
"main": "dist/cjs/index.js",
|
|
59
|
+
"module": "dist/esm/index.js",
|
|
60
|
+
"homepage": "https://xyo.network",
|
|
61
|
+
"keywords": [
|
|
62
|
+
"xyo",
|
|
63
|
+
"utility",
|
|
64
|
+
"typescript",
|
|
65
|
+
"react"
|
|
66
|
+
],
|
|
67
|
+
"license": "LGPL-3.0",
|
|
68
|
+
"publishConfig": {
|
|
69
|
+
"access": "public"
|
|
70
|
+
},
|
|
71
|
+
"repository": {
|
|
72
|
+
"type": "git",
|
|
73
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js.git"
|
|
74
|
+
},
|
|
75
|
+
"scripts": {
|
|
76
|
+
"lint-pkg": "npmPkgJsonLint .",
|
|
77
|
+
"license": "yarn license-checker --exclude \"MIT, ISC, Apache-2.0, BSD, BSD-2-Clause, CC-BY-4.0, Unlicense, CC-BY-3.0, CC0-1.0\""
|
|
78
|
+
},
|
|
79
|
+
"sideEffects": false,
|
|
80
|
+
"types": "dist/types/index.d.ts",
|
|
81
|
+
"version": "2.48.8"
|
|
82
|
+
}
|
package/src/Plugin.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createPayloadRenderPlugin, PayloadRenderPlugin } from '@xyo-network/react-payload-plugin'
|
|
2
|
+
|
|
3
|
+
import { PriceForecastDetailsBox } from './components'
|
|
4
|
+
|
|
5
|
+
export const PriceForecastRenderPlugin: PayloadRenderPlugin = {
|
|
6
|
+
...createPayloadRenderPlugin({
|
|
7
|
+
canRender: () => true,
|
|
8
|
+
components: {
|
|
9
|
+
box: {
|
|
10
|
+
detailsBox: PriceForecastDetailsBox,
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
name: 'PriceForecast',
|
|
14
|
+
}),
|
|
15
|
+
}
|