@xyo-network/react-price-forecast-plugin 2.61.0-rc.3 → 2.61.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/dist/browser/Plugin.cjs +270 -0
- package/dist/browser/Plugin.cjs.map +1 -0
- package/dist/browser/Plugin.d.cts.map +1 -0
- package/dist/browser/Plugin.d.mts.map +1 -0
- package/dist/browser/Plugin.d.ts +3 -0
- package/dist/browser/Plugin.d.ts.map +1 -0
- package/dist/browser/Plugin.js +17 -0
- package/dist/browser/Plugin.js.map +1 -0
- package/dist/browser/components/DetailsBox.cjs +254 -0
- package/dist/browser/components/DetailsBox.cjs.map +1 -0
- package/dist/browser/components/DetailsBox.d.cts.map +1 -0
- package/dist/browser/components/DetailsBox.d.mts.map +1 -0
- package/dist/browser/components/DetailsBox.d.ts +9 -0
- package/dist/browser/components/DetailsBox.d.ts.map +1 -0
- package/dist/browser/components/DetailsBox.js +42 -0
- package/dist/browser/components/DetailsBox.js.map +1 -0
- package/dist/browser/components/index.cjs +256 -0
- package/dist/browser/components/index.cjs.map +1 -0
- package/dist/browser/components/index.d.cts.map +1 -0
- package/dist/browser/components/index.d.mts.map +1 -0
- package/dist/browser/components/index.d.ts +2 -0
- package/dist/browser/components/index.d.ts.map +1 -0
- package/dist/browser/components/index.js +2 -0
- package/dist/browser/components/index.js.map +1 -0
- package/dist/{index.js → browser/index.cjs} +1 -6
- package/dist/browser/index.cjs.map +1 -0
- package/dist/browser/index.d.cts.map +1 -0
- package/dist/browser/index.d.mts.map +1 -0
- package/dist/browser/index.d.ts +3 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +3 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/lib/DataLineStyles.cjs +31 -0
- package/dist/browser/lib/DataLineStyles.cjs.map +1 -0
- package/dist/browser/lib/DataLineStyles.d.cts.map +1 -0
- package/dist/browser/lib/DataLineStyles.d.mts.map +1 -0
- package/dist/browser/lib/DataLineStyles.d.ts +5 -0
- package/dist/browser/lib/DataLineStyles.d.ts.map +1 -0
- package/dist/browser/lib/DataLineStyles.js +9 -0
- package/dist/browser/lib/DataLineStyles.js.map +1 -0
- package/dist/browser/lib/DataPointStyles.cjs +33 -0
- package/dist/browser/lib/DataPointStyles.cjs.map +1 -0
- package/dist/browser/lib/DataPointStyles.d.cts.map +1 -0
- package/dist/browser/lib/DataPointStyles.d.mts.map +1 -0
- package/dist/browser/lib/DataPointStyles.d.ts +8 -0
- package/dist/browser/lib/DataPointStyles.d.ts.map +1 -0
- package/dist/browser/lib/DataPointStyles.js +11 -0
- package/dist/browser/lib/DataPointStyles.js.map +1 -0
- package/dist/browser/lib/ForecastLineChartConfigBuilder.cjs +225 -0
- package/dist/browser/lib/ForecastLineChartConfigBuilder.cjs.map +1 -0
- package/dist/browser/lib/ForecastLineChartConfigBuilder.d.cts.map +1 -0
- package/dist/browser/lib/ForecastLineChartConfigBuilder.d.mts.map +1 -0
- package/dist/browser/lib/ForecastLineChartConfigBuilder.d.ts +47 -0
- package/dist/browser/lib/ForecastLineChartConfigBuilder.d.ts.map +1 -0
- package/dist/browser/lib/ForecastLineChartConfigBuilder.js +129 -0
- package/dist/browser/lib/ForecastLineChartConfigBuilder.js.map +1 -0
- package/dist/browser/lib/MockSourcePayloads.cjs +45 -0
- package/dist/browser/lib/MockSourcePayloads.cjs.map +1 -0
- package/dist/browser/lib/MockSourcePayloads.d.cts.map +1 -0
- package/dist/browser/lib/MockSourcePayloads.d.mts.map +1 -0
- package/dist/browser/lib/MockSourcePayloads.d.ts +18 -0
- package/dist/browser/lib/MockSourcePayloads.d.ts.map +1 -0
- package/dist/browser/lib/MockSourcePayloads.js +23 -0
- package/dist/browser/lib/MockSourcePayloads.js.map +1 -0
- package/dist/browser/lib/SourcePayloads.cjs +85 -0
- package/dist/browser/lib/SourcePayloads.cjs.map +1 -0
- package/dist/browser/lib/SourcePayloads.d.cts.map +1 -0
- package/dist/browser/lib/SourcePayloads.d.mts.map +1 -0
- package/dist/browser/lib/SourcePayloads.d.ts +30 -0
- package/dist/browser/lib/SourcePayloads.d.ts.map +1 -0
- package/dist/browser/lib/SourcePayloads.js +41 -0
- package/dist/browser/lib/SourcePayloads.js.map +1 -0
- package/dist/browser/lib/index.cjs +227 -0
- package/dist/browser/lib/index.cjs.map +1 -0
- package/dist/browser/lib/index.d.cts.map +1 -0
- package/dist/browser/lib/index.d.mts.map +1 -0
- package/dist/browser/lib/index.d.ts +4 -0
- package/dist/browser/lib/index.d.ts.map +1 -0
- package/dist/browser/lib/index.js +4 -0
- package/dist/browser/lib/index.js.map +1 -0
- package/dist/docs.json +23326 -0
- package/dist/node/Plugin.cjs +278 -0
- package/dist/node/Plugin.cjs.map +1 -0
- package/dist/node/Plugin.d.cts +3 -0
- package/dist/node/Plugin.d.cts.map +1 -0
- package/dist/node/Plugin.d.mts +3 -0
- package/dist/node/Plugin.d.mts.map +1 -0
- package/dist/node/Plugin.d.ts +3 -0
- package/dist/node/Plugin.d.ts.map +1 -0
- package/dist/node/Plugin.js +263 -0
- package/dist/node/Plugin.js.map +1 -0
- package/dist/node/components/DetailsBox.cjs +262 -0
- package/dist/node/components/DetailsBox.cjs.map +1 -0
- package/dist/node/components/DetailsBox.d.cts +9 -0
- package/dist/node/components/DetailsBox.d.cts.map +1 -0
- package/dist/node/components/DetailsBox.d.mts +9 -0
- package/dist/node/components/DetailsBox.d.mts.map +1 -0
- package/dist/node/components/DetailsBox.d.ts +9 -0
- package/dist/node/components/DetailsBox.d.ts.map +1 -0
- package/dist/node/components/DetailsBox.js +247 -0
- package/dist/node/components/DetailsBox.js.map +1 -0
- package/dist/node/components/index.cjs +264 -0
- package/dist/node/components/index.cjs.map +1 -0
- package/dist/node/components/index.d.cts +2 -0
- package/dist/node/components/index.d.cts.map +1 -0
- package/dist/node/components/index.d.mts +2 -0
- package/dist/node/components/index.d.mts.map +1 -0
- package/dist/node/components/index.d.ts +2 -0
- package/dist/node/components/index.d.ts.map +1 -0
- package/dist/node/components/index.js +247 -0
- package/dist/node/components/index.js.map +1 -0
- package/dist/node/index.cjs +280 -0
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.d.cts +3 -0
- package/dist/node/index.d.cts.map +1 -0
- package/dist/node/index.d.mts +3 -0
- package/dist/node/index.d.mts.map +1 -0
- package/dist/node/index.d.ts +3 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/{index.mjs → node/index.js} +13 -9
- package/dist/node/index.js.map +1 -0
- package/dist/node/lib/DataLineStyles.cjs +35 -0
- package/dist/node/lib/DataLineStyles.cjs.map +1 -0
- package/dist/node/lib/DataLineStyles.d.cts +5 -0
- package/dist/node/lib/DataLineStyles.d.cts.map +1 -0
- package/dist/node/lib/DataLineStyles.d.mts +5 -0
- package/dist/node/lib/DataLineStyles.d.mts.map +1 -0
- package/dist/node/lib/DataLineStyles.d.ts +5 -0
- package/dist/node/lib/DataLineStyles.d.ts.map +1 -0
- package/dist/node/lib/DataLineStyles.js +10 -0
- package/dist/node/lib/DataLineStyles.js.map +1 -0
- package/dist/node/lib/DataPointStyles.cjs +37 -0
- package/dist/node/lib/DataPointStyles.cjs.map +1 -0
- package/dist/node/lib/DataPointStyles.d.cts +8 -0
- package/dist/node/lib/DataPointStyles.d.cts.map +1 -0
- package/dist/node/lib/DataPointStyles.d.mts +8 -0
- package/dist/node/lib/DataPointStyles.d.mts.map +1 -0
- package/dist/node/lib/DataPointStyles.d.ts +8 -0
- package/dist/node/lib/DataPointStyles.d.ts.map +1 -0
- package/dist/node/lib/DataPointStyles.js +12 -0
- package/dist/node/lib/DataPointStyles.js.map +1 -0
- package/dist/node/lib/ForecastLineChartConfigBuilder.cjs +233 -0
- package/dist/node/lib/ForecastLineChartConfigBuilder.cjs.map +1 -0
- package/dist/node/lib/ForecastLineChartConfigBuilder.d.cts +47 -0
- package/dist/node/lib/ForecastLineChartConfigBuilder.d.cts.map +1 -0
- package/dist/node/lib/ForecastLineChartConfigBuilder.d.mts +47 -0
- package/dist/node/lib/ForecastLineChartConfigBuilder.d.mts.map +1 -0
- package/dist/node/lib/ForecastLineChartConfigBuilder.d.ts +47 -0
- package/dist/node/lib/ForecastLineChartConfigBuilder.d.ts.map +1 -0
- package/dist/node/lib/ForecastLineChartConfigBuilder.js +206 -0
- package/dist/node/lib/ForecastLineChartConfigBuilder.js.map +1 -0
- package/dist/node/lib/MockSourcePayloads.cjs +49 -0
- package/dist/node/lib/MockSourcePayloads.cjs.map +1 -0
- package/dist/node/lib/MockSourcePayloads.d.cts +18 -0
- package/dist/node/lib/MockSourcePayloads.d.cts.map +1 -0
- package/dist/node/lib/MockSourcePayloads.d.mts +18 -0
- package/dist/node/lib/MockSourcePayloads.d.mts.map +1 -0
- package/dist/node/lib/MockSourcePayloads.d.ts +18 -0
- package/dist/node/lib/MockSourcePayloads.d.ts.map +1 -0
- package/dist/node/lib/MockSourcePayloads.js +24 -0
- package/dist/node/lib/MockSourcePayloads.js.map +1 -0
- package/dist/node/lib/SourcePayloads.cjs +89 -0
- package/dist/node/lib/SourcePayloads.cjs.map +1 -0
- package/dist/node/lib/SourcePayloads.d.cts +30 -0
- package/dist/node/lib/SourcePayloads.d.cts.map +1 -0
- package/dist/node/lib/SourcePayloads.d.mts +30 -0
- package/dist/node/lib/SourcePayloads.d.mts.map +1 -0
- package/dist/node/lib/SourcePayloads.d.ts +30 -0
- package/dist/node/lib/SourcePayloads.d.ts.map +1 -0
- package/dist/node/lib/SourcePayloads.js +62 -0
- package/dist/node/lib/SourcePayloads.js.map +1 -0
- package/dist/node/lib/index.cjs +237 -0
- package/dist/node/lib/index.cjs.map +1 -0
- package/dist/node/lib/index.d.cts +4 -0
- package/dist/node/lib/index.d.cts.map +1 -0
- package/dist/node/lib/index.d.mts +4 -0
- package/dist/node/lib/index.d.mts.map +1 -0
- package/dist/node/lib/index.d.ts +4 -0
- package/dist/node/lib/index.d.ts.map +1 -0
- package/dist/node/lib/index.js +208 -0
- package/dist/node/lib/index.js.map +1 -0
- package/package.json +22 -22
- package/dist/Plugin.d.mts.map +0 -1
- package/dist/Plugin.d.ts.map +0 -1
- package/dist/components/DetailsBox.d.mts.map +0 -1
- package/dist/components/DetailsBox.d.ts.map +0 -1
- package/dist/components/DetailsBox.stories.d.mts +0 -6
- package/dist/components/DetailsBox.stories.d.mts.map +0 -1
- package/dist/components/DetailsBox.stories.d.ts +0 -6
- package/dist/components/DetailsBox.stories.d.ts.map +0 -1
- package/dist/components/index.d.mts.map +0 -1
- package/dist/components/index.d.ts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/lib/DataLineStyles.d.mts.map +0 -1
- package/dist/lib/DataLineStyles.d.ts.map +0 -1
- package/dist/lib/DataPointStyles.d.mts.map +0 -1
- package/dist/lib/DataPointStyles.d.ts.map +0 -1
- package/dist/lib/ForecastLineChartConfigBuilder.d.mts.map +0 -1
- package/dist/lib/ForecastLineChartConfigBuilder.d.ts.map +0 -1
- package/dist/lib/MockSourcePayloads.d.mts.map +0 -1
- package/dist/lib/MockSourcePayloads.d.ts.map +0 -1
- package/dist/lib/SourcePayloads.d.mts.map +0 -1
- package/dist/lib/SourcePayloads.d.ts.map +0 -1
- package/dist/lib/index.d.mts.map +0 -1
- package/dist/lib/index.d.ts.map +0 -1
- /package/dist/{Plugin.d.mts → browser/Plugin.d.cts} +0 -0
- /package/dist/{Plugin.d.ts → browser/Plugin.d.mts} +0 -0
- /package/dist/{components/DetailsBox.d.mts → browser/components/DetailsBox.d.cts} +0 -0
- /package/dist/{components/DetailsBox.d.ts → browser/components/DetailsBox.d.mts} +0 -0
- /package/dist/{components/index.d.mts → browser/components/index.d.cts} +0 -0
- /package/dist/{components/index.d.ts → browser/components/index.d.mts} +0 -0
- /package/dist/{index.d.mts → browser/index.d.cts} +0 -0
- /package/dist/{index.d.ts → browser/index.d.mts} +0 -0
- /package/dist/{lib/DataLineStyles.d.mts → browser/lib/DataLineStyles.d.cts} +0 -0
- /package/dist/{lib/DataLineStyles.d.ts → browser/lib/DataLineStyles.d.mts} +0 -0
- /package/dist/{lib/DataPointStyles.d.mts → browser/lib/DataPointStyles.d.cts} +0 -0
- /package/dist/{lib/DataPointStyles.d.ts → browser/lib/DataPointStyles.d.mts} +0 -0
- /package/dist/{lib/ForecastLineChartConfigBuilder.d.mts → browser/lib/ForecastLineChartConfigBuilder.d.cts} +0 -0
- /package/dist/{lib/ForecastLineChartConfigBuilder.d.ts → browser/lib/ForecastLineChartConfigBuilder.d.mts} +0 -0
- /package/dist/{lib/MockSourcePayloads.d.mts → browser/lib/MockSourcePayloads.d.cts} +0 -0
- /package/dist/{lib/MockSourcePayloads.d.ts → browser/lib/MockSourcePayloads.d.mts} +0 -0
- /package/dist/{lib/SourcePayloads.d.mts → browser/lib/SourcePayloads.d.cts} +0 -0
- /package/dist/{lib/SourcePayloads.d.ts → browser/lib/SourcePayloads.d.mts} +0 -0
- /package/dist/{lib/index.d.mts → browser/lib/index.d.cts} +0 -0
- /package/dist/{lib/index.d.ts → browser/lib/index.d.mts} +0 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var src_exports = {};
|
|
22
|
+
__export(src_exports, {
|
|
23
|
+
PriceForecastDetailsBox: () => PriceForecastDetailsBox,
|
|
24
|
+
PriceForecastRenderPlugin: () => PriceForecastRenderPlugin
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(src_exports);
|
|
27
|
+
|
|
28
|
+
// src/components/DetailsBox.tsx
|
|
29
|
+
var import_chartjs_adapter_luxon = require("chartjs-adapter-luxon");
|
|
30
|
+
var import_material2 = require("@mui/material");
|
|
31
|
+
var import_react_async_effect = require("@xylabs/react-async-effect");
|
|
32
|
+
var import_react_flexbox = require("@xylabs/react-flexbox");
|
|
33
|
+
var import_chart = require("chart.js");
|
|
34
|
+
var import_react = require("react");
|
|
35
|
+
var import_react_chartjs_2 = require("react-chartjs-2");
|
|
36
|
+
|
|
37
|
+
// src/lib/DataLineStyles.ts
|
|
38
|
+
var import_material = require("@mui/material");
|
|
39
|
+
var DataLineStyles = (color) => ({
|
|
40
|
+
backgroundColor: color ? (0, import_material.alpha)(color, 0.5) : void 0,
|
|
41
|
+
borderColor: color
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// src/lib/DataPointStyles.ts
|
|
45
|
+
var DataPointStyles = (pointHoverBackgroundColor) => ({
|
|
46
|
+
pointHitRadius: 20,
|
|
47
|
+
pointHoverBackgroundColor,
|
|
48
|
+
pointHoverRadius: 10,
|
|
49
|
+
pointRadius: 5,
|
|
50
|
+
pointStyle: "circle"
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// src/lib/MockSourcePayloads.ts
|
|
54
|
+
var MockSourcePayloads = () => {
|
|
55
|
+
const tenMin = 6e5;
|
|
56
|
+
return [
|
|
57
|
+
{
|
|
58
|
+
baseFee: 38.90155387825,
|
|
59
|
+
feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 39.306868093, veryHigh: 44.45384380525 },
|
|
60
|
+
priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },
|
|
61
|
+
schema: "network.xyo.blockchain.ethereum.gas",
|
|
62
|
+
timestamp: Date.now() - tenMin
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
baseFee: 38.90155387825,
|
|
66
|
+
feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 100, veryHigh: 44.45384380525 },
|
|
67
|
+
priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },
|
|
68
|
+
schema: "network.xyo.blockchain.ethereum.gas",
|
|
69
|
+
timestamp: Date.now()
|
|
70
|
+
}
|
|
71
|
+
];
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// src/lib/SourcePayloads.ts
|
|
75
|
+
var SourcePayloads = class {
|
|
76
|
+
constructor(sourcePayloads) {
|
|
77
|
+
this.sourcePayloads = sourcePayloads;
|
|
78
|
+
}
|
|
79
|
+
sourcePrices = [];
|
|
80
|
+
get payloads() {
|
|
81
|
+
return this.sourcePayloads;
|
|
82
|
+
}
|
|
83
|
+
static async build(jsonPath) {
|
|
84
|
+
const sourcePayloads = await this.fetchSourcePayloads();
|
|
85
|
+
const instance = new this(sourcePayloads);
|
|
86
|
+
const paths = jsonPath.split(".");
|
|
87
|
+
instance.sourcePrices = sourcePayloads.map((payload) => {
|
|
88
|
+
return { x: payload.timestamp, y: instance.jsonPathTraverser(payload, paths) };
|
|
89
|
+
});
|
|
90
|
+
return instance;
|
|
91
|
+
}
|
|
92
|
+
// TODO - fetch from archivist
|
|
93
|
+
static async fetchSourcePayloads() {
|
|
94
|
+
const payloads = await Promise.resolve(MockSourcePayloads());
|
|
95
|
+
return payloads;
|
|
96
|
+
}
|
|
97
|
+
jsonPathTraverser(obj, path) {
|
|
98
|
+
let result = obj;
|
|
99
|
+
for (const key of path) {
|
|
100
|
+
if (key in result) {
|
|
101
|
+
const foundKey = key;
|
|
102
|
+
result = result[foundKey];
|
|
103
|
+
} else {
|
|
104
|
+
result = void 0;
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
// src/lib/ForecastLineChartConfigBuilder.ts
|
|
113
|
+
var defaultOptions = () => ({
|
|
114
|
+
plugins: {
|
|
115
|
+
legend: {
|
|
116
|
+
position: "top"
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
responsive: true
|
|
120
|
+
});
|
|
121
|
+
var ForecastLineChartConfigBuilder = class _ForecastLineChartConfigBuilder {
|
|
122
|
+
constructor(theme, payload) {
|
|
123
|
+
this.payload = payload;
|
|
124
|
+
this.themeColors = this.parseTheme(theme);
|
|
125
|
+
}
|
|
126
|
+
data = {
|
|
127
|
+
datasets: []
|
|
128
|
+
};
|
|
129
|
+
options = defaultOptions();
|
|
130
|
+
themeColors;
|
|
131
|
+
get forecastPayload() {
|
|
132
|
+
if (this.payload) {
|
|
133
|
+
return this.payload;
|
|
134
|
+
} else {
|
|
135
|
+
throw Error("ForecastPayload was not defined");
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
static async create(theme, payload, sourcePayloadConfig) {
|
|
139
|
+
const instance = new _ForecastLineChartConfigBuilder(theme, payload);
|
|
140
|
+
await instance.build(sourcePayloadConfig == null ? void 0 : sourcePayloadConfig.fetch);
|
|
141
|
+
instance.refreshValues();
|
|
142
|
+
return instance;
|
|
143
|
+
}
|
|
144
|
+
async build(includeSources) {
|
|
145
|
+
this.buildOptions();
|
|
146
|
+
await this.buildData(includeSources);
|
|
147
|
+
return this;
|
|
148
|
+
}
|
|
149
|
+
async buildData(includeSources) {
|
|
150
|
+
const forecastData = this.generateDataSetForecastData();
|
|
151
|
+
const datasets = [forecastData];
|
|
152
|
+
if (includeSources) {
|
|
153
|
+
const sourceData = await this.generateDataSetSourcePayloads();
|
|
154
|
+
datasets.unshift(sourceData);
|
|
155
|
+
const lastSourceDataItem = sourceData.data.at(-1);
|
|
156
|
+
forecastData.data.unshift(lastSourceDataItem);
|
|
157
|
+
}
|
|
158
|
+
this.data = {
|
|
159
|
+
datasets
|
|
160
|
+
};
|
|
161
|
+
return this;
|
|
162
|
+
}
|
|
163
|
+
buildOptions() {
|
|
164
|
+
if (this.options.plugins) {
|
|
165
|
+
this.options.plugins.title = this.generateTitle();
|
|
166
|
+
this.options.plugins.legend = this.generateLegend();
|
|
167
|
+
}
|
|
168
|
+
this.options.scales = this.generateScales();
|
|
169
|
+
return this;
|
|
170
|
+
}
|
|
171
|
+
refreshValues() {
|
|
172
|
+
this.data = { ...this.data };
|
|
173
|
+
this.options = { ...this.options };
|
|
174
|
+
}
|
|
175
|
+
generateLegend() {
|
|
176
|
+
return {
|
|
177
|
+
labels: {
|
|
178
|
+
pointStyle: "circle",
|
|
179
|
+
usePointStyle: true
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
generateScales() {
|
|
184
|
+
var _a, _b;
|
|
185
|
+
return {
|
|
186
|
+
x: {
|
|
187
|
+
grid: {
|
|
188
|
+
color: (_a = this.themeColors) == null ? void 0 : _a.gridColor
|
|
189
|
+
},
|
|
190
|
+
time: {
|
|
191
|
+
unit: "minute"
|
|
192
|
+
},
|
|
193
|
+
type: "time"
|
|
194
|
+
},
|
|
195
|
+
y: {
|
|
196
|
+
grid: {
|
|
197
|
+
color: (_b = this.themeColors) == null ? void 0 : _b.gridColor
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
generateTitle() {
|
|
203
|
+
var _a;
|
|
204
|
+
return {
|
|
205
|
+
display: true,
|
|
206
|
+
text: `Gas Price Forecaster (GWEI over time from ${((_a = this.forecastPayload) == null ? void 0 : _a.values[0].timestamp) ? new Date(this.forecastPayload.values[0].timestamp).toLocaleDateString() : ""})`
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
parseTheme(theme) {
|
|
210
|
+
const dark = theme.palette.mode === "dark";
|
|
211
|
+
return {
|
|
212
|
+
dataSetColorPrimary: theme.palette.primary.light,
|
|
213
|
+
dataSetColorSecondary: theme.palette.secondary.light,
|
|
214
|
+
gridColor: dark ? theme.palette.grey[800] : theme.palette.grey[300]
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
generateDataSetForecastData() {
|
|
218
|
+
var _a, _b;
|
|
219
|
+
return {
|
|
220
|
+
borderDash: [5],
|
|
221
|
+
borderDashOffset: 0.5,
|
|
222
|
+
data: this.forecastPayload.values.map((price) => ({ x: price.timestamp ?? 0, y: price.value })),
|
|
223
|
+
label: "Forecast Price",
|
|
224
|
+
...DataPointStyles((_a = this.themeColors) == null ? void 0 : _a.dataSetColorPrimary),
|
|
225
|
+
...DataLineStyles((_b = this.themeColors) == null ? void 0 : _b.dataSetColorPrimary)
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
async generateDataSetSourcePayloads() {
|
|
229
|
+
var _a, _b;
|
|
230
|
+
const { sourcePrices } = await SourcePayloads.build("feePerGas.medium");
|
|
231
|
+
return {
|
|
232
|
+
data: sourcePrices,
|
|
233
|
+
label: "Source Prices",
|
|
234
|
+
...DataLineStyles((_a = this.themeColors) == null ? void 0 : _a.dataSetColorSecondary),
|
|
235
|
+
...DataPointStyles((_b = this.themeColors) == null ? void 0 : _b.dataSetColorSecondary)
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
// src/components/DetailsBox.tsx
|
|
241
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
242
|
+
import_chart.Chart.register(import_chart.CategoryScale, import_chart.TimeScale, import_chart.PointElement, import_chart.LineElement, import_chart.LinearScale, import_chart.Title, import_chart.Tooltip, import_chart.Legend);
|
|
243
|
+
var PriceForecastDetailsBox = ({ payload, ...props }) => {
|
|
244
|
+
const priceForecastPayload = payload;
|
|
245
|
+
const theme = (0, import_material2.useTheme)();
|
|
246
|
+
const [data, setData] = (0, import_react.useState)({ datasets: [] });
|
|
247
|
+
const [options, setOptions] = (0, import_react.useState)({});
|
|
248
|
+
(0, import_react_async_effect.useAsyncEffect)(
|
|
249
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
250
|
+
async (mounted) => {
|
|
251
|
+
const { data: data2, options: options2 } = await ForecastLineChartConfigBuilder.create(theme, priceForecastPayload, { fetch: true });
|
|
252
|
+
if (mounted()) {
|
|
253
|
+
setData(data2);
|
|
254
|
+
setOptions(options2);
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
[priceForecastPayload, theme]
|
|
258
|
+
);
|
|
259
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_flexbox.FlexCol, { ...props, busy: priceForecastPayload === void 0, minHeight: "25vh", children: priceForecastPayload ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_chartjs_2.Line, { options, data }) : null });
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
// src/Plugin.ts
|
|
263
|
+
var import_react_payload_plugin = require("@xyo-network/react-payload-plugin");
|
|
264
|
+
var PriceForecastRenderPlugin = {
|
|
265
|
+
...(0, import_react_payload_plugin.createPayloadRenderPlugin)({
|
|
266
|
+
canRender: () => true,
|
|
267
|
+
components: {
|
|
268
|
+
box: {
|
|
269
|
+
detailsBox: PriceForecastDetailsBox
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
name: "PriceForecast"
|
|
273
|
+
})
|
|
274
|
+
};
|
|
275
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
276
|
+
0 && (module.exports = {
|
|
277
|
+
PriceForecastDetailsBox,
|
|
278
|
+
PriceForecastRenderPlugin
|
|
279
|
+
});
|
|
280
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/components/DetailsBox.tsx","../../src/lib/DataLineStyles.ts","../../src/lib/DataPointStyles.ts","../../src/lib/MockSourcePayloads.ts","../../src/lib/SourcePayloads.ts","../../src/lib/ForecastLineChartConfigBuilder.ts","../../src/Plugin.ts"],"sourcesContent":["export * from './components'\nexport * from './Plugin'\n","import 'chartjs-adapter-luxon'\n\nimport { useTheme } from '@mui/material'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { ForecastPayload } from '@xyo-network/diviner-forecasting-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport {\n CategoryScale,\n Chart as ChartJS,\n ChartData,\n ChartOptions,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n TimeScale,\n Title,\n Tooltip,\n} from 'chart.js'\nimport { useState } from 'react'\nimport { Line } from 'react-chartjs-2'\n\nimport { ForecastLineChartConfigBuilder } from '../lib'\n\nChartJS.register(CategoryScale, TimeScale, PointElement, LineElement, LinearScale, Title, Tooltip, Legend)\n\nexport interface PriceForecastDetailsBoxProps extends FlexBoxProps {\n payload?: Payload\n}\n\nexport const PriceForecastDetailsBox: React.FC<PriceForecastDetailsBoxProps> = ({ payload, ...props }) => {\n const priceForecastPayload = payload as ForecastPayload | undefined\n const theme = useTheme()\n const [data, setData] = useState<ChartData<'line'>>({ datasets: [] })\n const [options, setOptions] = useState<ChartOptions<'line'>>({})\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n const { data, options } = await ForecastLineChartConfigBuilder.create(theme, priceForecastPayload, { fetch: true })\n if (mounted()) {\n setData(data)\n setOptions(options)\n }\n },\n [priceForecastPayload, theme],\n )\n\n return (\n <FlexCol {...props} busy={priceForecastPayload === undefined} minHeight=\"25vh\">\n {priceForecastPayload ? <Line options={options} data={data} /> : null}\n </FlexCol>\n )\n}\n","import { alpha } from '@mui/material'\n\nexport const DataLineStyles = (color?: string) => ({\n backgroundColor: color ? alpha(color, 0.5) : undefined,\n borderColor: color,\n})\n","export const DataPointStyles = (pointHoverBackgroundColor?: string) => ({\n pointHitRadius: 20,\n pointHoverBackgroundColor,\n pointHoverRadius: 10,\n pointRadius: 5,\n pointStyle: 'circle',\n})\n","export const MockSourcePayloads = () => {\n const tenMin = 600000\n return [\n {\n baseFee: 38.90155387825,\n feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 39.306868093, veryHigh: 44.45384380525 },\n priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },\n schema: 'network.xyo.blockchain.ethereum.gas',\n timestamp: Date.now() - tenMin,\n },\n {\n baseFee: 38.90155387825,\n feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 100, veryHigh: 44.45384380525 },\n priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },\n schema: 'network.xyo.blockchain.ethereum.gas',\n timestamp: Date.now(),\n },\n ]\n}\n","import { Payload } from '@xyo-network/payload-model'\nimport { Point } from 'chart.js'\n\nimport { MockSourcePayloads } from './MockSourcePayloads'\n\nexport class SourcePayloads {\n sourcePrices: Point[] = []\n\n constructor(public sourcePayloads: Payload[]) {}\n\n get payloads() {\n return this.sourcePayloads\n }\n\n static async build(jsonPath: string) {\n const sourcePayloads = await this.fetchSourcePayloads()\n const instance = new this(sourcePayloads)\n\n const paths = jsonPath.split('.')\n instance.sourcePrices = sourcePayloads.map((payload) => {\n return { x: payload.timestamp, y: instance.jsonPathTraverser(payload, paths) }\n })\n return instance\n }\n\n // TODO - fetch from archivist\n static async fetchSourcePayloads() {\n const payloads = await Promise.resolve(MockSourcePayloads())\n return payloads\n }\n\n jsonPathTraverser(obj: Payload, path: string[]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let result: any = obj\n for (const key of path) {\n if (key in result) {\n const foundKey = key as keyof typeof result\n result = result[foundKey]\n } else {\n result = undefined\n break\n }\n }\n\n return result\n }\n}\n","import { Theme } from '@mui/material'\nimport { ForecastPayload } from '@xyo-network/diviner-forecasting-model'\nimport { ChartData, ChartDataset, ChartOptions, LegendOptions, Point, ScaleChartOptions } from 'chart.js'\n// eslint-disable-next-line import/no-unresolved\nimport { _DeepPartialObject } from 'chart.js/dist/types/utils'\n\nimport { DataLineStyles } from './DataLineStyles'\nimport { DataPointStyles } from './DataPointStyles'\nimport { SourcePayloads } from './SourcePayloads'\n\ninterface SourcePayloadConfig {\n fetch: boolean\n sampleSize?: number\n}\n\ninterface ThemeColors {\n dataSetColorPrimary: string\n dataSetColorSecondary: string\n gridColor: string\n}\n\nconst defaultOptions: () => ChartOptions<'line'> = () => ({\n plugins: {\n legend: {\n position: 'top' as const,\n },\n },\n responsive: true,\n})\n\nexport class ForecastLineChartConfigBuilder {\n data: ChartData<'line'> = {\n datasets: [],\n }\n options: ChartOptions<'line'> = defaultOptions()\n themeColors: ThemeColors | undefined\n\n constructor(\n theme: Theme,\n private payload?: ForecastPayload,\n ) {\n this.themeColors = this.parseTheme(theme)\n }\n\n get forecastPayload() {\n if (this.payload) {\n return this.payload\n } else {\n throw Error('ForecastPayload was not defined')\n }\n }\n\n static async create(theme: Theme, payload?: ForecastPayload, sourcePayloadConfig?: SourcePayloadConfig) {\n const instance = new ForecastLineChartConfigBuilder(theme, payload)\n\n await instance.build(sourcePayloadConfig?.fetch)\n\n instance.refreshValues()\n\n return instance\n }\n\n async build(includeSources?: boolean) {\n this.buildOptions()\n await this.buildData(includeSources)\n return this\n }\n\n async buildData(includeSources?: boolean) {\n const forecastData = this.generateDataSetForecastData()\n\n const datasets: ChartDataset<'line'>[] = [forecastData]\n\n if (includeSources) {\n // build data from sources in forecastPayload\n const sourceData = await this.generateDataSetSourcePayloads()\n datasets.unshift(sourceData)\n\n // add last source point as first item in prediction to connect the lines\n const lastSourceDataItem = sourceData.data.at(-1) as Point\n forecastData.data.unshift(lastSourceDataItem)\n }\n\n this.data = {\n datasets,\n }\n\n return this\n }\n\n buildOptions() {\n if (this.options.plugins) {\n this.options.plugins.title = this.generateTitle()\n this.options.plugins.legend = this.generateLegend()\n }\n this.options.scales = this.generateScales()\n\n return this\n }\n\n refreshValues() {\n this.data = { ...this.data }\n this.options = { ...this.options }\n }\n\n protected generateLegend(): _DeepPartialObject<LegendOptions<'line'>> {\n return {\n labels: {\n pointStyle: 'circle',\n usePointStyle: true,\n },\n }\n }\n\n protected generateScales(): _DeepPartialObject<ScaleChartOptions<'line'>['scales']> {\n return {\n x: {\n grid: {\n color: this.themeColors?.gridColor,\n },\n time: {\n unit: 'minute',\n },\n type: 'time',\n },\n y: {\n grid: {\n color: this.themeColors?.gridColor,\n },\n },\n }\n }\n\n protected generateTitle() {\n return {\n display: true,\n text: `Gas Price Forecaster (GWEI over time from ${\n this.forecastPayload?.values[0].timestamp ? new Date(this.forecastPayload.values[0].timestamp).toLocaleDateString() : ''\n })`,\n }\n }\n\n protected parseTheme(theme: Theme) {\n const dark = theme.palette.mode === 'dark'\n return {\n dataSetColorPrimary: theme.palette.primary.light,\n dataSetColorSecondary: theme.palette.secondary.light,\n gridColor: dark ? theme.palette.grey[800] : theme.palette.grey[300],\n }\n }\n\n private generateDataSetForecastData(): ChartDataset<'line'> {\n return {\n borderDash: [5],\n borderDashOffset: 0.5,\n data: this.forecastPayload.values.map((price) => ({ x: price.timestamp ?? 0, y: price.value })),\n label: 'Forecast Price',\n ...DataPointStyles(this.themeColors?.dataSetColorPrimary),\n ...DataLineStyles(this.themeColors?.dataSetColorPrimary),\n }\n }\n\n private async generateDataSetSourcePayloads(): Promise<ChartDataset<'line'>> {\n const { sourcePrices } = await SourcePayloads.build('feePerGas.medium')\n return {\n data: sourcePrices,\n label: 'Source Prices',\n ...DataLineStyles(this.themeColors?.dataSetColorSecondary),\n ...DataPointStyles(this.themeColors?.dataSetColorSecondary),\n }\n }\n}\n","import { createPayloadRenderPlugin, PayloadRenderPlugin } from '@xyo-network/react-payload-plugin'\n\nimport { PriceForecastDetailsBox } from './components'\n\nexport const PriceForecastRenderPlugin: PayloadRenderPlugin = {\n ...createPayloadRenderPlugin({\n canRender: () => true,\n components: {\n box: {\n detailsBox: PriceForecastDetailsBox,\n },\n },\n name: 'PriceForecast',\n }),\n}\n"],"mappings":"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","names":["import_material","ChartJS","data","options"]}
|
|
@@ -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":"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":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA"}
|
|
@@ -120,7 +120,7 @@ var ForecastLineChartConfigBuilder = class _ForecastLineChartConfigBuilder {
|
|
|
120
120
|
}
|
|
121
121
|
static async create(theme, payload, sourcePayloadConfig) {
|
|
122
122
|
const instance = new _ForecastLineChartConfigBuilder(theme, payload);
|
|
123
|
-
await instance.build(sourcePayloadConfig
|
|
123
|
+
await instance.build(sourcePayloadConfig == null ? void 0 : sourcePayloadConfig.fetch);
|
|
124
124
|
instance.refreshValues();
|
|
125
125
|
return instance;
|
|
126
126
|
}
|
|
@@ -164,10 +164,11 @@ var ForecastLineChartConfigBuilder = class _ForecastLineChartConfigBuilder {
|
|
|
164
164
|
};
|
|
165
165
|
}
|
|
166
166
|
generateScales() {
|
|
167
|
+
var _a, _b;
|
|
167
168
|
return {
|
|
168
169
|
x: {
|
|
169
170
|
grid: {
|
|
170
|
-
color: this.themeColors
|
|
171
|
+
color: (_a = this.themeColors) == null ? void 0 : _a.gridColor
|
|
171
172
|
},
|
|
172
173
|
time: {
|
|
173
174
|
unit: "minute"
|
|
@@ -176,15 +177,16 @@ var ForecastLineChartConfigBuilder = class _ForecastLineChartConfigBuilder {
|
|
|
176
177
|
},
|
|
177
178
|
y: {
|
|
178
179
|
grid: {
|
|
179
|
-
color: this.themeColors
|
|
180
|
+
color: (_b = this.themeColors) == null ? void 0 : _b.gridColor
|
|
180
181
|
}
|
|
181
182
|
}
|
|
182
183
|
};
|
|
183
184
|
}
|
|
184
185
|
generateTitle() {
|
|
186
|
+
var _a;
|
|
185
187
|
return {
|
|
186
188
|
display: true,
|
|
187
|
-
text: `Gas Price Forecaster (GWEI over time from ${this.forecastPayload
|
|
189
|
+
text: `Gas Price Forecaster (GWEI over time from ${((_a = this.forecastPayload) == null ? void 0 : _a.values[0].timestamp) ? new Date(this.forecastPayload.values[0].timestamp).toLocaleDateString() : ""})`
|
|
188
190
|
};
|
|
189
191
|
}
|
|
190
192
|
parseTheme(theme) {
|
|
@@ -196,22 +198,24 @@ var ForecastLineChartConfigBuilder = class _ForecastLineChartConfigBuilder {
|
|
|
196
198
|
};
|
|
197
199
|
}
|
|
198
200
|
generateDataSetForecastData() {
|
|
201
|
+
var _a, _b;
|
|
199
202
|
return {
|
|
200
203
|
borderDash: [5],
|
|
201
204
|
borderDashOffset: 0.5,
|
|
202
205
|
data: this.forecastPayload.values.map((price) => ({ x: price.timestamp ?? 0, y: price.value })),
|
|
203
206
|
label: "Forecast Price",
|
|
204
|
-
...DataPointStyles(this.themeColors
|
|
205
|
-
...DataLineStyles(this.themeColors
|
|
207
|
+
...DataPointStyles((_a = this.themeColors) == null ? void 0 : _a.dataSetColorPrimary),
|
|
208
|
+
...DataLineStyles((_b = this.themeColors) == null ? void 0 : _b.dataSetColorPrimary)
|
|
206
209
|
};
|
|
207
210
|
}
|
|
208
211
|
async generateDataSetSourcePayloads() {
|
|
212
|
+
var _a, _b;
|
|
209
213
|
const { sourcePrices } = await SourcePayloads.build("feePerGas.medium");
|
|
210
214
|
return {
|
|
211
215
|
data: sourcePrices,
|
|
212
216
|
label: "Source Prices",
|
|
213
|
-
...DataLineStyles(this.themeColors
|
|
214
|
-
...DataPointStyles(this.themeColors
|
|
217
|
+
...DataLineStyles((_a = this.themeColors) == null ? void 0 : _a.dataSetColorSecondary),
|
|
218
|
+
...DataPointStyles((_b = this.themeColors) == null ? void 0 : _b.dataSetColorSecondary)
|
|
215
219
|
};
|
|
216
220
|
}
|
|
217
221
|
};
|
|
@@ -255,4 +259,4 @@ export {
|
|
|
255
259
|
PriceForecastDetailsBox,
|
|
256
260
|
PriceForecastRenderPlugin
|
|
257
261
|
};
|
|
258
|
-
//# sourceMappingURL=index.
|
|
262
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/DetailsBox.tsx","../../src/lib/DataLineStyles.ts","../../src/lib/DataPointStyles.ts","../../src/lib/MockSourcePayloads.ts","../../src/lib/SourcePayloads.ts","../../src/lib/ForecastLineChartConfigBuilder.ts","../../src/Plugin.ts"],"sourcesContent":["import 'chartjs-adapter-luxon'\n\nimport { useTheme } from '@mui/material'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { ForecastPayload } from '@xyo-network/diviner-forecasting-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport {\n CategoryScale,\n Chart as ChartJS,\n ChartData,\n ChartOptions,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n TimeScale,\n Title,\n Tooltip,\n} from 'chart.js'\nimport { useState } from 'react'\nimport { Line } from 'react-chartjs-2'\n\nimport { ForecastLineChartConfigBuilder } from '../lib'\n\nChartJS.register(CategoryScale, TimeScale, PointElement, LineElement, LinearScale, Title, Tooltip, Legend)\n\nexport interface PriceForecastDetailsBoxProps extends FlexBoxProps {\n payload?: Payload\n}\n\nexport const PriceForecastDetailsBox: React.FC<PriceForecastDetailsBoxProps> = ({ payload, ...props }) => {\n const priceForecastPayload = payload as ForecastPayload | undefined\n const theme = useTheme()\n const [data, setData] = useState<ChartData<'line'>>({ datasets: [] })\n const [options, setOptions] = useState<ChartOptions<'line'>>({})\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n const { data, options } = await ForecastLineChartConfigBuilder.create(theme, priceForecastPayload, { fetch: true })\n if (mounted()) {\n setData(data)\n setOptions(options)\n }\n },\n [priceForecastPayload, theme],\n )\n\n return (\n <FlexCol {...props} busy={priceForecastPayload === undefined} minHeight=\"25vh\">\n {priceForecastPayload ? <Line options={options} data={data} /> : null}\n </FlexCol>\n )\n}\n","import { alpha } from '@mui/material'\n\nexport const DataLineStyles = (color?: string) => ({\n backgroundColor: color ? alpha(color, 0.5) : undefined,\n borderColor: color,\n})\n","export const DataPointStyles = (pointHoverBackgroundColor?: string) => ({\n pointHitRadius: 20,\n pointHoverBackgroundColor,\n pointHoverRadius: 10,\n pointRadius: 5,\n pointStyle: 'circle',\n})\n","export const MockSourcePayloads = () => {\n const tenMin = 600000\n return [\n {\n baseFee: 38.90155387825,\n feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 39.306868093, veryHigh: 44.45384380525 },\n priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },\n schema: 'network.xyo.blockchain.ethereum.gas',\n timestamp: Date.now() - tenMin,\n },\n {\n baseFee: 38.90155387825,\n feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 100, veryHigh: 44.45384380525 },\n priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },\n schema: 'network.xyo.blockchain.ethereum.gas',\n timestamp: Date.now(),\n },\n ]\n}\n","import { Payload } from '@xyo-network/payload-model'\nimport { Point } from 'chart.js'\n\nimport { MockSourcePayloads } from './MockSourcePayloads'\n\nexport class SourcePayloads {\n sourcePrices: Point[] = []\n\n constructor(public sourcePayloads: Payload[]) {}\n\n get payloads() {\n return this.sourcePayloads\n }\n\n static async build(jsonPath: string) {\n const sourcePayloads = await this.fetchSourcePayloads()\n const instance = new this(sourcePayloads)\n\n const paths = jsonPath.split('.')\n instance.sourcePrices = sourcePayloads.map((payload) => {\n return { x: payload.timestamp, y: instance.jsonPathTraverser(payload, paths) }\n })\n return instance\n }\n\n // TODO - fetch from archivist\n static async fetchSourcePayloads() {\n const payloads = await Promise.resolve(MockSourcePayloads())\n return payloads\n }\n\n jsonPathTraverser(obj: Payload, path: string[]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let result: any = obj\n for (const key of path) {\n if (key in result) {\n const foundKey = key as keyof typeof result\n result = result[foundKey]\n } else {\n result = undefined\n break\n }\n }\n\n return result\n }\n}\n","import { Theme } from '@mui/material'\nimport { ForecastPayload } from '@xyo-network/diviner-forecasting-model'\nimport { ChartData, ChartDataset, ChartOptions, LegendOptions, Point, ScaleChartOptions } from 'chart.js'\n// eslint-disable-next-line import/no-unresolved\nimport { _DeepPartialObject } from 'chart.js/dist/types/utils'\n\nimport { DataLineStyles } from './DataLineStyles'\nimport { DataPointStyles } from './DataPointStyles'\nimport { SourcePayloads } from './SourcePayloads'\n\ninterface SourcePayloadConfig {\n fetch: boolean\n sampleSize?: number\n}\n\ninterface ThemeColors {\n dataSetColorPrimary: string\n dataSetColorSecondary: string\n gridColor: string\n}\n\nconst defaultOptions: () => ChartOptions<'line'> = () => ({\n plugins: {\n legend: {\n position: 'top' as const,\n },\n },\n responsive: true,\n})\n\nexport class ForecastLineChartConfigBuilder {\n data: ChartData<'line'> = {\n datasets: [],\n }\n options: ChartOptions<'line'> = defaultOptions()\n themeColors: ThemeColors | undefined\n\n constructor(\n theme: Theme,\n private payload?: ForecastPayload,\n ) {\n this.themeColors = this.parseTheme(theme)\n }\n\n get forecastPayload() {\n if (this.payload) {\n return this.payload\n } else {\n throw Error('ForecastPayload was not defined')\n }\n }\n\n static async create(theme: Theme, payload?: ForecastPayload, sourcePayloadConfig?: SourcePayloadConfig) {\n const instance = new ForecastLineChartConfigBuilder(theme, payload)\n\n await instance.build(sourcePayloadConfig?.fetch)\n\n instance.refreshValues()\n\n return instance\n }\n\n async build(includeSources?: boolean) {\n this.buildOptions()\n await this.buildData(includeSources)\n return this\n }\n\n async buildData(includeSources?: boolean) {\n const forecastData = this.generateDataSetForecastData()\n\n const datasets: ChartDataset<'line'>[] = [forecastData]\n\n if (includeSources) {\n // build data from sources in forecastPayload\n const sourceData = await this.generateDataSetSourcePayloads()\n datasets.unshift(sourceData)\n\n // add last source point as first item in prediction to connect the lines\n const lastSourceDataItem = sourceData.data.at(-1) as Point\n forecastData.data.unshift(lastSourceDataItem)\n }\n\n this.data = {\n datasets,\n }\n\n return this\n }\n\n buildOptions() {\n if (this.options.plugins) {\n this.options.plugins.title = this.generateTitle()\n this.options.plugins.legend = this.generateLegend()\n }\n this.options.scales = this.generateScales()\n\n return this\n }\n\n refreshValues() {\n this.data = { ...this.data }\n this.options = { ...this.options }\n }\n\n protected generateLegend(): _DeepPartialObject<LegendOptions<'line'>> {\n return {\n labels: {\n pointStyle: 'circle',\n usePointStyle: true,\n },\n }\n }\n\n protected generateScales(): _DeepPartialObject<ScaleChartOptions<'line'>['scales']> {\n return {\n x: {\n grid: {\n color: this.themeColors?.gridColor,\n },\n time: {\n unit: 'minute',\n },\n type: 'time',\n },\n y: {\n grid: {\n color: this.themeColors?.gridColor,\n },\n },\n }\n }\n\n protected generateTitle() {\n return {\n display: true,\n text: `Gas Price Forecaster (GWEI over time from ${\n this.forecastPayload?.values[0].timestamp ? new Date(this.forecastPayload.values[0].timestamp).toLocaleDateString() : ''\n })`,\n }\n }\n\n protected parseTheme(theme: Theme) {\n const dark = theme.palette.mode === 'dark'\n return {\n dataSetColorPrimary: theme.palette.primary.light,\n dataSetColorSecondary: theme.palette.secondary.light,\n gridColor: dark ? theme.palette.grey[800] : theme.palette.grey[300],\n }\n }\n\n private generateDataSetForecastData(): ChartDataset<'line'> {\n return {\n borderDash: [5],\n borderDashOffset: 0.5,\n data: this.forecastPayload.values.map((price) => ({ x: price.timestamp ?? 0, y: price.value })),\n label: 'Forecast Price',\n ...DataPointStyles(this.themeColors?.dataSetColorPrimary),\n ...DataLineStyles(this.themeColors?.dataSetColorPrimary),\n }\n }\n\n private async generateDataSetSourcePayloads(): Promise<ChartDataset<'line'>> {\n const { sourcePrices } = await SourcePayloads.build('feePerGas.medium')\n return {\n data: sourcePrices,\n label: 'Source Prices',\n ...DataLineStyles(this.themeColors?.dataSetColorSecondary),\n ...DataPointStyles(this.themeColors?.dataSetColorSecondary),\n }\n }\n}\n","import { createPayloadRenderPlugin, PayloadRenderPlugin } from '@xyo-network/react-payload-plugin'\n\nimport { PriceForecastDetailsBox } from './components'\n\nexport const PriceForecastRenderPlugin: PayloadRenderPlugin = {\n ...createPayloadRenderPlugin({\n canRender: () => true,\n components: {\n box: {\n detailsBox: PriceForecastDetailsBox,\n },\n },\n name: 'PriceForecast',\n }),\n}\n"],"mappings":"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","names":["data","options"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/lib/DataLineStyles.ts
|
|
21
|
+
var DataLineStyles_exports = {};
|
|
22
|
+
__export(DataLineStyles_exports, {
|
|
23
|
+
DataLineStyles: () => DataLineStyles
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(DataLineStyles_exports);
|
|
26
|
+
var import_material = require("@mui/material");
|
|
27
|
+
var DataLineStyles = (color) => ({
|
|
28
|
+
backgroundColor: color ? (0, import_material.alpha)(color, 0.5) : void 0,
|
|
29
|
+
borderColor: color
|
|
30
|
+
});
|
|
31
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
32
|
+
0 && (module.exports = {
|
|
33
|
+
DataLineStyles
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=DataLineStyles.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/DataLineStyles.ts"],"sourcesContent":["import { alpha } from '@mui/material'\n\nexport const DataLineStyles = (color?: string) => ({\n backgroundColor: color ? alpha(color, 0.5) : undefined,\n borderColor: color,\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAsB;AAEf,IAAM,iBAAiB,CAAC,WAAoB;AAAA,EACjD,iBAAiB,YAAQ,uBAAM,OAAO,GAAG,IAAI;AAAA,EAC7C,aAAa;AACf;","names":[]}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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,10 @@
|
|
|
1
|
+
// src/lib/DataLineStyles.ts
|
|
2
|
+
import { alpha } from "@mui/material";
|
|
3
|
+
var DataLineStyles = (color) => ({
|
|
4
|
+
backgroundColor: color ? alpha(color, 0.5) : void 0,
|
|
5
|
+
borderColor: color
|
|
6
|
+
});
|
|
7
|
+
export {
|
|
8
|
+
DataLineStyles
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=DataLineStyles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/DataLineStyles.ts"],"sourcesContent":["import { alpha } from '@mui/material'\n\nexport const DataLineStyles = (color?: string) => ({\n backgroundColor: color ? alpha(color, 0.5) : undefined,\n borderColor: color,\n})\n"],"mappings":";AAAA,SAAS,aAAa;AAEf,IAAM,iBAAiB,CAAC,WAAoB;AAAA,EACjD,iBAAiB,QAAQ,MAAM,OAAO,GAAG,IAAI;AAAA,EAC7C,aAAa;AACf;","names":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/lib/DataPointStyles.ts
|
|
21
|
+
var DataPointStyles_exports = {};
|
|
22
|
+
__export(DataPointStyles_exports, {
|
|
23
|
+
DataPointStyles: () => DataPointStyles
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(DataPointStyles_exports);
|
|
26
|
+
var DataPointStyles = (pointHoverBackgroundColor) => ({
|
|
27
|
+
pointHitRadius: 20,
|
|
28
|
+
pointHoverBackgroundColor,
|
|
29
|
+
pointHoverRadius: 10,
|
|
30
|
+
pointRadius: 5,
|
|
31
|
+
pointStyle: "circle"
|
|
32
|
+
});
|
|
33
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
34
|
+
0 && (module.exports = {
|
|
35
|
+
DataPointStyles
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=DataPointStyles.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/DataPointStyles.ts"],"sourcesContent":["export const DataPointStyles = (pointHoverBackgroundColor?: string) => ({\n pointHitRadius: 20,\n pointHoverBackgroundColor,\n pointHoverRadius: 10,\n pointRadius: 5,\n pointStyle: 'circle',\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM,kBAAkB,CAAC,+BAAwC;AAAA,EACtE,gBAAgB;AAAA,EAChB;AAAA,EACA,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,YAAY;AACd;","names":[]}
|
|
@@ -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,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,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,12 @@
|
|
|
1
|
+
// src/lib/DataPointStyles.ts
|
|
2
|
+
var DataPointStyles = (pointHoverBackgroundColor) => ({
|
|
3
|
+
pointHitRadius: 20,
|
|
4
|
+
pointHoverBackgroundColor,
|
|
5
|
+
pointHoverRadius: 10,
|
|
6
|
+
pointRadius: 5,
|
|
7
|
+
pointStyle: "circle"
|
|
8
|
+
});
|
|
9
|
+
export {
|
|
10
|
+
DataPointStyles
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=DataPointStyles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/DataPointStyles.ts"],"sourcesContent":["export const DataPointStyles = (pointHoverBackgroundColor?: string) => ({\n pointHitRadius: 20,\n pointHoverBackgroundColor,\n pointHoverRadius: 10,\n pointRadius: 5,\n pointStyle: 'circle',\n})\n"],"mappings":";AAAO,IAAM,kBAAkB,CAAC,+BAAwC;AAAA,EACtE,gBAAgB;AAAA,EAChB;AAAA,EACA,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,YAAY;AACd;","names":[]}
|