@oanda/labs-sentiment-widget 1.0.83 → 1.0.84

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 CHANGED
@@ -3,6 +3,330 @@
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.84 (2024-02-13)
7
+
8
+
9
+
10
+ ## 1.0.83 (2024-02-09)
11
+
12
+
13
+
14
+ ## 1.0.82 (2024-02-05)
15
+
16
+
17
+
18
+ ## 1.0.81 (2024-02-05)
19
+
20
+
21
+
22
+ ## 1.0.80 (2024-02-05)
23
+
24
+
25
+
26
+ ## 1.0.79 (2024-02-05)
27
+
28
+
29
+
30
+ ## 1.0.78 (2024-01-30)
31
+
32
+
33
+
34
+ ## 1.0.77 (2024-01-25)
35
+
36
+
37
+
38
+ ## 1.0.76 (2024-01-25)
39
+
40
+
41
+
42
+ ## 1.0.75 (2024-01-22)
43
+
44
+
45
+
46
+ ## 1.0.74 (2024-01-22)
47
+
48
+
49
+
50
+ ## 1.0.73 (2024-01-22)
51
+
52
+
53
+
54
+ ## 1.0.72 (2024-01-19)
55
+
56
+
57
+
58
+ ## 1.0.71 (2024-01-18)
59
+
60
+
61
+
62
+ ## 1.0.70 (2024-01-17)
63
+
64
+
65
+
66
+ ## 1.0.69 (2024-01-17)
67
+
68
+
69
+
70
+ ## 1.0.68 (2024-01-15)
71
+
72
+
73
+
74
+ ## 1.0.67 (2024-01-15)
75
+
76
+
77
+
78
+ ## 1.0.66 (2024-01-12)
79
+
80
+
81
+
82
+ ## 1.0.65 (2024-01-11)
83
+
84
+
85
+
86
+ ## 1.0.64 (2024-01-11)
87
+
88
+
89
+
90
+ ## 1.0.63 (2024-01-11)
91
+
92
+
93
+
94
+ ## 1.0.62 (2024-01-10)
95
+
96
+
97
+
98
+ ## 1.0.61 (2024-01-09)
99
+
100
+
101
+
102
+ ## 1.0.60 (2024-01-05)
103
+
104
+
105
+
106
+ ## 1.0.59 (2023-12-27)
107
+
108
+
109
+
110
+ ## 1.0.58 (2023-12-22)
111
+
112
+
113
+
114
+ ## 1.0.57 (2023-12-22)
115
+
116
+
117
+
118
+ ## 1.0.56 (2023-12-21)
119
+
120
+
121
+
122
+ ## 1.0.55 (2023-12-19)
123
+
124
+
125
+
126
+ ## 1.0.54 (2023-12-15)
127
+
128
+
129
+
130
+ ## 1.0.53 (2023-12-13)
131
+
132
+
133
+
134
+ ## 1.0.52 (2023-12-13)
135
+
136
+
137
+
138
+ ## 1.0.51 (2023-12-07)
139
+
140
+
141
+
142
+ ## 1.0.50 (2023-12-04)
143
+
144
+
145
+
146
+ ## 1.0.49 (2023-12-01)
147
+
148
+
149
+
150
+ ## 1.0.48 (2023-12-01)
151
+
152
+
153
+
154
+ ## 1.0.47 (2023-11-29)
155
+
156
+
157
+
158
+ ## 1.0.46 (2023-11-28)
159
+
160
+
161
+
162
+ ## 1.0.45 (2023-11-23)
163
+
164
+
165
+
166
+ ## 1.0.44 (2023-11-22)
167
+
168
+
169
+
170
+ ## 1.0.43 (2023-11-15)
171
+
172
+
173
+
174
+ ## 1.0.42 (2023-11-10)
175
+
176
+
177
+
178
+ ## 1.0.41 (2023-11-03)
179
+
180
+
181
+
182
+ ## 1.0.40 (2023-11-02)
183
+
184
+
185
+
186
+ ## 1.0.39 (2023-11-02)
187
+
188
+
189
+
190
+ ## 1.0.38 (2023-10-26)
191
+
192
+
193
+
194
+ ## 1.0.37 (2023-10-26)
195
+
196
+
197
+
198
+ ## 1.0.36 (2023-10-25)
199
+
200
+
201
+
202
+ ## 1.0.35 (2023-10-24)
203
+
204
+
205
+
206
+ ## 1.0.34 (2023-10-23)
207
+
208
+
209
+
210
+ ## 1.0.33 (2023-10-23)
211
+
212
+
213
+
214
+ ## 1.0.32 (2023-10-23)
215
+
216
+
217
+
218
+ ## 1.0.31 (2023-10-20)
219
+
220
+
221
+
222
+ ## 1.0.30 (2023-10-19)
223
+
224
+
225
+
226
+ ## 1.0.29 (2023-10-19)
227
+
228
+
229
+
230
+ ## 1.0.28 (2023-10-19)
231
+
232
+
233
+
234
+ ## 1.0.27 (2023-10-18)
235
+
236
+
237
+
238
+ ## 1.0.26 (2023-10-18)
239
+
240
+
241
+
242
+ ## 1.0.25 (2023-10-17)
243
+
244
+
245
+
246
+ ## 1.0.24 (2023-10-13)
247
+
248
+
249
+
250
+ ## 1.0.23 (2023-10-13)
251
+
252
+
253
+
254
+ ## 1.0.22 (2023-10-11)
255
+
256
+
257
+
258
+ ## 1.0.21 (2023-10-10)
259
+
260
+
261
+
262
+ ## 1.0.20 (2023-10-06)
263
+
264
+
265
+
266
+ ## 1.0.19 (2023-10-06)
267
+
268
+
269
+
270
+ ## 1.0.18 (2023-10-05)
271
+
272
+
273
+
274
+ ## 1.0.17 (2023-10-04)
275
+
276
+
277
+
278
+ ## 1.0.16 (2023-10-04)
279
+
280
+
281
+
282
+ ## 1.0.15 (2023-10-04)
283
+
284
+
285
+
286
+ ## 1.0.14 (2023-10-03)
287
+
288
+
289
+
290
+ ## 1.0.13 (2023-10-03)
291
+
292
+
293
+
294
+ ## 1.0.12 (2023-10-03)
295
+
296
+
297
+
298
+ ## 1.0.11 (2023-10-02)
299
+
300
+
301
+
302
+ ## 1.0.10 (2023-09-29)
303
+
304
+
305
+
306
+ ## 1.0.9 (2023-09-28)
307
+
308
+
309
+
310
+ ## 1.0.8 (2023-09-27)
311
+
312
+
313
+
314
+ ## 1.0.7 (2023-09-26)
315
+
316
+
317
+
318
+ ## 1.0.6 (2023-09-21)
319
+
320
+
321
+
322
+ ## 1.0.5 (2023-09-13)
323
+
324
+ **Note:** Version bump only for package @oanda/labs-sentiment-widget
325
+
326
+
327
+
328
+
329
+
6
330
  ## 1.0.83 (2024-02-09)
7
331
 
8
332
 
@@ -22,8 +22,9 @@ const Tool = _ref => {
22
22
  division
23
23
  } = _ref;
24
24
  const {
25
- isDesktop
25
+ size
26
26
  } = (0, _react.useContext)(_labsWidgetCommon.ThemeContext);
27
+ const isDesktop = size === _labsWidgetCommon.Size.DESKTOP;
27
28
  const [sort, setSort] = (0, _react.useState)(_graphql.Sort.Bullish);
28
29
  const [sortedData, setSortedData] = (0, _react.useState)(new Array(20).fill({}));
29
30
  const {
@@ -47,7 +48,7 @@ const Tool = _ref => {
47
48
  setUpdatedTimestamp((0, _labsWidgetCommon.formatUpdatedTimestamp)((_ = data.sentimentList[0]) === null || _ === void 0 ? void 0 : _.updatedAt, lang('today')));
48
49
  }
49
50
  }, [data, sort]);
50
- return _react.default.createElement("div", {
51
+ return _react.default.createElement(_react.default.Fragment, null, size && _react.default.createElement("div", {
51
52
  "data-testid": "sentiment-tool",
52
53
  className: "lw-relative lw-bg-bg-primary lw-text-sm lw-tracking-normal lw-text-text-primary"
53
54
  }, error || sortedData.length === 0 ? _react.default.createElement("div", {
@@ -94,7 +95,7 @@ const Tool = _ref => {
94
95
  className: "lw-mt-2 lw-h-8"
95
96
  }, _react.default.createElement(_labsWidgetCommon.InfoBox, {
96
97
  text: "".concat(lang('last_updated'), ": ").concat(updatedTimestamp)
97
- })));
98
+ }))));
98
99
  };
