@oanda/labs-sentiment-widget 1.0.123 → 1.0.125

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.
@@ -40,12 +40,12 @@ const Tool = _ref => {
40
40
  const {
41
41
  lang
42
42
  } = (0, _monoI18n.useLocale)();
43
- const [updatedTimestamp, setUpdatedTimestamp] = (0, _react.useState)(_constant.EMPTY_VALUE);
43
+ const [updatedTimestamp, setUpdatedTimestamp] = (0, _react.useState)(_labsWidgetCommon.EMPTY_VALUE);
44
44
  (0, _react.useEffect)(() => {
45
45
  if (data) {
46
46
  var _;
47
47
  setSortedData((0, _utils.sortData)(data, sort));
48
- setUpdatedTimestamp((0, _labsWidgetCommon.formatUpdatedTimestamp)((_ = data.sentimentList[0]) === null || _ === void 0 ? void 0 : _.updatedAt, lang('today')));
48
+ setUpdatedTimestamp((_ = data.sentimentList[0]) === null || _ === void 0 ? void 0 : _.updatedAt);
49
49
  }
50
50
  }, [data, sort]);
51
51
  return _react.default.createElement(_react.default.Fragment, null, size && _react.default.createElement("div", {
@@ -93,8 +93,9 @@ const Tool = _ref => {
93
93
  id: _constant.INSTRUMENT_TOOLTIP_ID
94
94
  }), !error && _react.default.createElement("div", {
95
95
  className: "lw-mt-2 lw-h-8"
96
- }, _react.default.createElement(_labsWidgetCommon.InfoBox, {
97
- text: "".concat(lang('last_updated'), ": ").concat(updatedTimestamp)
96
+ }, _react.default.createElement(_labsWidgetCommon.LastUpdated, {
97
+ timestamp: updatedTimestamp,
98
+ labelCallback: lang
98
99
  }))));
99
100
  };
100
101
  exports.Tool = Tool;
@@ -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","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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","ignoreList":[]}
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","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","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","LastUpdated","timestamp","labelCallback","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 ThemeContext,\n Size,\n EMPTY_VALUE,\n LastUpdated,\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 { 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(data.sentimentList![0]?.updatedAt);\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 <LastUpdated timestamp={updatedTimestamp} labelCallback={lang} />\n </div>\n )}\n </div>\n )}\n </>\n );\n};\n\nexport { Tool };\n"],"mappings":"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","ignoreList":[]}
@@ -77,8 +77,9 @@ const Widget = _ref => {
77
77
  sentiment: sentiment
78
78
  })), !loading && isError && _react.default.createElement(_labsWidgetCommon.Error, null)), !isError && updatedAt && _react.default.createElement("div", {
79
79
  className: "lw-mt-2 lw-h-8"
80
- }, _react.default.createElement(_labsWidgetCommon.InfoBox, {
81
- text: "".concat(lang('last_updated'), ": ").concat((0, _labsWidgetCommon.formatUpdatedTimestamp)(updatedAt, lang('today')) || _constant.EMPTY_VALUE)
80
+ }, _react.default.createElement(_labsWidgetCommon.LastUpdated, {
81
+ timestamp: updatedAt,
82
+ labelCallback: lang
82
83
  }))));
83
84
  };
84
85
  exports.Widget = Widget;
