@oanda/labs-instruments-table-widget 1.0.41 → 1.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +348 -0
  2. package/dist/main/InstrumentsTableWidget/InstrumentsTableWidget.js +5 -3
  3. package/dist/main/InstrumentsTableWidget/InstrumentsTableWidget.js.map +1 -1
  4. package/dist/main/InstrumentsTableWidget/Main.js +17 -14
  5. package/dist/main/InstrumentsTableWidget/Main.js.map +1 -1
  6. package/dist/main/InstrumentsTableWidget/components/Filters/Filters.js +1 -2
  7. package/dist/main/InstrumentsTableWidget/components/Filters/Filters.js.map +1 -1
  8. package/dist/main/InstrumentsTableWidget/config.js +9 -6
  9. package/dist/main/InstrumentsTableWidget/config.js.map +1 -1
  10. package/dist/main/InstrumentsTableWidget/render.js +1 -1
  11. package/dist/main/InstrumentsTableWidget/render.js.map +1 -1
  12. package/dist/main/InstrumentsTableWidget/types.js.map +1 -1
  13. package/dist/main/InstrumentsTableWidget/utils.js +6 -5
  14. package/dist/main/InstrumentsTableWidget/utils.js.map +1 -1
  15. package/dist/main/gql/resolveInstrumentsWithFilters.js +3 -32
  16. package/dist/main/gql/resolveInstrumentsWithFilters.js.map +1 -1
  17. package/dist/main/gql/types/fragment-masking.js +3 -2
  18. package/dist/main/gql/types/fragment-masking.js.map +1 -1
  19. package/dist/main/gql/types/gql.js +4 -4
  20. package/dist/main/gql/types/gql.js.map +1 -1
  21. package/dist/main/gql/types/graphql.js +39 -11
  22. package/dist/main/gql/types/graphql.js.map +1 -1
  23. package/dist/module/InstrumentsTableWidget/InstrumentsTableWidget.js +5 -3
  24. package/dist/module/InstrumentsTableWidget/InstrumentsTableWidget.js.map +1 -1
  25. package/dist/module/InstrumentsTableWidget/Main.js +16 -12
  26. package/dist/module/InstrumentsTableWidget/Main.js.map +1 -1
  27. package/dist/module/InstrumentsTableWidget/config.js +9 -6
  28. package/dist/module/InstrumentsTableWidget/config.js.map +1 -1
  29. package/dist/module/InstrumentsTableWidget/render.js +2 -2
  30. package/dist/module/InstrumentsTableWidget/render.js.map +1 -1
  31. package/dist/module/InstrumentsTableWidget/types.js.map +1 -1
  32. package/dist/module/InstrumentsTableWidget/utils.js +7 -6
  33. package/dist/module/InstrumentsTableWidget/utils.js.map +1 -1
  34. package/dist/module/gql/resolveInstrumentsWithFilters.js +3 -32
  35. package/dist/module/gql/resolveInstrumentsWithFilters.js.map +1 -1
  36. package/dist/module/gql/types/fragment-masking.js +3 -2
  37. package/dist/module/gql/types/fragment-masking.js.map +1 -1
  38. package/dist/module/gql/types/gql.js +3 -2
  39. package/dist/module/gql/types/gql.js.map +1 -1
  40. package/dist/module/gql/types/graphql.js +38 -10
  41. package/dist/module/gql/types/graphql.js.map +1 -1
  42. package/dist/types/InstrumentsTableWidget/types.d.ts +3 -3
  43. package/dist/types/InstrumentsTableWidget/utils.d.ts +3 -2
  44. package/dist/types/gql/types/gql.d.ts +3 -3
  45. package/dist/types/gql/types/graphql.d.ts +70 -9
  46. package/package.json +4 -4
  47. package/src/InstrumentsTableWidget/InstrumentsTableWidget.tsx +6 -2
  48. package/src/InstrumentsTableWidget/render.tsx +3 -3
  49. package/src/InstrumentsTableWidget/types.ts +3 -3
  50. package/src/InstrumentsTableWidget/utils.ts +8 -6
  51. package/src/gql/resolveInstrumentsWithFilters.ts +1 -1
  52. package/src/gql/types/gql.ts +3 -3
  53. package/src/gql/types/graphql.ts +83 -12
  54. package/test/Main.test.tsx +8 -12
  55. package/test/utils.test.ts +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"InstrumentsTableWidget.js","names":["ApolloClient","InMemoryCache","DataRecordType","WidgetProvider","WidgetWrapper","React","translations","Main","PriceType","getLiveRatesDivisionCode","InstrumentsTableWidget","_ref","division","instruments","columns","graphqlUrl","locale","theme","isParamError","logoLink","liveRatesUrl","assetClasses","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","priceType","Division","client","uri","cache","divisionCode","liveRates","some","column","BUY","SELL","DAILY_CHANGE","SPREAD","HIGH","LOW","url","options","undefined","createElement","linkArea","isLiveRatesDisabled"],"sources":["../../../src/InstrumentsTableWidget/InstrumentsTableWidget.tsx"],"sourcesContent":["import { ApolloClient, InMemoryCache } from '@apollo/client';\nimport {\n DataRecordType,\n WidgetProvider,\n WidgetWrapper,\n} from '@oanda/labs-widget-common';\nimport React from 'react';\n\nimport { translations } from '../translations';\nimport { Main } from './Main';\nimport { type InstrumentsTableConfig, PriceType } from './types';\nimport { getLiveRatesDivisionCode } from './utils';\n\nconst InstrumentsTableWidget = ({\n division,\n instruments,\n columns,\n graphqlUrl,\n locale,\n theme,\n isParamError,\n logoLink,\n liveRatesUrl,\n assetClasses,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n priceType = PriceType.Division,\n}: InstrumentsTableConfig) => {\n const client = new ApolloClient({\n uri: graphqlUrl,\n cache: new InMemoryCache(),\n });\n\n const divisionCode = getLiveRatesDivisionCode(\n division,\n priceType,\n dataSource\n );\n\n const liveRates =\n !columns ||\n columns?.some(\n (column) =>\n column === DataRecordType.BUY ||\n column === DataRecordType.SELL ||\n column === DataRecordType.DAILY_CHANGE ||\n column === DataRecordType.SPREAD ||\n column === DataRecordType.HIGH ||\n column === DataRecordType.LOW\n )\n ? {\n url: liveRatesUrl,\n options: { divisionCode, dataSource },\n }\n : undefined;\n\n return (\n <WidgetProvider\n client={client}\n liveRates={liveRates}\n locale={locale}\n theme={theme}\n translations={translations}\n >\n <WidgetWrapper\n isParamError={isParamError}\n linkArea=\"logo\"\n logoLink={logoLink}\n >\n <Main\n assetClasses={assetClasses}\n columns={columns}\n dataSource={dataSource}\n division={division}\n instruments={instruments}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n isLiveRatesDisabled={liveRates === undefined}\n recordsPerPage={recordsPerPage}\n />\n </WidgetWrapper>\n </WidgetProvider>\n );\n};\n\nexport { InstrumentsTableWidget };\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,aAAa,QAAQ,gBAAgB;AAC5D,SACEC,cAAc,EACdC,cAAc,EACdC,aAAa,QACR,2BAA2B;AAClC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,IAAI,QAAQ,QAAQ;AAC7B,SAAsCC,SAAS,QAAQ,SAAS;AAChE,SAASC,wBAAwB,QAAQ,SAAS;AAElD,MAAMC,sBAAsB,GAAGC,IAAA,IAgBD;EAAA,IAhBE;IAC9BC,QAAQ;IACRC,WAAW;IACXC,OAAO;IACPC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,YAAY;IACZC,QAAQ;IACRC,YAAY;IACZC,YAAY;IACZC,yBAAyB;IACzBC,yBAAyB;IACzBC,cAAc;IACdC,UAAU;IACVC,SAAS,GAAGlB,SAAS,CAACmB;EACA,CAAC,GAAAhB,IAAA;EACvB,MAAMiB,MAAM,GAAG,IAAI5B,YAAY,CAAC;IAC9B6B,GAAG,EAAEd,UAAU;IACfe,KAAK,EAAE,IAAI7B,aAAa,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAM8B,YAAY,GAAGtB,wBAAwB,CAC3CG,QAAQ,EACRc,SAAS,EACTD,UACF,CAAC;EAED,MAAMO,SAAS,GACb,CAAClB,OAAO,IACRA,OAAO,EAAEmB,IAAI,CACVC,MAAM,IACLA,MAAM,KAAKhC,cAAc,CAACiC,GAAG,IAC7BD,MAAM,KAAKhC,cAAc,CAACkC,IAAI,IAC9BF,MAAM,KAAKhC,cAAc,CAACmC,YAAY,IACtCH,MAAM,KAAKhC,cAAc,CAACoC,MAAM,IAChCJ,MAAM,KAAKhC,cAAc,CAACqC,IAAI,IAC9BL,MAAM,KAAKhC,cAAc,CAACsC,GAC9B,CAAC,GACG;IACEC,GAAG,EAAErB,YAAY;IACjBsB,OAAO,EAAE;MAAEX,YAAY;MAAEN;IAAW;EACtC,CAAC,GACDkB,SAAS;EAEf,OACEtC,KAAA,CAAAuC,aAAA,CAACzC,cAAc;IACbyB,MAAM,EAAEA,MAAO;IACfI,SAAS,EAAEA,SAAU;IACrBhB,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA,KAAM;IACbX,YAAY,EAAEA;EAAa,GAE3BD,KAAA,CAAAuC,aAAA,CAACxC,aAAa;IACZc,YAAY,EAAEA,YAAa;IAC3B2B,QAAQ,EAAC,MAAM;IACf1B,QAAQ,EAAEA;EAAS,GAEnBd,KAAA,CAAAuC,aAAA,CAACrC,IAAI;IACHc,YAAY,EAAEA,YAAa;IAC3BP,OAAO,EAAEA,OAAQ;IACjBW,UAAU,EAAEA,UAAW;IACvBb,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBS,yBAAyB,EAAEA,yBAA0B;IACrDC,yBAAyB,EAAEA,yBAA0B;IACrDuB,mBAAmB,EAAEd,SAAS,KAAKW,SAAU;IAC7CnB,cAAc,EAAEA;EAAe,CAChC,CACY,CACD,CAAC;AAErB,CAAC;AAED,SAASd,sBAAsB","ignoreList":[]}