99
100
  exports.Tool = Tool;
100
101
  //# sourceMappingURL=Tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tool.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_labsWidgetCommon","_client","_monoI18n","_getSentimentList","_utils","_SortSwitch","_graphql","_constant","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","Tool","_ref","division","isDesktop","useContext","ThemeContext","sort","setSort","useState","Sort","Bullish","sortedData","setSortedData","Array","fill","loading","data","error","useQuery","getSentimentList","variables","fetchPolicy","lang","useLocale","updatedTimestamp","setUpdatedTimestamp","EMPTY_VALUE","useEffect","_","sortData","formatUpdatedTimestamp","sentimentList","updatedAt","createElement","className","length","ChartError","Fragment","SortSwitch","disabled","selected","SelectedArrow","UP","DOWN","onClickButtonDown","Bearish","onClickButtonUp","classNames","map","item","index","key","name","Loader","size","LoaderSize","md","Truncate","maxWidth","tooltipId","INSTRUMENT_TOOLTIP_ID","text","displayName","Sentiment","isLoading","height","SentimentHeight","sentiment","Tooltip","id","InfoBox","concat","exports"],"sources":["../../../src/SentimentWidget/Tool.tsx"],"sourcesContent":["import React, { useEffect, useState, useContext } from 'react';\nimport classNames from 'classnames';\nimport {\n Sentiment,\n SentimentHeight,\n Loader,\n LoaderSize,\n ChartError,\n Truncate,\n Tooltip,\n InfoBox,\n formatUpdatedTimestamp,\n ThemeContext,\n} from '@oanda/labs-widget-common';\nimport { useQuery } from '@apollo/client';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { getSentimentList } from '../gql/getSentimentList';\nimport { SentimentToolConfig } from './types';\nimport { sortData } from './utils';\nimport { SelectedArrow, SortSwitch } from './components/SortSwitch';\nimport {\n GetSentimentListQuery, GetSentimentListQueryVariables, SentimentInstrument, Sort,\n} from '../gql/types/graphql';\nimport { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID } from '../constant';\n\nconst Tool = ({ division }: SentimentToolConfig) => {\n const { isDesktop } = useContext(ThemeContext);\n const [sort, setSort] = useState(Sort.Bullish);\n const [sortedData, setSortedData] = useState<Omit<SentimentInstrument, 'id'>[]>(new Array(20).fill({}));\n const { loading, data, error } = useQuery<\n GetSentimentListQuery,\n GetSentimentListQueryVariables\n >(getSentimentList, {\n variables: {\n division,\n },\n fetchPolicy: 'cache-and-network',\n });\n\n const { lang } = useLocale();\n const [updatedTimestamp, setUpdatedTimestamp] = useState(EMPTY_VALUE);\n\n useEffect(() => {\n if (data) {\n setSortedData(sortData(data, sort));\n setUpdatedTimestamp(formatUpdatedTimestamp(data.sentimentList![0]?.updatedAt, lang('today')));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, sort]);\n\n return (\n <div data-testid=\"sentiment-tool\" className=\"lw-relative lw-bg-bg-primary lw-text-sm lw-tracking-normal lw-text-text-primary\">\n {error || sortedData.length === 0 ? (\n <div className=\"lw-flex lw-h-[200px] lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary lw-p-2\">\n <ChartError />\n </div>\n ) : (\n <>\n <div className=\"lw-flex lw-justify-end lw-pb-5\">\n <SortSwitch\n disabled={loading}\n selected={sort === Sort.Bullish ? SelectedArrow.UP : SelectedArrow.DOWN}\n onClickButtonDown={() => setSort(Sort.Bearish)}\n onClickButtonUp={() => setSort(Sort.Bullish)}\n />\n </div>\n <div className=\"lw-flex lw-flex-col lw-border lw-border-solid lw-border-border-primary lw-p-2\">\n <div className=\"lw-mb-2 lw-flex lw-justify-between lw-font-semibold\">\n <span className={classNames('lw-uppercase', {\n 'lw-ml-40': isDesktop,\n 'lw-ml-[7.5rem]': !isDesktop,\n })}\n >\n {lang('net_short')}\n </span>\n <span className={classNames('lw-text-right lw-uppercase', {\n 'lw-mr-10': isDesktop,\n })}\n >\n {lang('net_long')}\n </span>\n </div>\n {sortedData.map((item, index) => (\n <div className=\"lw-flex lw-h-8 lw-w-full lw-items-center\" key={item.name || index}>\n <div className=\"lw-w-[120px] lw-shrink-0\">\n {loading ? (\n <Loader size={LoaderSize.md} />\n ) : (\n <Truncate\n maxWidth={120}\n tooltipId={INSTRUMENT_TOOLTIP_ID}\n className=\"lw-pr-2 lw-font-sans lw-text-sm lw-font-bold\"\n text={item.displayName || '\\u2014'}\n />\n )}\n </div>\n <Sentiment\n isLoading={loading}\n height={SentimentHeight.md}\n sentiment={item.sentiment}\n />\n </div>\n ))}\n </div>\n </>\n )}\n <Tooltip id={INSTRUMENT_TOOLTIP_ID} />\n {!error\n && (\n <div className=\"lw-mt-2 lw-h-8\">\n <InfoBox text={`${lang('last_updated')}: ${updatedTimestamp}`} />\n </div>\n )}\n </div>\n );\n};\n\nexport { Tool };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Tool.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_labsWidgetCommon","_client","_monoI18n","_getSentimentList","_utils","_SortSwitch","_graphql","_constant","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","Tool","_ref","division","size","useContext","ThemeContext","isDesktop","Size","DESKTOP","sort","setSort","useState","Sort","Bullish","sortedData","setSortedData","Array","fill","loading","data","error","useQuery","getSentimentList","variables","fetchPolicy","lang","useLocale","updatedTimestamp","setUpdatedTimestamp","EMPTY_VALUE","useEffect","_","sortData","formatUpdatedTimestamp","sentimentList","updatedAt","createElement","Fragment","className","length","ChartError","SortSwitch","disabled","selected","SelectedArrow","UP","DOWN","onClickButtonDown","Bearish","onClickButtonUp","classNames","map","item","index","key","name","Loader","LoaderSize","md","Truncate","maxWidth","tooltipId","INSTRUMENT_TOOLTIP_ID","text","displayName","Sentiment","isLoading","height","SentimentHeight","sentiment","Tooltip","id","InfoBox","concat","exports"],"sources":["../../../src/SentimentWidget/Tool.tsx"],"sourcesContent":["import React, { useEffect, useState, useContext } from 'react';\nimport classNames from 'classnames';\nimport {\n Sentiment,\n SentimentHeight,\n Loader,\n LoaderSize,\n ChartError,\n Truncate,\n Tooltip,\n InfoBox,\n formatUpdatedTimestamp,\n ThemeContext,\n Size,\n} from '@oanda/labs-widget-common';\nimport { useQuery } from '@apollo/client';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { getSentimentList } from '../gql/getSentimentList';\nimport { SentimentToolConfig } from './types';\nimport { sortData } from './utils';\nimport { SelectedArrow, SortSwitch } from './components/SortSwitch';\nimport {\n GetSentimentListQuery, GetSentimentListQueryVariables, SentimentInstrument, Sort,\n} from '../gql/types/graphql';\nimport { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID } from '../constant';\n\nconst Tool = ({ division }: SentimentToolConfig) => {\n const { size } = useContext(ThemeContext);\n const isDesktop = size === Size.DESKTOP;\n const [sort, setSort] = useState(Sort.Bullish);\n const [sortedData, setSortedData] = useState<Omit<SentimentInstrument, 'id'>[]>(new Array(20).fill({}));\n const { loading, data, error } = useQuery<\n GetSentimentListQuery,\n GetSentimentListQueryVariables\n >(getSentimentList, {\n variables: {\n division,\n },\n fetchPolicy: 'cache-and-network',\n });\n\n const { lang } = useLocale();\n const [updatedTimestamp, setUpdatedTimestamp] = useState(EMPTY_VALUE);\n\n useEffect(() => {\n if (data) {\n setSortedData(sortData(data, sort));\n setUpdatedTimestamp(formatUpdatedTimestamp(data.sentimentList![0]?.updatedAt, lang('today')));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, sort]);\n\n return (\n <>\n {size && (\n <div data-testid=\"sentiment-tool\" className=\"lw-relative lw-bg-bg-primary lw-text-sm lw-tracking-normal lw-text-text-primary\">\n {error || sortedData.length === 0 ? (\n <div className=\"lw-flex lw-h-[200px] lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary lw-p-2\">\n <ChartError />\n </div>\n ) : (\n <>\n <div className=\"lw-flex lw-justify-end lw-pb-5\">\n <SortSwitch\n disabled={loading}\n selected={sort === Sort.Bullish ? SelectedArrow.UP : SelectedArrow.DOWN}\n onClickButtonDown={() => setSort(Sort.Bearish)}\n onClickButtonUp={() => setSort(Sort.Bullish)}\n />\n </div>\n <div className=\"lw-flex lw-flex-col lw-border lw-border-solid lw-border-border-primary lw-p-2\">\n <div className=\"lw-mb-2 lw-flex lw-justify-between lw-font-semibold\">\n <span className={classNames('lw-uppercase', {\n 'lw-ml-40': isDesktop,\n 'lw-ml-[7.5rem]': !isDesktop,\n })}\n >\n {lang('net_short')}\n </span>\n <span className={classNames('lw-text-right lw-uppercase', {\n 'lw-mr-10': isDesktop,\n })}\n >\n {lang('net_long')}\n </span>\n </div>\n {sortedData.map((item, index) => (\n <div className=\"lw-flex lw-h-8 lw-w-full lw-items-center\" key={item.name || index}>\n <div className=\"lw-w-[120px] lw-shrink-0\">\n {loading ? (\n <Loader size={LoaderSize.md} />\n ) : (\n <Truncate\n maxWidth={120}\n tooltipId={INSTRUMENT_TOOLTIP_ID}\n className=\"lw-pr-2 lw-font-sans lw-text-sm lw-font-bold\"\n text={item.displayName || '\\u2014'}\n />\n )}\n </div>\n <Sentiment\n isLoading={loading}\n height={SentimentHeight.md}\n sentiment={item.sentiment}\n />\n </div>\n ))}\n </div>\n </>\n )}\n <Tooltip id={INSTRUMENT_TOOLTIP_ID} />\n {!error\n && (\n <div className=\"lw-mt-2 lw-h-8\">\n <InfoBox text={`${lang('last_updated')}: ${updatedTimestamp}`} />\n </div>\n )}\n </div>\n )}\n </>\n );\n};\n\nexport { Tool };\n"],"mappings":"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"}