@@ -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","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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","ignoreList":[]}
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","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","LastUpdated","timestamp","labelCallback","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 ThemeContext,\n Size,\n LastUpdated,\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 { 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 <LastUpdated timestamp={updatedAt} labelCallback={lang} />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n\nexport { Widget };\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAWA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,uBAAA,GAAAN,OAAA;AAGA,IAAAO,SAAA,GAAAP,OAAA;AAAoD,SAAAE,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAb,wBAAAa,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAH,UAAA,SAAAG,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAF,OAAA,EAAAE,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAJ,CAAA,UAAAG,CAAA,CAAAE,GAAA,CAAAL,CAAA,OAAAM,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAZ,CAAA,oBAAAY,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAd,CAAA,EAAAY,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAX,CAAA,EAAAY,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAZ,CAAA,CAAAY,CAAA,YAAAN,CAAA,CAAAR,OAAA,GAAAE,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAhB,CAAA,EAAAM,CAAA,GAAAA,CAAA;AAEpD,MAAMW,MAAM,GAAGC,IAAA,IAIc;EAAA,IAAAC,eAAA;EAAA,IAJb;IACdC,UAAU;IACVC,QAAQ;IACRC,wBAAwB,GAAG;EACN,CAAC,GAAAJ,IAAA;EACtB,MAAM;IAAEK,OAAO;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAG,IAAAC,gBAAQ,EAGvCC,8CAAsB,EAAE;IACxBC,SAAS,EAAE;MACTC,IAAI,EAAET,UAAU;MAChBC;IACF,CAAC;IACDS,WAAW,EAAE;EACf,CAAC,CAAC;EACF,MAAM;IAAEC;EAAK,CAAC,GAAG,IAAAC,iBAAU,EAACC,8BAAY,CAAC;EACzC,MAAMC,SAAS,GAAGH,IAAI,KAAKI,sBAAI,CAACC,OAAO;EACvC,MAAM;IAAEC;EAAK,CAAC,GAAG,IAAAC,mBAAS,EAAC,CAAC;EAE5B,MAAM;IAAEC,WAAW;IAAEC,SAAS;IAAEC;EAAU,CAAC,GAAG,CAAAjB,IAAI,aAAJA,IAAI,gBAAAL,eAAA,GAAJK,IAAI,CAAEgB,SAAS,cAAArB,eAAA,uBAAfA,eAAA,CAAkB,CAAC,CAAC,KAAI,CAAC,CAAC;EAExE,MAAMuB,OAAO,GAAGjB,KAAK,IACf,CAAAe,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEG,YAAY,MAAK,CAAC,IAAI,CAAAH,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEI,WAAW,MAAK,CAAE,IAC/D,CAAAJ,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEG,YAAY,MAAKE,SAAS,IACrC,CAAAL,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEI,WAAW,MAAKC,SAAS;EAEzC,OACE3D,MAAA,CAAAY,OAAA,CAAAgD,aAAA,CAAA5D,MAAA,CAAAY,OAAA,CAAAiD,QAAA,QACGhB,IAAI,IACL7C,MAAA,CAAAY,OAAA,CAAAgD,aAAA,CAAA5D,MAAA,CAAAY,OAAA,CAAAiD,QAAA,QACE7D,MAAA,CAAAY,OAAA,CAAAgD,aAAA;IACE,eAAY,kBAAkB;IAC9BE,SAAS,EAAC;EAA+H,GAExI1B,wBAAwB,IAEzBpC,MAAA,CAAAY,OAAA,CAAAgD,aAAA;IAAKE,SAAS,EAAC;EAAqD,GAClE9D,MAAA,CAAAY,OAAA,CAAAgD,aAAA;IAAME,SAAS,EAAE,IAAAC,mBAAU,EAAC,cAAc,EAAE;MAC1C,UAAU,EAAEf,SAAS;MACrB,gBAAgB,EAAE,CAACA;IACrB,CAAC;EAAE,GAEAG,IAAI,CAAC,WAAW,CACb,CAAC,EACPnD,MAAA,CAAAY,OAAA,CAAAgD,aAAA;IAAME,SAAS,EAAE,IAAAC,mBAAU,EAAC,4BAA4B,EAAE;MACxD,UAAU,EAAEf;IACd,CAAC;EAAE,GAEAG,IAAI,CAAC,UAAU,CACZ,CACH,CACJ,EACDnD,MAAA,CAAAY,OAAA,CAAAgD,aAAA;IAAKE,SAAS,EAAC;EAA4C,GACzD9D,MAAA,CAAAY,OAAA,CAAAgD,aAAA;IAAKE,SAAS,EAAC;EAA0B,GACtCzB,OAAO,IAAIrC,MAAA,CAAAY,OAAA,CAAAgD,aAAA,CAACvD,iBAAA,CAAA2D,MAAM;IAACnB,IAAI,EAAEoB,4BAAU,CAACC;EAAG,CAAE,CAAC,EAC1C,CAAC7B,OAAO,IAAI,CAACmB,OAAO,IACrBxD,MAAA,CAAAY,OAAA,CAAAgD,aAAA,CAACvD,iBAAA,CAAA8D,QAAQ;IACPC,QAAQ,EAAE,GAAI;IACdC,SAAS,EAAEC,+BAAsB;IACjCR,SAAS,EAAC,8CAA8C;IACxDS,IAAI,EAAElB,WAAW,IAAI;EAAS,CAC/B,CAEE,CAAC,EACNrD,MAAA,CAAAY,OAAA,CAAAgD,aAAA,CAACvD,iBAAA,CAAAmE,SAAS;IACRC,SAAS,EAAE,KAAM;IACjBC,SAAS,EAAErC,OAAQ;IACnBsC,MAAM,EAAEC,iCAAe,CAACV,EAAG;IAC3BZ,SAAS,EAAEA;EAAU,CACtB,CACE,CAAC,EAEL,CAACjB,OAAO,IAAImB,OAAO,IAAIxD,MAAA,CAAAY,OAAA,CAAAgD,aAAA,CAACvD,iBAAA,CAAAwE,KAAK,MAAE,CAC7B,CAAC,EACL,CAACrB,OAAO,IAAID,SAAS,IACtBvD,MAAA,CAAAY,OAAA,CAAAgD,aAAA;IAAKE,SAAS,EAAC;EAAgB,GAC7B9D,MAAA,CAAAY,OAAA,CAAAgD,aAAA,CAACvD,iBAAA,CAAAyE,WAAW;IAACC,SAAS,EAAExB,SAAU;IAACyB,aAAa,EAAE7B;EAAK,CAAE,CACtD,CAEL,CAEF,CAAC;AAEP,CAAC;AAAC8B,OAAA,CAAAlD,MAAA,GAAAA,MAAA","ignoreList":[]}
@@ -3,7 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.INSTRUMENT_TOOLTIP_ID = exports.EMPTY_VALUE = void 0;
7
- const EMPTY_VALUE = exports.EMPTY_VALUE = '\u2014';
6
+ exports.INSTRUMENT_TOOLTIP_ID = void 0;
8
7
  const INSTRUMENT_TOOLTIP_ID = exports.INSTRUMENT_TOOLTIP_ID = 'instrument_tooltip_id';
9
8
  //# sourceMappingURL=constant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constant.js","names":["EMPTY_VALUE","exports","INSTRUMENT_TOOLTIP_ID"],"sources":["../../src/constant.ts"],"sourcesContent":["const EMPTY_VALUE = '\\u2014';\n\nconst INSTRUMENT_TOOLTIP_ID = 'instrument_tooltip_id';\n\nexport { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID };\n"],"mappings":";;;;;;AAAA,MAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,QAAQ;AAE5B,MAAME,qBAAqB,GAAAD,OAAA,CAAAC,qBAAA,GAAG,uBAAuB","ignoreList":[]}
1
+ {"version":3,"file":"constant.js","names":["INSTRUMENT_TOOLTIP_ID","exports"],"sources":["../../src/constant.ts"],"sourcesContent":["const INSTRUMENT_TOOLTIP_ID = 'instrument_tooltip_id';\n\nexport { INSTRUMENT_TOOLTIP_ID };\n"],"mappings":";;;;;;AAAA,MAAMA,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAG,uBAAuB","ignoreList":[]}
@@ -1,13 +1,13 @@
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, Size } from '@oanda/labs-widget-common';
3
+ import { Sentiment, SentimentHeight, Loader, LoaderSize, ChartError, Truncate, Tooltip, ThemeContext, Size, EMPTY_VALUE, LastUpdated } 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';
7
7
  import { sortData } from './utils';