1
+ {"version":3,"file":"InstrumentsTableWidget.js","names":["ApolloClient","InMemoryCache","DataRecordType","WidgetProvider","WidgetWrapper","React","DataSource","translations","Main","PriceType","getLiveRatesDivisionCode","InstrumentsTableWidget","_ref","division","instruments","columns","graphqlUrl","locale","theme","isParamError","logoLink","liveRatesUrl","assetClasses","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","priceType","Division","client","uri","cache","liveRatesDataSource","All","undefined","divisionCode","V20","liveRates","some","column","BUY","SELL","DAILY_CHANGE","SPREAD","HIGH","LOW","url","options","createElement","linkArea","isLiveRatesDisabled"],"sources":["../../../src/InstrumentsTableWidget/InstrumentsTableWidget.tsx"],"sourcesContent":["import { ApolloClient, InMemoryCache } from '@apollo/client';\nimport {\n DataRecordType,\n WidgetProvider,\n WidgetWrapper,\n} from '@oanda/labs-widget-common';\nimport React from 'react';\n\nimport { DataSource } from '../gql/types/graphql';\nimport { translations } from '../translations';\nimport { Main } from './Main';\nimport { type InstrumentsTableConfig, PriceType } from './types';\nimport { getLiveRatesDivisionCode } from './utils';\n\nconst InstrumentsTableWidget = ({\n division,\n instruments,\n columns,\n graphqlUrl,\n locale,\n theme,\n isParamError,\n logoLink,\n liveRatesUrl,\n assetClasses,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n priceType = PriceType.Division,\n}: InstrumentsTableConfig) => {\n const client = new ApolloClient({\n uri: graphqlUrl,\n cache: new InMemoryCache(),\n });\n\n const liveRatesDataSource =\n dataSource === DataSource.All ? undefined : dataSource;\n\n const divisionCode = getLiveRatesDivisionCode(\n division,\n priceType,\n liveRatesDataSource || DataSource.V20\n );\n\n const liveRates =\n !columns ||\n columns?.some(\n (column) =>\n column === DataRecordType.BUY ||\n column === DataRecordType.SELL ||\n column === DataRecordType.DAILY_CHANGE ||\n column === DataRecordType.SPREAD ||\n column === DataRecordType.HIGH ||\n column === DataRecordType.LOW\n )\n ? {\n url: liveRatesUrl,\n options: { divisionCode, dataSource: liveRatesDataSource },\n }\n : undefined;\n\n return (\n <WidgetProvider\n client={client}\n liveRates={liveRates}\n locale={locale}\n theme={theme}\n translations={translations}\n >\n <WidgetWrapper\n isParamError={isParamError}\n linkArea=\"logo\"\n logoLink={logoLink}\n >\n <Main\n assetClasses={assetClasses}\n columns={columns}\n dataSource={dataSource}\n division={division}\n instruments={instruments}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n isLiveRatesDisabled={liveRates === undefined}\n recordsPerPage={recordsPerPage}\n />\n </WidgetWrapper>\n </WidgetProvider>\n );\n};\n\nexport { InstrumentsTableWidget };\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,aAAa,QAAQ,gBAAgB;AAC5D,SACEC,cAAc,EACdC,cAAc,EACdC,aAAa,QACR,2BAA2B;AAClC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,UAAU,QAAQ,sBAAsB;AACjD,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,IAAI,QAAQ,QAAQ;AAC7B,SAAsCC,SAAS,QAAQ,SAAS;AAChE,SAASC,wBAAwB,QAAQ,SAAS;AAElD,MAAMC,sBAAsB,GAAGC,IAAA,IAgBD;EAAA,IAhBE;IAC9BC,QAAQ;IACRC,WAAW;IACXC,OAAO;IACPC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,YAAY;IACZC,QAAQ;IACRC,YAAY;IACZC,YAAY;IACZC,yBAAyB;IACzBC,yBAAyB;IACzBC,cAAc;IACdC,UAAU;IACVC,SAAS,GAAGlB,SAAS,CAACmB;EACA,CAAC,GAAAhB,IAAA;EACvB,MAAMiB,MAAM,GAAG,IAAI7B,YAAY,CAAC;IAC9B8B,GAAG,EAAEd,UAAU;IACfe,KAAK,EAAE,IAAI9B,aAAa,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAM+B,mBAAmB,GACvBN,UAAU,KAAKpB,UAAU,CAAC2B,GAAG,GAAGC,SAAS,GAAGR,UAAU;EAExD,MAAMS,YAAY,GAAGzB,wBAAwB,CAC3CG,QAAQ,EACRc,SAAS,EACTK,mBAAmB,IAAI1B,UAAU,CAAC8B,GACpC,CAAC;EAED,MAAMC,SAAS,GACb,CAACtB,OAAO,IACRA,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEuB,IAAI,CACVC,MAAM,IACLA,MAAM,KAAKrC,cAAc,CAACsC,GAAG,IAC7BD,MAAM,KAAKrC,cAAc,CAACuC,IAAI,IAC9BF,MAAM,KAAKrC,cAAc,CAACwC,YAAY,IACtCH,MAAM,KAAKrC,cAAc,CAACyC,MAAM,IAChCJ,MAAM,KAAKrC,cAAc,CAAC0C,IAAI,IAC9BL,MAAM,KAAKrC,cAAc,CAAC2C,GAC9B,CAAC,GACG;IACEC,GAAG,EAAEzB,YAAY;IACjB0B,OAAO,EAAE;MAAEZ,YAAY;MAAET,UAAU,EAAEM;IAAoB;EAC3D,CAAC,GACDE,SAAS;EAEf,OACE7B,KAAA,CAAA2C,aAAA,CAAC7C,cAAc;IACb0B,MAAM,EAAEA,MAAO;IACfQ,SAAS,EAAEA,SAAU;IACrBpB,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA,KAAM;IACbX,YAAY,EAAEA;EAAa,GAE3BF,KAAA,CAAA2C,aAAA,CAAC5C,aAAa;IACZe,YAAY,EAAEA,YAAa;IAC3B8B,QAAQ,EAAC,MAAM;IACf7B,QAAQ,EAAEA;EAAS,GAEnBf,KAAA,CAAA2C,aAAA,CAACxC,IAAI;IACHc,YAAY,EAAEA,YAAa;IAC3BP,OAAO,EAAEA,OAAQ;IACjBW,UAAU,EAAEA,UAAW;IACvBb,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBS,yBAAyB,EAAEA,yBAA0B;IACrDC,yBAAyB,EAAEA,yBAA0B;IACrD0B,mBAAmB,EAAEb,SAAS,KAAKH,SAAU;IAC7CT,cAAc,EAAEA;EAAe,CAChC,CACY,CACD,CAAC;AAErB,CAAC;AAED,SAASd,sBAAsB","ignoreList":[]}
@@ -1,3 +1,8 @@
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
6
  import { useQuery } from '@apollo/client';
2
7
  import { DataRecordType, getHeaderConfig, LastUpdated, Pagination, Size, TableWidget, useLayoutProvider, useLiveRatesQuery } from '@oanda/labs-widget-common';
3
8
  import { useLocale } from '@oanda/mono-i18n';
@@ -9,6 +14,7 @@ import { Filters } from './components';
9
14
  import { assetClassLabels, headerConfigs, tradeModeLabels } from './config';
10
15
  import { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID } from './constant';
11
16
  const Main = _ref => {
17
+ var _headerConfig$instrum, _data$resolveInstrume2;
12
18
  let {
13
19
  instruments = [],
14
20
  division,
@@ -58,14 +64,15 @@ const Main = _ref => {
58
64
  errorPolicy: 'all'
59
65
  });
60
66
  useEffect(() => {
67
+ var _data$resolveInstrume;
61
68
  if (loading) {
62
69
  setRecords(new Array(recordsPerPage).fill({}));
63
70
  }
64
- if (!loading && data?.resolveInstrumentsWithFilters?.instruments) {
71
+ if (!loading && data !== null && data !== void 0 && (_data$resolveInstrume = data.resolveInstrumentsWithFilters) !== null && _data$resolveInstrume !== void 0 && _data$resolveInstrume.instruments) {
65
72
  const newRecords = data.resolveInstrumentsWithFilters.instruments.map(record => ({
66
- instrument: record?.name || '',
67
- displayName: record?.displayName || '',
68
- tradeMode: lang(tradeModeLabels[record?.tradeMode || ''])
73
+ instrument: (record === null || record === void 0 ? void 0 : record.name) || '',
74
+ displayName: (record === null || record === void 0 ? void 0 : record.displayName) || '',
75
+ tradeMode: lang(tradeModeLabels[(record === null || record === void 0 ? void 0 : record.tradeMode) || ''])
69
76
  }));
70
77
  setRecords(newRecords);
71
78
  setTotalRecords(data.resolveInstrumentsWithFilters.totalCount);
@@ -112,8 +119,7 @@ const Main = _ref => {
112
119
  recordsPerPage: recordsPerPage,
113
120
  totalRecords: totalRecords,
114
121
  onPageChange: numb => {
115
- setQueryVariables(prev => ({
116
- ...prev,
122
+ setQueryVariables(prev => _objectSpread(_objectSpread({}, prev), {}, {
117
123
  offset: numb * recordsPerPage
118
124
  }));
119
125
  }
@@ -129,16 +135,14 @@ const Main = _ref => {
129
135
  isAssetClassFilterEnabled: isAssetClassFilterEnabled,
130
136
  isInstrumentSearchEnabled: isInstrumentSearchEnabled,
131
137
  onAssetClassChange: assetClass => {
132
- setQueryVariables(prev => ({
133
- ...prev,
138
+ setQueryVariables(prev => _objectSpread(_objectSpread({}, prev), {}, {
134
139
  offset: 0,
135
140
  searchPattern: '',
136
141
  assetClass: assetClass[0] === 'ALL' ? assetClasses || [] : assetClass
137
142
  }));
138
143
  },
139
144
  onSearchChange: searchPattern => {
140
- setQueryVariables(prev => ({
141
- ...prev,
145
+ setQueryVariables(prev => _objectSpread(_objectSpread({}, prev), {}, {
142
146
  offset: 0,
143
147
  searchPattern
144
148
  }));
@@ -148,7 +152,7 @@ const Main = _ref => {
148
152
  count: totalRecords,
149
153
  hasError: showError,
150
154
  headerColumns: getHeaderConfig(columns, headerConfig),
151
- instrumentColumnWidth: headerConfig.instrument?.additionalStyles.minWidth,
155
+ instrumentColumnWidth: (_headerConfig$instrum = headerConfig.instrument) === null || _headerConfig$instrum === void 0 ? void 0 : _headerConfig$instrum.additionalStyles.minWidth,
152
156
  isLoading: loading,
153
157
  pageNumber: pageNumber,
154
158
  records: records,
@@ -160,7 +164,7 @@ const Main = _ref => {
160
164
  className: "lw-mt-2 lw-h-8"
161
165
  }, React.createElement(LastUpdated, {
162
166
  labelCallback: lang,
163
- timestamp: data?.resolveInstrumentsWithFilters?.updatedAt
167
+ timestamp: data === null || data === void 0 || (_data$resolveInstrume2 = data.resolveInstrumentsWithFilters) === null || _data$resolveInstrume2 === void 0 ? void 0 : _data$resolveInstrume2.updatedAt
164
168
  })));
165
169
  };
166
170
  export { Main };
@@ -1 +1 @@
1
- {"version":3,"file":"Main.js","names":["useQuery","DataRecordType","getHeaderConfig","LastUpdated","Pagination","Size","TableWidget","useLayoutProvider","useLiveRatesQuery","useLocale","React","useEffect","useRef","useState","useEventListener","resolveInstrumentsWithFilters","TradeMode","Filters","assetClassLabels","headerConfigs","tradeModeLabels","DEFAULT_COLUMNS","INSTRUMENT_TOOLTIP_ID","Main","_ref","instruments","division","assetClasses","columns","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","isLiveRatesDisabled","documentRef","document","size","isDesktop","DESKTOP","isTradingMode","includes","TRADE_MODE","SYMBOL","lang","target","setQuery","closeQuery","records","setRecords","Array","fill","totalRecords","setTotalRecords","queryVariables","setQueryVariables","count","searchPattern","offset","assetClass","withTradingModes","tradeModes","TradeLongonly","TradeShortonly","TradeCloseonly","undefined","pageNumber","Math","floor","data","error","loading","variables","fetchPolicy","errorPolicy","newRecords","map","record","instrument","name","displayName","tradeMode","totalCount","instrumentsNames","_ref2","showError","onVisibilityChange","current","visibilityState","_ref3","headerConfig","mobile","length","longInstruments","normal","createElement","Fragment","PaginationComponent","currentPage","disabled","onPageChange","numb","prev","TabsComponent","assetClassOptions","id","label","ALL","sort","a","b","localeCompare","onAssetClassChange","onSearchChange","activeColumns","hasError","headerColumns","instrumentColumnWidth","additionalStyles","minWidth","isLoading","testId","toolTipId","viewType","className","labelCallback","timestamp","updatedAt"],"sources":["../../../src/InstrumentsTableWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n DataRecordType,\n getHeaderConfig,\n LastUpdated,\n Pagination,\n Size,\n TableWidget,\n useLayoutProvider,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useEventListener } from 'usehooks-ts';\n\nimport { resolveInstrumentsWithFilters } from '../gql/resolveInstrumentsWithFilters';\nimport type { AssetClassName } from '../gql/types/graphql';\nimport {\n type ResolveInstrumentsWithFiltersQuery,\n type ResolveInstrumentsWithFiltersQueryVariables,\n TradeMode,\n} from '../gql/types/graphql';\nimport { Filters } from './components';\nimport { assetClassLabels, headerConfigs, tradeModeLabels } from './config';\nimport { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID } from './constant';\nimport type { MainProps } from './types';\n\nconst Main = ({\n instruments = [],\n division,\n assetClasses,\n columns = DEFAULT_COLUMNS,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n isLiveRatesDisabled,\n}: MainProps) => {\n const documentRef = useRef<Document>(document);\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n const isTradingMode =\n columns.includes(DataRecordType.TRADE_MODE) &&\n columns.includes(DataRecordType.SYMBOL);\n\n const { lang } = useLocale();\n const { target, setQuery, closeQuery } =\n useLiveRatesQuery(isLiveRatesDisabled);\n\n const [records, setRecords] = useState<DataRecord[]>(\n new Array(recordsPerPage || 10).fill({})\n );\n\n const [totalRecords, setTotalRecords] = useState<number>(0);\n\n const [queryVariables, setQueryVariables] =\n useState<ResolveInstrumentsWithFiltersQueryVariables>({\n division,\n count: recordsPerPage,\n searchPattern: '',\n offset: 0,\n assetClass: assetClasses || [],\n instruments,\n dataSource,\n withTradingModes: isTradingMode,\n tradeModes: isTradingMode\n ? [\n TradeMode.TradeLongonly,\n TradeMode.TradeShortonly,\n TradeMode.TradeCloseonly,\n ]\n : undefined,\n });\n\n const pageNumber = queryVariables.offset\n ? Math.floor(queryVariables.offset / (recordsPerPage || 1))\n : 0;\n\n const { data, error, loading } = useQuery<\n ResolveInstrumentsWithFiltersQuery,\n ResolveInstrumentsWithFiltersQueryVariables\n >(resolveInstrumentsWithFilters, {\n variables: queryVariables,\n fetchPolicy: 'network-only',\n errorPolicy: 'all',\n });\n\n useEffect(() => {\n if (loading) {\n setRecords(new Array(recordsPerPage).fill({}));\n }\n if (!loading && data?.resolveInstrumentsWithFilters?.instruments) {\n const newRecords = data.resolveInstrumentsWithFilters.instruments.map(\n (record) => ({\n instrument: record?.name || '',\n displayName: record?.displayName || '',\n tradeMode: lang(\n tradeModeLabels[\n (record?.tradeMode as keyof typeof tradeModeLabels) || ''\n ]\n ),\n })\n );\n setRecords(newRecords);\n setTotalRecords(data.resolveInstrumentsWithFilters.totalCount);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loading, data]);\n\n useEffect(() => {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records]);\n\n const showError = (!loading && !!error) || (!loading && !data);\n\n const onVisibilityChange = () => {\n if (documentRef.current.visibilityState === 'hidden') {\n closeQuery();\n }\n if (documentRef.current.visibilityState === 'visible') {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n }\n };\n\n useEventListener('visibilitychange', onVisibilityChange, documentRef);\n\n const headerConfig = !isDesktop\n ? headerConfigs.mobile\n : columns.length < 4\n ? headerConfigs.longInstruments\n : headerConfigs.normal;\n\n return (\n <>\n <TableWidget\n PaginationComponent={\n records.length > 0 && recordsPerPage ? (\n <Pagination\n currentPage={pageNumber}\n disabled={loading}\n recordsPerPage={recordsPerPage}\n totalRecords={totalRecords}\n onPageChange={(numb) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: numb * recordsPerPage,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n TabsComponent={\n isInstrumentSearchEnabled || isAssetClassFilterEnabled ? (\n <Filters\n assetClassOptions={[\n {\n id: 'ALL',\n label: lang(assetClassLabels.ALL),\n },\n ...(assetClasses || [])\n .map((assetClass) => ({\n id: assetClass,\n label: lang(assetClassLabels[assetClass]),\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n onAssetClassChange={(assetClass) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern: '',\n assetClass:\n assetClass[0] === 'ALL'\n ? assetClasses || []\n : (assetClass as AssetClassName[]),\n }));\n }}\n onSearchChange={(searchPattern) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n activeColumns={columns}\n count={totalRecords}\n hasError={showError}\n headerColumns={getHeaderConfig(columns, headerConfig)}\n instrumentColumnWidth={\n headerConfig.instrument?.additionalStyles.minWidth\n }\n isLoading={loading}\n pageNumber={pageNumber}\n records={records}\n target={target}\n testId=\"instruments-table-wrapper\"\n toolTipId={INSTRUMENT_TOOLTIP_ID}\n viewType=\"table\"\n />\n {isTradingMode && (\n <div className=\"lw-mt-2 lw-h-8\">\n <LastUpdated\n labelCallback={lang}\n timestamp={data?.resolveInstrumentsWithFilters?.updatedAt}\n />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Main.js","names":["useQuery","DataRecordType","getHeaderConfig","LastUpdated","Pagination","Size","TableWidget","useLayoutProvider","useLiveRatesQuery","useLocale","React","useEffect","useRef","useState","useEventListener","resolveInstrumentsWithFilters","TradeMode","Filters","assetClassLabels","headerConfigs","tradeModeLabels","DEFAULT_COLUMNS","INSTRUMENT_TOOLTIP_ID","Main","_ref","_headerConfig$instrum","_data$resolveInstrume2","instruments","division","assetClasses","columns","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","isLiveRatesDisabled","documentRef","document","size","isDesktop","DESKTOP","isTradingMode","includes","TRADE_MODE","SYMBOL","lang","target","setQuery","closeQuery","records","setRecords","Array","fill","totalRecords","setTotalRecords","queryVariables","setQueryVariables","count","searchPattern","offset","assetClass","withTradingModes","tradeModes","TradeLongonly","TradeShortonly","TradeCloseonly","undefined","pageNumber","Math","floor","data","error","loading","variables","fetchPolicy","errorPolicy","_data$resolveInstrume","newRecords","map","record","instrument","name","displayName","tradeMode","totalCount","instrumentsNames","_ref2","showError","onVisibilityChange","current","visibilityState","_ref3","headerConfig","mobile","length","longInstruments","normal","createElement","Fragment","PaginationComponent","currentPage","disabled","onPageChange","numb","prev","_objectSpread","TabsComponent","assetClassOptions","id","label","ALL","sort","a","b","localeCompare","onAssetClassChange","onSearchChange","activeColumns","hasError","headerColumns","instrumentColumnWidth","additionalStyles","minWidth","isLoading","testId","toolTipId","viewType","className","labelCallback","timestamp","updatedAt"],"sources":["../../../src/InstrumentsTableWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n DataRecordType,\n getHeaderConfig,\n LastUpdated,\n Pagination,\n Size,\n TableWidget,\n useLayoutProvider,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useEventListener } from 'usehooks-ts';\n\nimport { resolveInstrumentsWithFilters } from '../gql/resolveInstrumentsWithFilters';\nimport type { AssetClassName } from '../gql/types/graphql';\nimport {\n type ResolveInstrumentsWithFiltersQuery,\n type ResolveInstrumentsWithFiltersQueryVariables,\n TradeMode,\n} from '../gql/types/graphql';\nimport { Filters } from './components';\nimport { assetClassLabels, headerConfigs, tradeModeLabels } from './config';\nimport { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID } from './constant';\nimport type { MainProps } from './types';\n\nconst Main = ({\n instruments = [],\n division,\n assetClasses,\n columns = DEFAULT_COLUMNS,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n isLiveRatesDisabled,\n}: MainProps) => {\n const documentRef = useRef<Document>(document);\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n const isTradingMode =\n columns.includes(DataRecordType.TRADE_MODE) &&\n columns.includes(DataRecordType.SYMBOL);\n\n const { lang } = useLocale();\n const { target, setQuery, closeQuery } =\n useLiveRatesQuery(isLiveRatesDisabled);\n\n const [records, setRecords] = useState<DataRecord[]>(\n new Array(recordsPerPage || 10).fill({})\n );\n\n const [totalRecords, setTotalRecords] = useState<number>(0);\n\n const [queryVariables, setQueryVariables] =\n useState<ResolveInstrumentsWithFiltersQueryVariables>({\n division,\n count: recordsPerPage,\n searchPattern: '',\n offset: 0,\n assetClass: assetClasses || [],\n instruments,\n dataSource,\n withTradingModes: isTradingMode,\n tradeModes: isTradingMode\n ? [\n TradeMode.TradeLongonly,\n TradeMode.TradeShortonly,\n TradeMode.TradeCloseonly,\n ]\n : undefined,\n });\n\n const pageNumber = queryVariables.offset\n ? Math.floor(queryVariables.offset / (recordsPerPage || 1))\n : 0;\n\n const { data, error, loading } = useQuery<\n ResolveInstrumentsWithFiltersQuery,\n ResolveInstrumentsWithFiltersQueryVariables\n >(resolveInstrumentsWithFilters, {\n variables: queryVariables,\n fetchPolicy: 'network-only',\n errorPolicy: 'all',\n });\n\n useEffect(() => {\n if (loading) {\n setRecords(new Array(recordsPerPage).fill({}));\n }\n if (!loading && data?.resolveInstrumentsWithFilters?.instruments) {\n const newRecords = data.resolveInstrumentsWithFilters.instruments.map(\n (record) => ({\n instrument: record?.name || '',\n displayName: record?.displayName || '',\n tradeMode: lang(\n tradeModeLabels[\n (record?.tradeMode as keyof typeof tradeModeLabels) || ''\n ]\n ),\n })\n );\n setRecords(newRecords);\n setTotalRecords(data.resolveInstrumentsWithFilters.totalCount);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loading, data]);\n\n useEffect(() => {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records]);\n\n const showError = (!loading && !!error) || (!loading && !data);\n\n const onVisibilityChange = () => {\n if (documentRef.current.visibilityState === 'hidden') {\n closeQuery();\n }\n if (documentRef.current.visibilityState === 'visible') {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n }\n };\n\n useEventListener('visibilitychange', onVisibilityChange, documentRef);\n\n const headerConfig = !isDesktop\n ? headerConfigs.mobile\n : columns.length < 4\n ? headerConfigs.longInstruments\n : headerConfigs.normal;\n\n return (\n <>\n <TableWidget\n PaginationComponent={\n records.length > 0 && recordsPerPage ? (\n <Pagination\n currentPage={pageNumber}\n disabled={loading}\n recordsPerPage={recordsPerPage}\n totalRecords={totalRecords}\n onPageChange={(numb) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: numb * recordsPerPage,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n TabsComponent={\n isInstrumentSearchEnabled || isAssetClassFilterEnabled ? (\n <Filters\n assetClassOptions={[\n {\n id: 'ALL',\n label: lang(assetClassLabels.ALL),\n },\n ...(assetClasses || [])\n .map((assetClass) => ({\n id: assetClass,\n label: lang(assetClassLabels[assetClass]),\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n onAssetClassChange={(assetClass) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern: '',\n assetClass:\n assetClass[0] === 'ALL'\n ? assetClasses || []\n : (assetClass as AssetClassName[]),\n }));\n }}\n onSearchChange={(searchPattern) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n activeColumns={columns}\n count={totalRecords}\n hasError={showError}\n headerColumns={getHeaderConfig(columns, headerConfig)}\n instrumentColumnWidth={\n headerConfig.instrument?.additionalStyles.minWidth\n }\n isLoading={loading}\n pageNumber={pageNumber}\n records={records}\n target={target}\n testId=\"instruments-table-wrapper\"\n toolTipId={INSTRUMENT_TOOLTIP_ID}\n viewType=\"table\"\n />\n {isTradingMode && (\n <div className=\"lw-mt-2 lw-h-8\">\n <LastUpdated\n labelCallback={lang}\n timestamp={data?.resolveInstrumentsWithFilters?.updatedAt}\n />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,8 @@
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
6
  import { DataRecordType } from '@oanda/labs-widget-common';
2
7
  import { AssetClassName, TradeMode } from '../gql/types/graphql';
3
8
  const tradeModeLabels = {
@@ -73,8 +78,7 @@ const normal = {
73
78
  }
74
79
  }
75
80
  };
76
- const longInstruments = {
77
- ...normal,
81
+ const longInstruments = _objectSpread(_objectSpread({}, normal), {}, {
78
82
  [DataRecordType.INSTRUMENT]: {
79
83
  displayName: 'instrument',
80
84
  additionalStyles: {
@@ -82,9 +86,8 @@ const longInstruments = {
82
86
  minWidth: '250px'
83
87
  }
84
88
  }
85
- };
86
- const mobile = {
87
- ...normal,
89
+ });
90
+ const mobile = _objectSpread(_objectSpread({}, normal), {}, {
88
91
  [DataRecordType.INSTRUMENT]: {
89
92
  displayName: 'instrument',
90
93
  additionalStyles: {
@@ -92,7 +95,7 @@ const mobile = {
92
95
  minWidth: '150px'
93
96
  }
94
97
  }
95
- };
98
+ });
96
99
  const headerConfigs = {
97
100
  normal,
98
101
  longInstruments,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","names":["DataRecordType","AssetClassName","TradeMode","tradeModeLabels","TradeLongonly","TradeShortonly","TradeCloseonly","normal","INSTRUMENT","displayName","additionalStyles","align","minWidth","SELL","paddingRight","BUY","SPREAD","DAILY_CHANGE","HIGH","LOW","TRADE_MODE","SYMBOL","longInstruments","mobile","headerConfigs","assetClassLabels","ALL","Currency","Commodities","Rates","Cryptocurrency","EquityShares","Etfs","Indices"],"sources":["../../../src/InstrumentsTableWidget/config.ts"],"sourcesContent":["import type { HeaderConfigType } from '@oanda/labs-widget-common';\nimport { DataRecordType } from '@oanda/labs-widget-common';\n\nimport { AssetClassName, TradeMode } from '../gql/types/graphql';\nimport type { AssetClassLabels } from './components/Filters/types';\n\nconst tradeModeLabels: Record<\n TradeMode.TradeLongonly | TradeMode.TradeShortonly | TradeMode.TradeCloseonly,\n string\n> = {\n [TradeMode.TradeLongonly]: 'long_only',\n [TradeMode.TradeShortonly]: 'short_only',\n [TradeMode.TradeCloseonly]: 'close_only',\n};\nconst normal: HeaderConfigType = {\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: {\n align: 'left',\n minWidth: '200px',\n },\n },\n [DataRecordType.SELL]: {\n displayName: 'sell',\n additionalStyles: {\n align: 'right',\n minWidth: '75px',\n paddingRight: true,\n },\n },\n [DataRecordType.BUY]: {\n displayName: 'buy',\n additionalStyles: {\n align: 'right',\n minWidth: '75px',\n paddingRight: true,\n },\n },\n [DataRecordType.SPREAD]: {\n displayName: 'spread',\n additionalStyles: {\n align: 'right',\n minWidth: '50px',\n },\n },\n [DataRecordType.DAILY_CHANGE]: {\n displayName: 'daily_percent_change',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n },\n },\n [DataRecordType.HIGH]: {\n displayName: 'today_high',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n },\n },\n [DataRecordType.LOW]: {\n displayName: 'today_low',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n },\n },\n [DataRecordType.TRADE_MODE]: {\n displayName: 'trade_mode',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n paddingRight: true,\n },\n },\n [DataRecordType.SYMBOL]: {\n displayName: 'symbol',\n additionalStyles: {\n align: 'center',\n minWidth: '80px',\n },\n },\n};\n\nconst longInstruments: HeaderConfigType = {\n ...normal,\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: {\n align: 'left',\n minWidth: '250px',\n },\n },\n};\n\nconst mobile: HeaderConfigType = {\n ...normal,\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: {\n align: 'left',\n minWidth: '150px',\n },\n },\n};\n\nconst headerConfigs = {\n normal,\n longInstruments,\n mobile,\n};\n\nconst assetClassLabels: Record<AssetClassLabels, string> = {\n ALL: 'all',\n [AssetClassName.Currency]: 'currency',\n [AssetClassName.Commodities]: 'commodity',\n [AssetClassName.Rates]: 'bond',\n [AssetClassName.Cryptocurrency]: 'crypto',\n [AssetClassName.EquityShares]: 'share_cfds',\n [AssetClassName.Etfs]: 'etf_cfds',\n [AssetClassName.Indices]: 'index',\n};\n\nexport { assetClassLabels, headerConfigs, tradeModeLabels };\n"],"mappings":"AACA,SAASA,cAAc,QAAQ,2BAA2B;AAE1D,SAASC,cAAc,EAAEC,SAAS,QAAQ,sBAAsB;AAGhE,MAAMC,eAGL,GAAG;EACF,CAACD,SAAS,CAACE,aAAa,GAAG,WAAW;EACtC,CAACF,SAAS,CAACG,cAAc,GAAG,YAAY;EACxC,CAACH,SAAS,CAACI,cAAc,GAAG;AAC9B,CAAC;AACD,MAAMC,MAAwB,GAAG;EAC/B,CAACP,cAAc,CAACQ,UAAU,GAAG;IAC3BC,WAAW,EAAE,YAAY;IACzBC,gBAAgB,EAAE;MAChBC,KAAK,EAAE,MAAM;MACbC,QAAQ,EAAE;IACZ;EACF,CAAC;EACD,CAACZ,cAAc,CAACa,IAAI,GAAG;IACrBJ,WAAW,EAAE,MAAM;IACnBC,gBAAgB,EAAE;MAChBC,KAAK,EAAE,OAAO;MACdC,QAAQ,EAAE,MAAM;MAChBE,YAAY,EAAE;IAChB;EACF,CAAC;EACD,CAACd,cAAc,CAACe,GAAG,GAAG;IACpBN,WAAW,EAAE,KAAK;IAClBC,gBAAgB,EAAE;MAChBC,KAAK,EAAE,OAAO;MACdC,QAAQ,EAAE,MAAM;MAChBE,YAAY,EAAE;IAChB;EACF,CAAC;EACD,CAACd,cAAc,CAACgB,MAAM,GAAG;IACvBP,WAAW,EAAE,QAAQ;IACrBC,gBAAgB,EAAE;MAChBC,KAAK,EAAE,OAAO;MACdC,QAAQ,EAAE;IACZ;EACF,CAAC;EACD,CAACZ,cAAc,CAACiB,YAAY,GAAG;IAC7BR,WAAW,EAAE,sBAAsB;IACnCC,gBAAgB,EAAE;MAChBC,KAAK,EAAE,OAAO;MACdC,QAAQ,EAAE;IACZ;EACF,CAAC;EACD,CAACZ,cAAc,CAACkB,IAAI,GAAG;IACrBT,WAAW,EAAE,YAAY;IACzBC,gBAAgB,EAAE;MAChBC,KAAK,EAAE,OAAO;MACdC,QAAQ,EAAE;IACZ;EACF,CAAC;EACD,CAACZ,cAAc,CAACmB,GAAG,GAAG;IACpBV,WAAW,EAAE,WAAW;IACxBC,gBAAgB,EAAE;MAChBC,KAAK,EAAE,OAAO;MACdC,QAAQ,EAAE;IACZ;EACF,CAAC;EACD,CAACZ,cAAc,CAACoB,UAAU,GAAG;IAC3BX,WAAW,EAAE,YAAY;IACzBC,gBAAgB,EAAE;MAChBC,KAAK,EAAE,OAAO;MACdC,QAAQ,EAAE,MAAM;MAChBE,YAAY,EAAE;IAChB;EACF,CAAC;EACD,CAACd,cAAc,CAACqB,MAAM,GAAG;IACvBZ,WAAW,EAAE,QAAQ;IACrBC,gBAAgB,EAAE;MAChBC,KAAK,EAAE,QAAQ;MACfC,QAAQ,EAAE;IACZ;EACF;AACF,CAAC;AAED,MAAMU,eAAiC,GAAG;EACxC,GAAGf,MAAM;EACT,CAACP,cAAc,CAACQ,UAAU,GAAG;IAC3BC,WAAW,EAAE,YAAY;IACzBC,gBAAgB,EAAE;MAChBC,KAAK,EAAE,MAAM;MACbC,QAAQ,EAAE;IACZ;EACF;AACF,CAAC;AAED,MAAMW,MAAwB,GAAG;EAC/B,GAAGhB,MAAM;EACT,CAACP,cAAc,CAACQ,UAAU,GAAG;IAC3BC,WAAW,EAAE,YAAY;IACzBC,gBAAgB,EAAE;MAChBC,KAAK,EAAE,MAAM;MACbC,QAAQ,EAAE;IACZ;EACF;AACF,CAAC;AAED,MAAMY,aAAa,GAAG;EACpBjB,MAAM;EACNe,eAAe;EACfC;AACF,CAAC;AAED,MAAME,gBAAkD,GAAG;EACzDC,GAAG,EAAE,KAAK;EACV,CAACzB,cAAc,CAAC0B,QAAQ,GAAG,UAAU;EACrC,CAAC1B,cAAc,CAAC2B,WAAW,GAAG,WAAW;EACzC,CAAC3B,cAAc,CAAC4B,KAAK,GAAG,MAAM;EAC9B,CAAC5B,cAAc,CAAC6B,cAAc,GAAG,QAAQ;EACzC,CAAC7B,cAAc,CAAC8B,YAAY,GAAG,YAAY;EAC3C,CAAC9B,cAAc,CAAC+B,IAAI,GAAG,UAAU;EACjC,CAAC/B,cAAc,CAACgC,OAAO,GAAG;AAC5B,CAAC;AAED,SAASR,gBAAgB,EAAED,aAAa,EAAErB,eAAe","ignoreList":[]}
1
+ {"version":3,"file":"config.js","names":["DataRecordType","AssetClassName","TradeMode","tradeModeLabels","TradeLongonly","TradeShortonly","TradeCloseonly","normal","INSTRUMENT","displayName","additionalStyles","align","minWidth","SELL","paddingRight","BUY","SPREAD","DAILY_CHANGE","HIGH","LOW","TRADE_MODE","SYMBOL","longInstruments","_objectSpread","mobile","headerConfigs","assetClassLabels","ALL","Currency","Commodities","Rates","Cryptocurrency","EquityShares","Etfs","Indices"],"sources":["../../../src/InstrumentsTableWidget/config.ts"],"sourcesContent":["import type { HeaderConfigType } from '@oanda/labs-widget-common';\nimport { DataRecordType } from '@oanda/labs-widget-common';\n\nimport { AssetClassName, TradeMode } from '../gql/types/graphql';\nimport type { AssetClassLabels } from './components/Filters/types';\n\nconst tradeModeLabels: Record<\n TradeMode.TradeLongonly | TradeMode.TradeShortonly | TradeMode.TradeCloseonly,\n string\n> = {\n [TradeMode.TradeLongonly]: 'long_only',\n [TradeMode.TradeShortonly]: 'short_only',\n [TradeMode.TradeCloseonly]: 'close_only',\n};\nconst normal: HeaderConfigType = {\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: {\n align: 'left',\n minWidth: '200px',\n },\n },\n [DataRecordType.SELL]: {\n displayName: 'sell',\n additionalStyles: {\n align: 'right',\n minWidth: '75px',\n paddingRight: true,\n },\n },\n [DataRecordType.BUY]: {\n displayName: 'buy',\n additionalStyles: {\n align: 'right',\n minWidth: '75px',\n paddingRight: true,\n },\n },\n [DataRecordType.SPREAD]: {\n displayName: 'spread',\n additionalStyles: {\n align: 'right',\n minWidth: '50px',\n },\n },\n [DataRecordType.DAILY_CHANGE]: {\n displayName: 'daily_percent_change',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n },\n },\n [DataRecordType.HIGH]: {\n displayName: 'today_high',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n },\n },\n [DataRecordType.LOW]: {\n displayName: 'today_low',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n },\n },\n [DataRecordType.TRADE_MODE]: {\n displayName: 'trade_mode',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n paddingRight: true,\n },\n },\n [DataRecordType.SYMBOL]: {\n displayName: 'symbol',\n additionalStyles: {\n align: 'center',\n minWidth: '80px',\n },\n },\n};\n\nconst longInstruments: HeaderConfigType = {\n ...normal,\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: {\n align: 'left',\n minWidth: '250px',\n },\n },\n};\n\nconst mobile: HeaderConfigType = {\n ...normal,\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: {\n align: 'left',\n minWidth: '150px',\n },\n },\n};\n\nconst headerConfigs = {\n normal,\n longInstruments,\n mobile,\n};\n\nconst assetClassLabels: Record<AssetClassLabels, string> = {\n ALL: 'all',\n [AssetClassName.Currency]: 'currency',\n [AssetClassName.Commodities]: 'commodity',\n [AssetClassName.Rates]: 'bond',\n [AssetClassName.Cryptocurrency]: 'crypto',\n [AssetClassName.EquityShares]: 'share_cfds',\n [AssetClassName.Etfs]: 'etf_cfds',\n [AssetClassName.Indices]: 'index',\n};\n\nexport { assetClassLabels, headerConfigs, tradeModeLabels };\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import { validateLocale, validateToolParams } from '@oanda/labs-widget-common';
2
2
  import React from 'react';
3
3
  import { createRoot } from 'react-dom/client';
4
- import { Division, InstrumentDataSource } from '../gql/types/graphql';
4
+ import { DataSource, Division } from '../gql/types/graphql';
5
5
  import { InstrumentsTableWidget } from './InstrumentsTableWidget';
6
6
  const {
7
7
  graphqlUrl,
@@ -46,7 +46,7 @@ dataInstrumentsTableParamsElements.forEach(element => {
46
46
  name: 'liveRatesUrl'
47
47
  }, {
48
48
  name: 'dataSource',
49
- valueCheck: value => Object.values(InstrumentDataSource).includes(value)
49
+ valueCheck: value => Object.values(DataSource).includes(value)
50
50
  }]);
51
51
  root.render(React.createElement(InstrumentsTableWidget, {
52
52
  assetClasses: assetClasses,
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","names":["validateLocale","validateToolParams","React","createRoot","Division","InstrumentDataSource","InstrumentsTableWidget","graphqlUrl","liveRatesUrl","window","widgetsConfig","dataInstrumentsTableParamsElements","document","querySelectorAll","forEach","element","root","params","getAttribute","mode","instruments","columns","division","locale","assetClasses","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","priceType","JSON","parse","isParamError","name","valueCheck","value","length","Object","values","includes","render","createElement","theme"],"sources":["../../../src/InstrumentsTableWidget/render.tsx"],"sourcesContent":["import type { Theme } from '@oanda/labs-widget-common';\nimport { validateLocale, validateToolParams } from '@oanda/labs-widget-common';\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport { Division, InstrumentDataSource } from '../gql/types/graphql';\nimport { InstrumentsTableWidget } from './InstrumentsTableWidget';\n\nconst { graphqlUrl, liveRatesUrl } = window.widgetsConfig || {};\n\nconst dataInstrumentsTableParamsElements = document.querySelectorAll(\n 'div[data-instruments-table-params]'\n);\n\ndataInstrumentsTableParamsElements.forEach((element) => {\n const root = createRoot(element);\n const params = element.getAttribute('data-instruments-table-params');\n const mode = element.getAttribute('data-mode');\n const {\n instruments,\n columns,\n division,\n locale,\n assetClasses,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n priceType,\n } = JSON.parse(params as string);\n\n const isParamError = validateToolParams(\n {\n columns,\n division,\n locale,\n graphqlUrl,\n liveRatesUrl,\n dataSource,\n },\n [\n {\n name: 'columns',\n valueCheck: (value) => (value as string[]).length > 0,\n },\n {\n name: 'division',\n valueCheck: (value: Division) =>\n Object.values(Division).includes(value),\n },\n {\n name: 'locale',\n valueCheck: (value: string | undefined) => validateLocale(value),\n },\n {\n name: 'graphqlUrl',\n },\n {\n name: 'liveRatesUrl',\n },\n {\n name: 'dataSource',\n valueCheck: (value: InstrumentDataSource) =>\n Object.values(InstrumentDataSource).includes(value),\n },\n ]\n );\n\n root.render(\n <InstrumentsTableWidget\n assetClasses={assetClasses}\n columns={columns}\n dataSource={dataSource}\n division={division}\n graphqlUrl={graphqlUrl}\n instruments={instruments}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n isParamError={isParamError}\n liveRatesUrl={liveRatesUrl}\n locale={locale}\n priceType={priceType}\n recordsPerPage={recordsPerPage}\n theme={mode as Theme}\n />\n );\n});\n"],"mappings":"AACA,SAASA,cAAc,EAAEC,kBAAkB,QAAQ,2BAA2B;AAC9E,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,kBAAkB;AAE7C,SAASC,QAAQ,EAAEC,oBAAoB,QAAQ,sBAAsB;AACrE,SAASC,sBAAsB,QAAQ,0BAA0B;AAEjE,MAAM;EAAEC,UAAU;EAAEC;AAAa,CAAC,GAAGC,MAAM,CAACC,aAAa,IAAI,CAAC,CAAC;AAE/D,MAAMC,kCAAkC,GAAGC,QAAQ,CAACC,gBAAgB,CAClE,oCACF,CAAC;AAEDF,kCAAkC,CAACG,OAAO,CAAEC,OAAO,IAAK;EACtD,MAAMC,IAAI,GAAGb,UAAU,CAACY,OAAO,CAAC;EAChC,MAAME,MAAM,GAAGF,OAAO,CAACG,YAAY,CAAC,+BAA+B,CAAC;EACpE,MAAMC,IAAI,GAAGJ,OAAO,CAACG,YAAY,CAAC,WAAW,CAAC;EAC9C,MAAM;IACJE,WAAW;IACXC,OAAO;IACPC,QAAQ;IACRC,MAAM;IACNC,YAAY;IACZC,yBAAyB;IACzBC,yBAAyB;IACzBC,cAAc;IACdC,UAAU;IACVC;EACF,CAAC,GAAGC,IAAI,CAACC,KAAK,CAACd,MAAgB,CAAC;EAEhC,MAAMe,YAAY,GAAG/B,kBAAkB,CACrC;IACEoB,OAAO;IACPC,QAAQ;IACRC,MAAM;IACNhB,UAAU;IACVC,YAAY;IACZoB;EACF,CAAC,EACD,CACE;IACEK,IAAI,EAAE,SAAS;IACfC,UAAU,EAAGC,KAAK,IAAMA,KAAK,CAAcC,MAAM,GAAG;EACtD,CAAC,EACD;IACEH,IAAI,EAAE,UAAU;IAChBC,UAAU,EAAGC,KAAe,IAC1BE,MAAM,CAACC,MAAM,CAAClC,QAAQ,CAAC,CAACmC,QAAQ,CAACJ,KAAK;EAC1C,CAAC,EACD;IACEF,IAAI,EAAE,QAAQ;IACdC,UAAU,EAAGC,KAAyB,IAAKnC,cAAc,CAACmC,KAAK;EACjE,CAAC,EACD;IACEF,IAAI,EAAE;EACR,CAAC,EACD;IACEA,IAAI,EAAE;EACR,CAAC,EACD;IACEA,IAAI,EAAE,YAAY;IAClBC,UAAU,EAAGC,KAA2B,IACtCE,MAAM,CAACC,MAAM,CAACjC,oBAAoB,CAAC,CAACkC,QAAQ,CAACJ,KAAK;EACtD,CAAC,CAEL,CAAC;EAEDnB,IAAI,CAACwB,MAAM,CACTtC,KAAA,CAAAuC,aAAA,CAACnC,sBAAsB;IACrBkB,YAAY,EAAEA,YAAa;IAC3BH,OAAO,EAAEA,OAAQ;IACjBO,UAAU,EAAEA,UAAW;IACvBN,QAAQ,EAAEA,QAAS;IACnBf,UAAU,EAAEA,UAAW;IACvBa,WAAW,EAAEA,WAAY;IACzBK,yBAAyB,EAAEA,yBAA0B;IACrDC,yBAAyB,EAAEA,yBAA0B;IACrDM,YAAY,EAAEA,YAAa;IAC3BxB,YAAY,EAAEA,YAAa;IAC3Be,MAAM,EAAEA,MAAO;IACfM,SAAS,EAAEA,SAAU;IACrBF,cAAc,EAAEA,cAAe;IAC/Be,KAAK,EAAEvB;EAAc,CACtB,CACH,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"render.js","names":["validateLocale","validateToolParams","React","createRoot","DataSource","Division","InstrumentsTableWidget","graphqlUrl","liveRatesUrl","window","widgetsConfig","dataInstrumentsTableParamsElements","document","querySelectorAll","forEach","element","root","params","getAttribute","mode","instruments","columns","division","locale","assetClasses","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","priceType","JSON","parse","isParamError","name","valueCheck","value","length","Object","values","includes","render","createElement","theme"],"sources":["../../../src/InstrumentsTableWidget/render.tsx"],"sourcesContent":["import type { Theme } from '@oanda/labs-widget-common';\nimport { validateLocale, validateToolParams } from '@oanda/labs-widget-common';\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport { DataSource, Division } from '../gql/types/graphql';\nimport { InstrumentsTableWidget } from './InstrumentsTableWidget';\n\nconst { graphqlUrl, liveRatesUrl } = window.widgetsConfig || {};\n\nconst dataInstrumentsTableParamsElements = document.querySelectorAll(\n 'div[data-instruments-table-params]'\n);\n\ndataInstrumentsTableParamsElements.forEach((element) => {\n const root = createRoot(element);\n const params = element.getAttribute('data-instruments-table-params');\n const mode = element.getAttribute('data-mode');\n const {\n instruments,\n columns,\n division,\n locale,\n assetClasses,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n priceType,\n } = JSON.parse(params as string);\n\n const isParamError = validateToolParams(\n {\n columns,\n division,\n locale,\n graphqlUrl,\n liveRatesUrl,\n dataSource,\n },\n [\n {\n name: 'columns',\n valueCheck: (value) => (value as string[]).length > 0,\n },\n {\n name: 'division',\n valueCheck: (value: Division) =>\n Object.values(Division).includes(value),\n },\n {\n name: 'locale',\n valueCheck: (value: string | undefined) => validateLocale(value),\n },\n {\n name: 'graphqlUrl',\n },\n {\n name: 'liveRatesUrl',\n },\n {\n name: 'dataSource',\n valueCheck: (value: DataSource) =>\n Object.values(DataSource).includes(value),\n },\n ]\n );\n\n root.render(\n <InstrumentsTableWidget\n assetClasses={assetClasses}\n columns={columns}\n dataSource={dataSource}\n division={division}\n graphqlUrl={graphqlUrl}\n instruments={instruments}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n isParamError={isParamError}\n liveRatesUrl={liveRatesUrl}\n locale={locale}\n priceType={priceType}\n recordsPerPage={recordsPerPage}\n theme={mode as Theme}\n />\n );\n});\n"],"mappings":"AACA,SAASA,cAAc,EAAEC,kBAAkB,QAAQ,2BAA2B;AAC9E,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,kBAAkB;AAE7C,SAASC,UAAU,EAAEC,QAAQ,QAAQ,sBAAsB;AAC3D,SAASC,sBAAsB,QAAQ,0BAA0B;AAEjE,MAAM;EAAEC,UAAU;EAAEC;AAAa,CAAC,GAAGC,MAAM,CAACC,aAAa,IAAI,CAAC,CAAC;AAE/D,MAAMC,kCAAkC,GAAGC,QAAQ,CAACC,gBAAgB,CAClE,oCACF,CAAC;AAEDF,kCAAkC,CAACG,OAAO,CAAEC,OAAO,IAAK;EACtD,MAAMC,IAAI,GAAGb,UAAU,CAACY,OAAO,CAAC;EAChC,MAAME,MAAM,GAAGF,OAAO,CAACG,YAAY,CAAC,+BAA+B,CAAC;EACpE,MAAMC,IAAI,GAAGJ,OAAO,CAACG,YAAY,CAAC,WAAW,CAAC;EAC9C,MAAM;IACJE,WAAW;IACXC,OAAO;IACPC,QAAQ;IACRC,MAAM;IACNC,YAAY;IACZC,yBAAyB;IACzBC,yBAAyB;IACzBC,cAAc;IACdC,UAAU;IACVC;EACF,CAAC,GAAGC,IAAI,CAACC,KAAK,CAACd,MAAgB,CAAC;EAEhC,MAAMe,YAAY,GAAG/B,kBAAkB,CACrC;IACEoB,OAAO;IACPC,QAAQ;IACRC,MAAM;IACNhB,UAAU;IACVC,YAAY;IACZoB;EACF,CAAC,EACD,CACE;IACEK,IAAI,EAAE,SAAS;IACfC,UAAU,EAAGC,KAAK,IAAMA,KAAK,CAAcC,MAAM,GAAG;EACtD,CAAC,EACD;IACEH,IAAI,EAAE,UAAU;IAChBC,UAAU,EAAGC,KAAe,IAC1BE,MAAM,CAACC,MAAM,CAACjC,QAAQ,CAAC,CAACkC,QAAQ,CAACJ,KAAK;EAC1C,CAAC,EACD;IACEF,IAAI,EAAE,QAAQ;IACdC,UAAU,EAAGC,KAAyB,IAAKnC,cAAc,CAACmC,KAAK;EACjE,CAAC,EACD;IACEF,IAAI,EAAE;EACR,CAAC,EACD;IACEA,IAAI,EAAE;EACR,CAAC,EACD;IACEA,IAAI,EAAE,YAAY;IAClBC,UAAU,EAAGC,KAAiB,IAC5BE,MAAM,CAACC,MAAM,CAAClC,UAAU,CAAC,CAACmC,QAAQ,CAACJ,KAAK;EAC5C,CAAC,CAEL,CAAC;EAEDnB,IAAI,CAACwB,MAAM,CACTtC,KAAA,CAAAuC,aAAA,CAACnC,sBAAsB;IACrBkB,YAAY,EAAEA,YAAa;IAC3BH,OAAO,EAAEA,OAAQ;IACjBO,UAAU,EAAEA,UAAW;IACvBN,QAAQ,EAAEA,QAAS;IACnBf,UAAU,EAAEA,UAAW;IACvBa,WAAW,EAAEA,WAAY;IACzBK,yBAAyB,EAAEA,yBAA0B;IACrDC,yBAAyB,EAAEA,yBAA0B;IACrDM,YAAY,EAAEA,YAAa;IAC3BxB,YAAY,EAAEA,YAAa;IAC3Be,MAAM,EAAEA,MAAO;IACfM,SAAS,EAAEA,SAAU;IACrBF,cAAc,EAAEA,cAAe;IAC/Be,KAAK,EAAEvB;EAAc,CACtB,CACH,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["PriceType"],"sources":["../../../src/InstrumentsTableWidget/types.ts"],"sourcesContent":["import type { DataRecordType, WidgetConfig } from '@oanda/labs-widget-common';\n\nimport type {\n AssetClassName,\n Division,\n InstrumentDataSource,\n} from '../gql/types/graphql';\n\nexport enum PriceType {\n Raw = 'raw',\n Division = 'division',\n}\n\nexport interface InstrumentsTableConfig extends WidgetConfig {\n liveRatesUrl: string;\n instruments?: string[];\n division: Division;\n columns?: DataRecordType[];\n assetClasses?: AssetClassName[];\n isAssetClassFilterEnabled?: boolean;\n isInstrumentSearchEnabled?: boolean;\n recordsPerPage?: number;\n dataSource: InstrumentDataSource;\n priceType?: PriceType;\n}\n\nexport interface MainProps {\n instruments?: string[];\n division: Division;\n columns?: DataRecordType[];\n assetClasses?: AssetClassName[];\n isAssetClassFilterEnabled?: boolean;\n isInstrumentSearchEnabled?: boolean;\n recordsPerPage?: number;\n dataSource: InstrumentDataSource;\n isLiveRatesDisabled?: boolean;\n}\n"],"mappings":"AAQA,WAAYA,SAAS,aAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":["PriceType"],"sources":["../../../src/InstrumentsTableWidget/types.ts"],"sourcesContent":["import type { DataRecordType, WidgetConfig } from '@oanda/labs-widget-common';\n\nimport type {\n AssetClassName,\n DataSource,\n Division,\n} from '../gql/types/graphql';\n\nexport enum PriceType {\n Raw = 'raw',\n Division = 'division',\n}\n\nexport interface InstrumentsTableConfig extends WidgetConfig {\n liveRatesUrl: string;\n instruments?: string[];\n division: Division;\n columns?: DataRecordType[];\n assetClasses?: AssetClassName[];\n isAssetClassFilterEnabled?: boolean;\n isInstrumentSearchEnabled?: boolean;\n recordsPerPage?: number;\n dataSource: DataSource;\n priceType?: PriceType;\n}\n\nexport interface MainProps {\n instruments?: string[];\n division: Division;\n columns?: DataRecordType[];\n assetClasses?: AssetClassName[];\n isAssetClassFilterEnabled?: boolean;\n isInstrumentSearchEnabled?: boolean;\n recordsPerPage?: number;\n dataSource: DataSource;\n isLiveRatesDisabled?: boolean;\n}\n"],"mappings":"AAQA,WAAYA,SAAS,aAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
@@ -1,17 +1,18 @@
1
- import { Division, InstrumentDataSource } from '../gql/types/graphql';
1
+ import { DataSource, Division } from '../gql/types/graphql';
2
2
  import { PriceType } from './types';
3
3
  const getLiveRatesDivisionCode = (division, priceType, dataSource) => {
4
+ var _divisionMap$priceTyp;
4
5
  const divisionMap = {
5
6
  [PriceType.Raw]: {
6
- [InstrumentDataSource.Mt5]: Division.Oc,
7
- [InstrumentDataSource.V20]: 'MKTD'
7
+ [DataSource.Mt5]: Division.Oc,
8
+ [DataSource.V20]: 'MKTD'
8
9
  },
9
10
  [PriceType.Division]: {
10
- [InstrumentDataSource.Mt5]: division,
11
- [InstrumentDataSource.V20]: division
11
+ [DataSource.Mt5]: division,
12
+ [DataSource.V20]: division
12
13
  }
13
14
  };
14
- return divisionMap[priceType]?.[dataSource];
15
+ return (_divisionMap$priceTyp = divisionMap[priceType]) === null || _divisionMap$priceTyp === void 0 ? void 0 : _divisionMap$priceTyp[dataSource];
15
16
  };
16
17
  export { getLiveRatesDivisionCode };
17
18
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["Division","InstrumentDataSource","PriceType","getLiveRatesDivisionCode","division","priceType","dataSource","divisionMap","Raw","Mt5","Oc","V20"],"sources":["../../../src/InstrumentsTableWidget/utils.ts"],"sourcesContent":["import { Division, InstrumentDataSource } from '../gql/types/graphql';\nimport { PriceType } from './types';\n\nconst getLiveRatesDivisionCode = (\n division: Division,\n priceType: PriceType,\n dataSource: InstrumentDataSource\n): Division | string | undefined => {\n const divisionMap = {\n [PriceType.Raw]: {\n [InstrumentDataSource.Mt5]: Division.Oc,\n [InstrumentDataSource.V20]: 'MKTD',\n },\n [PriceType.Division]: {\n [InstrumentDataSource.Mt5]: division,\n [InstrumentDataSource.V20]: division,\n },\n };\n return divisionMap[priceType]?.[dataSource];\n};\n\nexport { getLiveRatesDivisionCode };\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,oBAAoB,QAAQ,sBAAsB;AACrE,SAASC,SAAS,QAAQ,SAAS;AAEnC,MAAMC,wBAAwB,GAAGA,CAC/BC,QAAkB,EAClBC,SAAoB,EACpBC,UAAgC,KACE;EAClC,MAAMC,WAAW,GAAG;IAClB,CAACL,SAAS,CAACM,GAAG,GAAG;MACf,CAACP,oBAAoB,CAACQ,GAAG,GAAGT,QAAQ,CAACU,EAAE;MACvC,CAACT,oBAAoB,CAACU,GAAG,GAAG;IAC9B,CAAC;IACD,CAACT,SAAS,CAACF,QAAQ,GAAG;MACpB,CAACC,oBAAoB,CAACQ,GAAG,GAAGL,QAAQ;MACpC,CAACH,oBAAoB,CAACU,GAAG,GAAGP;IAC9B;EACF,CAAC;EACD,OAAOG,WAAW,CAACF,SAAS,CAAC,GAAGC,UAAU,CAAC;AAC7C,CAAC;AAED,SAASH,wBAAwB","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["DataSource","Division","PriceType","getLiveRatesDivisionCode","division","priceType","dataSource","_divisionMap$priceTyp","divisionMap","Raw","Mt5","Oc","V20"],"sources":["../../../src/InstrumentsTableWidget/utils.ts"],"sourcesContent":["import type { LiveRatesDataSource } from '@oanda/labs-widget-common';\n\nimport { DataSource, Division } from '../gql/types/graphql';\nimport { PriceType } from './types';\n\nconst getLiveRatesDivisionCode = (\n division: Division,\n priceType: PriceType,\n dataSource: LiveRatesDataSource\n): Division | string | undefined => {\n const divisionMap = {\n [PriceType.Raw]: {\n [DataSource.Mt5]: Division.Oc,\n [DataSource.V20]: 'MKTD',\n },\n [PriceType.Division]: {\n [DataSource.Mt5]: division,\n [DataSource.V20]: division,\n },\n };\n return divisionMap[priceType]?.[dataSource];\n};\n\nexport { getLiveRatesDivisionCode };\n"],"mappings":"AAEA,SAASA,UAAU,EAAEC,QAAQ,QAAQ,sBAAsB;AAC3D,SAASC,SAAS,QAAQ,SAAS;AAEnC,MAAMC,wBAAwB,GAAGA,CAC/BC,QAAkB,EAClBC,SAAoB,EACpBC,UAA+B,KACG;EAAA,IAAAC,qBAAA;EAClC,MAAMC,WAAW,GAAG;IAClB,CAACN,SAAS,CAACO,GAAG,GAAG;MACf,CAACT,UAAU,CAACU,GAAG,GAAGT,QAAQ,CAACU,EAAE;MAC7B,CAACX,UAAU,CAACY,GAAG,GAAG;IACpB,CAAC;IACD,CAACV,SAAS,CAACD,QAAQ,GAAG;MACpB,CAACD,UAAU,CAACU,GAAG,GAAGN,QAAQ;MAC1B,CAACJ,UAAU,CAACY,GAAG,GAAGR;IACpB;EACF,CAAC;EACD,QAAAG,qBAAA,GAAOC,WAAW,CAACH,SAAS,CAAC,cAAAE,qBAAA,uBAAtBA,qBAAA,CAAyBD,UAAU,CAAC;AAC7C,CAAC;AAED,SAASH,wBAAwB","ignoreList":[]}
@@ -1,34 +1,5 @@
1
+ var _templateObject;
2
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
1
3
  import { gql } from '@apollo/client';
2
- export const resolveInstrumentsWithFilters = gql`
3
- query resolveInstrumentsWithFilters(
4
- $division: Division!
5
- $assetClass: [AssetClassName]
6
- $dataSource: InstrumentDataSource
7
- $instruments: [String]
8
- $searchPattern: String
9
- $tradeModes: [TradeMode]
10
- $count: Int
11
- $offset: Int
12
- $withTradingModes: Boolean!
13
- ) {
14
- resolveInstrumentsWithFilters(
15
- division: $division
16
- assetClass: $assetClass
17
- dataSource: $dataSource
18
- instruments: $instruments
19
- searchPattern: $searchPattern
20
- count: $count
21
- offset: $offset
22
- tradeModes: $tradeModes
23
- ) {
24
- instruments {
25
- name
26
- displayName
27
- tradeMode @include(if: $withTradingModes)
28
- }
29
- totalCount
30
- updatedAt @include(if: $withTradingModes)
31
- }
32
- }
33
- `;
4
+ export const resolveInstrumentsWithFilters = gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: DataSource!\n $instruments: [String]\n $searchPattern: String\n $tradeModes: [TradeMode]\n $count: Int\n $offset: Int\n $withTradingModes: Boolean!\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n tradeModes: $tradeModes\n ) {\n instruments {\n name\n displayName\n tradeMode @include(if: $withTradingModes)\n }\n totalCount\n updatedAt @include(if: $withTradingModes)\n }\n }\n"])));
34
5
  //# sourceMappingURL=resolveInstrumentsWithFilters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveInstrumentsWithFilters.js","names":["gql","resolveInstrumentsWithFilters"],"sources":["../../../src/gql/resolveInstrumentsWithFilters.ts"],"sourcesContent":["import { gql } from '@apollo/client';\n\nexport const resolveInstrumentsWithFilters = gql`\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $tradeModes: [TradeMode]\n $count: Int\n $offset: Int\n $withTradingModes: Boolean!\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n tradeModes: $tradeModes\n ) {\n instruments {\n name\n displayName\n tradeMode @include(if: $withTradingModes)\n }\n totalCount\n updatedAt @include(if: $withTradingModes)\n }\n }\n`;\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AAEpC,OAAO,MAAMC,6BAA6B,GAAGD,GAAG;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"resolveInstrumentsWithFilters.js","names":["gql","resolveInstrumentsWithFilters","_templateObject","_taggedTemplateLiteral"],"sources":["../../../src/gql/resolveInstrumentsWithFilters.ts"],"sourcesContent":["import { gql } from '@apollo/client';\n\nexport const resolveInstrumentsWithFilters = gql`\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: DataSource!\n $instruments: [String]\n $searchPattern: String\n $tradeModes: [TradeMode]\n $count: Int\n $offset: Int\n $withTradingModes: Boolean!\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n tradeModes: $tradeModes\n ) {\n instruments {\n name\n displayName\n tradeMode @include(if: $withTradingModes)\n }\n totalCount\n updatedAt @include(if: $withTradingModes)\n }\n }\n`;\n"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,gBAAgB;AAEpC,OAAO,MAAMC,6BAA6B,GAAGD,GAAG,CAAAE,eAAA,KAAAA,eAAA,GAAAC,sBAAA,wwBA+B/C","ignoreList":[]}
@@ -5,10 +5,11 @@ export function makeFragmentData(data, _fragment) {
5
5
  return data;
6
6
  }
7
7
  export function isFragmentReady(queryNode, fragmentNode, data) {
8
- const deferredFields = queryNode.__meta__?.deferredFields;
8
+ var _meta__, _fragDef$name;
9
+ const deferredFields = (_meta__ = queryNode.__meta__) === null || _meta__ === void 0 ? void 0 : _meta__.deferredFields;
9
10
  if (!deferredFields) return true;
10
11
  const fragDef = fragmentNode.definitions[0];
11
- const fragName = fragDef?.name?.value;
12
+ const fragName = fragDef === null || fragDef === void 0 || (_fragDef$name = fragDef.name) === null || _fragDef$name === void 0 ? void 0 : _fragDef$name.value;
12
13
  const fields = fragName && deferredFields[fragName] || [];
13
14
  return fields.length > 0 && fields.every(field => data && field in data);
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fragment-masking.js","names":["useFragment","_documentNode","fragmentType","makeFragmentData","data","_fragment","isFragmentReady","queryNode","fragmentNode","deferredFields","__meta__","fragDef","definitions","fragName","name","value","fields","length","every","field"],"sources":["../../../../src/gql/types/fragment-masking.ts"],"sourcesContent":["import {\n ResultOf,\n DocumentTypeDecoration,\n TypedDocumentNode,\n} from '@graphql-typed-document-node/core';\nimport { FragmentDefinitionNode } from 'graphql';\nimport { Incremental } from './graphql';\n\nexport type FragmentType<\n TDocumentType extends DocumentTypeDecoration<any, any>,\n> =\n TDocumentType extends DocumentTypeDecoration<infer TType, any>\n ? [TType] extends [{ ' $fragmentName'?: infer TKey }]\n ? TKey extends string\n ? { ' $fragmentRefs'?: { [key in TKey]: TType } }\n : never\n : never\n : never;\n\n// return non-nullable if `fragmentType` is non-nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: FragmentType<DocumentTypeDecoration<TType, any>>\n): TType;\n// return nullable if `fragmentType` is nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | FragmentType<DocumentTypeDecoration<TType, any>>\n | null\n | undefined\n): TType | null | undefined;\n// return array of non-nullable if `fragmentType` is array of non-nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>\n): ReadonlyArray<TType>;\n// return array of nullable if `fragmentType` is array of nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>\n | null\n | undefined\n): ReadonlyArray<TType> | null | undefined;\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | FragmentType<DocumentTypeDecoration<TType, any>>\n | ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>\n | null\n | undefined\n): TType | ReadonlyArray<TType> | null | undefined {\n return fragmentType as any;\n}\n\nexport function makeFragmentData<\n F extends DocumentTypeDecoration<any, any>,\n FT extends ResultOf<F>,\n>(data: FT, _fragment: F): FragmentType<F> {\n return data as FragmentType<F>;\n}\nexport function isFragmentReady<TQuery, TFrag>(\n queryNode: DocumentTypeDecoration<TQuery, any>,\n fragmentNode: TypedDocumentNode<TFrag>,\n data:\n | FragmentType<TypedDocumentNode<Incremental<TFrag>, any>>\n | null\n | undefined\n): data is FragmentType<typeof fragmentNode> {\n const deferredFields = (\n queryNode as {\n __meta__?: { deferredFields: Record<string, (keyof TFrag)[]> };\n }\n ).__meta__?.deferredFields;\n\n if (!deferredFields) return true;\n\n const fragDef = fragmentNode.definitions[0] as\n | FragmentDefinitionNode\n | undefined;\n const fragName = fragDef?.name?.value;\n\n const fields = (fragName && deferredFields[fragName]) || [];\n return fields.length > 0 && fields.every((field) => data && field in data);\n}\n"],"mappings":"AA6CA,OAAO,SAASA,WAAWA,CACzBC,aAAiD,EACjDC,YAIa,EACoC;EACjD,OAAOA,YAAY;AACrB;AAEA,OAAO,SAASC,gBAAgBA,CAG9BC,IAAQ,EAAEC,SAAY,EAAmB;EACzC,OAAOD,IAAI;AACb;AACA,OAAO,SAASE,eAAeA,CAC7BC,SAA8C,EAC9CC,YAAsC,EACtCJ,IAGa,EAC8B;EAC3C,MAAMK,cAAc,GAClBF,SAAS,CAGTG,QAAQ,EAAED,cAAc;EAE1B,IAAI,CAACA,cAAc,EAAE,OAAO,IAAI;EAEhC,MAAME,OAAO,GAAGH,YAAY,CAACI,WAAW,CAAC,CAAC,CAE7B;EACb,MAAMC,QAAQ,GAAGF,OAAO,EAAEG,IAAI,EAAEC,KAAK;EAErC,MAAMC,MAAM,GAAIH,QAAQ,IAAIJ,cAAc,CAACI,QAAQ,CAAC,IAAK,EAAE;EAC3D,OAAOG,MAAM,CAACC,MAAM,GAAG,CAAC,IAAID,MAAM,CAACE,KAAK,CAAEC,KAAK,IAAKf,IAAI,IAAIe,KAAK,IAAIf,IAAI,CAAC;AAC5E","ignoreList":[]}
1
+ {"version":3,"file":"fragment-masking.js","names":["useFragment","_documentNode","fragmentType","makeFragmentData","data","_fragment","isFragmentReady","queryNode","fragmentNode","_meta__","_fragDef$name","deferredFields","__meta__","fragDef","definitions","fragName","name","value","fields","length","every","field"],"sources":["../../../../src/gql/types/fragment-masking.ts"],"sourcesContent":["import {\n ResultOf,\n DocumentTypeDecoration,\n TypedDocumentNode,\n} from '@graphql-typed-document-node/core';\nimport { FragmentDefinitionNode } from 'graphql';\nimport { Incremental } from './graphql';\n\nexport type FragmentType<\n TDocumentType extends DocumentTypeDecoration<any, any>,\n> =\n TDocumentType extends DocumentTypeDecoration<infer TType, any>\n ? [TType] extends [{ ' $fragmentName'?: infer TKey }]\n ? TKey extends string\n ? { ' $fragmentRefs'?: { [key in TKey]: TType } }\n : never\n : never\n : never;\n\n// return non-nullable if `fragmentType` is non-nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: FragmentType<DocumentTypeDecoration<TType, any>>\n): TType;\n// return nullable if `fragmentType` is nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | FragmentType<DocumentTypeDecoration<TType, any>>\n | null\n | undefined\n): TType | null | undefined;\n// return array of non-nullable if `fragmentType` is array of non-nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>\n): ReadonlyArray<TType>;\n// return array of nullable if `fragmentType` is array of nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>\n | null\n | undefined\n): ReadonlyArray<TType> | null | undefined;\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | FragmentType<DocumentTypeDecoration<TType, any>>\n | ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>\n | null\n | undefined\n): TType | ReadonlyArray<TType> | null | undefined {\n return fragmentType as any;\n}\n\nexport function makeFragmentData<\n F extends DocumentTypeDecoration<any, any>,\n FT extends ResultOf<F>,\n>(data: FT, _fragment: F): FragmentType<F> {\n return data as FragmentType<F>;\n}\nexport function isFragmentReady<TQuery, TFrag>(\n queryNode: DocumentTypeDecoration<TQuery, any>,\n fragmentNode: TypedDocumentNode<TFrag>,\n data:\n | FragmentType<TypedDocumentNode<Incremental<TFrag>, any>>\n | null\n | undefined\n): data is FragmentType<typeof fragmentNode> {\n const deferredFields = (\n queryNode as {\n __meta__?: { deferredFields: Record<string, (keyof TFrag)[]> };\n }\n ).__meta__?.deferredFields;\n\n if (!deferredFields) return true;\n\n const fragDef = fragmentNode.definitions[0] as\n | FragmentDefinitionNode\n | undefined;\n const fragName = fragDef?.name?.value;\n\n const fields = (fragName && deferredFields[fragName]) || [];\n return fields.length > 0 && fields.every((field) => data && field in data);\n}\n"],"mappings":"AA6CA,OAAO,SAASA,WAAWA,CACzBC,aAAiD,EACjDC,YAIa,EACoC;EACjD,OAAOA,YAAY;AACrB;AAEA,OAAO,SAASC,gBAAgBA,CAG9BC,IAAQ,EAAEC,SAAY,EAAmB;EACzC,OAAOD,IAAI;AACb;AACA,OAAO,SAASE,eAAeA,CAC7BC,SAA8C,EAC9CC,YAAsC,EACtCJ,IAGa,EAC8B;EAAA,IAAAK,OAAA,EAAAC,aAAA;EAC3C,MAAMC,cAAc,IAAAF,OAAA,GAClBF,SAAS,CAGTK,QAAQ,cAAAH,OAAA,uBAJaA,OAAA,CAIXE,cAAc;EAE1B,IAAI,CAACA,cAAc,EAAE,OAAO,IAAI;EAEhC,MAAME,OAAO,GAAGL,YAAY,CAACM,WAAW,CAAC,CAAC,CAE7B;EACb,MAAMC,QAAQ,GAAGF,OAAO,aAAPA,OAAO,gBAAAH,aAAA,GAAPG,OAAO,CAAEG,IAAI,cAAAN,aAAA,uBAAbA,aAAA,CAAeO,KAAK;EAErC,MAAMC,MAAM,GAAIH,QAAQ,IAAIJ,cAAc,CAACI,QAAQ,CAAC,IAAK,EAAE;EAC3D,OAAOG,MAAM,CAACC,MAAM,GAAG,CAAC,IAAID,MAAM,CAACE,KAAK,CAAEC,KAAK,IAAKjB,IAAI,IAAIiB,KAAK,IAAIjB,IAAI,CAAC;AAC5E","ignoreList":[]}
@@ -1,8 +1,9 @@
1
1
  import * as types from './graphql';
2
2
  const documents = {
3
- '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $tradeModes: [TradeMode]\n $count: Int\n $offset: Int\n $withTradingModes: Boolean!\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n tradeModes: $tradeModes\n ) {\n instruments {\n name\n displayName\n tradeMode @include(if: $withTradingModes)\n }\n totalCount\n updatedAt @include(if: $withTradingModes)\n }\n }\n': types.ResolveInstrumentsWithFiltersDocument
3
+ '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: DataSource!\n $instruments: [String]\n $searchPattern: String\n $tradeModes: [TradeMode]\n $count: Int\n $offset: Int\n $withTradingModes: Boolean!\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n tradeModes: $tradeModes\n ) {\n instruments {\n name\n displayName\n tradeMode @include(if: $withTradingModes)\n }\n totalCount\n updatedAt @include(if: $withTradingModes)\n }\n }\n': types.ResolveInstrumentsWithFiltersDocument
4
4
  };
5
5
  export function graphql(source) {
6
- return documents[source] ?? {};
6
+ var _source;
7
+ return (_source = documents[source]) !== null && _source !== void 0 ? _source : {};
7
8
  }
8
9
  //# sourceMappingURL=gql.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gql.js","names":["types","documents","ResolveInstrumentsWithFiltersDocument","graphql","source"],"sources":["../../../../src/gql/types/gql.ts"],"sourcesContent":["/* eslint-disable */\nimport * as types from './graphql';\nimport { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';\n\n/**\n * Map of all GraphQL operations in the project.\n *\n * This map has several performance disadvantages:\n * 1. It is not tree-shakeable, so it will include all operations in the project.\n * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.\n * 3. It does not support dead code elimination, so it will add unused operations.\n *\n * Therefore it is highly recommended to use the babel or swc plugin for production.\n */\nconst documents = {\n '\\n query resolveInstrumentsWithFilters(\\n $division: Division!\\n $assetClass: [AssetClassName]\\n $dataSource: InstrumentDataSource\\n $instruments: [String]\\n $searchPattern: String\\n $tradeModes: [TradeMode]\\n $count: Int\\n $offset: Int\\n $withTradingModes: Boolean!\\n ) {\\n resolveInstrumentsWithFilters(\\n division: $division\\n assetClass: $assetClass\\n dataSource: $dataSource\\n instruments: $instruments\\n searchPattern: $searchPattern\\n count: $count\\n offset: $offset\\n tradeModes: $tradeModes\\n ) {\\n instruments {\\n name\\n displayName\\n tradeMode @include(if: $withTradingModes)\\n }\\n totalCount\\n updatedAt @include(if: $withTradingModes)\\n }\\n }\\n':\n types.ResolveInstrumentsWithFiltersDocument,\n};\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n *\n *\n * @example\n * ```ts\n * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`);\n * ```\n *\n * The query argument is unknown!\n * Please regenerate the types.\n */\nexport function graphql(source: string): unknown;\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: '\\n query resolveInstrumentsWithFilters(\\n $division: Division!\\n $assetClass: [AssetClassName]\\n $dataSource: InstrumentDataSource\\n $instruments: [String]\\n $searchPattern: String\\n $tradeModes: [TradeMode]\\n $count: Int\\n $offset: Int\\n $withTradingModes: Boolean!\\n ) {\\n resolveInstrumentsWithFilters(\\n division: $division\\n assetClass: $assetClass\\n dataSource: $dataSource\\n instruments: $instruments\\n searchPattern: $searchPattern\\n count: $count\\n offset: $offset\\n tradeModes: $tradeModes\\n ) {\\n instruments {\\n name\\n displayName\\n tradeMode @include(if: $withTradingModes)\\n }\\n totalCount\\n updatedAt @include(if: $withTradingModes)\\n }\\n }\\n'\n): (typeof documents)['\\n query resolveInstrumentsWithFilters(\\n $division: Division!\\n $assetClass: [AssetClassName]\\n $dataSource: InstrumentDataSource\\n $instruments: [String]\\n $searchPattern: String\\n $tradeModes: [TradeMode]\\n $count: Int\\n $offset: Int\\n $withTradingModes: Boolean!\\n ) {\\n resolveInstrumentsWithFilters(\\n division: $division\\n assetClass: $assetClass\\n dataSource: $dataSource\\n instruments: $instruments\\n searchPattern: $searchPattern\\n count: $count\\n offset: $offset\\n tradeModes: $tradeModes\\n ) {\\n instruments {\\n name\\n displayName\\n tradeMode @include(if: $withTradingModes)\\n }\\n totalCount\\n updatedAt @include(if: $withTradingModes)\\n }\\n }\\n'];\n\nexport function graphql(source: string) {\n return (documents as any)[source] ?? {};\n}\n\nexport type DocumentType<TDocumentNode extends DocumentNode<any, any>> =\n TDocumentNode extends DocumentNode<infer TType, any> ? TType : never;\n"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,WAAW;AAalC,MAAMC,SAAS,GAAG;EAChB,2wBAA2wB,EACzwBD,KAAK,CAACE;AACV,CAAC;AAuBD,OAAO,SAASC,OAAOA,CAACC,MAAc,EAAE;EACtC,OAAQH,SAAS,CAASG,MAAM,CAAC,IAAI,CAAC,CAAC;AACzC","ignoreList":[]}
1
+ {"version":3,"file":"gql.js","names":["types","documents","ResolveInstrumentsWithFiltersDocument","graphql","source","_source"],"sources":["../../../../src/gql/types/gql.ts"],"sourcesContent":["/* eslint-disable */\nimport * as types from './graphql';\nimport { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';\n\n/**\n * Map of all GraphQL operations in the project.\n *\n * This map has several performance disadvantages:\n * 1. It is not tree-shakeable, so it will include all operations in the project.\n * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.\n * 3. It does not support dead code elimination, so it will add unused operations.\n *\n * Therefore it is highly recommended to use the babel or swc plugin for production.\n */\nconst documents = {\n '\\n query resolveInstrumentsWithFilters(\\n $division: Division!\\n $assetClass: [AssetClassName]\\n $dataSource: DataSource!\\n $instruments: [String]\\n $searchPattern: String\\n $tradeModes: [TradeMode]\\n $count: Int\\n $offset: Int\\n $withTradingModes: Boolean!\\n ) {\\n resolveInstrumentsWithFilters(\\n division: $division\\n assetClass: $assetClass\\n dataSource: $dataSource\\n instruments: $instruments\\n searchPattern: $searchPattern\\n count: $count\\n offset: $offset\\n tradeModes: $tradeModes\\n ) {\\n instruments {\\n name\\n displayName\\n tradeMode @include(if: $withTradingModes)\\n }\\n totalCount\\n updatedAt @include(if: $withTradingModes)\\n }\\n }\\n':\n types.ResolveInstrumentsWithFiltersDocument,\n};\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n *\n *\n * @example\n * ```ts\n * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`);\n * ```\n *\n * The query argument is unknown!\n * Please regenerate the types.\n */\nexport function graphql(source: string): unknown;\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: '\\n query resolveInstrumentsWithFilters(\\n $division: Division!\\n $assetClass: [AssetClassName]\\n $dataSource: DataSource!\\n $instruments: [String]\\n $searchPattern: String\\n $tradeModes: [TradeMode]\\n $count: Int\\n $offset: Int\\n $withTradingModes: Boolean!\\n ) {\\n resolveInstrumentsWithFilters(\\n division: $division\\n assetClass: $assetClass\\n dataSource: $dataSource\\n instruments: $instruments\\n searchPattern: $searchPattern\\n count: $count\\n offset: $offset\\n tradeModes: $tradeModes\\n ) {\\n instruments {\\n name\\n displayName\\n tradeMode @include(if: $withTradingModes)\\n }\\n totalCount\\n updatedAt @include(if: $withTradingModes)\\n }\\n }\\n'\n): (typeof documents)['\\n query resolveInstrumentsWithFilters(\\n $division: Division!\\n $assetClass: [AssetClassName]\\n $dataSource: DataSource!\\n $instruments: [String]\\n $searchPattern: String\\n $tradeModes: [TradeMode]\\n $count: Int\\n $offset: Int\\n $withTradingModes: Boolean!\\n ) {\\n resolveInstrumentsWithFilters(\\n division: $division\\n assetClass: $assetClass\\n dataSource: $dataSource\\n instruments: $instruments\\n searchPattern: $searchPattern\\n count: $count\\n offset: $offset\\n tradeModes: $tradeModes\\n ) {\\n instruments {\\n name\\n displayName\\n tradeMode @include(if: $withTradingModes)\\n }\\n totalCount\\n updatedAt @include(if: $withTradingModes)\\n }\\n }\\n'];\n\nexport function graphql(source: string) {\n return (documents as any)[source] ?? {};\n}\n\nexport type DocumentType<TDocumentNode extends DocumentNode<any, any>> =\n TDocumentNode extends DocumentNode<infer TType, any> ? TType : never;\n"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,WAAW;AAalC,MAAMC,SAAS,GAAG;EAChB,kwBAAkwB,EAChwBD,KAAK,CAACE;AACV,CAAC;AAuBD,OAAO,SAASC,OAAOA,CAACC,MAAc,EAAE;EAAA,IAAAC,OAAA;EACtC,QAAAA,OAAA,GAAQJ,SAAS,CAASG,MAAM,CAAC,cAAAC,OAAA,cAAAA,OAAA,GAAI,CAAC,CAAC;AACzC","ignoreList":[]}
@@ -47,8 +47,9 @@ export let CurrencyPowerBalanceTimeUnit = function (CurrencyPowerBalanceTimeUnit
47
47
  return CurrencyPowerBalanceTimeUnit;
48
48
  }({});
49
49
  export let DataSource = function (DataSource) {
50
- DataSource["Ny4"] = "NY4";
51
- DataSource["Ty3"] = "TY3";
50
+ DataSource["All"] = "ALL";
51
+ DataSource["Mt5"] = "MT5";
52
+ DataSource["V20"] = "V20";
52
53
  return DataSource;
53
54
  }({});
54
55
  export let Division = function (Division) {
@@ -63,10 +64,19 @@ export let Division = function (Division) {
63
64
  Division["Otms"] = "OTMS";
64
65
  return Division;
65
66
  }({});
66
- export let InstrumentDataSource = function (InstrumentDataSource) {
67
- InstrumentDataSource["Mt5"] = "MT5";
68
- InstrumentDataSource["V20"] = "V20";
69
- return InstrumentDataSource;
67
+ export let Granularity = function (Granularity) {
68
+ Granularity["D1"] = "D1";
69
+ Granularity["H1"] = "H1";
70
+ Granularity["H4"] = "H4";
71
+ Granularity["M1"] = "M1";
72
+ Granularity["M15"] = "M15";
73
+ return Granularity;
74
+ }({});
75
+ export let OrderBookDataSource = function (OrderBookDataSource) {
76
+ OrderBookDataSource["Ny4"] = "NY4";
77
+ OrderBookDataSource["Ny4Mt5"] = "NY4_MT5";
78
+ OrderBookDataSource["Ty3"] = "TY3";
79
+ return OrderBookDataSource;
70
80
  }({});
71
81
  export let Region = function (Region) {
72
82
  Region["Amer"] = "AMER";
@@ -79,6 +89,21 @@ export let Sort = function (Sort) {
79
89
  Sort["Bullish"] = "BULLISH";
80
90
  return Sort;
81
91
  }({});
92
+ export let TimeSpan = function (TimeSpan) {
93
+ TimeSpan["Day_1"] = "DAY_1";
94
+ TimeSpan["Day_2"] = "DAY_2";
95
+ TimeSpan["Hour_1"] = "HOUR_1";
96
+ TimeSpan["Hour_12"] = "HOUR_12";
97
+ TimeSpan["Month_1"] = "MONTH_1";
98
+ TimeSpan["Month_3"] = "MONTH_3";
99
+ TimeSpan["Month_6"] = "MONTH_6";
100
+ TimeSpan["Week_1"] = "WEEK_1";
101
+ TimeSpan["Week_2"] = "WEEK_2";
102
+ TimeSpan["Week_3"] = "WEEK_3";
103
+ TimeSpan["Year_1"] = "YEAR_1";
104
+ TimeSpan["Year_5"] = "YEAR_5";
105
+ return TimeSpan;
106
+ }({});
82
107
  export let TopicalSort = function (TopicalSort) {
83
108
  TopicalSort["Bearish"] = "BEARISH";
84
109
  TopicalSort["Bullish"] = "BULLISH";
@@ -183,10 +208,13 @@ export const ResolveInstrumentsWithFiltersDocument = {
183
208
  }
184
209
  },
185
210
  type: {
186
- kind: 'NamedType',
187
- name: {
188
- kind: 'Name',
189
- value: 'InstrumentDataSource'
211
+ kind: 'NonNullType',
212
+ type: {
213
+ kind: 'NamedType',
214
+ name: {
215
+ kind: 'Name',
216
+ value: 'DataSource'
217
+ }
190
218
  }
191
219
  }
192
220
  }, {