@@ -33,8 +33,9 @@ const Widget = _ref => {
33
33
  fetchPolicy: 'cache-and-network'
34
34
  });
35
35
  const {
36
- isDesktop
36
+ size
37
37
  } = (0, _react.useContext)(_labsWidgetCommon.ThemeContext);
38
+ const isDesktop = size === _labsWidgetCommon.Size.DESKTOP;
38
39
  const {
39
40
  lang
40
41
  } = (0, _monoI18n.useLocale)();
@@ -44,7 +45,7 @@ const Widget = _ref => {
44
45
  updatedAt
45
46
  } = (data === null || data === void 0 || (_data$sentiment = data.sentiment) === null || _data$sentiment === void 0 ? void 0 : _data$sentiment[0]) || {};
46
47
  const isError = error || (sentiment === null || sentiment === void 0 ? void 0 : sentiment.shortPercent) === 0 && (sentiment === null || sentiment === void 0 ? void 0 : sentiment.longPercent) === 0 || (sentiment === null || sentiment === void 0 ? void 0 : sentiment.shortPercent) === undefined || (sentiment === null || sentiment === void 0 ? void 0 : sentiment.longPercent) === undefined;
47
- return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement("div", {
48
+ return _react.default.createElement(_react.default.Fragment, null, size && _react.default.createElement(_react.default.Fragment, null, _react.default.createElement("div", {
48
49
  "data-testid": "sentiment-widget",
49
50
  className: "lw-border lw-border-solid lw-border-border-primary lw-bg-bg-primary lw-p-4 lw-text-sm lw-tracking-normal lw-text-text-primary"
50
51
  }, includeDescriptionLabels && _react.default.createElement("div", {
@@ -78,7 +79,7 @@ const Widget = _ref => {
78
79
  className: "lw-mt-2 lw-h-8"
79
80
  }, _react.default.createElement(_labsWidgetCommon.InfoBox, {
80
81
  text: "".concat(lang('last_updated'), ": ").concat((0, _labsWidgetCommon.formatUpdatedTimestamp)(updatedAt, lang('today')) || _constant.EMPTY_VALUE)
81
- })));
82
+ }))));
82
83
  };
83
84
  exports.Widget = Widget;