8
8
  import { SelectedArrow, SortSwitch } from './components/SortSwitch';
9
9
  import { Sort } from '../gql/types/graphql';
10
- import { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID } from '../constant';
10
+ import { INSTRUMENT_TOOLTIP_ID } from '../constant';
11
11
  const Tool = _ref => {
12
12
  let {
13
13
  division
@@ -36,7 +36,7 @@ const Tool = _ref => {
36
36
  if (data) {
37
37
  var _;
38
38
  setSortedData(sortData(data, sort));
39
- setUpdatedTimestamp(formatUpdatedTimestamp((_ = data.sentimentList[0]) === null || _ === void 0 ? void 0 : _.updatedAt, lang('today')));
39
+ setUpdatedTimestamp((_ = data.sentimentList[0]) === null || _ === void 0 ? void 0 : _.updatedAt);
40
40
  }
41
41
  }, [data, sort]);
42
42
  return React.createElement(React.Fragment, null, size && React.createElement("div", {
@@ -84,8 +84,9 @@ const Tool = _ref => {
84
84
  id: INSTRUMENT_TOOLTIP_ID
85
85
  }), !error && React.createElement("div", {
86
86
  className: "lw-mt-2 lw-h-8"
87
- }, React.createElement(InfoBox, {
88
- text: "".concat(lang('last_updated'), ": ").concat(updatedTimestamp)
87
+ }, React.createElement(LastUpdated, {
88
+ timestamp: updatedTimestamp,
89
+ labelCallback: lang
89
90
  }))));
90
91
  };
91
92
  export { Tool };
@@ -1 +1 @@
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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","ignoreList":[]}
1
+ {"version":3,"file":"Tool.js","names":["React","useEffect","useState","useContext","classNames","Sentiment","SentimentHeight","Loader","LoaderSize","ChartError","Truncate","Tooltip","ThemeContext","Size","EMPTY_VALUE","LastUpdated","useQuery","useLocale","getSentimentList","sortData","SelectedArrow","SortSwitch","Sort","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","timestamp","labelCallback"],"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 ThemeContext,\n Size,\n EMPTY_VALUE,\n LastUpdated,\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 { 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(data.sentimentList![0]?.updatedAt);\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 <LastUpdated timestamp={updatedTimestamp} labelCallback={lang} />\n </div>\n )}\n </div>\n )}\n </>\n );\n};\n\nexport { Tool };\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,EAAEC,UAAU,QAAQ,OAAO;AAC9D,OAAOC,UAAU,MAAM,YAAY;AACnC,SACEC,SAAS,EACTC,eAAe,EACfC,MAAM,EACNC,UAAU,EACVC,UAAU,EACVC,QAAQ,EACRC,OAAO,EACPC,YAAY,EACZC,IAAI,EACJC,WAAW,EACXC,WAAW,QACN,2BAA2B;AAClC,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,gBAAgB,QAAQ,yBAAyB;AAE1D,SAASC,QAAQ,QAAQ,SAAS;AAClC,SAASC,aAAa,EAAEC,UAAU,QAAQ,yBAAyB;AACnE,SAC8EC,IAAI,QAC3E,sBAAsB;AAC7B,SAASC,qBAAqB,QAAQ,aAAa;AAEnD,MAAMC,IAAI,GAAGC,IAAA,IAAuC;EAAA,IAAtC;IAAEC;EAA8B,CAAC,GAAAD,IAAA;EAC7C,MAAM;IAAEE;EAAK,CAAC,GAAGxB,UAAU,CAACS,YAAY,CAAC;EACzC,MAAMgB,SAAS,GAAGD,IAAI,KAAKd,IAAI,CAACgB,OAAO;EACvC,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAG7B,QAAQ,CAACoB,IAAI,CAACU,OAAO,CAAC;EAC9C,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGhC,QAAQ,CAAoC,IAAIiC,KAAK,CAAC,EAAE,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACvG,MAAM;IAAEC,OAAO;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAGvB,QAAQ,CAGvCE,gBAAgB,EAAE;IAClBsB,SAAS,EAAE;MACTd;IACF,CAAC;IACDe,WAAW,EAAE;EACf,CAAC,CAAC;EAEF,MAAM;IAAEC;EAAK,CAAC,GAAGzB,SAAS,CAAC,CAAC;EAC5B,MAAM,CAAC0B,gBAAgB,EAAEC,mBAAmB,CAAC,GAAG1C,QAAQ,CAACY,WAAW,CAAC;EAErEb,SAAS,CAAC,MAAM;IACd,IAAIqC,IAAI,EAAE;MAAA,IAAAO,CAAA;MACRX,aAAa,CAACf,QAAQ,CAACmB,IAAI,EAAER,IAAI,CAAC,CAAC;MACnCc,mBAAmB,EAAAC,CAAA,GAACP,IAAI,CAACQ,aAAa,CAAE,CAAC,CAAC,cAAAD,CAAA,uBAAtBA,CAAA,CAAwBE,SAAS,CAAC;IACxD;EAEF,CAAC,EAAE,CAACT,IAAI,EAAER,IAAI,CAAC,CAAC;EAEhB,OACE9B,KAAA,CAAAgD,aAAA,CAAAhD,KAAA,CAAAiD,QAAA,QACGtB,IAAI,IACL3B,KAAA,CAAAgD,aAAA;IAAK,eAAY,gBAAgB;IAACE,SAAS,EAAC;EAAiF,GAC1HX,KAAK,IAAIN,UAAU,CAACkB,MAAM,KAAK,CAAC,GAC/BnD,KAAA,CAAAgD,aAAA;IAAKE,SAAS,EAAC;EAAkH,GAC/HlD,KAAA,CAAAgD,aAAA,CAACvC,UAAU,MAAE,CACV,CAAC,GAENT,KAAA,CAAAgD,aAAA,CAAAhD,KAAA,CAAAiD,QAAA,QACEjD,KAAA,CAAAgD,aAAA;IAAKE,SAAS,EAAC;EAAgC,GAC7ClD,KAAA,CAAAgD,aAAA,CAAC3B,UAAU;IACT+B,QAAQ,EAAEf,OAAQ;IAClBgB,QAAQ,EAAEvB,IAAI,KAAKR,IAAI,CAACU,OAAO,GAAGZ,aAAa,CAACkC,EAAE,GAAGlC,aAAa,CAACmC,IAAK;IACxEC,iBAAiB,EAAEA,CAAA,KAAMzB,OAAO,CAACT,IAAI,CAACmC,OAAO,CAAE;IAC/CC,eAAe,EAAEA,CAAA,KAAM3B,OAAO,CAACT,IAAI,CAACU,OAAO;EAAE,CAC9C,CACE,CAAC,EACNhC,KAAA,CAAAgD,aAAA;IAAKE,SAAS,EAAC;EAA+E,GAC5FlD,KAAA,CAAAgD,aAAA;IAAKE,SAAS,EAAC;EAAqD,GAClElD,KAAA,CAAAgD,aAAA;IAAME,SAAS,EAAE9C,UAAU,CAAC,cAAc,EAAE;MAC1C,UAAU,EAAEwB,SAAS;MACrB,gBAAgB,EAAE,CAACA;IACrB,CAAC;EAAE,GAEAc,IAAI,CAAC,WAAW,CACb,CAAC,EACP1C,KAAA,CAAAgD,aAAA;IAAME,SAAS,EAAE9C,UAAU,CAAC,4BAA4B,EAAE;MACxD,UAAU,EAAEwB;IACd,CAAC;EAAE,GAEAc,IAAI,CAAC,UAAU,CACZ,CACH,CAAC,EACLT,UAAU,CAAC0B,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAC1B7D,KAAA,CAAAgD,aAAA;IAAKE,SAAS,EAAC,0CAA0C;IAACY,GAAG,EAAEF,IAAI,CAACG,IAAI,IAAIF;EAAM,GAChF7D,KAAA,CAAAgD,aAAA;IAAKE,SAAS,EAAC;EAA0B,GACtCb,OAAO,GACNrC,KAAA,CAAAgD,aAAA,CAACzC,MAAM;IAACoB,IAAI,EAAEnB,UAAU,CAACwD;EAAG,CAAE,CAAC,GAE/BhE,KAAA,CAAAgD,aAAA,CAACtC,QAAQ;IACPuD,QAAQ,EAAE,GAAI;IACdC,SAAS,EAAE3C,qBAAsB;IACjC2B,SAAS,EAAC,8CAA8C;IACxDiB,IAAI,EAAEP,IAAI,CAACQ,WAAW,IAAI;EAAS,CACpC,CAEA,CAAC,EACNpE,KAAA,CAAAgD,aAAA,CAAC3C,SAAS;IACRgE,SAAS,EAAEhC,OAAQ;IACnBiC,MAAM,EAAEhE,eAAe,CAAC0D,EAAG;IAC3BO,SAAS,EAAEX,IAAI,CAACW;EAAU,CAC3B,CACE,CACN,CACE,CACL,CACH,EACDvE,KAAA,CAAAgD,aAAA,CAACrC,OAAO;IAAC6D,EAAE,EAAEjD;EAAsB,CAAE,CAAC,EACrC,CAACgB,KAAK,IAEPvC,KAAA,CAAAgD,aAAA;IAAKE,SAAS,EAAC;EAAgB,GAC7BlD,KAAA,CAAAgD,aAAA,CAACjC,WAAW;IAAC0D,SAAS,EAAE9B,gBAAiB;IAAC+B,aAAa,EAAEhC;EAAK,CAAE,CAC7D,CAEF,CAEL,CAAC;AAEP,CAAC;AAED,SAASlB,IAAI","ignoreList":[]}
@@ -1,10 +1,10 @@
1
1
  import React, { useContext } from 'react';
2
2
  import classNames from 'classnames';
3
- import { Sentiment, SentimentHeight, Error, Loader, LoaderSize, Truncate, InfoBox, formatUpdatedTimestamp, ThemeContext, Size } from '@oanda/labs-widget-common';
3
+ import { Sentiment, SentimentHeight, Error, Loader, LoaderSize, Truncate, ThemeContext, Size, LastUpdated } 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';
7
- import { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID } from '../constant';
7
+ import { INSTRUMENT_TOOLTIP_ID } from '../constant';
8
8
  const Widget = _ref => {
9
9
  var _data$sentiment;
10
10
  let {
@@ -68,8 +68,9 @@ const Widget = _ref => {
68
68
  sentiment: sentiment
69
69
  })), !loading && isError && React.createElement(Error, null)), !isError && updatedAt && React.createElement("div", {
70
70
  className: "lw-mt-2 lw-h-8"
71
- }, React.createElement(InfoBox, {
72
- text: "".concat(lang('last_updated'), ": ").concat(formatUpdatedTimestamp(updatedAt, lang('today')) || EMPTY_VALUE)
71
+ }, React.createElement(LastUpdated, {
72
+ timestamp: updatedAt,
73
+ labelCallback: lang
73
74
  }))));
