@oanda/labs-order-book-widget 1.0.22 → 1.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +252 -0
- package/dist/main/OrderBookWidget/Main.js +6 -2
- package/dist/main/OrderBookWidget/Main.js.map +1 -1
- package/dist/main/OrderBookWidget/OrderBookWidget.js +10 -3
- package/dist/main/OrderBookWidget/OrderBookWidget.js.map +1 -1
- package/dist/main/OrderBookWidget/render.js +3 -1
- package/dist/main/OrderBookWidget/render.js.map +1 -1
- package/dist/main/OrderBookWidget/types.js.map +1 -1
- package/dist/main/translations/index.js +19 -0
- package/dist/main/translations/index.js.map +1 -0
- package/dist/main/translations/sources/en.json +4 -0
- package/dist/main/translations/sources/zh_TW.json +4 -0
- package/dist/main/translations/translations.js +8 -0
- package/dist/main/translations/translations.js.map +1 -0
- package/dist/module/OrderBookWidget/Main.js +6 -2
- package/dist/module/OrderBookWidget/Main.js.map +1 -1
- package/dist/module/OrderBookWidget/OrderBookWidget.js +10 -3
- package/dist/module/OrderBookWidget/OrderBookWidget.js.map +1 -1
- package/dist/module/OrderBookWidget/render.js +3 -1
- package/dist/module/OrderBookWidget/render.js.map +1 -1
- package/dist/module/OrderBookWidget/types.js.map +1 -1
- package/dist/module/translations/index.js +12 -0
- package/dist/module/translations/index.js.map +1 -0
- package/dist/module/translations/sources/en.json +4 -0
- package/dist/module/translations/sources/zh_TW.json +4 -0
- package/dist/module/translations/translations.js +2 -0
- package/dist/module/translations/translations.js.map +1 -0
- package/dist/types/OrderBookWidget/OrderBookWidget.d.ts +1 -1
- package/dist/types/OrderBookWidget/types.d.ts +2 -0
- package/dist/types/translations/index.d.ts +4 -0
- package/dist/types/translations/translations.d.ts +1 -0
- package/lokalise.config.json +18 -0
- package/package.json +4 -3
- package/src/OrderBookWidget/Main.tsx +4 -2
- package/src/OrderBookWidget/OrderBookWidget.tsx +11 -5
- package/src/OrderBookWidget/render.tsx +2 -0
- package/src/OrderBookWidget/types.ts +3 -0
- package/src/translations/index.ts +13 -0
- package/src/translations/sources/en.json +4 -0
- package/src/translations/sources/zh_TW.json +4 -0
- package/src/translations/translations.ts +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,258 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 1.0.25 (2023-10-17)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## 1.0.24 (2023-10-13)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## 1.0.23 (2023-10-13)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## 1.0.22 (2023-10-11)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## 1.0.21 (2023-10-10)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## 1.0.20 (2023-10-06)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## 1.0.19 (2023-10-06)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## 1.0.18 (2023-10-05)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## 1.0.17 (2023-10-04)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
## 1.0.16 (2023-10-04)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## 1.0.15 (2023-10-04)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## 1.0.14 (2023-10-03)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## 1.0.13 (2023-10-03)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## 1.0.12 (2023-10-03)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
## 1.0.11 (2023-10-02)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
## 1.0.10 (2023-09-29)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## 1.0.9 (2023-09-28)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## 1.0.8 (2023-09-27)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## 1.0.7 (2023-09-26)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
## 1.0.6 (2023-09-21)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
## 1.0.5 (2023-09-13)
|
|
87
|
+
|
|
88
|
+
**Note:** Version bump only for package @oanda/labs-order-book-widget
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
## 1.0.24 (2023-10-13)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## 1.0.23 (2023-10-13)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
## 1.0.22 (2023-10-11)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
## 1.0.21 (2023-10-10)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
## 1.0.20 (2023-10-06)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
## 1.0.19 (2023-10-06)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
## 1.0.18 (2023-10-05)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
## 1.0.17 (2023-10-04)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
## 1.0.16 (2023-10-04)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
## 1.0.15 (2023-10-04)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
## 1.0.14 (2023-10-03)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
## 1.0.13 (2023-10-03)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
## 1.0.12 (2023-10-03)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
## 1.0.11 (2023-10-02)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
## 1.0.10 (2023-09-29)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
## 1.0.9 (2023-09-28)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
## 1.0.8 (2023-09-27)
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
## 1.0.7 (2023-09-26)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
## 1.0.6 (2023-09-21)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
## 1.0.5 (2023-09-13)
|
|
171
|
+
|
|
172
|
+
**Note:** Version bump only for package @oanda/labs-order-book-widget
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
## 1.0.23 (2023-10-13)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
## 1.0.22 (2023-10-11)
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
## 1.0.21 (2023-10-10)
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
## 1.0.20 (2023-10-06)
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
## 1.0.19 (2023-10-06)
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
## 1.0.18 (2023-10-05)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
## 1.0.17 (2023-10-04)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
## 1.0.16 (2023-10-04)
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
## 1.0.15 (2023-10-04)
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
## 1.0.14 (2023-10-03)
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
## 1.0.13 (2023-10-03)
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
## 1.0.12 (2023-10-03)
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
## 1.0.11 (2023-10-02)
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
## 1.0.10 (2023-09-29)
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
## 1.0.9 (2023-09-28)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
## 1.0.8 (2023-09-27)
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
## 1.0.7 (2023-09-26)
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
## 1.0.6 (2023-09-21)
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
## 1.0.5 (2023-09-13)
|
|
251
|
+
|
|
252
|
+
**Note:** Version bump only for package @oanda/labs-order-book-widget
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
6
258
|
## 1.0.22 (2023-10-11)
|
|
7
259
|
|
|
8
260
|
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.Main = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _labsWidgetCommon = require("@oanda/labs-widget-common");
|
|
9
|
+
var _monoI18n = require("@oanda/mono-i18n");
|
|
9
10
|
var _Chart = require("./components/Chart/Chart");
|
|
10
11
|
var _types = require("./types");
|
|
11
12
|
var _utils = require("./utils");
|
|
@@ -21,6 +22,9 @@ const Main = _ref => {
|
|
|
21
22
|
const [error, setError] = (0, _react.useState)(undefined);
|
|
22
23
|
const [dataType, setDataType] = (0, _react.useState)(_types.DataType.Order);
|
|
23
24
|
const [data, setData] = (0, _react.useState)(undefined);
|
|
25
|
+
const {
|
|
26
|
+
lang
|
|
27
|
+
} = (0, _monoI18n.useLocale)();
|
|
24
28
|
(0, _react.useEffect)(() => {
|
|
25
29
|
setIsLoading(true);
|
|
26
30
|
setData(undefined);
|
|
@@ -48,10 +52,10 @@ const Main = _ref => {
|
|
|
48
52
|
}, _react.default.createElement(_labsWidgetCommon.Button, {
|
|
49
53
|
variant: isTypeOrder ? _labsWidgetCommon.ButtonVariant.primary : _labsWidgetCommon.ButtonVariant.secondary,
|
|
50
54
|
onClick: () => setDataType(_types.DataType.Order)
|
|
51
|
-
},
|
|
55
|
+
}, lang('order_book')), _react.default.createElement(_labsWidgetCommon.Button, {
|
|
52
56
|
variant: isTypeOrder ? _labsWidgetCommon.ButtonVariant.secondary : _labsWidgetCommon.ButtonVariant.primary,
|
|
53
57
|
onClick: () => setDataType(_types.DataType.Position)
|
|
54
|
-
},
|
|
58
|
+
}, lang('position_book'))), _react.default.createElement("div", {
|
|
55
59
|
className: "lw-relative lw-h-[600px] lw-w-full"
|
|
56
60
|
}, error && _react.default.createElement("div", {
|
|
57
61
|
className: "lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-bg-lightGrey/[0.4]"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","names":["_react","_interopRequireWildcard","require","_labsWidgetCommon","_Chart","_types","_utils","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Main","_ref","apiUrl","instrument","division","isLoading","setIsLoading","useState","error","setError","undefined","dataType","setDataType","DataType","Order","data","setData","useEffect","getData","then","result","orderBooks","length","Position","positionBooks","catch","err","JSON","stringify","isTypeOrder","createElement","className","Button","variant","ButtonVariant","primary","secondary","onClick","ChartError","Spinner","size","SpinnerSize","lg","Chart","exports"],"sources":["../../../src/OrderBookWidget/Main.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport {\n Button, ButtonVariant, ChartError, Spinner, SpinnerSize,\n} from '@oanda/labs-widget-common';\nimport { Chart } from './components/Chart/Chart';\nimport { DataType, MainProps, OrderBookData } from './types';\nimport { getData } from './utils';\n\nconst Main = ({\n apiUrl,\n instrument,\n division,\n}: MainProps) => {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | undefined>(undefined);\n const [dataType, setDataType] = useState(DataType.Order);\n const [data, setData] = useState<OrderBookData[] | undefined>(undefined);\n\n useEffect(() => {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n getData(apiUrl, instrument, division, dataType)\n .then((result) => {\n setIsLoading(false);\n if (dataType === DataType.Order && result?.orderBooks.length > 0) {\n setData(result.orderBooks);\n } else if (dataType === DataType.Position && result?.positionBooks.length > 0) {\n setData(result.positionBooks);\n } else {\n setData(undefined);\n }\n }).catch((err) => {\n setIsLoading(false);\n setError(JSON.stringify(err));\n });\n }, [dataType, apiUrl, instrument, division]);\n\n const isTypeOrder = dataType === DataType.Order;\n\n return (\n <div data-testid=\"order-book-widget\" className=\"lw-border lw-border-solid lw-border-grey lw-p-4 lw-text-sm lw-text-black\">\n <div className=\"lw-flex lw-gap-2\">\n <Button\n variant={isTypeOrder ? ButtonVariant.primary : ButtonVariant.secondary}\n onClick={() => setDataType(DataType.Order)}\n >\n
|
|
1
|
+
{"version":3,"file":"Main.js","names":["_react","_interopRequireWildcard","require","_labsWidgetCommon","_monoI18n","_Chart","_types","_utils","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Main","_ref","apiUrl","instrument","division","isLoading","setIsLoading","useState","error","setError","undefined","dataType","setDataType","DataType","Order","data","setData","lang","useLocale","useEffect","getData","then","result","orderBooks","length","Position","positionBooks","catch","err","JSON","stringify","isTypeOrder","createElement","className","Button","variant","ButtonVariant","primary","secondary","onClick","ChartError","Spinner","size","SpinnerSize","lg","Chart","exports"],"sources":["../../../src/OrderBookWidget/Main.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport {\n Button, ButtonVariant, ChartError, Spinner, SpinnerSize,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { Chart } from './components/Chart/Chart';\nimport { DataType, MainProps, OrderBookData } from './types';\nimport { getData } from './utils';\n\nconst Main = ({\n apiUrl,\n instrument,\n division,\n}: MainProps) => {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | undefined>(undefined);\n const [dataType, setDataType] = useState(DataType.Order);\n const [data, setData] = useState<OrderBookData[] | undefined>(undefined);\n const { lang } = useLocale();\n\n useEffect(() => {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n getData(apiUrl, instrument, division, dataType)\n .then((result) => {\n setIsLoading(false);\n if (dataType === DataType.Order && result?.orderBooks.length > 0) {\n setData(result.orderBooks);\n } else if (dataType === DataType.Position && result?.positionBooks.length > 0) {\n setData(result.positionBooks);\n } else {\n setData(undefined);\n }\n }).catch((err) => {\n setIsLoading(false);\n setError(JSON.stringify(err));\n });\n }, [dataType, apiUrl, instrument, division]);\n\n const isTypeOrder = dataType === DataType.Order;\n\n return (\n <div data-testid=\"order-book-widget\" className=\"lw-border lw-border-solid lw-border-grey lw-p-4 lw-text-sm lw-text-black\">\n <div className=\"lw-flex lw-gap-2\">\n <Button\n variant={isTypeOrder ? ButtonVariant.primary : ButtonVariant.secondary}\n onClick={() => setDataType(DataType.Order)}\n >\n {lang('order_book')}\n </Button>\n <Button\n variant={isTypeOrder ? ButtonVariant.secondary : ButtonVariant.primary}\n onClick={() => setDataType(DataType.Position)}\n >\n {lang('position_book')}\n </Button>\n </div>\n {/* @todo: chart height */}\n <div className=\"lw-relative lw-h-[600px] lw-w-full\">\n {error && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-bg-lightGrey/[0.4]\">\n <ChartError />\n </div>\n )}\n {isLoading && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-bg-lightGrey/[0.4]\">\n <Spinner size={SpinnerSize.lg} />\n </div>\n )}\n {data && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full\">\n <Chart data={data[data.length - 1]} isTypeOrder={isTypeOrder} />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport { Main };\n"],"mappings":"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"}
|
|
@@ -5,19 +5,26 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.OrderBookWidget = void 0;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _monoI18n = require("@oanda/mono-i18n");
|
|
9
|
+
var _labsWidgetCommon = require("@oanda/labs-widget-common");
|
|
8
10
|
var _Main = require("./Main");
|
|
11
|
+
var _translations = require("../translations");
|
|
9
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
13
|
const OrderBookWidget = _ref => {
|
|
11
14
|
let {
|
|
12
15
|
apiUrl,
|
|
13
16
|
instrument,
|
|
14
|
-
division
|
|
17
|
+
division,
|
|
18
|
+
locale
|
|
15
19
|
} = _ref;
|
|
16
|
-
return _react.default.createElement(
|
|
20
|
+
return _react.default.createElement(_monoI18n.LocaleProvider, {
|
|
21
|
+
locale: (0, _labsWidgetCommon.getLocale)(locale),
|
|
22
|
+
translations: _translations.translations
|
|
23
|
+
}, _react.default.createElement(_Main.Main, {
|
|
17
24
|
apiUrl: apiUrl,
|
|
18
25
|
instrument: instrument,
|
|
19
26
|
division: division
|
|
20
|
-
});
|
|
27
|
+
}));
|
|
21
28
|
};
|
|
22
29
|
exports.OrderBookWidget = OrderBookWidget;
|
|
23
30
|
//# sourceMappingURL=OrderBookWidget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderBookWidget.js","names":["_react","_interopRequireDefault","require","_Main","obj","__esModule","default","OrderBookWidget","_ref","apiUrl","instrument","division","createElement","Main","exports"],"sources":["../../../src/OrderBookWidget/OrderBookWidget.tsx"],"sourcesContent":["import React from 'react';\nimport { Main } from './Main';\nimport { OrderBookWidgetConfig } from './types';\n\nconst OrderBookWidget = ({\n apiUrl,\n instrument,\n division,\n}: OrderBookWidgetConfig) => (\n <Main\n
|
|
1
|
+
{"version":3,"file":"OrderBookWidget.js","names":["_react","_interopRequireDefault","require","_monoI18n","_labsWidgetCommon","_Main","_translations","obj","__esModule","default","OrderBookWidget","_ref","apiUrl","instrument","division","locale","createElement","LocaleProvider","getLocale","translations","Main","exports"],"sources":["../../../src/OrderBookWidget/OrderBookWidget.tsx"],"sourcesContent":["import React from 'react';\nimport { LocaleProvider } from '@oanda/mono-i18n';\nimport { getLocale } from '@oanda/labs-widget-common';\nimport { Main } from './Main';\nimport { OrderBookWidgetConfig } from './types';\nimport { translations } from '../translations';\n\nconst OrderBookWidget = ({\n apiUrl,\n instrument,\n division,\n locale,\n}: OrderBookWidgetConfig) => (\n <LocaleProvider locale={getLocale(locale)} translations={translations}>\n <Main\n apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />\n </LocaleProvider>\n);\n\nexport { OrderBookWidget };\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAEA,IAAAI,aAAA,GAAAJ,OAAA;AAA+C,SAAAD,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE/C,MAAMG,eAAe,GAAGC,IAAA;EAAA,IAAC;IACvBC,MAAM;IACNC,UAAU;IACVC,QAAQ;IACRC;EACqB,CAAC,GAAAJ,IAAA;EAAA,OACtBX,MAAA,CAAAS,OAAA,CAAAO,aAAA,CAACb,SAAA,CAAAc,cAAc;IAACF,MAAM,EAAE,IAAAG,2BAAS,EAACH,MAAM,CAAE;IAACI,YAAY,EAAEA;EAAa,GACpEnB,MAAA,CAAAS,OAAA,CAAAO,aAAA,CAACX,KAAA,CAAAe,IAAI;IACHR,MAAM,EAAEA,MAAO;IACfC,UAAU,EAAEA,UAAW;IACvBC,QAAQ,EAAEA;EAAS,CACpB,CACa,CAAC;AAAA,CAClB;AAACO,OAAA,CAAAX,eAAA,GAAAA,eAAA"}
|
|
@@ -8,9 +8,11 @@ const {
|
|
|
8
8
|
apiUrl,
|
|
9
9
|
instrument,
|
|
10
10
|
division,
|
|
11
|
-
renderElementId
|
|
11
|
+
renderElementId,
|
|
12
|
+
locale
|
|
12
13
|
} = window.orderBookWidgetConfig;
|
|
13
14
|
(0, _reactDom.render)(_react.default.createElement(_OrderBookWidget.OrderBookWidget, {
|
|
15
|
+
locale: locale,
|
|
14
16
|
apiUrl: apiUrl,
|
|
15
17
|
instrument: instrument,
|
|
16
18
|
division: division
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","names":["_react","_interopRequireDefault","require","_reactDom","_OrderBookWidget","obj","__esModule","default","apiUrl","instrument","division","renderElementId","window","orderBookWidgetConfig","render","createElement","OrderBookWidget","document","getElementById"],"sources":["../../../src/OrderBookWidget/render.tsx"],"sourcesContent":["import React from 'react';\nimport { render } from 'react-dom';\nimport { OrderBookWidget } from './OrderBookWidget';\nimport { OrderBookWrapperConfig } from './types';\n\ndeclare global {\n interface Window {\n orderBookWidgetConfig: OrderBookWrapperConfig;\n }\n}\n\nconst {\n apiUrl,\n instrument,\n division,\n renderElementId,\n} = window.orderBookWidgetConfig;\n\nrender(\n <OrderBookWidget\n apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />,\n document.getElementById(renderElementId),\n);\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAAoD,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AASpD,MAAM;EACJG,MAAM;EACNC,UAAU;EACVC,QAAQ;EACRC;AACF,CAAC,GAAGC,MAAM,CAACC,qBAAqB;AAEhC,IAAAC,gBAAM,
|
|
1
|
+
{"version":3,"file":"render.js","names":["_react","_interopRequireDefault","require","_reactDom","_OrderBookWidget","obj","__esModule","default","apiUrl","instrument","division","renderElementId","locale","window","orderBookWidgetConfig","render","createElement","OrderBookWidget","document","getElementById"],"sources":["../../../src/OrderBookWidget/render.tsx"],"sourcesContent":["import React from 'react';\nimport { render } from 'react-dom';\nimport { OrderBookWidget } from './OrderBookWidget';\nimport { OrderBookWrapperConfig } from './types';\n\ndeclare global {\n interface Window {\n orderBookWidgetConfig: OrderBookWrapperConfig;\n }\n}\n\nconst {\n apiUrl,\n instrument,\n division,\n renderElementId,\n locale,\n} = window.orderBookWidgetConfig;\n\nrender(\n <OrderBookWidget\n locale={locale}\n apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />,\n document.getElementById(renderElementId),\n);\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAAoD,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AASpD,MAAM;EACJG,MAAM;EACNC,UAAU;EACVC,QAAQ;EACRC,eAAe;EACfC;AACF,CAAC,GAAGC,MAAM,CAACC,qBAAqB;AAEhC,IAAAC,gBAAM,EACJf,MAAA,CAAAO,OAAA,CAAAS,aAAA,CAACZ,gBAAA,CAAAa,eAAe;EACdL,MAAM,EAAEA,MAAO;EACfJ,MAAM,EAAEA,MAAO;EACfC,UAAU,EAAEA,UAAW;EACvBC,QAAQ,EAAEA;AAAS,CACpB,CAAC,EACFQ,QAAQ,CAACC,cAAc,CAACR,eAAe,CACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["DataType","exports"],"sources":["../../../src/OrderBookWidget/types.ts"],"sourcesContent":["// @todo get from graphql schema\nexport interface OrderBookData {\n instrument: string;\n price: string;\n bucketWidth: string;\n buckets: {\n price: string;\n longCountPercent: string;\n shortCountPercent: string;\n }[];\n time: string;\n unixTime: string;\n region: string;\n division: string;\n}\n\nexport enum DataType {\n Order = 'ORDER',\n Position = 'POSITION',\n}\nexport interface OrderBookWidgetConfig {\n apiUrl: string;\n instrument: string;\n division: string;\n}\n\nexport interface OrderBookWrapperConfig extends OrderBookWidgetConfig {\n renderElementId: string;\n}\n\nexport interface MainProps {\n apiUrl: string;\n instrument: string;\n division: string;\n}\n"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"types.js","names":["DataType","exports"],"sources":["../../../src/OrderBookWidget/types.ts"],"sourcesContent":["import { Locale } from '@oanda/mono-i18n';\n\n// @todo get from graphql schema\nexport interface OrderBookData {\n instrument: string;\n price: string;\n bucketWidth: string;\n buckets: {\n price: string;\n longCountPercent: string;\n shortCountPercent: string;\n }[];\n time: string;\n unixTime: string;\n region: string;\n division: string;\n}\n\nexport enum DataType {\n Order = 'ORDER',\n Position = 'POSITION',\n}\nexport interface OrderBookWidgetConfig {\n apiUrl: string;\n instrument: string;\n division: string;\n locale: Locale;\n}\n\nexport interface OrderBookWrapperConfig extends OrderBookWidgetConfig {\n renderElementId: string;\n}\n\nexport interface MainProps {\n apiUrl: string;\n instrument: string;\n division: string;\n}\n"],"mappings":";;;;;;IAkBYA,QAAQ,GAAAC,OAAA,CAAAD,QAAA,aAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.translations = void 0;
|
|
7
|
+
var _monoI18n = require("@oanda/mono-i18n");
|
|
8
|
+
var _en = _interopRequireDefault(require("./sources/en.json"));
|
|
9
|
+
var _zh_TW = _interopRequireDefault(require("./sources/zh_TW.json"));
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
const translations = exports.translations = {
|
|
12
|
+
[_monoI18n.Locale.en]: {
|
|
13
|
+
translation: _en.default
|
|
14
|
+
},
|
|
15
|
+
[_monoI18n.Locale.zhTW]: {
|
|
16
|
+
translation: _zh_TW.default
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_monoI18n","require","_en","_interopRequireDefault","_zh_TW","obj","__esModule","default","translations","exports","Locale","en","translation","zhTW"],"sources":["../../../src/translations/index.ts"],"sourcesContent":["import { Locale, Translations } from '@oanda/mono-i18n';\n\nimport en from './sources/en.json';\nimport zhTW from './sources/zh_TW.json';\n\nimport { defaultTranslations } from './translations';\n\nexport type TranslationKey = keyof typeof defaultTranslations;\n\nexport const translations: Translations = {\n [Locale.en]: { translation: en },\n [Locale.zhTW]: { translation: zhTW },\n};\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,GAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAD,sBAAA,CAAAF,OAAA;AAAwC,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAMjC,MAAMG,YAA0B,GAAAC,OAAA,CAAAD,YAAA,GAAG;EACxC,CAACE,gBAAM,CAACC,EAAE,GAAG;IAAEC,WAAW,EAAED;EAAG,CAAC;EAChC,CAACD,gBAAM,CAACG,IAAI,GAAG;IAAED,WAAW,EAAEC;EAAK;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translations.js","names":["defaultTranslations","exports"],"sources":["../../../src/translations/translations.ts"],"sourcesContent":["export const defaultTranslations = {\n\n};\n"],"mappings":";;;;;;AAAO,MAAMA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,CAEnC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import { Button, ButtonVariant, ChartError, Spinner, SpinnerSize } from '@oanda/labs-widget-common';
|
|
3
|
+
import { useLocale } from '@oanda/mono-i18n';
|
|
3
4
|
import { Chart } from './components/Chart/Chart';
|
|
4
5
|
import { DataType } from './types';
|
|
5
6
|
import { getData } from './utils';
|
|
@@ -13,6 +14,9 @@ const Main = _ref => {
|
|
|
13
14
|
const [error, setError] = useState(undefined);
|
|
14
15
|
const [dataType, setDataType] = useState(DataType.Order);
|
|
15
16
|
const [data, setData] = useState(undefined);
|
|
17
|
+
const {
|
|
18
|
+
lang
|
|
19
|
+
} = useLocale();
|
|
16
20
|
useEffect(() => {
|
|
17
21
|
setIsLoading(true);
|
|
18
22
|
setData(undefined);
|
|
@@ -40,10 +44,10 @@ const Main = _ref => {
|
|
|
40
44
|
}, React.createElement(Button, {
|
|
41
45
|
variant: isTypeOrder ? ButtonVariant.primary : ButtonVariant.secondary,
|
|
42
46
|
onClick: () => setDataType(DataType.Order)
|
|
43
|
-
},
|
|
47
|
+
}, lang('order_book')), React.createElement(Button, {
|
|
44
48
|
variant: isTypeOrder ? ButtonVariant.secondary : ButtonVariant.primary,
|
|
45
49
|
onClick: () => setDataType(DataType.Position)
|
|
46
|
-
},
|
|
50
|
+
}, lang('position_book'))), React.createElement("div", {
|
|
47
51
|
className: "lw-relative lw-h-[600px] lw-w-full"
|
|
48
52
|
}, error && React.createElement("div", {
|
|
49
53
|
className: "lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-bg-lightGrey/[0.4]"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","names":["React","useState","useEffect","Button","ButtonVariant","ChartError","Spinner","SpinnerSize","Chart","DataType","getData","Main","_ref","apiUrl","instrument","division","isLoading","setIsLoading","error","setError","undefined","dataType","setDataType","Order","data","setData","then","result","orderBooks","length","Position","positionBooks","catch","err","JSON","stringify","isTypeOrder","createElement","className","variant","primary","secondary","onClick","size","lg"],"sources":["../../../src/OrderBookWidget/Main.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport {\n Button, ButtonVariant, ChartError, Spinner, SpinnerSize,\n} from '@oanda/labs-widget-common';\nimport { Chart } from './components/Chart/Chart';\nimport { DataType, MainProps, OrderBookData } from './types';\nimport { getData } from './utils';\n\nconst Main = ({\n apiUrl,\n instrument,\n division,\n}: MainProps) => {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | undefined>(undefined);\n const [dataType, setDataType] = useState(DataType.Order);\n const [data, setData] = useState<OrderBookData[] | undefined>(undefined);\n\n useEffect(() => {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n getData(apiUrl, instrument, division, dataType)\n .then((result) => {\n setIsLoading(false);\n if (dataType === DataType.Order && result?.orderBooks.length > 0) {\n setData(result.orderBooks);\n } else if (dataType === DataType.Position && result?.positionBooks.length > 0) {\n setData(result.positionBooks);\n } else {\n setData(undefined);\n }\n }).catch((err) => {\n setIsLoading(false);\n setError(JSON.stringify(err));\n });\n }, [dataType, apiUrl, instrument, division]);\n\n const isTypeOrder = dataType === DataType.Order;\n\n return (\n <div data-testid=\"order-book-widget\" className=\"lw-border lw-border-solid lw-border-grey lw-p-4 lw-text-sm lw-text-black\">\n <div className=\"lw-flex lw-gap-2\">\n <Button\n variant={isTypeOrder ? ButtonVariant.primary : ButtonVariant.secondary}\n onClick={() => setDataType(DataType.Order)}\n >\n
|
|
1
|
+
{"version":3,"file":"Main.js","names":["React","useState","useEffect","Button","ButtonVariant","ChartError","Spinner","SpinnerSize","useLocale","Chart","DataType","getData","Main","_ref","apiUrl","instrument","division","isLoading","setIsLoading","error","setError","undefined","dataType","setDataType","Order","data","setData","lang","then","result","orderBooks","length","Position","positionBooks","catch","err","JSON","stringify","isTypeOrder","createElement","className","variant","primary","secondary","onClick","size","lg"],"sources":["../../../src/OrderBookWidget/Main.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport {\n Button, ButtonVariant, ChartError, Spinner, SpinnerSize,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { Chart } from './components/Chart/Chart';\nimport { DataType, MainProps, OrderBookData } from './types';\nimport { getData } from './utils';\n\nconst Main = ({\n apiUrl,\n instrument,\n division,\n}: MainProps) => {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | undefined>(undefined);\n const [dataType, setDataType] = useState(DataType.Order);\n const [data, setData] = useState<OrderBookData[] | undefined>(undefined);\n const { lang } = useLocale();\n\n useEffect(() => {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n getData(apiUrl, instrument, division, dataType)\n .then((result) => {\n setIsLoading(false);\n if (dataType === DataType.Order && result?.orderBooks.length > 0) {\n setData(result.orderBooks);\n } else if (dataType === DataType.Position && result?.positionBooks.length > 0) {\n setData(result.positionBooks);\n } else {\n setData(undefined);\n }\n }).catch((err) => {\n setIsLoading(false);\n setError(JSON.stringify(err));\n });\n }, [dataType, apiUrl, instrument, division]);\n\n const isTypeOrder = dataType === DataType.Order;\n\n return (\n <div data-testid=\"order-book-widget\" className=\"lw-border lw-border-solid lw-border-grey lw-p-4 lw-text-sm lw-text-black\">\n <div className=\"lw-flex lw-gap-2\">\n <Button\n variant={isTypeOrder ? ButtonVariant.primary : ButtonVariant.secondary}\n onClick={() => setDataType(DataType.Order)}\n >\n {lang('order_book')}\n </Button>\n <Button\n variant={isTypeOrder ? ButtonVariant.secondary : ButtonVariant.primary}\n onClick={() => setDataType(DataType.Position)}\n >\n {lang('position_book')}\n </Button>\n </div>\n {/* @todo: chart height */}\n <div className=\"lw-relative lw-h-[600px] lw-w-full\">\n {error && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-bg-lightGrey/[0.4]\">\n <ChartError />\n </div>\n )}\n {isLoading && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-bg-lightGrey/[0.4]\">\n <Spinner size={SpinnerSize.lg} />\n </div>\n )}\n {data && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full\">\n <Chart data={data[data.length - 1]} isTypeOrder={isTypeOrder} />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport { Main };\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAClD,SACEC,MAAM,EAAEC,aAAa,EAAEC,UAAU,EAAEC,OAAO,EAAEC,WAAW,QAClD,2BAA2B;AAClC,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,KAAK,QAAQ,0BAA0B;AAChD,SAASC,QAAQ,QAAkC,SAAS;AAC5D,SAASC,OAAO,QAAQ,SAAS;AAEjC,MAAMC,IAAI,GAAGC,IAAA,IAII;EAAA,IAJH;IACZC,MAAM;IACNC,UAAU;IACVC;EACS,CAAC,GAAAH,IAAA;EACV,MAAM,CAACI,SAAS,EAAEC,YAAY,CAAC,GAAGjB,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAM,CAACkB,KAAK,EAAEC,QAAQ,CAAC,GAAGnB,QAAQ,CAAqBoB,SAAS,CAAC;EACjE,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGtB,QAAQ,CAACS,QAAQ,CAACc,KAAK,CAAC;EACxD,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGzB,QAAQ,CAA8BoB,SAAS,CAAC;EACxE,MAAM;IAAEM;EAAK,CAAC,GAAGnB,SAAS,CAAC,CAAC;EAE5BN,SAAS,CAAC,MAAM;IACdgB,YAAY,CAAC,IAAI,CAAC;IAClBQ,OAAO,CAACL,SAAS,CAAC;IAClBD,QAAQ,CAACC,SAAS,CAAC;IAEnBV,OAAO,CAACG,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAEM,QAAQ,CAAC,CAC5CM,IAAI,CAAEC,MAAM,IAAK;MAChBX,YAAY,CAAC,KAAK,CAAC;MACnB,IAAII,QAAQ,KAAKZ,QAAQ,CAACc,KAAK,IAAIK,MAAM,EAAEC,UAAU,CAACC,MAAM,GAAG,CAAC,EAAE;QAChEL,OAAO,CAACG,MAAM,CAACC,UAAU,CAAC;MAC5B,CAAC,MAAM,IAAIR,QAAQ,KAAKZ,QAAQ,CAACsB,QAAQ,IAAIH,MAAM,EAAEI,aAAa,CAACF,MAAM,GAAG,CAAC,EAAE;QAC7EL,OAAO,CAACG,MAAM,CAACI,aAAa,CAAC;MAC/B,CAAC,MAAM;QACLP,OAAO,CAACL,SAAS,CAAC;MACpB;IACF,CAAC,CAAC,CAACa,KAAK,CAAEC,GAAG,IAAK;MAChBjB,YAAY,CAAC,KAAK,CAAC;MACnBE,QAAQ,CAACgB,IAAI,CAACC,SAAS,CAACF,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC;EACN,CAAC,EAAE,CAACb,QAAQ,EAAER,MAAM,EAAEC,UAAU,EAAEC,QAAQ,CAAC,CAAC;EAE5C,MAAMsB,WAAW,GAAGhB,QAAQ,KAAKZ,QAAQ,CAACc,KAAK;EAE/C,OACExB,KAAA,CAAAuC,aAAA;IAAK,eAAY,mBAAmB;IAACC,SAAS,EAAC;EAA0E,GACvHxC,KAAA,CAAAuC,aAAA;IAAKC,SAAS,EAAC;EAAkB,GAC/BxC,KAAA,CAAAuC,aAAA,CAACpC,MAAM;IACLsC,OAAO,EAAEH,WAAW,GAAGlC,aAAa,CAACsC,OAAO,GAAGtC,aAAa,CAACuC,SAAU;IACvEC,OAAO,EAAEA,CAAA,KAAMrB,WAAW,CAACb,QAAQ,CAACc,KAAK;EAAE,GAE1CG,IAAI,CAAC,YAAY,CACZ,CAAC,EACT3B,KAAA,CAAAuC,aAAA,CAACpC,MAAM;IACLsC,OAAO,EAAEH,WAAW,GAAGlC,aAAa,CAACuC,SAAS,GAAGvC,aAAa,CAACsC,OAAQ;IACvEE,OAAO,EAAEA,CAAA,KAAMrB,WAAW,CAACb,QAAQ,CAACsB,QAAQ;EAAE,GAE7CL,IAAI,CAAC,eAAe,CACf,CACL,CAAC,EAEN3B,KAAA,CAAAuC,aAAA;IAAKC,SAAS,EAAC;EAAoC,GAChDrB,KAAK,IACJnB,KAAA,CAAAuC,aAAA;IAAKC,SAAS,EAAC;EAAoH,GACjIxC,KAAA,CAAAuC,aAAA,CAAClC,UAAU,MAAE,CACV,CACN,EACAY,SAAS,IACRjB,KAAA,CAAAuC,aAAA;IAAKC,SAAS,EAAC;EAAoH,GACjIxC,KAAA,CAAAuC,aAAA,CAACjC,OAAO;IAACuC,IAAI,EAAEtC,WAAW,CAACuC;EAAG,CAAE,CAC7B,CACN,EACArB,IAAI,IACHzB,KAAA,CAAAuC,aAAA;IAAKC,SAAS,EAAC;EAA4D,GACzExC,KAAA,CAAAuC,aAAA,CAAC9B,KAAK;IAACgB,IAAI,EAAEA,IAAI,CAACA,IAAI,CAACM,MAAM,GAAG,CAAC,CAAE;IAACO,WAAW,EAAEA;EAAY,CAAE,CAC5D,CAEJ,CACF,CAAC;AAEV,CAAC;AAED,SAAS1B,IAAI"}
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { LocaleProvider } from '@oanda/mono-i18n';
|
|
3
|
+
import { getLocale } from '@oanda/labs-widget-common';
|
|
2
4
|
import { Main } from './Main';
|
|
5
|
+
import { translations } from '../translations';
|
|
3
6
|
const OrderBookWidget = _ref => {
|
|
4
7
|
let {
|
|
5
8
|
apiUrl,
|
|
6
9
|
instrument,
|
|
7
|
-
division
|
|
10
|
+
division,
|
|
11
|
+
locale
|
|
8
12
|
} = _ref;
|
|
9
|
-
return React.createElement(
|
|
13
|
+
return React.createElement(LocaleProvider, {
|
|
14
|
+
locale: getLocale(locale),
|
|
15
|
+
translations: translations
|
|
16
|
+
}, React.createElement(Main, {
|
|
10
17
|
apiUrl: apiUrl,
|
|
11
18
|
instrument: instrument,
|
|
12
19
|
division: division
|
|
13
|
-
});
|
|
20
|
+
}));
|
|
14
21
|
};
|
|
15
22
|
export { OrderBookWidget };
|
|
16
23
|
//# sourceMappingURL=OrderBookWidget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderBookWidget.js","names":["React","Main","OrderBookWidget","_ref","apiUrl","instrument","division","createElement"],"sources":["../../../src/OrderBookWidget/OrderBookWidget.tsx"],"sourcesContent":["import React from 'react';\nimport { Main } from './Main';\nimport { OrderBookWidgetConfig } from './types';\n\nconst OrderBookWidget = ({\n apiUrl,\n instrument,\n division,\n}: OrderBookWidgetConfig) => (\n <Main\n
|
|
1
|
+
{"version":3,"file":"OrderBookWidget.js","names":["React","LocaleProvider","getLocale","Main","translations","OrderBookWidget","_ref","apiUrl","instrument","division","locale","createElement"],"sources":["../../../src/OrderBookWidget/OrderBookWidget.tsx"],"sourcesContent":["import React from 'react';\nimport { LocaleProvider } from '@oanda/mono-i18n';\nimport { getLocale } from '@oanda/labs-widget-common';\nimport { Main } from './Main';\nimport { OrderBookWidgetConfig } from './types';\nimport { translations } from '../translations';\n\nconst OrderBookWidget = ({\n apiUrl,\n instrument,\n division,\n locale,\n}: OrderBookWidgetConfig) => (\n <LocaleProvider locale={getLocale(locale)} translations={translations}>\n <Main\n apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />\n </LocaleProvider>\n);\n\nexport { OrderBookWidget };\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SAASC,IAAI,QAAQ,QAAQ;AAE7B,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,eAAe,GAAGC,IAAA;EAAA,IAAC;IACvBC,MAAM;IACNC,UAAU;IACVC,QAAQ;IACRC;EACqB,CAAC,GAAAJ,IAAA;EAAA,OACtBN,KAAA,CAAAW,aAAA,CAACV,cAAc;IAACS,MAAM,EAAER,SAAS,CAACQ,MAAM,CAAE;IAACN,YAAY,EAAEA;EAAa,GACpEJ,KAAA,CAAAW,aAAA,CAACR,IAAI;IACHI,MAAM,EAAEA,MAAO;IACfC,UAAU,EAAEA,UAAW;IACvBC,QAAQ,EAAEA;EAAS,CACpB,CACa,CAAC;AAAA,CAClB;AAED,SAASJ,eAAe"}
|
|
@@ -5,9 +5,11 @@ const {
|
|
|
5
5
|
apiUrl,
|
|
6
6
|
instrument,
|
|
7
7
|
division,
|
|
8
|
-
renderElementId
|
|
8
|
+
renderElementId,
|
|
9
|
+
locale
|
|
9
10
|
} = window.orderBookWidgetConfig;
|
|
10
11
|
render(React.createElement(OrderBookWidget, {
|
|
12
|
+
locale: locale,
|
|
11
13
|
apiUrl: apiUrl,
|
|
12
14
|
instrument: instrument,
|
|
13
15
|
division: division
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","names":["React","render","OrderBookWidget","apiUrl","instrument","division","renderElementId","window","orderBookWidgetConfig","createElement","document","getElementById"],"sources":["../../../src/OrderBookWidget/render.tsx"],"sourcesContent":["import React from 'react';\nimport { render } from 'react-dom';\nimport { OrderBookWidget } from './OrderBookWidget';\nimport { OrderBookWrapperConfig } from './types';\n\ndeclare global {\n interface Window {\n orderBookWidgetConfig: OrderBookWrapperConfig;\n }\n}\n\nconst {\n apiUrl,\n instrument,\n division,\n renderElementId,\n} = window.orderBookWidgetConfig;\n\nrender(\n <OrderBookWidget\n apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />,\n document.getElementById(renderElementId),\n);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,eAAe,QAAQ,mBAAmB;AASnD,MAAM;EACJC,MAAM;EACNC,UAAU;EACVC,QAAQ;EACRC;AACF,CAAC,GAAGC,MAAM,CAACC,qBAAqB;
|
|
1
|
+
{"version":3,"file":"render.js","names":["React","render","OrderBookWidget","apiUrl","instrument","division","renderElementId","locale","window","orderBookWidgetConfig","createElement","document","getElementById"],"sources":["../../../src/OrderBookWidget/render.tsx"],"sourcesContent":["import React from 'react';\nimport { render } from 'react-dom';\nimport { OrderBookWidget } from './OrderBookWidget';\nimport { OrderBookWrapperConfig } from './types';\n\ndeclare global {\n interface Window {\n orderBookWidgetConfig: OrderBookWrapperConfig;\n }\n}\n\nconst {\n apiUrl,\n instrument,\n division,\n renderElementId,\n locale,\n} = window.orderBookWidgetConfig;\n\nrender(\n <OrderBookWidget\n locale={locale}\n apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />,\n document.getElementById(renderElementId),\n);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,eAAe,QAAQ,mBAAmB;AASnD,MAAM;EACJC,MAAM;EACNC,UAAU;EACVC,QAAQ;EACRC,eAAe;EACfC;AACF,CAAC,GAAGC,MAAM,CAACC,qBAAqB;AAEhCR,MAAM,CACJD,KAAA,CAAAU,aAAA,CAACR,eAAe;EACdK,MAAM,EAAEA,MAAO;EACfJ,MAAM,EAAEA,MAAO;EACfC,UAAU,EAAEA,UAAW;EACvBC,QAAQ,EAAEA;AAAS,CACpB,CAAC,EACFM,QAAQ,CAACC,cAAc,CAACN,eAAe,CACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["DataType"],"sources":["../../../src/OrderBookWidget/types.ts"],"sourcesContent":["// @todo get from graphql schema\nexport interface OrderBookData {\n instrument: string;\n price: string;\n bucketWidth: string;\n buckets: {\n price: string;\n longCountPercent: string;\n shortCountPercent: string;\n }[];\n time: string;\n unixTime: string;\n region: string;\n division: string;\n}\n\nexport enum DataType {\n Order = 'ORDER',\n Position = 'POSITION',\n}\nexport interface OrderBookWidgetConfig {\n apiUrl: string;\n instrument: string;\n division: string;\n}\n\nexport interface OrderBookWrapperConfig extends OrderBookWidgetConfig {\n renderElementId: string;\n}\n\nexport interface MainProps {\n apiUrl: string;\n instrument: string;\n division: string;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","names":["DataType"],"sources":["../../../src/OrderBookWidget/types.ts"],"sourcesContent":["import { Locale } from '@oanda/mono-i18n';\n\n// @todo get from graphql schema\nexport interface OrderBookData {\n instrument: string;\n price: string;\n bucketWidth: string;\n buckets: {\n price: string;\n longCountPercent: string;\n shortCountPercent: string;\n }[];\n time: string;\n unixTime: string;\n region: string;\n division: string;\n}\n\nexport enum DataType {\n Order = 'ORDER',\n Position = 'POSITION',\n}\nexport interface OrderBookWidgetConfig {\n apiUrl: string;\n instrument: string;\n division: string;\n locale: Locale;\n}\n\nexport interface OrderBookWrapperConfig extends OrderBookWidgetConfig {\n renderElementId: string;\n}\n\nexport interface MainProps {\n apiUrl: string;\n instrument: string;\n division: string;\n}\n"],"mappings":"AAkBA,WAAYA,QAAQ,aAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Locale } from '@oanda/mono-i18n';
|
|
2
|
+
import en from './sources/en.json';
|
|
3
|
+
import zhTW from './sources/zh_TW.json';
|
|
4
|
+
export const translations = {
|
|
5
|
+
[Locale.en]: {
|
|
6
|
+
translation: en
|
|
7
|
+
},
|
|
8
|
+
[Locale.zhTW]: {
|
|
9
|
+
translation: zhTW
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["Locale","en","zhTW","translations","translation"],"sources":["../../../src/translations/index.ts"],"sourcesContent":["import { Locale, Translations } from '@oanda/mono-i18n';\n\nimport en from './sources/en.json';\nimport zhTW from './sources/zh_TW.json';\n\nimport { defaultTranslations } from './translations';\n\nexport type TranslationKey = keyof typeof defaultTranslations;\n\nexport const translations: Translations = {\n [Locale.en]: { translation: en },\n [Locale.zhTW]: { translation: zhTW },\n};\n"],"mappings":"AAAA,SAASA,MAAM,QAAsB,kBAAkB;AAEvD,OAAOC,EAAE,MAAM,mBAAmB;AAClC,OAAOC,IAAI,MAAM,sBAAsB;AAMvC,OAAO,MAAMC,YAA0B,GAAG;EACxC,CAACH,MAAM,CAACC,EAAE,GAAG;IAAEG,WAAW,EAAEH;EAAG,CAAC;EAChC,CAACD,MAAM,CAACE,IAAI,GAAG;IAAEE,WAAW,EAAEF;EAAK;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translations.js","names":["defaultTranslations"],"sources":["../../../src/translations/translations.ts"],"sourcesContent":["export const defaultTranslations = {\n\n};\n"],"mappings":"AAAA,OAAO,MAAMA,mBAAmB,GAAG,CAEnC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { OrderBookWidgetConfig } from './types';
|
|
3
|
-
declare const OrderBookWidget: ({ apiUrl, instrument, division, }: OrderBookWidgetConfig) => JSX.Element;
|
|
3
|
+
declare const OrderBookWidget: ({ apiUrl, instrument, division, locale, }: OrderBookWidgetConfig) => JSX.Element;
|
|
4
4
|
export { OrderBookWidget };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Locale } from '@oanda/mono-i18n';
|
|
1
2
|
export interface OrderBookData {
|
|
2
3
|
instrument: string;
|
|
3
4
|
price: string;
|
|
@@ -20,6 +21,7 @@ export interface OrderBookWidgetConfig {
|
|
|
20
21
|
apiUrl: string;
|
|
21
22
|
instrument: string;
|
|
22
23
|
division: string;
|
|
24
|
+
locale: Locale;
|
|
23
25
|
}
|
|
24
26
|
export interface OrderBookWrapperConfig extends OrderBookWidgetConfig {
|
|
25
27
|
renderElementId: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const defaultTranslations: {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"projectId": "19607517615e88022ba782.45168463",
|
|
3
|
+
"outputDir": "src/translations/sources",
|
|
4
|
+
"esModuleTranslations": "src/translations/translations.ts",
|
|
5
|
+
"messagesFormat": "esModule",
|
|
6
|
+
"esModuleConstName": "defaultTranslations",
|
|
7
|
+
"includeEmptyTranslations": true,
|
|
8
|
+
"downloadOptions": {
|
|
9
|
+
"format": "json",
|
|
10
|
+
"add_newline_eof": true,
|
|
11
|
+
"placeholder_format": "i18n",
|
|
12
|
+
"indentation": "2sp",
|
|
13
|
+
"plural_format": "i18next",
|
|
14
|
+
"export_empty_as": "skip",
|
|
15
|
+
"include_tags": ["common_widgets, order_book_widgets"],
|
|
16
|
+
"filter_langs": ["en", "zh_TW"]
|
|
17
|
+
}
|
|
18
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oanda/labs-order-book-widget",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.25",
|
|
4
4
|
"description": "Labs Order Book Widget",
|
|
5
5
|
"main": "dist/main/index.js",
|
|
6
6
|
"module": "dist/module/index.js",
|
|
@@ -10,10 +10,11 @@
|
|
|
10
10
|
"author": "OANDA",
|
|
11
11
|
"license": "UNLICENSED",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@oanda/labs-widget-common": "^1.0.
|
|
13
|
+
"@oanda/labs-widget-common": "^1.0.25",
|
|
14
|
+
"@oanda/mono-i18n": "9.0.0",
|
|
14
15
|
"chart.js": "4.3.3",
|
|
15
16
|
"chartjs-plugin-zoom": "2.0.1",
|
|
16
17
|
"react-chartjs-2": "5.2.0"
|
|
17
18
|
},
|
|
18
|
-
"gitHead": "
|
|
19
|
+
"gitHead": "073206b3214573db0d5334fe436f2608cc2cd644"
|
|
19
20
|
}
|
|
@@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react';
|
|
|
2
2
|
import {
|
|
3
3
|
Button, ButtonVariant, ChartError, Spinner, SpinnerSize,
|
|
4
4
|
} from '@oanda/labs-widget-common';
|
|
5
|
+
import { useLocale } from '@oanda/mono-i18n';
|
|
5
6
|
import { Chart } from './components/Chart/Chart';
|
|
6
7
|
import { DataType, MainProps, OrderBookData } from './types';
|
|
7
8
|
import { getData } from './utils';
|
|
@@ -15,6 +16,7 @@ const Main = ({
|
|
|
15
16
|
const [error, setError] = useState<string | undefined>(undefined);
|
|
16
17
|
const [dataType, setDataType] = useState(DataType.Order);
|
|
17
18
|
const [data, setData] = useState<OrderBookData[] | undefined>(undefined);
|
|
19
|
+
const { lang } = useLocale();
|
|
18
20
|
|
|
19
21
|
useEffect(() => {
|
|
20
22
|
setIsLoading(true);
|
|
@@ -46,13 +48,13 @@ const Main = ({
|
|
|
46
48
|
variant={isTypeOrder ? ButtonVariant.primary : ButtonVariant.secondary}
|
|
47
49
|
onClick={() => setDataType(DataType.Order)}
|
|
48
50
|
>
|
|
49
|
-
|
|
51
|
+
{lang('order_book')}
|
|
50
52
|
</Button>
|
|
51
53
|
<Button
|
|
52
54
|
variant={isTypeOrder ? ButtonVariant.secondary : ButtonVariant.primary}
|
|
53
55
|
onClick={() => setDataType(DataType.Position)}
|
|
54
56
|
>
|
|
55
|
-
|
|
57
|
+
{lang('position_book')}
|
|
56
58
|
</Button>
|
|
57
59
|
</div>
|
|
58
60
|
{/* @todo: chart height */}
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { LocaleProvider } from '@oanda/mono-i18n';
|
|
3
|
+
import { getLocale } from '@oanda/labs-widget-common';
|
|
2
4
|
import { Main } from './Main';
|
|
3
5
|
import { OrderBookWidgetConfig } from './types';
|
|
6
|
+
import { translations } from '../translations';
|
|
4
7
|
|
|
5
8
|
const OrderBookWidget = ({
|
|
6
9
|
apiUrl,
|
|
7
10
|
instrument,
|
|
8
11
|
division,
|
|
12
|
+
locale,
|
|
9
13
|
}: OrderBookWidgetConfig) => (
|
|
10
|
-
<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
<LocaleProvider locale={getLocale(locale)} translations={translations}>
|
|
15
|
+
<Main
|
|
16
|
+
apiUrl={apiUrl}
|
|
17
|
+
instrument={instrument}
|
|
18
|
+
division={division}
|
|
19
|
+
/>
|
|
20
|
+
</LocaleProvider>
|
|
15
21
|
);
|
|
16
22
|
|
|
17
23
|
export { OrderBookWidget };
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { Locale } from '@oanda/mono-i18n';
|
|
2
|
+
|
|
1
3
|
// @todo get from graphql schema
|
|
2
4
|
export interface OrderBookData {
|
|
3
5
|
instrument: string;
|
|
@@ -22,6 +24,7 @@ export interface OrderBookWidgetConfig {
|
|
|
22
24
|
apiUrl: string;
|
|
23
25
|
instrument: string;
|
|
24
26
|
division: string;
|
|
27
|
+
locale: Locale;
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
export interface OrderBookWrapperConfig extends OrderBookWidgetConfig {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Locale, Translations } from '@oanda/mono-i18n';
|
|
2
|
+
|
|
3
|
+
import en from './sources/en.json';
|
|
4
|
+
import zhTW from './sources/zh_TW.json';
|
|
5
|
+
|
|
6
|
+
import { defaultTranslations } from './translations';
|
|
7
|
+
|
|
8
|
+
export type TranslationKey = keyof typeof defaultTranslations;
|
|
9
|
+
|
|
10
|
+
export const translations: Translations = {
|
|
11
|
+
[Locale.en]: { translation: en },
|
|
12
|
+
[Locale.zhTW]: { translation: zhTW },
|
|
13
|
+
};
|