84
85
  //# sourceMappingURL=Widget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Widget.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_labsWidgetCommon","_monoI18n","_client","_getInstrumentSentiment","_constant","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","Widget","_ref","_data$sentiment","instrument","division","includeDescriptionLabels","loading","data","error","useQuery","getInstrumentSentiment","variables","name","fetchPolicy","isDesktop","useContext","ThemeContext","lang","useLocale","displayName","sentiment","updatedAt","isError","shortPercent","longPercent","undefined","createElement","Fragment","className","classNames","Loader","size","LoaderSize","md","Truncate","maxWidth","tooltipId","INSTRUMENT_TOOLTIP_ID","text","Sentiment","withError","isLoading","height","SentimentHeight","Error","InfoBox","concat","formatUpdatedTimestamp","EMPTY_VALUE","exports"],"sources":["../../../src/SentimentWidget/Widget.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport classNames from 'classnames';\nimport {\n Sentiment,\n SentimentHeight,\n Error,\n Loader,\n LoaderSize,\n Truncate,\n InfoBox,\n formatUpdatedTimestamp,\n ThemeContext,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { useQuery } from '@apollo/client';\nimport { getInstrumentSentiment } from '../gql/getInstrumentSentiment';\nimport { SentimentWidgetConfig } from './types';\nimport { GetInstrumentSentimentQuery, GetInstrumentSentimentQueryVariables } from '../gql/types/graphql';\nimport { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID } from '../constant';\n\nconst Widget = ({\n instrument,\n division,\n includeDescriptionLabels = false,\n}: SentimentWidgetConfig) => {\n const { loading, data, error } = useQuery<\n GetInstrumentSentimentQuery,\n GetInstrumentSentimentQueryVariables\n >(getInstrumentSentiment, {\n variables: {\n name: instrument,\n division,\n },\n fetchPolicy: 'cache-and-network',\n });\n const { isDesktop } = useContext(ThemeContext);\n const { lang } = useLocale();\n\n const { displayName, sentiment, updatedAt } = data?.sentiment?.[0] || {};\n\n const isError = error\n || (sentiment?.shortPercent === 0 && sentiment?.longPercent === 0)\n || sentiment?.shortPercent === undefined\n || sentiment?.longPercent === undefined;\n\n return (\n <>\n <div\n data-testid=\"sentiment-widget\"\n className=\"lw-border lw-border-solid lw-border-border-primary lw-bg-bg-primary lw-p-4 lw-text-sm lw-tracking-normal lw-text-text-primary\"\n >\n {includeDescriptionLabels\n && (\n <div className=\"lw-mb-2 lw-flex lw-justify-between lw-font-semibold\">\n <span className={classNames('lw-uppercase', {\n 'lw-ml-40': isDesktop,\n 'lw-ml-[7.5rem]': !isDesktop,\n })}\n >\n {lang('net_short')}\n </span>\n <span className={classNames('lw-text-right lw-uppercase', {\n 'lw-mr-10': isDesktop,\n })}\n >\n {lang('net_long')}\n </span>\n </div>\n )}\n <div className=\"lw-flex lw-items-center lw-justify-between\">\n <div className=\"lw-w-[120px] lw-shrink-0\">\n {loading && <Loader size={LoaderSize.md} />}\n {!loading && !isError && (\n <Truncate\n maxWidth={120}\n tooltipId={INSTRUMENT_TOOLTIP_ID}\n className=\"lw-pr-2 lw-font-sans lw-text-sm lw-font-bold\"\n text={displayName || '\\u2014'}\n />\n )}\n </div>\n <Sentiment\n withError={false}\n isLoading={loading}\n height={SentimentHeight.md}\n sentiment={sentiment}\n />\n </div>\n\n {!loading && isError && <Error />}\n </div>\n {!isError && updatedAt && (\n <div className=\"lw-mt-2 lw-h-8\">\n <InfoBox text={`${lang('last_updated')}: ${formatUpdatedTimestamp(updatedAt, lang('today')) || EMPTY_VALUE}`} />\n </div>\n )}\n </>\n );\n};\n\nexport { Widget };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Widget.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_labsWidgetCommon","_monoI18n","_client","_getInstrumentSentiment","_constant","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","Widget","_ref","_data$sentiment","instrument","division","includeDescriptionLabels","loading","data","error","useQuery","getInstrumentSentiment","variables","name","fetchPolicy","size","useContext","ThemeContext","isDesktop","Size","DESKTOP","lang","useLocale","displayName","sentiment","updatedAt","isError","shortPercent","longPercent","undefined","createElement","Fragment","className","classNames","Loader","LoaderSize","md","Truncate","maxWidth","tooltipId","INSTRUMENT_TOOLTIP_ID","text","Sentiment","withError","isLoading","height","SentimentHeight","Error","InfoBox","concat","formatUpdatedTimestamp","EMPTY_VALUE","exports"],"sources":["../../../src/SentimentWidget/Widget.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport classNames from 'classnames';\nimport {\n Sentiment,\n SentimentHeight,\n Error,\n Loader,\n LoaderSize,\n Truncate,\n InfoBox,\n formatUpdatedTimestamp,\n ThemeContext,\n Size,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { useQuery } from '@apollo/client';\nimport { getInstrumentSentiment } from '../gql/getInstrumentSentiment';\nimport { SentimentWidgetConfig } from './types';\nimport { GetInstrumentSentimentQuery, GetInstrumentSentimentQueryVariables } from '../gql/types/graphql';\nimport { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID } from '../constant';\n\nconst Widget = ({\n instrument,\n division,\n includeDescriptionLabels = false,\n}: SentimentWidgetConfig) => {\n const { loading, data, error } = useQuery<\n GetInstrumentSentimentQuery,\n GetInstrumentSentimentQueryVariables\n >(getInstrumentSentiment, {\n variables: {\n name: instrument,\n division,\n },\n fetchPolicy: 'cache-and-network',\n });\n const { size } = useContext(ThemeContext);\n const isDesktop = size === Size.DESKTOP;\n const { lang } = useLocale();\n\n const { displayName, sentiment, updatedAt } = data?.sentiment?.[0] || {};\n\n const isError = error\n || (sentiment?.shortPercent === 0 && sentiment?.longPercent === 0)\n || sentiment?.shortPercent === undefined\n || sentiment?.longPercent === undefined;\n\n return (\n <>\n {size && (\n <>\n <div\n data-testid=\"sentiment-widget\"\n className=\"lw-border lw-border-solid lw-border-border-primary lw-bg-bg-primary lw-p-4 lw-text-sm lw-tracking-normal lw-text-text-primary\"\n >\n {includeDescriptionLabels\n && (\n <div className=\"lw-mb-2 lw-flex lw-justify-between lw-font-semibold\">\n <span className={classNames('lw-uppercase', {\n 'lw-ml-40': isDesktop,\n 'lw-ml-[7.5rem]': !isDesktop,\n })}\n >\n {lang('net_short')}\n </span>\n <span className={classNames('lw-text-right lw-uppercase', {\n 'lw-mr-10': isDesktop,\n })}\n >\n {lang('net_long')}\n </span>\n </div>\n )}\n <div className=\"lw-flex lw-items-center lw-justify-between\">\n <div className=\"lw-w-[120px] lw-shrink-0\">\n {loading && <Loader size={LoaderSize.md} />}\n {!loading && !isError && (\n <Truncate\n maxWidth={120}\n tooltipId={INSTRUMENT_TOOLTIP_ID}\n className=\"lw-pr-2 lw-font-sans lw-text-sm lw-font-bold\"\n text={displayName || '\\u2014'}\n />\n )}\n </div>\n <Sentiment\n withError={false}\n isLoading={loading}\n height={SentimentHeight.md}\n sentiment={sentiment}\n />\n </div>\n\n {!loading && isError && <Error />}\n </div>\n {!isError && updatedAt && (\n <div className=\"lw-mt-2 lw-h-8\">\n <InfoBox text={`${lang('last_updated')}: ${formatUpdatedTimestamp(updatedAt, lang('today')) || EMPTY_VALUE}`} />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n\nexport { Widget };\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import React, { useEffect, useState, useContext } from 'react';
2
2
  import classNames from 'classnames';
3
- import { Sentiment, SentimentHeight, Loader, LoaderSize, ChartError, Truncate, Tooltip, InfoBox, formatUpdatedTimestamp, ThemeContext } from '@oanda/labs-widget-common';
3
+ import { Sentiment, SentimentHeight, Loader, LoaderSize, ChartError, Truncate, Tooltip, InfoBox, formatUpdatedTimestamp, ThemeContext, Size } from '@oanda/labs-widget-common';
4
4
  import { useQuery } from '@apollo/client';
5
5
  import { useLocale } from '@oanda/mono-i18n';
6
6
  import { getSentimentList } from '../gql/getSentimentList';
@@ -13,8 +13,9 @@ const Tool = _ref => {
13
13
  division
14
14
  } = _ref;
15
15
  const {
16
- isDesktop
16
+ size
17
17
  } = useContext(ThemeContext);
18
+ const isDesktop = size === Size.DESKTOP;
18
19
  const [sort, setSort] = useState(Sort.Bullish);
19
20
  const [sortedData, setSortedData] = useState(new Array(20).fill({}));
20
21
  const {
@@ -38,7 +39,7 @@ const Tool = _ref => {
38
39
  setUpdatedTimestamp(formatUpdatedTimestamp((_ = data.sentimentList[0]) === null || _ === void 0 ? void 0 : _.updatedAt, lang('today')));
39
40
  }
40
41
  }, [data, sort]);
41
- return React.createElement("div", {
42
+ return React.createElement(React.Fragment, null, size && React.createElement("div", {
42
43
  "data-testid": "sentiment-tool",
43
44
  className: "lw-relative lw-bg-bg-primary lw-text-sm lw-tracking-normal lw-text-text-primary"
44
45
  }, error || sortedData.length === 0 ? React.createElement("div", {
@@ -85,7 +86,7 @@ const Tool = _ref => {
85
86
  className: "lw-mt-2 lw-h-8"
86
87
  }, React.createElement(InfoBox, {
87
88
  text: "".concat(lang('last_updated'), ": ").concat(updatedTimestamp)
88
- })));
89
+ }))));
89
90
  };
90
91
  export { Tool };
