@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.
Files changed (41) hide show
  1. package/CHANGELOG.md +252 -0
  2. package/dist/main/OrderBookWidget/Main.js +6 -2
  3. package/dist/main/OrderBookWidget/Main.js.map +1 -1
  4. package/dist/main/OrderBookWidget/OrderBookWidget.js +10 -3
  5. package/dist/main/OrderBookWidget/OrderBookWidget.js.map +1 -1
  6. package/dist/main/OrderBookWidget/render.js +3 -1
  7. package/dist/main/OrderBookWidget/render.js.map +1 -1
  8. package/dist/main/OrderBookWidget/types.js.map +1 -1
  9. package/dist/main/translations/index.js +19 -0
  10. package/dist/main/translations/index.js.map +1 -0
  11. package/dist/main/translations/sources/en.json +4 -0
  12. package/dist/main/translations/sources/zh_TW.json +4 -0
  13. package/dist/main/translations/translations.js +8 -0
  14. package/dist/main/translations/translations.js.map +1 -0
  15. package/dist/module/OrderBookWidget/Main.js +6 -2
  16. package/dist/module/OrderBookWidget/Main.js.map +1 -1
  17. package/dist/module/OrderBookWidget/OrderBookWidget.js +10 -3
  18. package/dist/module/OrderBookWidget/OrderBookWidget.js.map +1 -1
  19. package/dist/module/OrderBookWidget/render.js +3 -1
  20. package/dist/module/OrderBookWidget/render.js.map +1 -1
  21. package/dist/module/OrderBookWidget/types.js.map +1 -1
  22. package/dist/module/translations/index.js +12 -0
  23. package/dist/module/translations/index.js.map +1 -0
  24. package/dist/module/translations/sources/en.json +4 -0
  25. package/dist/module/translations/sources/zh_TW.json +4 -0
  26. package/dist/module/translations/translations.js +2 -0
  27. package/dist/module/translations/translations.js.map +1 -0
  28. package/dist/types/OrderBookWidget/OrderBookWidget.d.ts +1 -1
  29. package/dist/types/OrderBookWidget/types.d.ts +2 -0
  30. package/dist/types/translations/index.d.ts +4 -0
  31. package/dist/types/translations/translations.d.ts +1 -0
  32. package/lokalise.config.json +18 -0
  33. package/package.json +4 -3
  34. package/src/OrderBookWidget/Main.tsx +4 -2
  35. package/src/OrderBookWidget/OrderBookWidget.tsx +11 -5
  36. package/src/OrderBookWidget/render.tsx +2 -0
  37. package/src/OrderBookWidget/types.ts +3 -0
  38. package/src/translations/index.ts +13 -0
  39. package/src/translations/sources/en.json +4 -0
  40. package/src/translations/sources/zh_TW.json +4 -0
  41. 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