74
75
  };
75
76
  export { Widget };
@@ -1 +1 @@
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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","ignoreList":[]}
1
+ {"version":3,"file":"Widget.js","names":["React","useContext","classNames","Sentiment","SentimentHeight","Error","Loader","LoaderSize","Truncate","ThemeContext","Size","LastUpdated","useLocale","useQuery","getInstrumentSentiment","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","timestamp","labelCallback"],"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 ThemeContext,\n Size,\n LastUpdated,\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 { 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 <LastUpdated timestamp={updatedAt} labelCallback={lang} />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n\nexport { Widget };\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,3 @@
1
- const EMPTY_VALUE = '\u2014';
2
1
  const INSTRUMENT_TOOLTIP_ID = 'instrument_tooltip_id';
3
- export { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID };
2
+ export { INSTRUMENT_TOOLTIP_ID };
4
3
  //# sourceMappingURL=constant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constant.js","names":["EMPTY_VALUE","INSTRUMENT_TOOLTIP_ID"],"sources":["../../src/constant.ts"],"sourcesContent":["const EMPTY_VALUE = '\\u2014';\n\nconst INSTRUMENT_TOOLTIP_ID = 'instrument_tooltip_id';\n\nexport { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID };\n"],"mappings":"AAAA,MAAMA,WAAW,GAAG,QAAQ;AAE5B,MAAMC,qBAAqB,GAAG,uBAAuB;AAErD,SAASD,WAAW,EAAEC,qBAAqB","ignoreList":[]}
1
+ {"version":3,"file":"constant.js","names":["INSTRUMENT_TOOLTIP_ID"],"sources":["../../src/constant.ts"],"sourcesContent":["const INSTRUMENT_TOOLTIP_ID = 'instrument_tooltip_id';\n\nexport { INSTRUMENT_TOOLTIP_ID };\n"],"mappings":"AAAA,MAAMA,qBAAqB,GAAG,uBAAuB;AAErD,SAASA,qBAAqB","ignoreList":[]}
@@ -1,3 +1,2 @@
1
- declare const EMPTY_VALUE = "\u2014";
2
1
  declare const INSTRUMENT_TOOLTIP_ID = "instrument_tooltip_id";
3
- export { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID };
2
+ export { INSTRUMENT_TOOLTIP_ID };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oanda/labs-sentiment-widget",
3
- "version": "1.0.123",
3
+ "version": "1.0.125",
4
4
  "description": "Labs Sentiment Widget",
5
5
  "main": "dist/main/index.js",
6
6
  "module": "dist/module/index.js",
@@ -13,7 +13,7 @@
13
13
  "license": "UNLICENSED",
14
14
  "dependencies": {
15
15
  "@apollo/client": "3.9.9",
16
- "@oanda/labs-widget-common": "^1.0.123",
16
+ "@oanda/labs-widget-common": "^1.0.125",
17
17
  "@oanda/mono-i18n": "10.0.1",
18
18
  "graphql": "16.8.1"
19
19
  },
@@ -21,5 +21,5 @@
21
21
  "@graphql-codegen/cli": "5.0.0",
22
22
  "@graphql-codegen/client-preset": "4.1.0"
23
23
  },