91
92
  //# sourceMappingURL=Tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tool.js","names":["React","useEffect","useState","useContext","classNames","Sentiment","SentimentHeight","Loader","LoaderSize","ChartError","Truncate","Tooltip","InfoBox","formatUpdatedTimestamp","ThemeContext","useQuery","useLocale","getSentimentList","sortData","SelectedArrow","SortSwitch","Sort","EMPTY_VALUE","INSTRUMENT_TOOLTIP_ID","Tool","_ref","division","isDesktop","sort","setSort","Bullish","sortedData","setSortedData","Array","fill","loading","data","error","variables","fetchPolicy","lang","updatedTimestamp","setUpdatedTimestamp","_","sentimentList","updatedAt","createElement","className","length","Fragment","disabled","selected","UP","DOWN","onClickButtonDown","Bearish","onClickButtonUp","map","item","index","key","name","size","md","maxWidth","tooltipId","text","displayName","isLoading","height","sentiment","id","concat"],"sources":["../../../src/SentimentWidget/Tool.tsx"],"sourcesContent":["import React, { useEffect, useState, useContext } from 'react';\nimport classNames from 'classnames';\nimport {\n Sentiment,\n SentimentHeight,\n Loader,\n LoaderSize,\n ChartError,\n Truncate,\n Tooltip,\n InfoBox,\n formatUpdatedTimestamp,\n ThemeContext,\n} from '@oanda/labs-widget-common';\nimport { useQuery } from '@apollo/client';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { getSentimentList } from '../gql/getSentimentList';\nimport { SentimentToolConfig } from './types';\nimport { sortData } from './utils';\nimport { SelectedArrow, SortSwitch } from './components/SortSwitch';\nimport {\n GetSentimentListQuery, GetSentimentListQueryVariables, SentimentInstrument, Sort,\n} from '../gql/types/graphql';\nimport { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID } from '../constant';\n\nconst Tool = ({ division }: SentimentToolConfig) => {\n const { isDesktop } = useContext(ThemeContext);\n const [sort, setSort] = useState(Sort.Bullish);\n const [sortedData, setSortedData] = useState<Omit<SentimentInstrument, 'id'>[]>(new Array(20).fill({}));\n const { loading, data, error } = useQuery<\n GetSentimentListQuery,\n GetSentimentListQueryVariables\n >(getSentimentList, {\n variables: {\n division,\n },\n fetchPolicy: 'cache-and-network',\n });\n\n const { lang } = useLocale();\n const [updatedTimestamp, setUpdatedTimestamp] = useState(EMPTY_VALUE);\n\n useEffect(() => {\n if (data) {\n setSortedData(sortData(data, sort));\n setUpdatedTimestamp(formatUpdatedTimestamp(data.sentimentList![0]?.updatedAt, lang('today')));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, sort]);\n\n return (\n <div data-testid=\"sentiment-tool\" className=\"lw-relative lw-bg-bg-primary lw-text-sm lw-tracking-normal lw-text-text-primary\">\n {error || sortedData.length === 0 ? (\n <div className=\"lw-flex lw-h-[200px] lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary lw-p-2\">\n <ChartError />\n </div>\n ) : (\n <>\n <div className=\"lw-flex lw-justify-end lw-pb-5\">\n <SortSwitch\n disabled={loading}\n selected={sort === Sort.Bullish ? SelectedArrow.UP : SelectedArrow.DOWN}\n onClickButtonDown={() => setSort(Sort.Bearish)}\n onClickButtonUp={() => setSort(Sort.Bullish)}\n />\n </div>\n <div className=\"lw-flex lw-flex-col lw-border lw-border-solid lw-border-border-primary lw-p-2\">\n <div className=\"lw-mb-2 lw-flex lw-justify-between lw-font-semibold\">\n <span className={classNames('lw-uppercase', {\n 'lw-ml-40': isDesktop,\n 'lw-ml-[7.5rem]': !isDesktop,\n })}\n >\n {lang('net_short')}\n </span>\n <span className={classNames('lw-text-right lw-uppercase', {\n 'lw-mr-10': isDesktop,\n })}\n >\n {lang('net_long')}\n </span>\n </div>\n {sortedData.map((item, index) => (\n <div className=\"lw-flex lw-h-8 lw-w-full lw-items-center\" key={item.name || index}>\n <div className=\"lw-w-[120px] lw-shrink-0\">\n {loading ? (\n <Loader size={LoaderSize.md} />\n ) : (\n <Truncate\n maxWidth={120}\n tooltipId={INSTRUMENT_TOOLTIP_ID}\n className=\"lw-pr-2 lw-font-sans lw-text-sm lw-font-bold\"\n text={item.displayName || '\\u2014'}\n />\n )}\n </div>\n <Sentiment\n isLoading={loading}\n height={SentimentHeight.md}\n sentiment={item.sentiment}\n />\n </div>\n ))}\n </div>\n </>\n )}\n <Tooltip id={INSTRUMENT_TOOLTIP_ID} />\n {!error\n && (\n <div className=\"lw-mt-2 lw-h-8\">\n <InfoBox text={`${lang('last_updated')}: ${updatedTimestamp}`} />\n </div>\n )}\n </div>\n );\n};\n\nexport { Tool };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Tool.js","names":["React","useEffect","useState","useContext","classNames","Sentiment","SentimentHeight","Loader","LoaderSize","ChartError","Truncate","Tooltip","InfoBox","formatUpdatedTimestamp","ThemeContext","Size","useQuery","useLocale","getSentimentList","sortData","SelectedArrow","SortSwitch","Sort","EMPTY_VALUE","INSTRUMENT_TOOLTIP_ID","Tool","_ref","division","size","isDesktop","DESKTOP","sort","setSort","Bullish","sortedData","setSortedData","Array","fill","loading","data","error","variables","fetchPolicy","lang","updatedTimestamp","setUpdatedTimestamp","_","sentimentList","updatedAt","createElement","Fragment","className","length","disabled","selected","UP","DOWN","onClickButtonDown","Bearish","onClickButtonUp","map","item","index","key","name","md","maxWidth","tooltipId","text","displayName","isLoading","height","sentiment","id","concat"],"sources":["../../../src/SentimentWidget/Tool.tsx"],"sourcesContent":["import React, { useEffect, useState, useContext } from 'react';\nimport classNames from 'classnames';\nimport {\n Sentiment,\n SentimentHeight,\n Loader,\n LoaderSize,\n ChartError,\n Truncate,\n Tooltip,\n InfoBox,\n formatUpdatedTimestamp,\n ThemeContext,\n Size,\n} from '@oanda/labs-widget-common';\nimport { useQuery } from '@apollo/client';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { getSentimentList } from '../gql/getSentimentList';\nimport { SentimentToolConfig } from './types';\nimport { sortData } from './utils';\nimport { SelectedArrow, SortSwitch } from './components/SortSwitch';\nimport {\n GetSentimentListQuery, GetSentimentListQueryVariables, SentimentInstrument, Sort,\n} from '../gql/types/graphql';\nimport { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID } from '../constant';\n\nconst Tool = ({ division }: SentimentToolConfig) => {\n const { size } = useContext(ThemeContext);\n const isDesktop = size === Size.DESKTOP;\n const [sort, setSort] = useState(Sort.Bullish);\n const [sortedData, setSortedData] = useState<Omit<SentimentInstrument, 'id'>[]>(new Array(20).fill({}));\n const { loading, data, error } = useQuery<\n GetSentimentListQuery,\n GetSentimentListQueryVariables\n >(getSentimentList, {\n variables: {\n division,\n },\n fetchPolicy: 'cache-and-network',\n });\n\n const { lang } = useLocale();\n const [updatedTimestamp, setUpdatedTimestamp] = useState(EMPTY_VALUE);\n\n useEffect(() => {\n if (data) {\n setSortedData(sortData(data, sort));\n setUpdatedTimestamp(formatUpdatedTimestamp(data.sentimentList![0]?.updatedAt, lang('today')));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, sort]);\n\n return (\n <>\n {size && (\n <div data-testid=\"sentiment-tool\" className=\"lw-relative lw-bg-bg-primary lw-text-sm lw-tracking-normal lw-text-text-primary\">\n {error || sortedData.length === 0 ? (\n <div className=\"lw-flex lw-h-[200px] lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary lw-p-2\">\n <ChartError />\n </div>\n ) : (\n <>\n <div className=\"lw-flex lw-justify-end lw-pb-5\">\n <SortSwitch\n disabled={loading}\n selected={sort === Sort.Bullish ? SelectedArrow.UP : SelectedArrow.DOWN}\n onClickButtonDown={() => setSort(Sort.Bearish)}\n onClickButtonUp={() => setSort(Sort.Bullish)}\n />\n </div>\n <div className=\"lw-flex lw-flex-col lw-border lw-border-solid lw-border-border-primary lw-p-2\">\n <div className=\"lw-mb-2 lw-flex lw-justify-between lw-font-semibold\">\n <span className={classNames('lw-uppercase', {\n 'lw-ml-40': isDesktop,\n 'lw-ml-[7.5rem]': !isDesktop,\n })}\n >\n {lang('net_short')}\n </span>\n <span className={classNames('lw-text-right lw-uppercase', {\n 'lw-mr-10': isDesktop,\n })}\n >\n {lang('net_long')}\n </span>\n </div>\n {sortedData.map((item, index) => (\n <div className=\"lw-flex lw-h-8 lw-w-full lw-items-center\" key={item.name || index}>\n <div className=\"lw-w-[120px] lw-shrink-0\">\n {loading ? (\n <Loader size={LoaderSize.md} />\n ) : (\n <Truncate\n maxWidth={120}\n tooltipId={INSTRUMENT_TOOLTIP_ID}\n className=\"lw-pr-2 lw-font-sans lw-text-sm lw-font-bold\"\n text={item.displayName || '\\u2014'}\n />\n )}\n </div>\n <Sentiment\n isLoading={loading}\n height={SentimentHeight.md}\n sentiment={item.sentiment}\n />\n </div>\n ))}\n </div>\n </>\n )}\n <Tooltip id={INSTRUMENT_TOOLTIP_ID} />\n {!error\n && (\n <div className=\"lw-mt-2 lw-h-8\">\n <InfoBox text={`${lang('last_updated')}: ${updatedTimestamp}`} />\n </div>\n )}\n </div>\n )}\n </>\n );\n};\n\nexport { Tool };\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import React, { useContext } from 'react';
