@oanda/labs-value-at-risk-widget 1.0.26 → 1.0.28

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 (94) hide show
  1. package/CHANGELOG.md +228 -0
  2. package/dist/main/ValueAtRiskWidget/ChartWithData.js +2 -3
  3. package/dist/main/ValueAtRiskWidget/ChartWithData.js.map +1 -1
  4. package/dist/main/ValueAtRiskWidget/{Main.js → Tool.js} +5 -5
  5. package/dist/main/ValueAtRiskWidget/Tool.js.map +1 -0
  6. package/dist/main/ValueAtRiskWidget/{MainWithData.js → ToolWithData.js} +7 -7
  7. package/dist/main/ValueAtRiskWidget/ToolWithData.js.map +1 -0
  8. package/dist/main/ValueAtRiskWidget/ValueAtRiskWidget.js +15 -5
  9. package/dist/main/ValueAtRiskWidget/ValueAtRiskWidget.js.map +1 -1
  10. package/dist/main/ValueAtRiskWidget/Widget.js +49 -0
  11. package/dist/main/ValueAtRiskWidget/Widget.js.map +1 -0
  12. package/dist/main/ValueAtRiskWidget/components/Chart/Chart.js +2 -2
  13. package/dist/main/ValueAtRiskWidget/components/Chart/Chart.js.map +1 -1
  14. package/dist/main/ValueAtRiskWidget/components/Chart/getOption.js +4 -4
  15. package/dist/main/ValueAtRiskWidget/components/Chart/getOption.js.map +1 -1
  16. package/dist/main/ValueAtRiskWidget/components/Legend/DashedLine.js +2 -2
  17. package/dist/main/ValueAtRiskWidget/components/Legend/DashedLine.js.map +1 -1
  18. package/dist/main/ValueAtRiskWidget/components/Legend/DesktopLegend.js +3 -3
  19. package/dist/main/ValueAtRiskWidget/components/Legend/DesktopLegend.js.map +1 -1
  20. package/dist/main/ValueAtRiskWidget/components/Legend/Legend.js +4 -4
  21. package/dist/main/ValueAtRiskWidget/components/Legend/Legend.js.map +1 -1
  22. package/dist/main/ValueAtRiskWidget/components/Legend/MobileLegend.js +4 -4
  23. package/dist/main/ValueAtRiskWidget/components/Legend/MobileLegend.js.map +1 -1
  24. package/dist/main/ValueAtRiskWidget/render.js +9 -3
  25. package/dist/main/ValueAtRiskWidget/render.js.map +1 -1
  26. package/dist/main/ValueAtRiskWidget/types.js.map +1 -1
  27. package/dist/main/ValueAtRiskWidget/utils.js +1 -1
  28. package/dist/main/ValueAtRiskWidget/utils.js.map +1 -1
  29. package/dist/main/gql/getValueAtRiskAssetClasses.js +11 -3
  30. package/dist/main/gql/getValueAtRiskAssetClasses.js.map +1 -1
  31. package/dist/main/gql/getValueAtRiskChart.js +26 -3
  32. package/dist/main/gql/getValueAtRiskChart.js.map +1 -1
  33. package/dist/main/gql/types/fragment-masking.js +2 -3
  34. package/dist/main/gql/types/fragment-masking.js.map +1 -1
  35. package/dist/main/gql/types/gql.js +1 -2
  36. package/dist/main/gql/types/gql.js.map +1 -1
  37. package/dist/main/translations/index.js +1 -1
  38. package/dist/main/translations/index.js.map +1 -1
  39. package/dist/module/ValueAtRiskWidget/ChartWithData.js +1 -2
  40. package/dist/module/ValueAtRiskWidget/ChartWithData.js.map +1 -1
  41. package/dist/module/ValueAtRiskWidget/{Main.js → Tool.js} +3 -3
  42. package/dist/module/ValueAtRiskWidget/{Main.js.map → Tool.js.map} +1 -1
  43. package/dist/module/ValueAtRiskWidget/{MainWithData.js → ToolWithData.js} +5 -5
  44. package/dist/module/ValueAtRiskWidget/{MainWithData.js.map → ToolWithData.js.map} +1 -1
  45. package/dist/module/ValueAtRiskWidget/ValueAtRiskWidget.js +14 -4
  46. package/dist/module/ValueAtRiskWidget/ValueAtRiskWidget.js.map +1 -1
  47. package/dist/module/ValueAtRiskWidget/Widget.js +40 -0
  48. package/dist/module/ValueAtRiskWidget/Widget.js.map +1 -0
  49. package/dist/module/ValueAtRiskWidget/components/Chart/Chart.js +1 -1
  50. package/dist/module/ValueAtRiskWidget/components/Chart/Chart.js.map +1 -1
  51. package/dist/module/ValueAtRiskWidget/components/Chart/getOption.js +4 -4
  52. package/dist/module/ValueAtRiskWidget/components/Chart/getOption.js.map +1 -1
  53. package/dist/module/ValueAtRiskWidget/components/Legend/DashedLine.js +1 -1
  54. package/dist/module/ValueAtRiskWidget/components/Legend/DashedLine.js.map +1 -1
  55. package/dist/module/ValueAtRiskWidget/components/Legend/DesktopLegend.js +2 -2
  56. package/dist/module/ValueAtRiskWidget/components/Legend/DesktopLegend.js.map +1 -1
  57. package/dist/module/ValueAtRiskWidget/components/Legend/Legend.js +4 -4
  58. package/dist/module/ValueAtRiskWidget/components/Legend/Legend.js.map +1 -1
  59. package/dist/module/ValueAtRiskWidget/components/Legend/MobileLegend.js +3 -3
  60. package/dist/module/ValueAtRiskWidget/components/Legend/MobileLegend.js.map +1 -1
  61. package/dist/module/ValueAtRiskWidget/render.js +8 -2
  62. package/dist/module/ValueAtRiskWidget/render.js.map +1 -1
  63. package/dist/module/ValueAtRiskWidget/types.js.map +1 -1
  64. package/dist/module/ValueAtRiskWidget/utils.js +1 -1
  65. package/dist/module/ValueAtRiskWidget/utils.js.map +1 -1
  66. package/dist/module/gql/getValueAtRiskAssetClasses.js +11 -3
  67. package/dist/module/gql/getValueAtRiskAssetClasses.js.map +1 -1
  68. package/dist/module/gql/getValueAtRiskChart.js +26 -3
  69. package/dist/module/gql/getValueAtRiskChart.js.map +1 -1
  70. package/dist/module/gql/types/fragment-masking.js +2 -3
  71. package/dist/module/gql/types/fragment-masking.js.map +1 -1
  72. package/dist/module/gql/types/gql.js +1 -2
  73. package/dist/module/gql/types/gql.js.map +1 -1
  74. package/dist/types/ValueAtRiskWidget/Tool.d.ts +4 -0
  75. package/dist/types/ValueAtRiskWidget/ToolWithData.d.ts +4 -0
  76. package/dist/types/ValueAtRiskWidget/ValueAtRiskWidget.d.ts +1 -1
  77. package/dist/types/ValueAtRiskWidget/Widget.d.ts +4 -0
  78. package/dist/types/ValueAtRiskWidget/types.d.ts +11 -2
  79. package/dist/types/gql/types/gql.d.ts +2 -2
  80. package/dist/types/gql/types/graphql.d.ts +2 -9
  81. package/package.json +3 -3
  82. package/src/ValueAtRiskWidget/{Main.tsx → Tool.tsx} +3 -3
  83. package/src/ValueAtRiskWidget/{MainWithData.tsx → ToolWithData.tsx} +5 -5
  84. package/src/ValueAtRiskWidget/ValueAtRiskWidget.tsx +22 -4
  85. package/src/ValueAtRiskWidget/Widget.tsx +46 -0
  86. package/src/ValueAtRiskWidget/render.tsx +10 -1
  87. package/src/ValueAtRiskWidget/types.ts +12 -2
  88. package/test/{Main.test.tsx → Tool.test.tsx} +4 -4
  89. package/test/{MainWithData.test.tsx → ToolWithData.test.tsx} +2 -2
  90. package/test/Widget.test.tsx +29 -0
  91. package/dist/main/ValueAtRiskWidget/Main.js.map +0 -1
  92. package/dist/main/ValueAtRiskWidget/MainWithData.js.map +0 -1
  93. package/dist/types/ValueAtRiskWidget/Main.d.ts +0 -4
  94. package/dist/types/ValueAtRiskWidget/MainWithData.d.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"MobileLegend.js","names":["React","classnames","DataNames","DashedLine","lineTypes","MobileLegend","_ref","data","isDark","lang","createElement","className","map","item","key","id","MAX","MIN","AVERAGE","MEDIAN","THRESHOLD","width","undefined","strokeDasharray","concat","label","valueDown","toFixed","valueUp"],"sources":["../../../../../src/ValueAtRiskWidget/components/Legend/MobileLegend.tsx"],"sourcesContent":["import React from 'react';\nimport classnames from 'classnames';\nimport { DataNames, MobileLegendProps } from './types';\nimport { DashedLine } from './DashedLine';\nimport { lineTypes } from './constants';\n\nconst MobileLegend = ({ data, isDark, lang }: MobileLegendProps) => (\n <div className={classnames('lw-mb-6 lw-p-2 lw-text-xs', {\n 'lw-bg-border-primary': isDark,\n 'lw-border lw-border-solid lw-border-border-primary': !isDark,\n })}\n >\n {data.map((item) => (\n <div\n key={item.id}\n className={classnames('lw-flex lw-items-center lw-justify-between', {\n '[&_line]:lw-stroke-border-disabled': item.id === DataNames.MAX || item.id === DataNames.MIN,\n })}\n >\n <div className=\"lw-mr-2 lw-flex lw-w-10 lw-items-center\">\n {item.id !== DataNames.MAX && item.id !== DataNames.MIN && (\n <div className={classnames('lw-h-[8px] lw-w-[8px] lw-rounded-full lw-border-[1px] lw-border-white lw-bg-gold', {\n 'lw-bg-gold': item.id === DataNames.AVERAGE,\n 'lw-bg-turquoise-light': item.id === DataNames.MEDIAN,\n 'lw-bg-violet-light': item.id === DataNames.THRESHOLD,\n })}\n />\n )}\n <DashedLine isDark={isDark} width={(item.id === DataNames.MAX || item.id === DataNames.MIN) ? '38' : undefined} strokeDasharray={lineTypes[item.id]} />\n {item.id !== DataNames.MAX && item.id !== DataNames.MIN && (\n <div className={classnames('lw-ml-[-8px] lw-h-[8px] lw-w-[8px] lw-border-[1px] lw-border-white lw-bg-gold', {\n 'lw-bg-gold': item.id === DataNames.AVERAGE,\n 'lw-bg-turquoise-light': item.id === DataNames.MEDIAN,\n 'lw-bg-violet-light': item.id === DataNames.THRESHOLD,\n })}\n />\n )}\n </div>\n <span className=\"lw-flex-1 lw-px-2\">\n {`${item.label}:`}\n </span>\n <span className=\"lw-flex-1 lw-text-right\">\n {`${item.valueDown.toFixed()} ${lang('pips')}`}\n </span>\n <span className=\"lw-flex-1 lw-text-right\">\n {`${item.valueUp.toFixed()} ${lang('pips')}`}\n </span>\n </div>\n ))}\n </div>\n);\n\nexport { MobileLegend };\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,SAAS,QAA2B,SAAS;AACtD,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,SAAS,QAAQ,aAAa;AAEvC,MAAMC,YAAY,GAAGC,IAAA;EAAA,IAAC;IAAEC,IAAI;IAAEC,MAAM;IAAEC;EAAwB,CAAC,GAAAH,IAAA;EAAA,OAC7DN,KAAA,CAAAU,aAAA;IAAKC,SAAS,EAAEV,UAAU,CAAC,2BAA2B,EAAE;MACtD,sBAAsB,EAAEO,MAAM;MAC9B,oDAAoD,EAAE,CAACA;IACzD,CAAC;EAAE,GAEAD,IAAI,CAACK,GAAG,CAAEC,IAAI,IACbb,KAAA,CAAAU,aAAA;IACEI,GAAG,EAAED,IAAI,CAACE,EAAG;IACbJ,SAAS,EAAEV,UAAU,CAAC,4CAA4C,EAAE;MAClE,oCAAoC,EAAEY,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACc,GAAG,IAAIH,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACe;IAC3F,CAAC;EAAE,GAEHjB,KAAA,CAAAU,aAAA;IAAKC,SAAS,EAAC;EAAyC,GACrDE,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACc,GAAG,IAAIH,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACe,GAAG,IACrDjB,KAAA,CAAAU,aAAA;IAAKC,SAAS,EAAEV,UAAU,CAAC,kFAAkF,EAAE;MAC7G,YAAY,EAAEY,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACgB,OAAO;MAC3C,uBAAuB,EAAEL,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACiB,MAAM;MACrD,oBAAoB,EAAEN,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACkB;IAC9C,CAAC;EAAE,CACF,CACF,EACDpB,KAAA,CAAAU,aAAA,CAACP,UAAU;IAACK,MAAM,EAAEA,MAAO;IAACa,KAAK,EAAGR,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACc,GAAG,IAAIH,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACe,GAAG,GAAI,IAAI,GAAGK,SAAU;IAACC,eAAe,EAAEnB,SAAS,CAACS,IAAI,CAACE,EAAE;EAAE,CAAE,CAAC,EACtJF,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACc,GAAG,IAAIH,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACe,GAAG,IACrDjB,KAAA,CAAAU,aAAA;IAAKC,SAAS,EAAEV,UAAU,CAAC,+EAA+E,EAAE;MAC1G,YAAY,EAAEY,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACgB,OAAO;MAC3C,uBAAuB,EAAEL,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACiB,MAAM;MACrD,oBAAoB,EAAEN,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACkB;IAC9C,CAAC;EAAE,CACF,CAEA,CAAC,EACNpB,KAAA,CAAAU,aAAA;IAAMC,SAAS,EAAC;EAAmB,MAAAa,MAAA,CAC7BX,IAAI,CAACY,KAAK,MACV,CAAC,EACPzB,KAAA,CAAAU,aAAA;IAAMC,SAAS,EAAC;EAAyB,MAAAa,MAAA,CACnCX,IAAI,CAACa,SAAS,CAACC,OAAO,CAAC,CAAC,OAAAH,MAAA,CAAIf,IAAI,CAAC,MAAM,CAAC,CACxC,CAAC,EACPT,KAAA,CAAAU,aAAA;IAAMC,SAAS,EAAC;EAAyB,MAAAa,MAAA,CACnCX,IAAI,CAACe,OAAO,CAACD,OAAO,CAAC,CAAC,OAAAH,MAAA,CAAIf,IAAI,CAAC,MAAM,CAAC,CACtC,CACH,CACN,CACE,CAAC;AAAA,CACP;AAED,SAASJ,YAAY","ignoreList":[]}