- }, "Order Book"), _react.default.createElement(_labsWidgetCommon.Button, {
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
- }, "Position Book")), _react.default.createElement("div", {
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 Order Book\n </Button>\n <Button\n variant={isTypeOrder ? ButtonVariant.secondary : ButtonVariant.primary}\n onClick={() => setDataType(DataType.Position)}\n >\n 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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"}
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(_Main.Main, {
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 apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />\n);\n\nexport { OrderBookWidget };\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAA8B,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAG9B,MAAMG,eAAe,GAAGC,IAAA;EAAA,IAAC;IACvBC,MAAM;IACNC,UAAU;IACVC;EACqB,CAAC,GAAAH,IAAA;EAAA,OACtBR,MAAA,CAAAM,OAAA,CAAAM,aAAA,CAACT,KAAA,CAAAU,IAAI;IACHJ,MAAM,EAAEA,MAAO;IACfC,UAAU,EAAEA,UAAW;IACvBC,QAAQ,EAAEA;EAAS,CACpB,CAAC;AAAA,CACH;AAACG,OAAA,CAAAP,eAAA,GAAAA,eAAA"}
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,EACJd,MAAA,CAAAO,OAAA,CAAAQ,aAAA,CAACX,gBAAA,CAAAY,eAAe;EACdR,MAAM,EAAEA,MAAO;EACfC,UAAU,EAAEA,UAAW;EACvBC,QAAQ,EAAEA;AAAS,CACpB,CAAC,EACFO,QAAQ,CAACC,cAAc,CAACP,eAAe,CACzC,CAAC"}
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":";;;;;;IAgBYA,QAAQ,GAAAC,OAAA,CAAAD,QAAA,aAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA"}
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,4 @@
1
+ {
2
+ "data_unavailable": "Data unavailable",
3
+ "pagination_entries_range": "{{firstItemOnPage}}-{{lastItemOnPage}} of {{itemCount}} entries"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "data_unavailable": "無法使用資料",
3
+ "pagination_entries_range": "{{itemCount}}个挂单中的{{firstItemOnPage}}-{{lastItemOnPage}}"
4
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaultTranslations = void 0;
7
+ const defaultTranslations = exports.defaultTranslations = {};
8
+ //# sourceMappingURL=translations.js.map
@@ -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
- }, "Order Book"), React.createElement(Button, {
47
+ }, lang('order_book')), React.createElement(Button, {
44
48
  variant: isTypeOrder ? ButtonVariant.secondary : ButtonVariant.primary,
45
49
  onClick: () => setDataType(DataType.Position)
46
- }, "Position Book")), React.createElement("div", {
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 Order Book\n </Button>\n <Button\n variant={isTypeOrder ? ButtonVariant.secondary : ButtonVariant.primary}\n onClick={() => setDataType(DataType.Position)}\n >\n 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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"}
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":"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"}
@@ -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(Main, {
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 apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />\n);\n\nexport { OrderBookWidget };\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,QAAQ;AAG7B,MAAMC,eAAe,GAAGC,IAAA;EAAA,IAAC;IACvBC,MAAM;IACNC,UAAU;IACVC;EACqB,CAAC,GAAAH,IAAA;EAAA,OACtBH,KAAA,CAAAO,aAAA,CAACN,IAAI;IACHG,MAAM,EAAEA,MAAO;IACfC,UAAU,EAAEA,UAAW;IACvBC,QAAQ,EAAEA;EAAS,CACpB,CAAC;AAAA,CACH;AAED,SAASJ,eAAe"}
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;AAEhCP,MAAM,CACJD,KAAA,CAAAS,aAAA,CAACP,eAAe;EACdC,MAAM,EAAEA,MAAO;EACfC,UAAU,EAAEA,UAAW;EACvBC,QAAQ,EAAEA;AAAS,CACpB,CAAC,EACFK,QAAQ,CAACC,cAAc,CAACL,eAAe,CACzC,CAAC"}
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":"AAgBA,WAAYA,QAAQ,aAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA"}
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,4 @@
1
+ {
2
+ "data_unavailable": "Data unavailable",
3
+ "pagination_entries_range": "{{firstItemOnPage}}-{{lastItemOnPage}} of {{itemCount}} entries"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "data_unavailable": "無法使用資料",
3
+ "pagination_entries_range": "{{itemCount}}个挂单中的{{firstItemOnPage}}-{{lastItemOnPage}}"
4
+ }
@@ -0,0 +1,2 @@
1
+ export const defaultTranslations = {};
2
+ //# sourceMappingURL=translations.js.map
@@ -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,4 @@
1
+ import { Translations } from '@oanda/mono-i18n';
2
+ import { defaultTranslations } from './translations';
3
+ export type TranslationKey = keyof typeof defaultTranslations;
4
+ export declare const translations: Translations;
@@ -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.22",
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.22",
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": "6ed0514c5344c5f38d78e0a67b8bc3d25529bcd7"
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
- Order Book
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
- Position Book
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
- <Main
11
- apiUrl={apiUrl}
12
- instrument={instrument}
13
- division={division}
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 };
@@ -14,10 +14,12 @@ const {
14
14
  instrument,
15
15
  division,
16
16
  renderElementId,
17
+ locale,
17
18
  } = window.orderBookWidgetConfig;
18
19
 
19
20
  render(
20
21
  <OrderBookWidget
22
+ locale={locale}
21
23
  apiUrl={apiUrl}
22
24
  instrument={instrument}
23
25
  division={division}
@@ -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
+ };
@@ -0,0 +1,4 @@
1
+ {
2
+ "data_unavailable": "Data unavailable",
3
+ "pagination_entries_range": "{{firstItemOnPage}}-{{lastItemOnPage}} of {{itemCount}} entries"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "data_unavailable": "無法使用資料",
3
+ "pagination_entries_range": "{{itemCount}}个挂单中的{{firstItemOnPage}}-{{lastItemOnPage}}"
4
+ }
@@ -0,0 +1,3 @@
1
+ export const defaultTranslations = {
2
+
3
+ };