2
2
  import classNames from 'classnames';
3
- import { Sentiment, SentimentHeight, Error, Loader, LoaderSize, Truncate, InfoBox, formatUpdatedTimestamp, ThemeContext } from '@oanda/labs-widget-common';
3
+ import { Sentiment, SentimentHeight, Error, Loader, LoaderSize, Truncate, InfoBox, formatUpdatedTimestamp, ThemeContext, Size } from '@oanda/labs-widget-common';
4
4
  import { useLocale } from '@oanda/mono-i18n';
5
5
  import { useQuery } from '@apollo/client';
6
6
  import { getInstrumentSentiment } from '../gql/getInstrumentSentiment';
@@ -24,8 +24,9 @@ const Widget = _ref => {
24
24
  fetchPolicy: 'cache-and-network'
25
25
  });
26
26
  const {
27
- isDesktop
27
+ size
28
28
  } = useContext(ThemeContext);
29
+ const isDesktop = size === Size.DESKTOP;
29
30
  const {
30
31
  lang
31
32
  } = useLocale();
@@ -35,7 +36,7 @@ const Widget = _ref => {
35
36
  updatedAt
36
37
  } = (data === null || data === void 0 || (_data$sentiment = data.sentiment) === null || _data$sentiment === void 0 ? void 0 : _data$sentiment[0]) || {};
37
38
  const isError = error || (sentiment === null || sentiment === void 0 ? void 0 : sentiment.shortPercent) === 0 && (sentiment === null || sentiment === void 0 ? void 0 : sentiment.longPercent) === 0 || (sentiment === null || sentiment === void 0 ? void 0 : sentiment.shortPercent) === undefined || (sentiment === null || sentiment === void 0 ? void 0 : sentiment.longPercent) === undefined;
38
- return React.createElement(React.Fragment, null, React.createElement("div", {
39
+ return React.createElement(React.Fragment, null, size && React.createElement(React.Fragment, null, React.createElement("div", {
39
40
  "data-testid": "sentiment-widget",
40
41
  className: "lw-border lw-border-solid lw-border-border-primary lw-bg-bg-primary lw-p-4 lw-text-sm lw-tracking-normal lw-text-text-primary"
41
42
  }, includeDescriptionLabels && React.createElement("div", {
@@ -69,7 +70,7 @@ const Widget = _ref => {
69
70
  className: "lw-mt-2 lw-h-8"
70
71
  }, React.createElement(InfoBox, {
71
72
  text: "".concat(lang('last_updated'), ": ").concat(formatUpdatedTimestamp(updatedAt, lang('today')) || EMPTY_VALUE)
72
- })));
73
+ }))));
73
74
  };
74
75
  export { Widget };
75
76
  //# sourceMappingURL=Widget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Widget.js","names":["React","useContext","classNames","Sentiment","SentimentHeight","Error","Loader","LoaderSize","Truncate","InfoBox","formatUpdatedTimestamp","ThemeContext","useLocale","useQuery","getInstrumentSentiment","EMPTY_VALUE","INSTRUMENT_TOOLTIP_ID","Widget","_ref","_data$sentiment","instrument","division","includeDescriptionLabels","loading","data","error","variables","name","fetchPolicy","isDesktop","lang","displayName","sentiment","updatedAt","isError","shortPercent","longPercent","undefined","createElement","Fragment","className","size","md","maxWidth","tooltipId","text","withError","isLoading","height","concat"],"sources":["../../../src/SentimentWidget/Widget.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport classNames from 'classnames';\nimport {\n Sentiment,\n SentimentHeight,\n Error,\n Loader,\n LoaderSize,\n Truncate,\n InfoBox,\n formatUpdatedTimestamp,\n ThemeContext,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { useQuery } from '@apollo/client';\nimport { getInstrumentSentiment } from '../gql/getInstrumentSentiment';\nimport { SentimentWidgetConfig } from './types';\nimport { GetInstrumentSentimentQuery, GetInstrumentSentimentQueryVariables } from '../gql/types/graphql';\nimport { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID } from '../constant';\n\nconst Widget = ({\n instrument,\n division,\n includeDescriptionLabels = false,\n}: SentimentWidgetConfig) => {\n const { loading, data, error } = useQuery<\n GetInstrumentSentimentQuery,\n GetInstrumentSentimentQueryVariables\n >(getInstrumentSentiment, {\n variables: {\n name: instrument,\n division,\n },\n fetchPolicy: 'cache-and-network',\n });\n const { isDesktop } = useContext(ThemeContext);\n const { lang } = useLocale();\n\n const { displayName, sentiment, updatedAt } = data?.sentiment?.[0] || {};\n\n const isError = error\n || (sentiment?.shortPercent === 0 && sentiment?.longPercent === 0)\n || sentiment?.shortPercent === undefined\n || sentiment?.longPercent === undefined;\n\n return (\n <>\n <div\n data-testid=\"sentiment-widget\"\n className=\"lw-border lw-border-solid lw-border-border-primary lw-bg-bg-primary lw-p-4 lw-text-sm lw-tracking-normal lw-text-text-primary\"\n >\n {includeDescriptionLabels\n && (\n <div className=\"lw-mb-2 lw-flex lw-justify-between lw-font-semibold\">\n <span className={classNames('lw-uppercase', {\n 'lw-ml-40': isDesktop,\n 'lw-ml-[7.5rem]': !isDesktop,\n })}\n >\n {lang('net_short')}\n </span>\n <span className={classNames('lw-text-right lw-uppercase', {\n 'lw-mr-10': isDesktop,\n })}\n >\n {lang('net_long')}\n </span>\n </div>\n )}\n <div className=\"lw-flex lw-items-center lw-justify-between\">\n <div className=\"lw-w-[120px] lw-shrink-0\">\n {loading && <Loader size={LoaderSize.md} />}\n {!loading && !isError && (\n <Truncate\n maxWidth={120}\n tooltipId={INSTRUMENT_TOOLTIP_ID}\n className=\"lw-pr-2 lw-font-sans lw-text-sm lw-font-bold\"\n text={displayName || '\\u2014'}\n />\n )}\n </div>\n <Sentiment\n withError={false}\n isLoading={loading}\n height={SentimentHeight.md}\n sentiment={sentiment}\n />\n </div>\n\n {!loading && isError && <Error />}\n </div>\n {!isError && updatedAt && (\n <div className=\"lw-mt-2 lw-h-8\">\n <InfoBox text={`${lang('last_updated')}: ${formatUpdatedTimestamp(updatedAt, lang('today')) || EMPTY_VALUE}`} />\n </div>\n )}\n </>\n );\n};\n\nexport { Widget };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Widget.js","names":["React","useContext","classNames","Sentiment","SentimentHeight","Error","Loader","LoaderSize","Truncate","InfoBox","formatUpdatedTimestamp","ThemeContext","Size","useLocale","useQuery","getInstrumentSentiment","EMPTY_VALUE","INSTRUMENT_TOOLTIP_ID","Widget","_ref","_data$sentiment","instrument","division","includeDescriptionLabels","loading","data","error","variables","name","fetchPolicy","size","isDesktop","DESKTOP","lang","displayName","sentiment","updatedAt","isError","shortPercent","longPercent","undefined","createElement","Fragment","className","md","maxWidth","tooltipId","text","withError","isLoading","height","concat"],"sources":["../../../src/SentimentWidget/Widget.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport classNames from 'classnames';\nimport {\n Sentiment,\n SentimentHeight,\n Error,\n Loader,\n LoaderSize,\n Truncate,\n InfoBox,\n formatUpdatedTimestamp,\n ThemeContext,\n Size,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { useQuery } from '@apollo/client';\nimport { getInstrumentSentiment } from '../gql/getInstrumentSentiment';\nimport { SentimentWidgetConfig } from './types';\nimport { GetInstrumentSentimentQuery, GetInstrumentSentimentQueryVariables } from '../gql/types/graphql';\nimport { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID } from '../constant';\n\nconst Widget = ({\n instrument,\n division,\n includeDescriptionLabels = false,\n}: SentimentWidgetConfig) => {\n const { loading, data, error } = useQuery<\n GetInstrumentSentimentQuery,\n GetInstrumentSentimentQueryVariables\n >(getInstrumentSentiment, {\n variables: {\n name: instrument,\n division,\n },\n fetchPolicy: 'cache-and-network',\n });\n const { size } = useContext(ThemeContext);\n const isDesktop = size === Size.DESKTOP;\n const { lang } = useLocale();\n\n const { displayName, sentiment, updatedAt } = data?.sentiment?.[0] || {};\n\n const isError = error\n || (sentiment?.shortPercent === 0 && sentiment?.longPercent === 0)\n || sentiment?.shortPercent === undefined\n || sentiment?.longPercent === undefined;\n\n return (\n <>\n {size && (\n <>\n <div\n data-testid=\"sentiment-widget\"\n className=\"lw-border lw-border-solid lw-border-border-primary lw-bg-bg-primary lw-p-4 lw-text-sm lw-tracking-normal lw-text-text-primary\"\n >\n {includeDescriptionLabels\n && (\n <div className=\"lw-mb-2 lw-flex lw-justify-between lw-font-semibold\">\n <span className={classNames('lw-uppercase', {\n 'lw-ml-40': isDesktop,\n 'lw-ml-[7.5rem]': !isDesktop,\n })}\n >\n {lang('net_short')}\n </span>\n <span className={classNames('lw-text-right lw-uppercase', {\n 'lw-mr-10': isDesktop,\n })}\n >\n {lang('net_long')}\n </span>\n </div>\n )}\n <div className=\"lw-flex lw-items-center lw-justify-between\">\n <div className=\"lw-w-[120px] lw-shrink-0\">\n {loading && <Loader size={LoaderSize.md} />}\n {!loading && !isError && (\n <Truncate\n maxWidth={120}\n tooltipId={INSTRUMENT_TOOLTIP_ID}\n className=\"lw-pr-2 lw-font-sans lw-text-sm lw-font-bold\"\n text={displayName || '\\u2014'}\n />\n )}\n </div>\n <Sentiment\n withError={false}\n isLoading={loading}\n height={SentimentHeight.md}\n sentiment={sentiment}\n />\n </div>\n\n {!loading && isError && <Error />}\n </div>\n {!isError && updatedAt && (\n <div className=\"lw-mt-2 lw-h-8\">\n <InfoBox text={`${lang('last_updated')}: ${formatUpdatedTimestamp(updatedAt, lang('today')) || EMPTY_VALUE}`} />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n\nexport { Widget };\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oanda/labs-sentiment-widget",