1
+ {"version":3,"file":"MobileLegend.js","names":["React","classnames","DataNames","DashedLine","lineTypes","MobileLegend","_ref","data","isDark","lang","createElement","className","map","item","key","id","MAX","MIN","AVERAGE","MEDIAN","THRESHOLD","width","undefined","strokeDasharray","label","valueDown","toFixed","valueUp"],"sources":["../../../../../src/ValueAtRiskWidget/components/Legend/MobileLegend.tsx"],"sourcesContent":["import React from 'react';\nimport classnames from 'classnames';\nimport { DataNames, MobileLegendProps } from './types';\nimport { DashedLine } from './DashedLine';\nimport { lineTypes } from './constants';\n\nconst MobileLegend = ({ data, isDark, lang }: MobileLegendProps) => (\n <div className={classnames('lw-mb-6 lw-p-2 lw-text-xs', {\n 'lw-bg-border-primary': isDark,\n 'lw-border lw-border-solid lw-border-border-primary': !isDark,\n })}\n >\n {data.map((item) => (\n <div\n key={item.id}\n className={classnames('lw-flex lw-items-center lw-justify-between', {\n '[&_line]:lw-stroke-border-disabled': item.id === DataNames.MAX || item.id === DataNames.MIN,\n })}\n >\n <div className=\"lw-mr-2 lw-flex lw-w-10 lw-items-center\">\n {item.id !== DataNames.MAX && item.id !== DataNames.MIN && (\n <div className={classnames('lw-h-[8px] lw-w-[8px] lw-rounded-full lw-border-[1px] lw-border-white lw-bg-gold', {\n 'lw-bg-gold': item.id === DataNames.AVERAGE,\n 'lw-bg-turquoise-light': item.id === DataNames.MEDIAN,\n 'lw-bg-violet-light': item.id === DataNames.THRESHOLD,\n })}\n />\n )}\n <DashedLine isDark={isDark} width={(item.id === DataNames.MAX || item.id === DataNames.MIN) ? '38' : undefined} strokeDasharray={lineTypes[item.id]} />\n {item.id !== DataNames.MAX && item.id !== DataNames.MIN && (\n <div className={classnames('lw-ml-[-8px] lw-h-[8px] lw-w-[8px] lw-border-[1px] lw-border-white lw-bg-gold', {\n 'lw-bg-gold': item.id === DataNames.AVERAGE,\n 'lw-bg-turquoise-light': item.id === DataNames.MEDIAN,\n 'lw-bg-violet-light': item.id === DataNames.THRESHOLD,\n })}\n />\n )}\n </div>\n <span className=\"lw-flex-1 lw-px-2\">\n {`${item.label}:`}\n </span>\n <span className=\"lw-flex-1 lw-text-right\">\n {`${item.valueDown.toFixed()} ${lang('pips')}`}\n </span>\n <span className=\"lw-flex-1 lw-text-right\">\n {`${item.valueUp.toFixed()} ${lang('pips')}`}\n </span>\n </div>\n ))}\n </div>\n);\n\nexport { MobileLegend };\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,SAAS,QAA2B,SAAS;AACtD,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,SAAS,QAAQ,aAAa;AAEvC,MAAMC,YAAY,GAAGC,IAAA;EAAA,IAAC;IAAEC,IAAI;IAAEC,MAAM;IAAEC;EAAwB,CAAC,GAAAH,IAAA;EAAA,OAC7DN,KAAA,CAAAU,aAAA;IAAKC,SAAS,EAAEV,UAAU,CAAC,2BAA2B,EAAE;MACtD,sBAAsB,EAAEO,MAAM;MAC9B,oDAAoD,EAAE,CAACA;IACzD,CAAC;EAAE,GAEAD,IAAI,CAACK,GAAG,CAAEC,IAAI,IACbb,KAAA,CAAAU,aAAA;IACEI,GAAG,EAAED,IAAI,CAACE,EAAG;IACbJ,SAAS,EAAEV,UAAU,CAAC,4CAA4C,EAAE;MAClE,oCAAoC,EAAEY,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACc,GAAG,IAAIH,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACe;IAC3F,CAAC;EAAE,GAEHjB,KAAA,CAAAU,aAAA;IAAKC,SAAS,EAAC;EAAyC,GACrDE,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACc,GAAG,IAAIH,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACe,GAAG,IACrDjB,KAAA,CAAAU,aAAA;IAAKC,SAAS,EAAEV,UAAU,CAAC,kFAAkF,EAAE;MAC7G,YAAY,EAAEY,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACgB,OAAO;MAC3C,uBAAuB,EAAEL,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACiB,MAAM;MACrD,oBAAoB,EAAEN,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACkB;IAC9C,CAAC;EAAE,CACF,CACF,EACDpB,KAAA,CAAAU,aAAA,CAACP,UAAU;IAACK,MAAM,EAAEA,MAAO;IAACa,KAAK,EAAGR,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACc,GAAG,IAAIH,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACe,GAAG,GAAI,IAAI,GAAGK,SAAU;IAACC,eAAe,EAAEnB,SAAS,CAACS,IAAI,CAACE,EAAE;EAAE,CAAE,CAAC,EACtJF,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACc,GAAG,IAAIH,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACe,GAAG,IACrDjB,KAAA,CAAAU,aAAA;IAAKC,SAAS,EAAEV,UAAU,CAAC,+EAA+E,EAAE;MAC1G,YAAY,EAAEY,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACgB,OAAO;MAC3C,uBAAuB,EAAEL,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACiB,MAAM;MACrD,oBAAoB,EAAEN,IAAI,CAACE,EAAE,KAAKb,SAAS,CAACkB;IAC9C,CAAC;EAAE,CACF,CAEA,CAAC,EACNpB,KAAA,CAAAU,aAAA;IAAMC,SAAS,EAAC;EAAmB,GAChC,GAAGE,IAAI,CAACW,KAAK,GACV,CAAC,EACPxB,KAAA,CAAAU,aAAA;IAAMC,SAAS,EAAC;EAAyB,GACtC,GAAGE,IAAI,CAACY,SAAS,CAACC,OAAO,CAAC,CAAC,IAAIjB,IAAI,CAAC,MAAM,CAAC,EACxC,CAAC,EACPT,KAAA,CAAAU,aAAA;IAAMC,SAAS,EAAC;EAAyB,GACtC,GAAGE,IAAI,CAACc,OAAO,CAACD,OAAO,CAAC,CAAC,IAAIjB,IAAI,CAAC,MAAM,CAAC,EACtC,CACH,CACN,CACE,CAAC;AAAA,CACP;AAED,SAASJ,YAAY","ignoreList":[]}
@@ -13,7 +13,10 @@ volatilityChartParamsElements.forEach(element => {
13
13
  const mode = element.getAttribute('data-mode');
14
14
  const {
15
15
  division,
16
- locale
16
+ locale,
17
+ instrument,
18
+ duration,
19
+ bars
17
20
  } = JSON.parse(params);
18
21
  const isParamError = validateToolParams({
19
22
  locale,
@@ -33,7 +36,10 @@ volatilityChartParamsElements.forEach(element => {
33
36
  locale: locale,
34
37
  division: division,
35
38
  theme: mode,
36
- isParamError: isParamError
39
+ isParamError: isParamError,
40
+ instrument: instrument,
41
+ duration: duration,
42
+ bars: bars
37
43
  }));
38
44
  });
39
45
  //# sourceMappingURL=render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","names":["React","createRoot","validateLocale","validateToolParams","ValueAtRiskWidget","Division","graphqlUrl","window","widgetsConfig","volatilityChartParamsElements","document","querySelectorAll","forEach","element","root","params","getAttribute","mode","division","locale","JSON","parse","isParamError","name","valueCheck","value","Object","values","includes","render","createElement","theme"],"sources":["../../../src/ValueAtRiskWidget/render.tsx"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { Theme, validateLocale, validateToolParams } from '@oanda/labs-widget-common';\nimport { ValueAtRiskWidget } from './ValueAtRiskWidget';\nimport { Division } from '../gql/types/graphql';\n\nconst {\n graphqlUrl,\n} = window.widgetsConfig || {};\n\nconst volatilityChartParamsElements = document.querySelectorAll('div[data-value-at-risk-params]');\n\nvolatilityChartParamsElements.forEach((element) => {\n const root = createRoot(element);\n const params = element.getAttribute('data-value-at-risk-params');\n const mode = element.getAttribute('data-mode');\n const { division, locale } = JSON.parse(params as string);\n\n const isParamError = validateToolParams({ locale, division, graphqlUrl }, [\n {\n name: 'locale',\n valueCheck: (value) => validateLocale(value),\n },\n {\n name: 'division',\n valueCheck: (value) => Object.values(Division).includes(value),\n },\n {\n name: 'graphqlUrl',\n }]);\n\n root.render(\n <ValueAtRiskWidget\n graphqlUrl={graphqlUrl}\n locale={locale}\n division={division}\n theme={mode as Theme}\n isParamError={isParamError}\n />,\n );\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAAgBC,cAAc,EAAEC,kBAAkB,QAAQ,2BAA2B;AACrF,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,QAAQ,QAAQ,sBAAsB;AAE/C,MAAM;EACJC;AACF,CAAC,GAAGC,MAAM,CAACC,aAAa,IAAI,CAAC,CAAC;AAE9B,MAAMC,6BAA6B,GAAGC,QAAQ,CAACC,gBAAgB,CAAC,gCAAgC,CAAC;AAEjGF,6BAA6B,CAACG,OAAO,CAAEC,OAAO,IAAK;EACjD,MAAMC,IAAI,GAAGb,UAAU,CAACY,OAAO,CAAC;EAChC,MAAME,MAAM,GAAGF,OAAO,CAACG,YAAY,CAAC,2BAA2B,CAAC;EAChE,MAAMC,IAAI,GAAGJ,OAAO,CAACG,YAAY,CAAC,WAAW,CAAC;EAC9C,MAAM;IAAEE,QAAQ;IAAEC;EAAO,CAAC,GAAGC,IAAI,CAACC,KAAK,CAACN,MAAgB,CAAC;EAEzD,MAAMO,YAAY,GAAGnB,kBAAkB,CAAC;IAAEgB,MAAM;IAAED,QAAQ;IAAEZ;EAAW,CAAC,EAAE,CACxE;IACEiB,IAAI,EAAE,QAAQ;IACdC,UAAU,EAAGC,KAAK,IAAKvB,cAAc,CAACuB,KAAK;EAC7C,CAAC,EACD;IACEF,IAAI,EAAE,UAAU;IAChBC,UAAU,EAAGC,KAAK,IAAKC,MAAM,CAACC,MAAM,CAACtB,QAAQ,CAAC,CAACuB,QAAQ,CAACH,KAAK;EAC/D,CAAC,EACD;IACEF,IAAI,EAAE;EACR,CAAC,CAAC,CAAC;EAELT,IAAI,CAACe,MAAM,CACT7B,KAAA,CAAA8B,aAAA,CAAC1B,iBAAiB;IAChBE,UAAU,EAAEA,UAAW;IACvBa,MAAM,EAAEA,MAAO;IACfD,QAAQ,EAAEA,QAAS;IACnBa,KAAK,EAAEd,IAAc;IACrBK,YAAY,EAAEA;EAAa,CAC5B,CACH,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"render.js","names":["React","createRoot","validateLocale","validateToolParams","ValueAtRiskWidget","Division","graphqlUrl","window","widgetsConfig","volatilityChartParamsElements","document","querySelectorAll","forEach","element","root","params","getAttribute","mode","division","locale","instrument","duration","bars","JSON","parse","isParamError","name","valueCheck","value","Object","values","includes","render","createElement","theme"],"sources":["../../../src/ValueAtRiskWidget/render.tsx"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { Theme, validateLocale, validateToolParams } from '@oanda/labs-widget-common';\nimport { ValueAtRiskWidget } from './ValueAtRiskWidget';\nimport { Division } from '../gql/types/graphql';\n\nconst {\n graphqlUrl,\n} = window.widgetsConfig || {};\n\nconst volatilityChartParamsElements = document.querySelectorAll('div[data-value-at-risk-params]');\n\nvolatilityChartParamsElements.forEach((element) => {\n const root = createRoot(element);\n const params = element.getAttribute('data-value-at-risk-params');\n const mode = element.getAttribute('data-mode');\n const {\n division,\n locale,\n instrument,\n duration,\n bars,\n } = JSON.parse(params as string);\n\n const isParamError = validateToolParams({ locale, division, graphqlUrl }, [\n {\n name: 'locale',\n valueCheck: (value) => validateLocale(value),\n },\n {\n name: 'division',\n valueCheck: (value) => Object.values(Division).includes(value),\n },\n {\n name: 'graphqlUrl',\n }]);\n\n root.render(\n <ValueAtRiskWidget\n graphqlUrl={graphqlUrl}\n locale={locale}\n division={division}\n theme={mode as Theme}\n isParamError={isParamError}\n instrument={instrument}\n duration={duration}\n bars={bars}\n />,\n );\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAAgBC,cAAc,EAAEC,kBAAkB,QAAQ,2BAA2B;AACrF,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,QAAQ,QAAQ,sBAAsB;AAE/C,MAAM;EACJC;AACF,CAAC,GAAGC,MAAM,CAACC,aAAa,IAAI,CAAC,CAAC;AAE9B,MAAMC,6BAA6B,GAAGC,QAAQ,CAACC,gBAAgB,CAAC,gCAAgC,CAAC;AAEjGF,6BAA6B,CAACG,OAAO,CAAEC,OAAO,IAAK;EACjD,MAAMC,IAAI,GAAGb,UAAU,CAACY,OAAO,CAAC;EAChC,MAAME,MAAM,GAAGF,OAAO,CAACG,YAAY,CAAC,2BAA2B,CAAC;EAChE,MAAMC,IAAI,GAAGJ,OAAO,CAACG,YAAY,CAAC,WAAW,CAAC;EAC9C,MAAM;IACJE,QAAQ;IACRC,MAAM;IACNC,UAAU;IACVC,QAAQ;IACRC;EACF,CAAC,GAAGC,IAAI,CAACC,KAAK,CAACT,MAAgB,CAAC;EAEhC,MAAMU,YAAY,GAAGtB,kBAAkB,CAAC;IAAEgB,MAAM;IAAED,QAAQ;IAAEZ;EAAW,CAAC,EAAE,CACxE;IACEoB,IAAI,EAAE,QAAQ;IACdC,UAAU,EAAGC,KAAK,IAAK1B,cAAc,CAAC0B,KAAK;EAC7C,CAAC,EACD;IACEF,IAAI,EAAE,UAAU;IAChBC,UAAU,EAAGC,KAAK,IAAKC,MAAM,CAACC,MAAM,CAACzB,QAAQ,CAAC,CAAC0B,QAAQ,CAACH,KAAK;EAC/D,CAAC,EACD;IACEF,IAAI,EAAE;EACR,CAAC,CAAC,CAAC;EAELZ,IAAI,CAACkB,MAAM,CACThC,KAAA,CAAAiC,aAAA,CAAC7B,iBAAiB;IAChBE,UAAU,EAAEA,UAAW;IACvBa,MAAM,EAAEA,MAAO;IACfD,QAAQ,EAAEA,QAAS;IACnBgB,KAAK,EAAEjB,IAAc;IACrBQ,YAAY,EAAEA,YAAa;IAC3BL,UAAU,EAAEA,UAAW;IACvBC,QAAQ,EAAEA,QAAS;IACnBC,IAAI,EAAEA;EAAK,CACZ,CACH,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/ValueAtRiskWidget/types.ts"],"sourcesContent":["import { Locale } from '@oanda/mono-i18n';\nimport { Theme } from '@oanda/labs-widget-common';\nimport {\n Division, GetValueAtRiskAssetClassesQuery, ValueAtRiskBars, ValueAtRiskDuration,\n} from '../gql/types/graphql';\n\nexport interface ValueAtRiskConfig {\n graphqlUrl: string;\n division: Division;\n locale: Locale;\n theme?: Theme;\n isParamError?: boolean;\n}\n\nexport interface ValueAtRiskWrapperConfig extends ValueAtRiskConfig {\n renderElementId: string;\n}\n\nexport interface MainProps {\n data: GetValueAtRiskAssetClassesQuery;\n division: Division;\n}\n\nexport interface MainWithDataProps {\n division: Division;\n}\n\nexport interface ChartWithDataProps {\n instrument: string;\n duration: ValueAtRiskDuration;\n bars: ValueAtRiskBars;\n division: Division;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/ValueAtRiskWidget/types.ts"],"sourcesContent":["import { Locale } from '@oanda/mono-i18n';\nimport { Theme } from '@oanda/labs-widget-common';\nimport {\n Division, GetValueAtRiskAssetClassesQuery, ValueAtRiskBars, ValueAtRiskDuration,\n} from '../gql/types/graphql';\n\nexport interface ValueAtRiskConfig {\n graphqlUrl: string;\n division: Division;\n locale: Locale;\n theme?: Theme;\n isParamError?: boolean;\n instrument?: string;\n duration?: ValueAtRiskDuration;\n bars?: ValueAtRiskBars;\n}\n\nexport interface ValueAtRiskWrapperConfig extends ValueAtRiskConfig {\n renderElementId: string;\n}\n\nexport interface WidgetProps {\n instrument: string;\n duration: ValueAtRiskDuration;\n bars: ValueAtRiskBars;\n division: Division;\n}\n\nexport interface ToolProps {\n data: GetValueAtRiskAssetClassesQuery;\n division: Division;\n}\n\nexport interface ToolWithDataProps {\n division: Division;\n}\n\nexport interface ChartWithDataProps {\n instrument: string;\n duration: ValueAtRiskDuration;\n bars: ValueAtRiskBars;\n division: Division;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- const capitalize = name => "".concat(name[0].toUpperCase()).concat(name.substring(1));
1
+ const capitalize = name => `${name[0].toUpperCase()}${name.substring(1)}`;
2
2
  function sortAlphabetically(paramName, items) {
3
3
  return [...items].sort((itemA, itemB) => itemA[paramName].localeCompare(itemB[paramName], 'en', {
4
4
  sensitivity: 'base'
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["capitalize","name","concat","toUpperCase","substring","sortAlphabetically","paramName","items","sort","itemA","itemB","localeCompare","sensitivity","getAssetClassesList","data","list","map","_ref","id","toLowerCase","label","mapInstrumentsList","_ref2","displayName","getInstrumentsByAssetClassId","instruments","filter","_ref3"],"sources":["../../../src/ValueAtRiskWidget/utils.ts"],"sourcesContent":["import { AssetClass, Instrument } from '../gql/types/graphql';\n\nconst capitalize = (name: string) => `${name[0].toUpperCase()}${name.substring(1)}`;\n\nfunction sortAlphabetically<T extends Record<string, string>>(\n paramName: keyof T,\n items: T[],\n): T[] {\n return [...items]\n .sort((itemA, itemB) => itemA[paramName].localeCompare(itemB[paramName], 'en', { sensitivity: 'base' }));\n}\n\nconst getAssetClassesList = (data: AssetClass[]) => {\n const list = data\n .map(({ name }) => ({ id: name.toLowerCase(), label: capitalize(name) }));\n\n return sortAlphabetically('label', list);\n};\n\nconst mapInstrumentsList = (data: Instrument[]) => sortAlphabetically('displayName', data)\n .map(({ name: id, displayName: label }) => ({ id, label }));\n\nconst getInstrumentsByAssetClassId = (data: AssetClass[], id: string) => {\n const [{ instruments }] = data.filter(({ name }) => id === name);\n\n return mapInstrumentsList(instruments);\n};\n\nexport {\n getAssetClassesList,\n sortAlphabetically,\n getInstrumentsByAssetClassId,\n};\n"],"mappings":"AAEA,MAAMA,UAAU,GAAIC,IAAY,OAAAC,MAAA,CAAQD,IAAI,CAAC,CAAC,CAAC,CAACE,WAAW,CAAC,CAAC,EAAAD,MAAA,CAAGD,IAAI,CAACG,SAAS,CAAC,CAAC,CAAC,CAAE;AAEnF,SAASC,kBAAkBA,CACzBC,SAAkB,EAClBC,KAAU,EACL;EACL,OAAO,CAAC,GAAGA,KAAK,CAAC,CACdC,IAAI,CAAC,CAACC,KAAK,EAAEC,KAAK,KAAKD,KAAK,CAACH,SAAS,CAAC,CAACK,aAAa,CAACD,KAAK,CAACJ,SAAS,CAAC,EAAE,IAAI,EAAE;IAAEM,WAAW,EAAE;EAAO,CAAC,CAAC,CAAC;AAC5G;AAEA,MAAMC,mBAAmB,GAAIC,IAAkB,IAAK;EAClD,MAAMC,IAAI,GAAGD,IAAI,CACdE,GAAG,CAACC,IAAA;IAAA,IAAC;MAAEhB;IAAK,CAAC,GAAAgB,IAAA;IAAA,OAAM;MAAEC,EAAE,EAAEjB,IAAI,CAACkB,WAAW,CAAC,CAAC;MAAEC,KAAK,EAAEpB,UAAU,CAACC,IAAI;IAAE,CAAC;EAAA,CAAC,CAAC;EAE3E,OAAOI,kBAAkB,CAAC,OAAO,EAAEU,IAAI,CAAC;AAC1C,CAAC;AAED,MAAMM,kBAAkB,GAAIP,IAAkB,IAAKT,kBAAkB,CAAC,aAAa,EAAES,IAAI,CAAC,CACvFE,GAAG,CAACM,KAAA;EAAA,IAAC;IAAErB,IAAI,EAAEiB,EAAE;IAAEK,WAAW,EAAEH;EAAM,CAAC,GAAAE,KAAA;EAAA,OAAM;IAAEJ,EAAE;IAAEE;EAAM,CAAC;AAAA,CAAC,CAAC;AAE7D,MAAMI,4BAA4B,GAAGA,CAACV,IAAkB,EAAEI,EAAU,KAAK;EACvE,MAAM,CAAC;IAAEO;EAAY,CAAC,CAAC,GAAGX,IAAI,CAACY,MAAM,CAACC,KAAA;IAAA,IAAC;MAAE1B;IAAK,CAAC,GAAA0B,KAAA;IAAA,OAAKT,EAAE,KAAKjB,IAAI;EAAA,EAAC;EAEhE,OAAOoB,kBAAkB,CAACI,WAAW,CAAC;AACxC,CAAC;AAED,SACEZ,mBAAmB,EACnBR,kBAAkB,EAClBmB,4BAA4B","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["capitalize","name","toUpperCase","substring","sortAlphabetically","paramName","items","sort","itemA","itemB","localeCompare","sensitivity","getAssetClassesList","data","list","map","_ref","id","toLowerCase","label","mapInstrumentsList","_ref2","displayName","getInstrumentsByAssetClassId","instruments","filter","_ref3"],"sources":["../../../src/ValueAtRiskWidget/utils.ts"],"sourcesContent":["import { AssetClass, Instrument } from '../gql/types/graphql';\n\nconst capitalize = (name: string) => `${name[0].toUpperCase()}${name.substring(1)}`;\n\nfunction sortAlphabetically<T extends Record<string, string>>(\n paramName: keyof T,\n items: T[],\n): T[] {\n return [...items]\n .sort((itemA, itemB) => itemA[paramName].localeCompare(itemB[paramName], 'en', { sensitivity: 'base' }));\n}\n\nconst getAssetClassesList = (data: AssetClass[]) => {\n const list = data\n .map(({ name }) => ({ id: name.toLowerCase(), label: capitalize(name) }));\n\n return sortAlphabetically('label', list);\n};\n\nconst mapInstrumentsList = (data: Instrument[]) => sortAlphabetically('displayName', data)\n .map(({ name: id, displayName: label }) => ({ id, label }));\n\nconst getInstrumentsByAssetClassId = (data: AssetClass[], id: string) => {\n const [{ instruments }] = data.filter(({ name }) => id === name);\n\n return mapInstrumentsList(instruments);\n};\n\nexport {\n getAssetClassesList,\n sortAlphabetically,\n getInstrumentsByAssetClassId,\n};\n"],"mappings":"AAEA,MAAMA,UAAU,GAAIC,IAAY,IAAK,GAAGA,IAAI,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,GAAGD,IAAI,CAACE,SAAS,CAAC,CAAC,CAAC,EAAE;AAEnF,SAASC,kBAAkBA,CACzBC,SAAkB,EAClBC,KAAU,EACL;EACL,OAAO,CAAC,GAAGA,KAAK,CAAC,CACdC,IAAI,CAAC,CAACC,KAAK,EAAEC,KAAK,KAAKD,KAAK,CAACH,SAAS,CAAC,CAACK,aAAa,CAACD,KAAK,CAACJ,SAAS,CAAC,EAAE,IAAI,EAAE;IAAEM,WAAW,EAAE;EAAO,CAAC,CAAC,CAAC;AAC5G;AAEA,MAAMC,mBAAmB,GAAIC,IAAkB,IAAK;EAClD,MAAMC,IAAI,GAAGD,IAAI,CACdE,GAAG,CAACC,IAAA;IAAA,IAAC;MAAEf;IAAK,CAAC,GAAAe,IAAA;IAAA,OAAM;MAAEC,EAAE,EAAEhB,IAAI,CAACiB,WAAW,CAAC,CAAC;MAAEC,KAAK,EAAEnB,UAAU,CAACC,IAAI;IAAE,CAAC;EAAA,CAAC,CAAC;EAE3E,OAAOG,kBAAkB,CAAC,OAAO,EAAEU,IAAI,CAAC;AAC1C,CAAC;AAED,MAAMM,kBAAkB,GAAIP,IAAkB,IAAKT,kBAAkB,CAAC,aAAa,EAAES,IAAI,CAAC,CACvFE,GAAG,CAACM,KAAA;EAAA,IAAC;IAAEpB,IAAI,EAAEgB,EAAE;IAAEK,WAAW,EAAEH;EAAM,CAAC,GAAAE,KAAA;EAAA,OAAM;IAAEJ,EAAE;IAAEE;EAAM,CAAC;AAAA,CAAC,CAAC;AAE7D,MAAMI,4BAA4B,GAAGA,CAACV,IAAkB,EAAEI,EAAU,KAAK;EACvE,MAAM,CAAC;IAAEO;EAAY,CAAC,CAAC,GAAGX,IAAI,CAACY,MAAM,CAACC,KAAA;IAAA,IAAC;MAAEzB;IAAK,CAAC,GAAAyB,KAAA;IAAA,OAAKT,EAAE,KAAKhB,IAAI;EAAA,EAAC;EAEhE,OAAOmB,kBAAkB,CAACI,WAAW,CAAC;AACxC,CAAC;AAED,SACEZ,mBAAmB,EACnBR,kBAAkB,EAClBmB,4BAA4B","ignoreList":[]}
@@ -1,5 +1,13 @@
1
- var _templateObject;
2
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
3
1
  import { gql } from '@apollo/client';
4
- export const getValueAtRiskAssetClasses = gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query GetValueAtRiskAssetClasses($division: Division) {\n valueAtRiskAssetClasses(division: $division) {\n name\n instruments {\n name\n displayName\n }\n }\n }\n"])));
2
+ export const getValueAtRiskAssetClasses = gql`
3
+ query GetValueAtRiskAssetClasses($division: Division) {
4
+ valueAtRiskAssetClasses(division: $division) {
5
+ name
6
+ instruments {
7
+ name
8
+ displayName
9
+ }
10
+ }
11
+ }
12
+ `;
5
13
  //# sourceMappingURL=getValueAtRiskAssetClasses.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getValueAtRiskAssetClasses.js","names":["gql","getValueAtRiskAssetClasses","_templateObject","_taggedTemplateLiteral"],"sources":["../../../src/gql/getValueAtRiskAssetClasses.ts"],"sourcesContent":["import { gql } from '@apollo/client';\n\nexport const getValueAtRiskAssetClasses = gql`\n query GetValueAtRiskAssetClasses($division: Division) {\n valueAtRiskAssetClasses(division: $division) {\n name\n instruments {\n name\n displayName\n }\n }\n }\n`;\n"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,gBAAgB;AAEpC,OAAO,MAAMC,0BAA0B,GAAGD,GAAG,CAAAE,eAAA,KAAAA,eAAA,GAAAC,sBAAA,oNAU5C","ignoreList":[]}
1
+ {"version":3,"file":"getValueAtRiskAssetClasses.js","names":["gql","getValueAtRiskAssetClasses"],"sources":["../../../src/gql/getValueAtRiskAssetClasses.ts"],"sourcesContent":["import { gql } from '@apollo/client';\n\nexport const getValueAtRiskAssetClasses = gql`\n query GetValueAtRiskAssetClasses($division: Division) {\n valueAtRiskAssetClasses(division: $division) {\n name\n instruments {\n name\n displayName\n }\n }\n }\n`;\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AAEpC,OAAO,MAAMC,0BAA0B,GAAGD,GAAG;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -1,5 +1,28 @@
1
- var _templateObject;
2
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
3
1
  import { gql } from '@apollo/client';
4
- export const getValueAtRiskChart = gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query getValueAtRiskChart($instrument: String!, $division: Division!, $duration: ValueAtRiskDuration!, $bars: ValueAtRiskBars!) {\n valueAtRiskChart(instrument: $instrument, division: $division, duration: $duration, bars: $bars) {\n up {\n points {\n pips\n percent\n }\n average\n median\n max\n threshold\n }\n down {\n points {\n pips\n percent\n }\n average\n median\n max\n threshold\n }\n }\n }\n"])));
2
+ export const getValueAtRiskChart = gql`
3
+ query getValueAtRiskChart($instrument: String!, $division: Division!, $duration: ValueAtRiskDuration!, $bars: ValueAtRiskBars!) {
4
+ valueAtRiskChart(instrument: $instrument, division: $division, duration: $duration, bars: $bars) {
5
+ up {
6
+ points {
7
+ pips
8
+ percent
9
+ }
10
+ average
11
+ median
12
+ max
13
+ threshold
14
+ }
15
+ down {
16
+ points {
17
+ pips
18
+ percent
19
+ }
20
+ average
21
+ median
22
+ max
23
+ threshold
24
+ }
25
+ }
26
+ }
27
+ `;
5
28
  //# sourceMappingURL=getValueAtRiskChart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getValueAtRiskChart.js","names":["gql","getValueAtRiskChart","_templateObject","_taggedTemplateLiteral"],"sources":["../../../src/gql/getValueAtRiskChart.ts"],"sourcesContent":["import { gql } from '@apollo/client';\n\nexport const getValueAtRiskChart = gql`\n query getValueAtRiskChart($instrument: String!, $division: Division!, $duration: ValueAtRiskDuration!, $bars: ValueAtRiskBars!) {\n valueAtRiskChart(instrument: $instrument, division: $division, duration: $duration, bars: $bars) {\n up {\n points {\n pips\n percent\n }\n average\n median\n max\n threshold\n }\n down {\n points {\n pips\n percent\n }\n average\n median\n max\n threshold\n }\n }\n }\n`;\n"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,gBAAgB;AAEpC,OAAO,MAAMC,mBAAmB,GAAGD,GAAG,CAAAE,eAAA,KAAAA,eAAA,GAAAC,sBAAA,ijBAyBrC","ignoreList":[]}
1
+ {"version":3,"file":"getValueAtRiskChart.js","names":["gql","getValueAtRiskChart"],"sources":["../../../src/gql/getValueAtRiskChart.ts"],"sourcesContent":["import { gql } from '@apollo/client';\n\nexport const getValueAtRiskChart = gql`\n query getValueAtRiskChart($instrument: String!, $division: Division!, $duration: ValueAtRiskDuration!, $bars: ValueAtRiskBars!) {\n valueAtRiskChart(instrument: $instrument, division: $division, duration: $duration, bars: $bars) {\n up {\n points {\n pips\n percent\n }\n average\n median\n max\n threshold\n }\n down {\n points {\n pips\n percent\n }\n average\n median\n max\n threshold\n }\n }\n }\n`;\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AAEpC,OAAO,MAAMC,mBAAmB,GAAGD,GAAG;AACtC;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":[]}
@@ -5,11 +5,10 @@ export function makeFragmentData(data, _fragment) {
5
5
  return data;
6
6
  }
7
7
  export function isFragmentReady(queryNode, fragmentNode, data) {
8
- var _meta__, _fragDef$name;
9
- const deferredFields = (_meta__ = queryNode.__meta__) === null || _meta__ === void 0 ? void 0 : _meta__.deferredFields;
8
+ const deferredFields = queryNode.__meta__?.deferredFields;
10
9
  if (!deferredFields) return true;
11
10
  const fragDef = fragmentNode.definitions[0];
12
- const fragName = fragDef === null || fragDef === void 0 || (_fragDef$name = fragDef.name) === null || _fragDef$name === void 0 ? void 0 : _fragDef$name.value;
11
+ const fragName = fragDef?.name?.value;
13
12
  const fields = fragName && deferredFields[fragName] || [];
14
13
  return fields.length > 0 && fields.every(field => data && field in data);
15
14
  }
@@ -1 +1 @@
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 { ResultOf, DocumentTypeDecoration, TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport { FragmentDefinitionNode } from 'graphql';\nimport { Incremental } from './graphql';\n\n\nexport type FragmentType<TDocumentType extends DocumentTypeDecoration<any, any>> = TDocumentType extends DocumentTypeDecoration<\n infer TType,\n any\n>\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: FragmentType<DocumentTypeDecoration<TType, any>> | null | 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: ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>> | null | undefined\n): ReadonlyArray<TType> | null | undefined;\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: FragmentType<DocumentTypeDecoration<TType, any>> | ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>> | null | undefined\n): TType | ReadonlyArray<TType> | null | undefined {\n return fragmentType as any;\n}\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: FragmentType<TypedDocumentNode<Incremental<TFrag>, any>> | null | undefined\n): data is FragmentType<typeof fragmentNode> {\n const deferredFields = (queryNode as { __meta__?: { deferredFields: Record<string, (keyof TFrag)[]> } }).__meta__\n ?.deferredFields;\n\n if (!deferredFields) return true;\n\n const fragDef = fragmentNode.definitions[0] as FragmentDefinitionNode | 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":"AAoCA,OAAO,SAASA,WAAWA,CACzBC,aAAiD,EACjDC,YAAmJ,EAClG;EACjD,OAAOA,YAAY;AACrB;AAGA,OAAO,SAASC,gBAAgBA,CAG9BC,IAAQ,EAAEC,SAAY,EAAmB;EACzC,OAAOD,IAAI;AACb;AACA,OAAO,SAASE,eAAeA,CAC7BC,SAA8C,EAC9CC,YAAsC,EACtCJ,IAAiF,EACtC;EAAA,IAAAK,OAAA,EAAAC,aAAA;EAC3C,MAAMC,cAAc,IAAAF,OAAA,GAAIF,SAAS,CAAwEK,QAAQ,cAAAH,OAAA,uBAA1FA,OAAA,CACnBE,cAAc;EAElB,IAAI,CAACA,cAAc,EAAE,OAAO,IAAI;EAEhC,MAAME,OAAO,GAAGL,YAAY,CAACM,WAAW,CAAC,CAAC,CAAuC;EACjF,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,CAACC,KAAK,IAAIjB,IAAI,IAAIiB,KAAK,IAAIjB,IAAI,CAAC;AAC1E","ignoreList":[]}
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 { ResultOf, DocumentTypeDecoration, TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport { FragmentDefinitionNode } from 'graphql';\nimport { Incremental } from './graphql';\n\n\nexport type FragmentType<TDocumentType extends DocumentTypeDecoration<any, any>> = TDocumentType extends DocumentTypeDecoration<\n infer TType,\n any\n>\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: FragmentType<DocumentTypeDecoration<TType, any>> | null | 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: ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>> | null | undefined\n): ReadonlyArray<TType> | null | undefined;\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: FragmentType<DocumentTypeDecoration<TType, any>> | ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>> | null | undefined\n): TType | ReadonlyArray<TType> | null | undefined {\n return fragmentType as any;\n}\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: FragmentType<TypedDocumentNode<Incremental<TFrag>, any>> | null | undefined\n): data is FragmentType<typeof fragmentNode> {\n const deferredFields = (queryNode as { __meta__?: { deferredFields: Record<string, (keyof TFrag)[]> } }).__meta__\n ?.deferredFields;\n\n if (!deferredFields) return true;\n\n const fragDef = fragmentNode.definitions[0] as FragmentDefinitionNode | 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":"AAoCA,OAAO,SAASA,WAAWA,CACzBC,aAAiD,EACjDC,YAAmJ,EAClG;EACjD,OAAOA,YAAY;AACrB;AAGA,OAAO,SAASC,gBAAgBA,CAG9BC,IAAQ,EAAEC,SAAY,EAAmB;EACzC,OAAOD,IAAI;AACb;AACA,OAAO,SAASE,eAAeA,CAC7BC,SAA8C,EAC9CC,YAAsC,EACtCJ,IAAiF,EACtC;EAC3C,MAAMK,cAAc,GAAIF,SAAS,CAAwEG,QAAQ,EAC7GD,cAAc;EAElB,IAAI,CAACA,cAAc,EAAE,OAAO,IAAI;EAEhC,MAAME,OAAO,GAAGH,YAAY,CAACI,WAAW,CAAC,CAAC,CAAuC;EACjF,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,CAACC,KAAK,IAAIf,IAAI,IAAIe,KAAK,IAAIf,IAAI,CAAC;AAC1E","ignoreList":[]}
@@ -4,7 +4,6 @@ const documents = {
4
4
  "\n query getValueAtRiskChart($instrument: String!, $division: Division!, $duration: ValueAtRiskDuration!, $bars: ValueAtRiskBars!) {\n valueAtRiskChart(instrument: $instrument, division: $division, duration: $duration, bars: $bars) {\n up {\n points {\n pips\n percent\n }\n average\n median\n max\n threshold\n }\n down {\n points {\n pips\n percent\n }\n average\n median\n max\n threshold\n }\n }\n }\n": types.GetValueAtRiskChartDocument
5
5
  };
6
6
  export function graphql(source) {
7
- var _source;
8
- return (_source = documents[source]) !== null && _source !== void 0 ? _source : {};
7
+ return documents[source] ?? {};
9
8
  }
10
9
  //# sourceMappingURL=gql.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gql.js","names":["types","documents","GetValueAtRiskAssetClassesDocument","GetValueAtRiskChartDocument","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 GetValueAtRiskAssetClasses($division: Division) {\\n valueAtRiskAssetClasses(division: $division) {\\n name\\n instruments {\\n name\\n displayName\\n }\\n }\\n }\\n\": types.GetValueAtRiskAssetClassesDocument,\n \"\\n query getValueAtRiskChart($instrument: String!, $division: Division!, $duration: ValueAtRiskDuration!, $bars: ValueAtRiskBars!) {\\n valueAtRiskChart(instrument: $instrument, division: $division, duration: $duration, bars: $bars) {\\n up {\\n points {\\n pips\\n percent\\n }\\n average\\n median\\n max\\n threshold\\n }\\n down {\\n points {\\n pips\\n percent\\n }\\n average\\n median\\n max\\n threshold\\n }\\n }\\n }\\n\": types.GetValueAtRiskChartDocument,\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(source: \"\\n query GetValueAtRiskAssetClasses($division: Division) {\\n valueAtRiskAssetClasses(division: $division) {\\n name\\n instruments {\\n name\\n displayName\\n }\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetValueAtRiskAssetClasses($division: Division) {\\n valueAtRiskAssetClasses(division: $division) {\\n name\\n instruments {\\n name\\n displayName\\n }\\n }\\n }\\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(source: \"\\n query getValueAtRiskChart($instrument: String!, $division: Division!, $duration: ValueAtRiskDuration!, $bars: ValueAtRiskBars!) {\\n valueAtRiskChart(instrument: $instrument, division: $division, duration: $duration, bars: $bars) {\\n up {\\n points {\\n pips\\n percent\\n }\\n average\\n median\\n max\\n threshold\\n }\\n down {\\n points {\\n pips\\n percent\\n }\\n average\\n median\\n max\\n threshold\\n }\\n }\\n }\\n\"): (typeof documents)[\"\\n query getValueAtRiskChart($instrument: String!, $division: Division!, $duration: ValueAtRiskDuration!, $bars: ValueAtRiskBars!) {\\n valueAtRiskChart(instrument: $instrument, division: $division, duration: $duration, bars: $bars) {\\n up {\\n points {\\n pips\\n percent\\n }\\n average\\n median\\n max\\n threshold\\n }\\n down {\\n points {\\n pips\\n percent\\n }\\n average\\n median\\n max\\n threshold\\n }\\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>> = TDocumentNode extends DocumentNode< infer TType, any> ? TType : never;"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,WAAW;AAalC,MAAMC,SAAS,GAAG;EACd,8MAA8M,EAAED,KAAK,CAACE,kCAAkC;EACxP,2iBAA2iB,EAAEF,KAAK,CAACG;AACvjB,CAAC;AAyBD,OAAO,SAASC,OAAOA,CAACC,MAAc,EAAE;EAAA,IAAAC,OAAA;EACtC,QAAAA,OAAA,GAAQL,SAAS,CAASI,MAAM,CAAC,cAAAC,OAAA,cAAAA,OAAA,GAAI,CAAC,CAAC;AACzC","ignoreList":[]}
1
+ {"version":3,"file":"gql.js","names":["types","documents","GetValueAtRiskAssetClassesDocument","GetValueAtRiskChartDocument","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 GetValueAtRiskAssetClasses($division: Division) {\\n valueAtRiskAssetClasses(division: $division) {\\n name\\n instruments {\\n name\\n displayName\\n }\\n }\\n }\\n\": types.GetValueAtRiskAssetClassesDocument,\n \"\\n query getValueAtRiskChart($instrument: String!, $division: Division!, $duration: ValueAtRiskDuration!, $bars: ValueAtRiskBars!) {\\n valueAtRiskChart(instrument: $instrument, division: $division, duration: $duration, bars: $bars) {\\n up {\\n points {\\n pips\\n percent\\n }\\n average\\n median\\n max\\n threshold\\n }\\n down {\\n points {\\n pips\\n percent\\n }\\n average\\n median\\n max\\n threshold\\n }\\n }\\n }\\n\": types.GetValueAtRiskChartDocument,\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(source: \"\\n query GetValueAtRiskAssetClasses($division: Division) {\\n valueAtRiskAssetClasses(division: $division) {\\n name\\n instruments {\\n name\\n displayName\\n }\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetValueAtRiskAssetClasses($division: Division) {\\n valueAtRiskAssetClasses(division: $division) {\\n name\\n instruments {\\n name\\n displayName\\n }\\n }\\n }\\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(source: \"\\n query getValueAtRiskChart($instrument: String!, $division: Division!, $duration: ValueAtRiskDuration!, $bars: ValueAtRiskBars!) {\\n valueAtRiskChart(instrument: $instrument, division: $division, duration: $duration, bars: $bars) {\\n up {\\n points {\\n pips\\n percent\\n }\\n average\\n median\\n max\\n threshold\\n }\\n down {\\n points {\\n pips\\n percent\\n }\\n average\\n median\\n max\\n threshold\\n }\\n }\\n }\\n\"): (typeof documents)[\"\\n query getValueAtRiskChart($instrument: String!, $division: Division!, $duration: ValueAtRiskDuration!, $bars: ValueAtRiskBars!) {\\n valueAtRiskChart(instrument: $instrument, division: $division, duration: $duration, bars: $bars) {\\n up {\\n points {\\n pips\\n percent\\n }\\n average\\n median\\n max\\n threshold\\n }\\n down {\\n points {\\n pips\\n percent\\n }\\n average\\n median\\n max\\n threshold\\n }\\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>> = TDocumentNode extends DocumentNode< infer TType, any> ? TType : never;"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,WAAW;AAalC,MAAMC,SAAS,GAAG;EACd,8MAA8M,EAAED,KAAK,CAACE,kCAAkC;EACxP,2iBAA2iB,EAAEF,KAAK,CAACG;AACvjB,CAAC;AAyBD,OAAO,SAASC,OAAOA,CAACC,MAAc,EAAE;EACtC,OAAQJ,SAAS,CAASI,MAAM,CAAC,IAAI,CAAC,CAAC;AACzC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { ToolProps } from './types';
3
+ declare const Tool: ({ data, division }: ToolProps) => React.JSX.Element;
4
+ export { Tool };
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { ToolWithDataProps } from './types';
3
+ declare const ToolWithData: ({ division }: ToolWithDataProps) => React.JSX.Element;
4
+ export { ToolWithData };
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { ValueAtRiskConfig } from './types';
3
- declare const ValueAtRiskWidget: ({ graphqlUrl, locale, division, theme, isParamError, }: ValueAtRiskConfig) => React.JSX.Element;
3
+ declare const ValueAtRiskWidget: ({ graphqlUrl, locale, division, theme, isParamError, instrument, duration, bars, }: ValueAtRiskConfig) => React.JSX.Element;
4
4
  export { ValueAtRiskWidget };
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { WidgetProps } from './types';
3
+ declare const Widget: ({ division, instrument, duration, bars, }: WidgetProps) => React.JSX.Element;
4
+ export { Widget };
@@ -7,15 +7,24 @@ export interface ValueAtRiskConfig {
7
7
  locale: Locale;
8
8
  theme?: Theme;
9
9
  isParamError?: boolean;
10
+ instrument?: string;
11
+ duration?: ValueAtRiskDuration;
12
+ bars?: ValueAtRiskBars;
10
13
  }
11
14
  export interface ValueAtRiskWrapperConfig extends ValueAtRiskConfig {
12
15
  renderElementId: string;
13
16
  }
14
- export interface MainProps {
17
+ export interface WidgetProps {
18
+ instrument: string;
19
+ duration: ValueAtRiskDuration;
20
+ bars: ValueAtRiskBars;
21
+ division: Division;
22
+ }
23
+ export interface ToolProps {
15
24
  data: GetValueAtRiskAssetClassesQuery;
16
25
  division: Division;
17
26
  }
18
- export interface MainWithDataProps {
27
+ export interface ToolWithDataProps {
19
28
  division: Division;
20
29
  }
21
30
  export interface ChartWithDataProps {
@@ -12,10 +12,10 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/
12
12
  */
13
13
  declare const documents: {
14
14
  "\n query GetValueAtRiskAssetClasses($division: Division) {\n valueAtRiskAssetClasses(division: $division) {\n name\n instruments {\n name\n displayName\n }\n }\n }\n": DocumentNode<types.GetValueAtRiskAssetClassesQuery, types.Exact<{
15
- division?: types.InputMaybe<types.Division> | undefined;
15
+ division?: types.InputMaybe<types.Division>;
16
16
  }>>;
17
17
  "\n query getValueAtRiskChart($instrument: String!, $division: Division!, $duration: ValueAtRiskDuration!, $bars: ValueAtRiskBars!) {\n valueAtRiskChart(instrument: $instrument, division: $division, duration: $duration, bars: $bars) {\n up {\n points {\n pips\n percent\n }\n average\n median\n max\n threshold\n }\n down {\n points {\n pips\n percent\n }\n average\n median\n max\n threshold\n }\n }\n }\n": DocumentNode<types.GetValueAtRiskChartQuery, types.Exact<{
18
- instrument: string;
18
+ instrument: types.Scalars["String"]["input"];
19
19
  division: types.Division;
20
20
  duration: types.ValueAtRiskDuration;
21
21
  bars: types.ValueAtRiskBars;
@@ -416,12 +416,5 @@ export type GetValueAtRiskChartQuery = {
416
416
  };
417
417
  } | null;
418
418
  };
419
- export declare const GetValueAtRiskAssetClassesDocument: DocumentNode<GetValueAtRiskAssetClassesQuery, Exact<{
420
- division?: InputMaybe<Division> | undefined;
421
- }>>;
422
- export declare const GetValueAtRiskChartDocument: DocumentNode<GetValueAtRiskChartQuery, Exact<{
423
- instrument: Scalars['String']['input'];
424
- division: Division;
425
- duration: ValueAtRiskDuration;
426
- bars: ValueAtRiskBars;
427
- }>>;
419
+ export declare const GetValueAtRiskAssetClassesDocument: DocumentNode<GetValueAtRiskAssetClassesQuery, GetValueAtRiskAssetClassesQueryVariables>;
420
+ export declare const GetValueAtRiskChartDocument: DocumentNode<GetValueAtRiskChartQuery, GetValueAtRiskChartQueryVariables>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oanda/labs-value-at-risk-widget",
3
- "version": "1.0.26",
3
+ "version": "1.0.28",
4
4
  "description": "Labs Value At Risk 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.7.17",
16
- "@oanda/labs-widget-common": "^1.0.134",
16
+ "@oanda/labs-widget-common": "^1.0.136",
17
17
  "@oanda/mono-i18n": "10.0.1",
18
18
  "echarts": "5.5.0",
19
19
  "echarts-for-react": "3.0.2",
@@ -24,5 +24,5 @@
24
24
  "@graphql-codegen/client-preset": "4.1.0",
25
25
  "@graphql-codegen/typescript": "4.0.1"
26
26
  },
27
- "gitHead": "772668c0d4a12ed160d9093358c23022a15fe984"
27
+ "gitHead": "755c0af24a58c228b0a54f2716b4fec5bee7b58d"
28
28
  }
@@ -5,11 +5,11 @@ import {
5
5
  } from '@oanda/labs-widget-common';
6
6
  import { useLocale } from '@oanda/mono-i18n';
7
7
  import { getAssetClassesList, getInstrumentsByAssetClassId } from './utils';
8
- import { MainProps } from './types';
8
+ import { ToolProps } from './types';
9
9
  import { ValueAtRiskDuration, ValueAtRiskBars } from '../gql/types/graphql';
10
10
  import { ChartWithData } from './ChartWithData';
11
11
 
12
- const Main = ({ data, division }: MainProps) => {
12
+ const Tool = ({ data, division }: ToolProps) => {
13
13
  const { lang } = useLocale();
14
14
  const { size } = useContext(ThemeContext);
15
15
  const isDesktop = size === Size.DESKTOP;
@@ -99,4 +99,4 @@ const Main = ({ data, division }: MainProps) => {
99
99
  );
100
100
  };
101
101
 
102
- export { Main };
102
+ export { Tool };
@@ -5,11 +5,11 @@ import {
5
5
  } from '@oanda/labs-widget-common';
6
6
  import { useQuery } from '@apollo/client';
7
7
  import { getValueAtRiskAssetClasses } from '../gql/getValueAtRiskAssetClasses';
8
- import { Main } from './Main';
9
- import { MainWithDataProps } from './types';
8
+ import { Tool } from './Tool';
9
+ import { ToolWithDataProps } from './types';
10
10
  import { GetValueAtRiskAssetClassesQuery, GetValueAtRiskAssetClassesQueryVariables } from '../gql/types/graphql';
11
11
 
12
- const MainWithData = ({ division }: MainWithDataProps) => {
12
+ const ToolWithData = ({ division }: ToolWithDataProps) => {
13
13
  const { size } = useContext(ThemeContext);
14
14
  const isDesktop = size === Size.DESKTOP;
15
15
  const { loading, data, error } = useQuery<
@@ -35,7 +35,7 @@ const MainWithData = ({ division }: MainWithDataProps) => {
35
35
  </div>
36
36
  )}
37
37
  {!loading && data && (
38
- <Main
38
+ <Tool
39
39
  data={data}
40
40
  division={division}
41
41
  />
@@ -49,4 +49,4 @@ const MainWithData = ({ division }: MainWithDataProps) => {
49
49
  );
50
50
  };
51
51
 
52
- export { MainWithData };
52
+ export { ToolWithData };
@@ -4,25 +4,43 @@ import { ApolloClient, InMemoryCache, ApolloProvider } from '@apollo/client';
4
4
  import { ChartError, ThemeProvider, getLocale } from '@oanda/labs-widget-common';
5
5
  import { ValueAtRiskConfig } from './types';
6
6
  import { translations } from '../translations';
7
- import { MainWithData } from './MainWithData';
7
+ import { ToolWithData } from './ToolWithData';
8
+ import { Widget } from './Widget';
8
9
 
9
10
  const ValueAtRiskWidget = ({
10
- graphqlUrl, locale, division, theme, isParamError,
11
+ graphqlUrl,
12
+ locale,
13
+ division,
14
+ theme,
15
+ isParamError,
16
+ instrument,
17
+ duration,
18
+ bars,
11
19
  }: ValueAtRiskConfig) => {
12
20
  const client = new ApolloClient({
13
21
  uri: graphqlUrl,
14
22
  cache: new InMemoryCache(),
15
23
  });
24
+ const isWidget = !!instrument && !!duration && !!bars;
16
25
 
17
26
  return (
18
27
  <ThemeProvider theme={theme}>
19
28
  <LocaleProvider locale={getLocale(locale)} translations={translations}>
20
29
  <ApolloProvider client={client}>
21
- {isParamError ? (
30
+ {isParamError && (
22
31
  <div className="lw-flex lw-h-[425px] lw-w-full lw-items-center lw-border lw-border-solid lw-border-border-primary">
23
32
  <ChartError />
24
33
  </div>
25
- ) : <MainWithData division={division} />}
34
+ )}
35
+ {!isParamError && !isWidget && <ToolWithData division={division} />}
36
+ {!isParamError && isWidget && (
37
+ <Widget
38
+ division={division}
39
+ instrument={instrument}
40
+ duration={duration}
41
+ bars={bars}
42
+ />
43
+ )}
26
44
  </ApolloProvider>
27
45
  </LocaleProvider>
28
46
  </ThemeProvider>
@@ -0,0 +1,46 @@
1
+ import React, { useContext } from 'react';
2
+ import classnames from 'classnames';
3
+ import { Size, ThemeContext } from '@oanda/labs-widget-common';
4
+ import { useLocale } from '@oanda/mono-i18n';
5
+ import { WidgetProps } from './types';
6
+ import { ChartWithData } from './ChartWithData';
7
+
8
+ const Widget = ({
9
+ division,
10
+ instrument,
11
+ duration,
12
+ bars,
13
+ }: WidgetProps) => {
14
+ const { lang } = useLocale();
15
+ const { size } = useContext(ThemeContext);
16
+ const isDesktop = size === Size.DESKTOP;
17
+
18
+ return (
19
+ <div
20
+ data-testid="value-at-risk-widget-wrapper"
21
+ className="lw-relative lw-text-sm lw-tracking-normal"
22
+ >
23
+ {size && (
24
+ <>
25
+ <div
26
+ className={classnames('lw-font-bold', {
27
+ 'lw-mb-11 lw-text-center lw-text-xl': isDesktop,
28
+ 'lw-mb-6 lw-text-lg': !isDesktop,
29
+ })}
30
+ >
31
+ <div>{`${lang('hold_time')}: ${lang('day', { count: +duration.substring(1) })}`}</div>
32
+ <div>{`${lang('calculation_period')}: ${lang('day', { count: +bars.substring(1) })}`}</div>
33
+ </div>
34
+ <ChartWithData
35
+ bars={bars}
36
+ duration={duration}
37
+ instrument={instrument}
38
+ division={division}
39
+ />
40
+ </>
41
+ )}
42
+ </div>
43
+ );
44
+ };
45
+
46
+ export { Widget };
@@ -14,7 +14,13 @@ volatilityChartParamsElements.forEach((element) => {
14
14
  const root = createRoot(element);
15
15
  const params = element.getAttribute('data-value-at-risk-params');
16
16
  const mode = element.getAttribute('data-mode');
17
- const { division, locale } = JSON.parse(params as string);
17
+ const {
18
+ division,
19
+ locale,
20
+ instrument,
21
+ duration,
22
+ bars,
23
+ } = JSON.parse(params as string);
18
24
 
19
25
  const isParamError = validateToolParams({ locale, division, graphqlUrl }, [
20
26
  {
@@ -36,6 +42,9 @@ volatilityChartParamsElements.forEach((element) => {
36
42
  division={division}
37
43
  theme={mode as Theme}
38
44
  isParamError={isParamError}
45
+ instrument={instrument}
46
+ duration={duration}
47
+ bars={bars}
39
48
  />,
40
49
  );
41
50
  });
@@ -10,18 +10,28 @@ export interface ValueAtRiskConfig {
10
10
  locale: Locale;
11
11
  theme?: Theme;
12
12
  isParamError?: boolean;
13
+ instrument?: string;
14
+ duration?: ValueAtRiskDuration;
15
+ bars?: ValueAtRiskBars;
13
16
  }
14
17
 
15
18
  export interface ValueAtRiskWrapperConfig extends ValueAtRiskConfig {
16
19
  renderElementId: string;
17
20
  }
18
21
 
19
- export interface MainProps {
22
+ export interface WidgetProps {
23
+ instrument: string;
24
+ duration: ValueAtRiskDuration;
25
+ bars: ValueAtRiskBars;
26
+ division: Division;
27
+ }
28
+
29
+ export interface ToolProps {
20
30
  data: GetValueAtRiskAssetClassesQuery;
21
31
  division: Division;
22
32
  }
23
33
 
24
- export interface MainWithDataProps {
34
+ export interface ToolWithDataProps {
25
35
  division: Division;
26
36
  }
27
37
 
@@ -5,7 +5,7 @@ import React from 'react';
5
5
  import { render, fireEvent } from '@testing-library/react';
6
6
  import { ThemeContext, Size } from '@oanda/labs-widget-common';
7
7
  import { MockedProvider } from '@apollo/client/testing';
8
- import { Main } from '../src/ValueAtRiskWidget/Main';
8
+ import { Tool } from '../src/ValueAtRiskWidget/Tool';
9
9
  import { assetClassesMock, getValueAtRiskChartMock } from './mocks';
10
10
  import { Division } from '../src/gql/types/graphql';
11
11
 
@@ -13,12 +13,12 @@ const data = {
13
13
  valueAtRiskAssetClasses: assetClassesMock,
14
14
  };
15
15
 
16
- describe('Main component', () => {
16
+ describe('Tool component', () => {
17
17
  it('should render tool view', () => {
18
18
  const { getByTestId } = render(
19
19
  <MockedProvider mocks={getValueAtRiskChartMock()}>
20
20
  <ThemeContext.Provider value={{ size: Size.DESKTOP, isDark: true }}>
21
- <Main
21
+ <Tool
22
22
  data={data}
23
23
  division={Division.Oc}
24
24
  />
@@ -32,7 +32,7 @@ describe('Main component', () => {
32
32
  const { container, getByTestId } = render(
33
33
  <MockedProvider mocks={[...getValueAtRiskChartMock('AUD_USD'), ...getValueAtRiskChartMock('AUS200')]}>
34
34
  <ThemeContext.Provider value={{ size: Size.DESKTOP, isDark: true }}>
35
- <Main
35
+ <Tool
36
36
  data={data}
37
37
  division={Division.Oc}
38
38
  />
@@ -5,7 +5,7 @@ import React from 'react';
5
5
  import { render } from '@testing-library/react';
6
6
  import { MockedProvider } from '@apollo/client/testing';
7
7
  import { Size, ThemeContext } from '@oanda/labs-widget-common';
8
- import { MainWithData } from '../src/ValueAtRiskWidget/MainWithData';
8
+ import { ToolWithData } from '../src/ValueAtRiskWidget/ToolWithData';
9
9
  import { Division } from '../src/gql/types/graphql';
10
10
  import { getValueAtRiskAssetClassesMock, getValueAtRiskChartMock } from './mocks/responsesMocks';
11
11
 
@@ -14,7 +14,7 @@ describe('Main component', () => {
14
14
  const { findByTestId } = render(
15
15
  <MockedProvider mocks={[...getValueAtRiskAssetClassesMock, ...getValueAtRiskChartMock()]}>
16
16
  <ThemeContext.Provider value={{ size: Size.DESKTOP, isDark: false }}>
17
- <MainWithData division={Division.Oc} />
17
+ <ToolWithData division={Division.Oc} />
18
18
  </ThemeContext.Provider>
19
19
  </MockedProvider>,
20
20
  );