24
- "gitHead": "62307b37f0909cf1d26bd37aa5b15b3d6996b668"
24
+ "gitHead": "cf14333f39f6ee09d5276dac1230b218107c24c4"
25
25
  }
@@ -8,10 +8,10 @@ import {
8
8
  ChartError,
9
9
  Truncate,
10
10
  Tooltip,
11
- InfoBox,
12
- formatUpdatedTimestamp,
13
11
  ThemeContext,
14
12
  Size,
13
+ EMPTY_VALUE,
14
+ LastUpdated,
15
15
  } from '@oanda/labs-widget-common';
16
16
  import { useQuery } from '@apollo/client';
17
17
  import { useLocale } from '@oanda/mono-i18n';
@@ -22,7 +22,7 @@ import { SelectedArrow, SortSwitch } from './components/SortSwitch';
22
22
  import {
23
23
  GetSentimentListQuery, GetSentimentListQueryVariables, SentimentInstrument, Sort,
24
24
  } from '../gql/types/graphql';
25
- import { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID } from '../constant';
25
+ import { INSTRUMENT_TOOLTIP_ID } from '../constant';
26
26
 
27
27
  const Tool = ({ division }: SentimentToolConfig) => {
28
28
  const { size } = useContext(ThemeContext);
@@ -45,7 +45,7 @@ const Tool = ({ division }: SentimentToolConfig) => {
45
45
  useEffect(() => {
46
46
  if (data) {
47
47
  setSortedData(sortData(data, sort));
48
- setUpdatedTimestamp(formatUpdatedTimestamp(data.sentimentList![0]?.updatedAt, lang('today')));
48
+ setUpdatedTimestamp(data.sentimentList![0]?.updatedAt);
49
49
  }
50
50
  // eslint-disable-next-line react-hooks/exhaustive-deps
51
51
  }, [data, sort]);
@@ -112,7 +112,7 @@ const Tool = ({ division }: SentimentToolConfig) => {
112
112
  {!error
113
113
  && (
114
114
  <div className="lw-mt-2 lw-h-8">
115
- <InfoBox text={`${lang('last_updated')}: ${updatedTimestamp}`} />
115
+ <LastUpdated timestamp={updatedTimestamp} labelCallback={lang} />
116
116
  </div>
117
117
  )}
118
118
  </div>
@@ -7,17 +7,16 @@ import {
7
7
  Loader,
8
8
  LoaderSize,
9
9
  Truncate,
10
- InfoBox,
11
- formatUpdatedTimestamp,
12
10
  ThemeContext,
13
11
  Size,
12
+ LastUpdated,
14
13
  } from '@oanda/labs-widget-common';
15
14
  import { useLocale } from '@oanda/mono-i18n';
16
15
  import { useQuery } from '@apollo/client';
17
16
  import { getInstrumentSentiment } from '../gql/getInstrumentSentiment';
18
17
  import { SentimentWidgetConfig } from './types';
19
18
  import { GetInstrumentSentimentQuery, GetInstrumentSentimentQueryVariables } from '../gql/types/graphql';
20
- import { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID } from '../constant';
19
+ import { INSTRUMENT_TOOLTIP_ID } from '../constant';
21
20
 
22
21
  const Widget = ({
23
22
  instrument,
@@ -95,7 +94,7 @@ const Widget = ({
95
94
  </div>
96
95
  {!isError && updatedAt && (
97
96
  <div className="lw-mt-2 lw-h-8">
98
- <InfoBox text={`${lang('last_updated')}: ${formatUpdatedTimestamp(updatedAt, lang('today')) || EMPTY_VALUE}`} />
97
+ <LastUpdated timestamp={updatedAt} labelCallback={lang} />
99
98
  </div>
100
99
  )}
101
100
  </>
package/src/constant.ts CHANGED
@@ -1,5 +1,3 @@
1
- const EMPTY_VALUE = '\u2014';
2
-
3
1
  const INSTRUMENT_TOOLTIP_ID = 'instrument_tooltip_id';
4
2
 
5
- export { EMPTY_VALUE, INSTRUMENT_TOOLTIP_ID };
3
+ export { INSTRUMENT_TOOLTIP_ID };