3
- "version": "1.0.83",
3
+ "version": "1.0.84",
4
4
  "description": "Labs Sentiment Widget",
5
5
  "main": "dist/main/index.js",
6
6
  "module": "dist/module/index.js",
@@ -13,14 +13,13 @@
13
13
  "license": "UNLICENSED",
14
14
  "dependencies": {
15
15
  "@apollo/client": "3.7.17",
16
- "@oanda/labs-widget-common": "^1.0.83",
16
+ "@oanda/labs-widget-common": "^1.0.84",
17
17
  "@oanda/mono-i18n": "9.0.0",
18
- "classnames": "2.3.2",
19
18
  "graphql": "16.7.1"
20
19
  },
21
20
  "devDependencies": {
22
21
  "@graphql-codegen/cli": "5.0.0",
23
22
  "@graphql-codegen/client-preset": "4.1.0"
24
23
  },
25
- "gitHead": "05f38586b5d7b8c372f34bc1b039acd1c998b0f2"
24
+ "gitHead": "8d6812f950bbce1904760fefa2a12a167b1566a4"
26
25
  }
@@ -11,6 +11,7 @@ import {
11
11
  InfoBox,
12
12
  formatUpdatedTimestamp,
13
13
  ThemeContext,
14
+ Size,
14
15
  } from '@oanda/labs-widget-common';
15
16
  import { useQuery } from '@apollo/client';
16
17
  import { useLocale } from '@oanda/mono-i18n';
@@ -24,7 +25,8 @@ import {
24
25
  import { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID } from '../constant';
25
26
 
26
27
  const Tool = ({ division }: SentimentToolConfig) => {
27
- const { isDesktop } = useContext(ThemeContext);
28
+ const { size } = useContext(ThemeContext);
29
+ const isDesktop = size === Size.DESKTOP;
28
30
  const [sort, setSort] = useState(Sort.Bullish);
29
31
  const [sortedData, setSortedData] = useState<Omit<SentimentInstrument, 'id'>[]>(new Array(20).fill({}));
30
32
  const { loading, data, error } = useQuery<
@@ -49,69 +51,73 @@ const Tool = ({ division }: SentimentToolConfig) => {
49
51
  }, [data, sort]);
50
52
 
51
53
  return (
52
- <div data-testid="sentiment-tool" className="lw-relative lw-bg-bg-primary lw-text-sm lw-tracking-normal lw-text-text-primary">
53
- {error || sortedData.length === 0 ? (
54
- <div className="lw-flex lw-h-[200px] lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary lw-p-2">
55
- <ChartError />
56
- </div>
57
- ) : (
58
- <>
59
- <div className="lw-flex lw-justify-end lw-pb-5">
60
- <SortSwitch
61
- disabled={loading}
62
- selected={sort === Sort.Bullish ? SelectedArrow.UP : SelectedArrow.DOWN}
63
- onClickButtonDown={() => setSort(Sort.Bearish)}
64
- onClickButtonUp={() => setSort(Sort.Bullish)}
65
- />
54
+ <>
55
+ {size && (
56
+ <div data-testid="sentiment-tool" className="lw-relative lw-bg-bg-primary lw-text-sm lw-tracking-normal lw-text-text-primary">
57
+ {error || sortedData.length === 0 ? (
58
+ <div className="lw-flex lw-h-[200px] lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary lw-p-2">
59
+ <ChartError />
66
60
  </div>
67
- <div className="lw-flex lw-flex-col lw-border lw-border-solid lw-border-border-primary lw-p-2">
68
- <div className="lw-mb-2 lw-flex lw-justify-between lw-font-semibold">
69
- <span className={classNames('lw-uppercase', {
70
- 'lw-ml-40': isDesktop,
71
- 'lw-ml-[7.5rem]': !isDesktop,
72
- })}
73
- >
74
- {lang('net_short')}
75
- </span>
76
- <span className={classNames('lw-text-right lw-uppercase', {
77
- 'lw-mr-10': isDesktop,
78
- })}
79
- >
80
- {lang('net_long')}
81
- </span>
61
+ ) : (
62
+ <>
63
+ <div className="lw-flex lw-justify-end lw-pb-5">
64
+ <SortSwitch
65
+ disabled={loading}
66
+ selected={sort === Sort.Bullish ? SelectedArrow.UP : SelectedArrow.DOWN}
67
+ onClickButtonDown={() => setSort(Sort.Bearish)}
68
+ onClickButtonUp={() => setSort(Sort.Bullish)}
69
+ />
82
70
  </div>
83
- {sortedData.map((item, index) => (
84
- <div className="lw-flex lw-h-8 lw-w-full lw-items-center" key={item.name || index}>
85
- <div className="lw-w-[120px] lw-shrink-0">
86
- {loading ? (
87
- <Loader size={LoaderSize.md} />
88
- ) : (
89
- <Truncate
90
- maxWidth={120}
91
- tooltipId={INSTRUMENT_TOOLTIP_ID}
92
- className="lw-pr-2 lw-font-sans lw-text-sm lw-font-bold"
93
- text={item.displayName || '\u2014'}
94
- />
95
- )}
96
- </div>
97
- <Sentiment
98
- isLoading={loading}
99
- height={SentimentHeight.md}
100
- sentiment={item.sentiment}
101
- />
71
+ <div className="lw-flex lw-flex-col lw-border lw-border-solid lw-border-border-primary lw-p-2">
72
+ <div className="lw-mb-2 lw-flex lw-justify-between lw-font-semibold">
73
+ <span className={classNames('lw-uppercase', {
74
+ 'lw-ml-40': isDesktop,
75
+ 'lw-ml-[7.5rem]': !isDesktop,
76
+ })}
77
+ >
78
+ {lang('net_short')}
79
+ </span>
80
+ <span className={classNames('lw-text-right lw-uppercase', {
81
+ 'lw-mr-10': isDesktop,
82
+ })}
83
+ >
84
+ {lang('net_long')}
85
+ </span>
102
86
  </div>
103
- ))}
104
- </div>
105
- </>
106
- )}
107
- <Tooltip id={INSTRUMENT_TOOLTIP_ID} />
108
- {!error
87
+ {sortedData.map((item, index) => (
88
+ <div className="lw-flex lw-h-8 lw-w-full lw-items-center" key={item.name || index}>
89
+ <div className="lw-w-[120px] lw-shrink-0">
90
+ {loading ? (
91
+ <Loader size={LoaderSize.md} />
92
+ ) : (
93
+ <Truncate
94
+ maxWidth={120}
95
+ tooltipId={INSTRUMENT_TOOLTIP_ID}
96
+ className="lw-pr-2 lw-font-sans lw-text-sm lw-font-bold"
97
+ text={item.displayName || '\u2014'}
98
+ />
99
+ )}
100
+ </div>
101
+ <Sentiment
102
+ isLoading={loading}
103
+ height={SentimentHeight.md}
104
+ sentiment={item.sentiment}
105
+ />
106
+ </div>
107
+ ))}
108
+ </div>
109
+ </>
110
+ )}
111
+ <Tooltip id={INSTRUMENT_TOOLTIP_ID} />
112
+ {!error
109
113
  && (
110
114
  <div className="lw-mt-2 lw-h-8">
111
115
  <InfoBox text={`${lang('last_updated')}: ${updatedTimestamp}`} />
112
116
  </div>
113
117
  )}
114
- </div>
118
+ </div>
119
+ )}
120
+ </>
115
121
  );
116
122
  };
117
123
 
@@ -10,6 +10,7 @@ import {
10
10
  InfoBox,
11
11
  formatUpdatedTimestamp,
12
12
  ThemeContext,
13
+ Size,
13
14
  } from '@oanda/labs-widget-common';
14
15
  import { useLocale } from '@oanda/mono-i18n';
15
16
  import { useQuery } from '@apollo/client';
@@ -33,7 +34,8 @@ const Widget = ({
33
34
  },
34
35
  fetchPolicy: 'cache-and-network',
35
36
  });
36
- const { isDesktop } = useContext(ThemeContext);
37
+ const { size } = useContext(ThemeContext);
38
+ const isDesktop = size === Size.DESKTOP;
37
39
  const { lang } = useLocale();
38
40
 
39
41
  const { displayName, sentiment, updatedAt } = data?.sentiment?.[0] || {};
@@ -45,11 +47,13 @@ const Widget = ({
45
47
 
46
48
  return (
47
49
  <>
48
- <div
49
- data-testid="sentiment-widget"
50
- className="lw-border lw-border-solid lw-border-border-primary lw-bg-bg-primary lw-p-4 lw-text-sm lw-tracking-normal lw-text-text-primary"
51
- >
52
- {includeDescriptionLabels
50
+ {size && (
51
+ <>
52
+ <div
53
+ data-testid="sentiment-widget"
54
+ className="lw-border lw-border-solid lw-border-border-primary lw-bg-bg-primary lw-p-4 lw-text-sm lw-tracking-normal lw-text-text-primary"
55
+ >
56
+ {includeDescriptionLabels
53
57
  && (
54
58
  <div className="lw-mb-2 lw-flex lw-justify-between lw-font-semibold">
55
59
  <span className={classNames('lw-uppercase', {
@@ -67,32 +71,34 @@ const Widget = ({
67
71
  </span>
68
72
  </div>
69
73
  )}
70
- <div className="lw-flex lw-items-center lw-justify-between">
71
- <div className="lw-w-[120px] lw-shrink-0">
72
- {loading && <Loader size={LoaderSize.md} />}
73
- {!loading && !isError && (
74
+ <div className="lw-flex lw-items-center lw-justify-between">
75
+ <div className="lw-w-[120px] lw-shrink-0">
76
+ {loading && <Loader size={LoaderSize.md} />}
77
+ {!loading && !isError && (
74
78
  <Truncate
75
79
  maxWidth={120}
76
80
  tooltipId={INSTRUMENT_TOOLTIP_ID}
77
81
  className="lw-pr-2 lw-font-sans lw-text-sm lw-font-bold"
78
82
  text={displayName || '\u2014'}
79
83
  />
80
- )}
84
+ )}
85
+ </div>
86
+ <Sentiment
87
+ withError={false}
88
+ isLoading={loading}
89
+ height={SentimentHeight.md}
90
+ sentiment={sentiment}
91
+ />
81
92
  </div>
82
- <Sentiment
83
- withError={false}
84
- isLoading={loading}
85
- height={SentimentHeight.md}
86
- sentiment={sentiment}
87
- />
88
- </div>
89
93
 
90
- {!loading && isError && <Error />}
91
- </div>
92
- {!isError && updatedAt && (
94
+ {!loading && isError && <Error />}
95
+ </div>
96
+ {!isError && updatedAt && (
93
97
  <div className="lw-mt-2 lw-h-8">
94
98
  <InfoBox text={`${lang('last_updated')}: ${formatUpdatedTimestamp(updatedAt, lang('today')) || EMPTY_VALUE}`} />
95
99
  </div>
100
+ )}
101
+ </>
96
102
  )}
97
103
  </>
98
104
  );
@@ -4,6 +4,7 @@
4
4
  import React from 'react';
5
5
  import { render } from '@testing-library/react';
6
6
  import { MockedProvider } from '@apollo/client/testing';
7
+ import { Size, ThemeContext } from '@oanda/labs-widget-common';
7
8
  import { Tool } from '../src/SentimentWidget/Tool';
8
9
  import { getSentimentList } from '../src/gql/getSentimentList';
9
10
  import { Division } from '../src/gql/types/graphql';
@@ -67,7 +68,9 @@ describe('Tool component', () => {
67
68
  it('should render tool component', async () => {
68
69
  const { findByTestId, findAllByTestId } = render(
69
70
  <MockedProvider mocks={mocks}>
70
- <Tool division={Division.Oc} />
71
+ <ThemeContext.Provider value={{ size: Size.DESKTOP, isDark: true }}>
72
+ <Tool division={Division.Oc} />
73
+ </ThemeContext.Provider>
71
74
  </MockedProvider>,
72
75
  );
73
76
 
@@ -77,7 +80,9 @@ describe('Tool component', () => {
77
80
  it('should render error', async () => {
78
81
  const { findByTestId } = render(
79
82
  <MockedProvider mocks={errorMocks}>
80
- <Tool division={Division.Oc} />
83
+ <ThemeContext.Provider value={{ size: Size.DESKTOP, isDark: true }}>
84
+ <Tool division={Division.Oc} />
85
+ </ThemeContext.Provider>
81
86
  </MockedProvider>,
82
87
  );
83
88
 
@@ -4,6 +4,7 @@
4
4
  import React from 'react';
5
5
  import { render } from '@testing-library/react';
6
6
  import { MockedProvider } from '@apollo/client/testing';
7
+ import { ThemeContext, Size } from '@oanda/labs-widget-common';
7
8
  import { Widget } from '../src/SentimentWidget/Widget';
8
9
  import { getInstrumentSentiment } from '../src/gql/getInstrumentSentiment';
9
10
  import { Division } from '../src/gql/types/graphql';
@@ -62,7 +63,9 @@ describe('Widget component', () => {
62
63
  it('should render widget component', async () => {
63
64
  const { findByTestId } = render(
64
65
  <MockedProvider mocks={mocks}>
65
- <Widget division={Division.Oc} instrument="EUR/USD" />
66
+ <ThemeContext.Provider value={{ size: Size.DESKTOP, isDark: true }}>
67
+ <Widget division={Division.Oc} instrument="EUR/USD" />
68
+ </ThemeContext.Provider>
66
69
  </MockedProvider>,
67
70
  );
68
71
 
@@ -72,7 +75,9 @@ describe('Widget component', () => {
72
75
  it('should render error when both sentiment values are 0', async () => {
73
76
  const { findByTestId } = render(
74
77
  <MockedProvider mocks={zeroPercentMocks}>
75
- <Widget division={Division.Oc} instrument="GBP/USD" />
78
+ <ThemeContext.Provider value={{ size: Size.DESKTOP, isDark: true }}>
79
+ <Widget division={Division.Oc} instrument="GBP/USD" />
80
+ </ThemeContext.Provider>
76
81
  </MockedProvider>,
77
82
  );
78
83