{"version":3,"sources":["webpack://fxsWidgets/../src/js/widgets/marketimpact-truerangevsdeviation/actions/localizationActions.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerangevsdeviation/store.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerangevsdeviation/actions/trueRangeVsDeviationDataActions.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerangevsdeviation/actions/assetActions.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerangevsdeviation/actions/index.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerangevsdeviation/constants/seriesConfig.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerangevsdeviation/components/TrueRangeVsDeviationChart.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerangevsdeviation/constants/chartOptions.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerangevsdeviation/components/PairDropdown.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerangevsdeviation/components/TrueRangeVsDeviationContainer.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerangevsdeviation/index.js","webpack://fxsWidgets/../src/js/widgets/calendar-common/helpers/formatDate.js"],"names":["translations","fetchLocalizations","_ref","store","storeCulture","getState","config","culture","toLowerCase","currentCulture","hasOwnProperty","default","_x","apply","arguments","INITIAL_STATE","calendarApiUrl","CALENDAR_API_URL","timezoneOffset","eventId","allowDownload","zoomable","assets","take","height","data","isFetching","fetchError","items","selectedAsset","convertAssets","split","convertCulture","input","Object","keys","includes","settingsMapper","state","resultState","_objectSpread","selectedPair","length","received","values","mapped","map","x","date","convertDateToUserFriendly","dateUtc","setState","error","fetchTrueRangeVsDeviationData","_store$getState","_store$getState$confi","requested","urls","concat","Promise","all","url","cacheFetch","then","response","ok","json","status","trueRangeArray","mergedList","element","standard","find","el","trueRange15Min","trueRange4h","standardDeviationRatio","ratioDeviation","mergeWithList","mergedListWithoutUndefined","filter","v","undefined","catch","err","console","fetchAssetsAndData","changeSelectedAssetAndFetchData","assetId","seriesConfig","TrueRange15Min","nameKey","color","mapProperty","item","mapProperty2","volatilityRatio15Min","TrueRange4h","volatilityRatio4h","TrueRangeVsDeviationChart","_Component","props","_this","translate","_callSuper","getSeries","bind","options","_defineProperty","fill","opacity","chart","type","toolbar","tools","download","zoomin","zoomout","zoom","enabled","autoScaleYaxis","animations","fontFamily","grid","padding","left","markers","size","strokeWidth","strokeColors","strokeOpacity","enabledOnSeries","title","text","style","cssClass","fontSize","offsetX","axisBorder","show","offsetY","width","axisTicks","borderType","labels","formatter","value","toFixed","min","align","tickPlacement","position","tooltip","s","w","series","seriesIndex","dataPointIndex","dateFormatLocalizedSync","y","_ref2","trueRange","surpriseFactorText","trueRangeText","horizontalAlign","itemMargin","vertical","horizontal","colors","breakpoint","yaxis","decimalPlaces","_inherits","key","nextProps","this","parseInt","Math","pow","_this2","name","prepareSeries","_objectDestructuringEmpty","h","Chart","Component","connectWithTranslations","PairDropdown","_classCallCheck","onOptionSelected","isOpen","class","IconCaretUp","IconCaretDown","option","id","pairs","Dropdown","selectedValue","renderTitle","renderOption","titleClass","connect","actions","TrueRangeVsDeviationContainer","preloadDateFormatTranslation","shouldShowChart","a","dir","SpinnerIcon","Spinner","WidgetError","message","NoDataWidgetError","MarketImpactTrueRangeVsDeviationWidget","createCustomStore","createStore","Provider","getOrdinalDay","day"],"mappings":"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","file":"marketimpact-truerangevsdeviation.93592138e6333939d122.js","sourcesContent":["export const translations = {\r\n    \"ar\": () => import(/*webpackChunkName: 'marketimpact-truerangevsdeviation-t-ar'*/\"../translations/ar\"),\r\n    \"de\": () => import(/*webpackChunkName: 'marketimpact-truerangevsdeviation-t-de'*/\"../translations/de\"),\r\n    \"en\": () => import(/*webpackChunkName: 'marketimpact-truerangevsdeviation-t-en'*/\"../translations/en\"),\r\n    \"es\": () => import(/*webpackChunkName: 'marketimpact-truerangevsdeviation-t-es'*/\"../translations/es\"),\r\n    \"fr\": () => import(/*webpackChunkName: 'marketimpact-truerangevsdeviation-t-fr'*/\"../translations/fr\"),\r\n    \"id\": () => import(/*webpackChunkName: 'marketimpact-truerangevsdeviation-t-id'*/\"../translations/id\"),\r\n    \"ru\": () => import(/*webpackChunkName: 'marketimpact-truerangevsdeviation-t-ru'*/\"../translations/ru\"),\r\n    \"tr\": () => import(/*webpackChunkName: 'marketimpact-truerangevsdeviation-t-tr'*/\"../translations/tr\"),\r\n    \"zh-cht\": () => import(/*webpackChunkName: 'marketimpact-truerangevsdeviation-t-zh-cht'*/\"../translations/zh-cht\"),\r\n    \"zh-cn\": () => import(/*webpackChunkName: 'marketimpact-truerangevsdeviation-t-zh-cn'*/\"../translations/zh-cn\"),\r\n    \"vi\": () => import(/*webpackChunkName: 'marketimpact-truerangevsdeviation-t-vi'*/\"../translations/vi\"),\r\n    \"fa\": () => import(/*webpackChunkName: 'marketimpact-truerangevsdeviation-t-fa'*/\"../translations/fa\"),\r\n}\r\n\r\nexport const fetchLocalizations = async (store) => {\r\n    const storeCulture = store.getState().config.culture\r\n    const culture = storeCulture ? storeCulture.toLowerCase() : 'en'\r\n\r\n    const currentCulture = translations.hasOwnProperty(culture) ? culture : 'en'\r\n    const fetchedTranslations = await translations[currentCulture]()\r\n\r\n    return { translations: fetchedTranslations.default }\r\n}\r\n","import { createCustomStore } from '../common/helpers/storeHelpers'\r\nimport { translations } from './actions/localizationActions'\r\n\r\nconst INITIAL_STATE = {\r\n    config: {\r\n        culture: 'en',\r\n        calendarApiUrl: CALENDAR_API_URL,\r\n        timezoneOffset: 0,\r\n        eventId: null,\r\n        allowDownload: true,\r\n        zoomable: true,\r\n        assets: ['fxs-3212164', 'fxs-3212155', 'fxs-3212166', 'fxs-3212322', 'fxs-3212172'],\r\n        take: 60,\r\n        height: 'auto'\r\n    },\r\n    translations: null,\r\n    data: {\r\n        isFetching: true,\r\n        fetchError: false,\r\n        items: null\r\n    },\r\n    assets: { isFetching: false, fetchError: false, items: null },\r\n    selectedAsset: null\r\n}\r\n\r\nconst convertAssets = (assets) => {\r\n    const result = assets.split(',')\r\n    return result\r\n}\r\n\r\nconst convertCulture = input => {\r\n    const result = input && Object.keys(translations).includes(input.toLowerCase()) ?\r\n        input.toLowerCase() : 'en'\r\n    return result\r\n}\r\n\r\nconst settingsMapper = (state) => {\r\n    const resultState = { ...state, selectedPair: null }\r\n\r\n    if (state.config.assets && state.config.assets.length > 0) {\r\n        resultState.selectedAsset = state.config.assets[0]\r\n    }\r\n\r\n    return resultState\r\n}\r\n\r\nconst createStore = (props) => {\r\n    const result = createCustomStore(\r\n        props,\r\n        INITIAL_STATE,\r\n        {\r\n            assets: convertAssets,\r\n            culture: convertCulture\r\n        },\r\n        settingsMapper)\r\n\r\n    return result\r\n}\r\n\r\nexport { createStore }\r\n","import { convertDateToUserFriendly } from \"../../common/helpers/dateHelpers\";\r\nimport { cacheFetch } from \"../../common/helpers/cacheFetchHelpers\";\r\n\r\nconst requested = (store) => {\r\n    store.setState({\r\n        data: { isFetching: true, fetchError: false, items: null },\r\n    });\r\n};\r\n\r\nconst received = (store, values) => {\r\n    const mapped = values.map((x) => {\r\n        let value = { ...x, date: convertDateToUserFriendly(x.dateUtc) };\r\n        return value;\r\n    });\r\n\r\n    store.setState({\r\n        data: { isFetching: false, fetchError: false, items: mapped },\r\n    });\r\n};\r\n\r\nconst error = (store) => {\r\n    store.setState({\r\n        data: { isFetching: false, fetchError: true, items: null },\r\n    });\r\n};\r\n\r\nconst mergeWithList = (element, data) => {\r\n    try {\r\n        var standard = data.find((el) => el.dateUtc == element.dateUtc);\r\n        if (typeof standard !== \"undefined\") {\r\n            let result = {\r\n                trueRange15Min: element.trueRange15Min,\r\n                trueRange4h: element.trueRange4h,\r\n                dateUtc: element.dateUtc,\r\n                standardDeviationRatio: standard.ratioDeviation,\r\n            };\r\n            return result;\r\n        }\r\n        return null;\r\n    } catch (error) {\r\n        return null;\r\n    }\r\n};\r\n\r\nexport const fetchTrueRangeVsDeviationData = (store) => {\r\n    const {\r\n        config: { calendarApiUrl, culture, eventId, zoomable, take },\r\n        selectedAsset,\r\n    } = store.getState();\r\n    if (!selectedAsset) {\r\n        error(store);\r\n        return;\r\n    }\r\n    requested(store);\r\n\r\n    // store urls to fetch in an array\r\n    const urls = [\r\n        `${calendarApiUrl}/${culture}/api/v1/marketImpact/${eventId}/trueRange/${selectedAsset}` +\r\n            (zoomable ? \"\" : `?take=${take}`),\r\n        `${calendarApiUrl}/${culture}/api/v1/events/${eventId}/historical` +\r\n            (zoomable ? \"\" : `?take=${take}`),\r\n    ];\r\n\r\n    // use map() to perform a fetch and handle the response for each url\r\n    Promise.all(\r\n        urls.map((url) =>\r\n            cacheFetch(url).then((response) => {\r\n                if (response.ok) {\r\n                    return response.json();\r\n                } else if (response.status === 404) {\r\n                    received(store, []);\r\n                } else {\r\n                    error(store);\r\n                }\r\n            })\r\n        )\r\n    )\r\n        .then((data) => {\r\n            const standardDeviationArray = data[0] || [];\r\n            const trueRangeArray = data[1] || [];\r\n            const mergedList = standardDeviationArray.map((element) =>\r\n                mergeWithList(element, trueRangeArray)\r\n            );\r\n            let mergedListWithoutUndefined = mergedList.filter(\r\n                (v) => v !== undefined\r\n            );\r\n            received(store, mergedListWithoutUndefined);\r\n        })\r\n        .catch((err) => {\r\n            console.error(err);\r\n            error(store);\r\n        });\r\n};\r\n\r\nexport const changeSelectedAssetAndFetchData = (store, selectedAsset) => {\r\n    store.setState({ selectedAsset });\r\n    fetchTrueRangeVsDeviationData(store);\r\n};\r\n","import { fetchTrueRangeVsDeviationData } from \"./trueRangeVsDeviationDataActions\";\r\nimport { cacheFetch } from \"../../common/helpers/cacheFetchHelpers\";\r\n\r\nconst requested = (store) => {\r\n    store.setState({\r\n        assets: { isFetching: true, fetchError: false, items: null },\r\n    });\r\n};\r\n\r\nconst received = (store, values) => {\r\n    store.setState({\r\n        assets: { isFetching: false, fetchError: false, items: values },\r\n    });\r\n    fetchTrueRangeVsDeviationData(store);\r\n};\r\n\r\nconst error = (store) => {\r\n    store.setState({\r\n        assets: { isFetching: false, fetchError: true, items: null },\r\n    });\r\n};\r\n\r\nexport const fetchAssetsAndData = (store) => {\r\n    const {\r\n        config: { calendarApiUrl, culture },\r\n    } = store.getState();\r\n    requested(store);\r\n\r\n    const url = `${calendarApiUrl}/${culture}/api/v1/marketImpact/assets`;\r\n    cacheFetch(url, true, 86400)\r\n        .then((response) => {\r\n            if (response.ok) {\r\n                response.json().then((values) => received(store, values));\r\n            } else if (response.status === 404) {\r\n                received(store, []);\r\n            } else {\r\n                error(store);\r\n            }\r\n        })\r\n        .catch((err) => {\r\n            console.error(err);\r\n            error(store);\r\n        });\r\n};\r\n","import { changeSelectedAssetAndFetchData } from './trueRangeVsDeviationDataActions'\r\nimport { fetchLocalizations } from './localizationActions'\r\nimport { fetchAssetsAndData } from './assetActions'\r\n\r\nexport default (store) => ({\r\n    fetchLocalizations: (state) => fetchLocalizations(store),\r\n    fetchAssetsAndData: (state) => fetchAssetsAndData(store),\r\n    changeSelectedAssetAndFetchData: (state, assetId) => changeSelectedAssetAndFetchData(store, assetId)\r\n})","const TrueRange15Min = {\r\n    nameKey: 'SeriesName_15MinTrueRange',\r\n    color: '#d1495b',\r\n    mapProperty: item => item.trueRange15Min,\r\n    mapProperty2: item => item.volatilityRatio15Min\r\n}\r\n\r\nconst TrueRange4h = {\r\n    nameKey: 'SeriesName_4hTrueRange',\r\n    color: '#304c70',\r\n    mapProperty: item => item.trueRange4h,\r\n    mapProperty2: item => item.volatilityRatio4h\r\n}\r\nexport const seriesConfig = {\r\n    TrueRange15Min,\r\n    TrueRange4h\r\n}\r\n","import { h, Component } from \"preact\";\r\nimport Chart from \"../../common/components/Chart\";\r\nimport { connectWithTranslations } from \"../../common/helpers/translationsHelpers\";\r\nimport { getChartOptions, seriesConfig } from \"../constants\";\r\n\r\nclass TrueRangeVsDeviationChart extends Component {\r\n    constructor(props) {\r\n        super(props);\r\n        this.getSeries = this.getSeries.bind(this);\r\n        this.state = {\r\n            options: getChartOptions(props.translate, props.config),\r\n            series: props.data\r\n                ? this.getSeries(props.data, props.decimalPlaces)\r\n                : [],\r\n        };\r\n    }\r\n\r\n    componentWillReceiveProps(nextProps) {\r\n        if (\r\n            this.props.data !== nextProps.data &&\r\n            nextProps.data &&\r\n            nextProps.data.length > 0\r\n        ) {\r\n            const data = nextProps.data;\r\n            const series = this.getSeries(data, nextProps.decimalPlaces);\r\n            this.setState({ series });\r\n        }\r\n    }\r\n\r\n    prepareSeries(data, decimalPlaces, mapProperty, mapProperty2) {\r\n        const result = data.map((item) => [\r\n            parseInt(mapProperty(item) * Math.pow(10, decimalPlaces)),\r\n            item.standardDeviationRatio,\r\n            undefined,\r\n            item.date\r\n        ]);\r\n        return result;\r\n    }\r\n\r\n    getSeries(data, decimalPlaces) {\r\n        const series = Object.values(seriesConfig).map((s) => ({\r\n            name: this.props.translate(s.nameKey),\r\n            data: this.prepareSeries(\r\n                data,\r\n                decimalPlaces,\r\n                s.mapProperty,\r\n                s.mapProperty2\r\n            ),\r\n        }));\r\n        return series;\r\n    }\r\n\r\n    render({}, { series, options }) {\r\n        return <Chart series={series} options={options} type=\"scatter\" />;\r\n    }\r\n}\r\n\r\nexport default connectWithTranslations(\"config\")(TrueRangeVsDeviationChart);\r\n","import { seriesConfig } from \"./seriesConfig\";\r\nimport { dateFormatLocalizedSync } from \"../../common/helpers/dateHelpers\";\r\n\r\nexport const getChartOptions = (translate, config) => ({\r\n    fill: { opacity: 0.5 },\r\n    chart: {\r\n        height: config.height || \"auto\",\r\n        type: \"scatter\",\r\n        toolbar: {\r\n            tools: {\r\n                download: config.allowDownload,\r\n                zoomin: config.zoomable,\r\n                zoomout: config.zoomable,\r\n            },\r\n        },\r\n        zoom: { enabled: config.zoomable, type: \"x\", autoScaleYaxis: true },\r\n        animations: { enabled: false },\r\n        fontFamily: \"Roboto , Arial, Helvetica, sans-serif\",\r\n    },\r\n    grid: { padding: { left: 0 } },\r\n    markers: {\r\n        size: 7,\r\n        strokeWidth: 0,\r\n        strokeColors: \"rgba(0,0,0,0)\",\r\n        strokeOpacity: 0,\r\n    },\r\n    fill: {\r\n        opacity: 0.6,\r\n    },\r\n    dataLabels: { enabled: false, enabledOnSeries: undefined },\r\n    yaxis: {\r\n        title: {\r\n            text: translate(\"YAxisTitle\"),\r\n            style: {\r\n                cssClass: \"apexcharts-yaxis-title\",\r\n                color: \"#8c8d91\",\r\n                fontSize: \"11px\",\r\n            },\r\n            offsetX: translate(\"IsRightToLeftOriented\") ? -30 : -5,\r\n        },\r\n        axisBorder: {\r\n            show: true,\r\n            color: \"#DDDEDF\",\r\n            offsetX: 0,\r\n            offsetY: 5,\r\n            width: 1,\r\n            offsetX: translate(\"IsRightToLeftOriented\") ? 30 : 5,\r\n        },\r\n        axisTicks: {\r\n            show: false,\r\n            borderType: \"solid\",\r\n            color: \"#DDDEDF\",\r\n            height: 5,\r\n            offsetY: 0,\r\n        },\r\n        labels: {\r\n            formatter: (value) => value.toFixed(2),\r\n            offsetX: translate(\"IsRightToLeftOriented\") ? -30 : -15,\r\n        },\r\n    },\r\n    xaxis: {\r\n        min: 0,\r\n        title: {\r\n            text: translate(\"XAxisTitle\"),\r\n            align: \"center\",\r\n            style: {\r\n                cssClass: \"apexcharts-xaxis-title\",\r\n                color: \"#8c8d91\",\r\n                fontSize: \"11px\",\r\n            },\r\n        },\r\n        type: \"category\",\r\n        axisBorder: {\r\n            show: true,\r\n            color: \"#DDDEDF\",\r\n            height: 1,\r\n            width: \"100%\",\r\n            offsetX: -8,\r\n            offsetY: 0,\r\n        },\r\n        axisTicks: {\r\n            show: false,\r\n            borderType: \"solid\",\r\n            color: \"#8C8D91\",\r\n            height: 5,\r\n            offsetX: 0,\r\n            offsetY: 0,\r\n        },\r\n\r\n        tickPlacement: \"between\",\r\n        position: \"bottom\",\r\n        tooltip: { enabled: false, formatter: undefined, offsetY: 0 },\r\n    },\r\n    colors: Object.values(seriesConfig).map((s) => s.color),\r\n    tooltip: {\r\n        x: {\r\n            formatter: (value, { series, seriesIndex, dataPointIndex, w }) => {\r\n                //(seriesName) => translate('TrueRangeTooltip', [seriesName]) },\r\n                var date = w.config.series[seriesIndex].data[dataPointIndex][3];\r\n                var result = dateFormatLocalizedSync(date, \"ll\");\r\n                return result;\r\n            },\r\n        },\r\n        y: {\r\n            formatter: (value, { series, seriesIndex, dataPointIndex, w }) => {\r\n                var trueRange =\r\n                    w.config.series[seriesIndex].data[dataPointIndex][0];\r\n                var surpriseFactor =\r\n                    w.config.series[seriesIndex].data[dataPointIndex][1];\r\n                const surpriseFactorText = translate(\"SurpriseFactorTooltip\", [\r\n                    surpriseFactor.toFixed(2),\r\n                ]);\r\n                const trueRangeText = translate(\"TrueRangeTooltip\", [\r\n                    trueRange,\r\n                ]);\r\n                var result = `${surpriseFactorText} | ${trueRangeText}`;\r\n                return result;\r\n            },\r\n        },\r\n    },\r\n    legend: {\r\n        position: \"top\",\r\n        horizontalAlign: \"left\",\r\n        offsetY: -3,\r\n        offsetX: -14,\r\n        itemMargin: { vertical: 5, horizontal: 5 },\r\n        markers: { width: 24 },\r\n        labels: { colors: [\"#8C8D91\"] },\r\n    },\r\n    responsive: [\r\n        {\r\n            breakpoint: 768,\r\n            options: {\r\n                chart: {\r\n                    zoom: {\r\n                        enabled: false,\r\n                    },\r\n                    toolbar: {\r\n                        show: false,\r\n                    },\r\n                },\r\n                yaxis: {\r\n                    labels: { formatter: (value) => value.toFixed(2) },\r\n                },\r\n            },\r\n        },\r\n    ],\r\n});\r\n","import { h, Component } from 'preact'\r\nimport { connect } from 'unistore/preact'\r\nimport Dropdown from '../../common/components/Dropdown'\r\nimport IconCaretDown from '../../common/components/icons/IconCaretDown'\r\nimport IconCaretUp from '../../common/components/icons/IconCaretUp'\r\nimport actions from '../actions'\r\n\r\nclass PairDropdown extends Component {\r\n    constructor(props) {\r\n        super(props)\r\n\r\n        this.onOptionSelected = this.onOptionSelected.bind(this)\r\n    }\r\n\r\n    renderTitle(selectedPair, isOpen) {\r\n        return (\r\n            <span>\r\n                <span class=\"fxs_inner\">\r\n                    { selectedPair.name }\r\n                </span>\r\n                {isOpen ? <IconCaretUp /> : <IconCaretDown />}\r\n            </span>\r\n        )\r\n    }\r\n\r\n    renderOption(option) {\r\n        return (\r\n            <span>\r\n                { option.name }\r\n            </span>\r\n        )\r\n    }\r\n\r\n    onOptionSelected(option) {\r\n        if (this.props.selectedPair.id !== option.id)\r\n            this.props.changeSelectedAssetAndFetchData(option.id)\r\n    }\r\n\r\n    render({ pairs, selectedPair }) {\r\n\r\n        return (\r\n            <Dropdown\r\n                values={pairs}\r\n                selectedValue={selectedPair}\r\n                renderTitle={this.renderTitle}\r\n                renderOption={this.renderOption}\r\n                onOptionSelected={this.onOptionSelected}\r\n                titleClass=\"fxs_btn fxs_btn_line fxs_btn_xsmall\"\r\n            />\r\n        )\r\n    }\r\n}\r\n\r\nexport default connect(null, actions)(PairDropdown)","import { h, Component } from \"preact\";\r\nimport { connectWithTranslations } from \"../../common/helpers/translationsHelpers\";\r\nimport actions from \"../actions\";\r\nimport TrueRangeVsDeviationChart from \"./TrueRangeVsDeviationChart\";\r\nimport PairDropdown from \"./PairDropdown\";\r\nimport Spinner from \"../../common/components/Spinner\";\r\nimport SpinnerIcon from \"../../common/components/SpinnerIcon\";\r\nimport WidgetError from \"../../common/components/WidgetError\";\r\nimport NoDataWidgetError from \"../../common/components/NoDataWidgetError\";\r\nimport { preloadDateFormatTranslation } from \"../../common/helpers/dateHelpers\";\r\n\r\nclass TrueRangeVsDeviationContainer extends Component {\r\n    componentWillMount() {\r\n        this.props.fetchLocalizations();\r\n        this.props.fetchAssetsAndData();\r\n        preloadDateFormatTranslation(this.props.config.culture);\r\n    }\r\n\r\n    componentWillReceiveProps(nextProps) {\r\n        const dataIsAvailable =\r\n            nextProps.data.items !== null && nextProps.data.items.length > 0;\r\n        const shouldShowChart =\r\n            nextProps.translations &&\r\n            (dataIsAvailable ||\r\n                (this.state.shouldShowChart && nextProps.data.items === null));\r\n\r\n        if (this.state.shouldShowChart !== shouldShowChart)\r\n            this.setState({ shouldShowChart });\r\n    }\r\n\r\n    render(\r\n        { data, assets, config, selectedAsset, translate, translations },\r\n        { shouldShowChart }\r\n    ) {\r\n        const selectedPair =\r\n            assets.items && assets.items.find((x) => x.id === selectedAsset);\r\n        const pairs =\r\n            config.assets &&\r\n            assets.items &&\r\n            config.assets.map((a) => assets.items.find((x) => x.id === a));\r\n        return (\r\n            <div\r\n                class=\"fxs_widget fxs_trvsd\"\r\n                dir={`${!!translate(\"IsRightToLeftOriented\") ? \"rtl\" : \"auto\"}`}\r\n                style=\"height:450px\"\r\n            >\r\n                {selectedPair && shouldShowChart && (\r\n                    <h2 class=\"fxs_headline_small\">\r\n                        <span>{translate(\"ChartTitle\")} </span>\r\n                        {pairs.length > 1 && (\r\n                            <PairDropdown\r\n                                pairs={pairs}\r\n                                selectedPair={selectedPair}\r\n                            />\r\n                        )}\r\n                        {data.isFetching && <SpinnerIcon />}\r\n                    </h2>\r\n                )}\r\n                {(data.isFetching || assets.isFetching) &&\r\n                    !shouldShowChart &&\r\n                    !data.fetchError &&\r\n                    !assets.fetchError && <Spinner />}\r\n\r\n                {(data.fetchError || assets.fetchError) && (\r\n                    <WidgetError\r\n                        message={\r\n                            <p>\r\n                                {this.props.translate(\r\n                                    \"WidgetErrorMessageLine1\"\r\n                                )}\r\n                                <br />\r\n                                {this.props.translate(\r\n                                    \"WidgetErrorMessageLine2\"\r\n                                )}\r\n                            </p>\r\n                        }\r\n                    />\r\n                )}\r\n                {!data.isFetching &&\r\n                    !data.fetchError &&\r\n                    !assets.isFetching &&\r\n                    !assets.fetchError &&\r\n                    assets.items &&\r\n                    data.items &&\r\n                    data.items.length === 0 && (\r\n                        <NoDataWidgetError\r\n                            message={\r\n                                <p>\r\n                                    {this.props.translate(\r\n                                        \"NoDataWidgetErrorMessageLine1\"\r\n                                    )}\r\n                                </p>\r\n                            }\r\n                        />\r\n                    )}\r\n                {translations &&\r\n                    shouldShowChart &&\r\n                    !data.fetchError &&\r\n                    !assets.fetchError && (\r\n                        <TrueRangeVsDeviationChart\r\n                            data={data.items}\r\n                            decimalPlaces={selectedPair.decimalPlaces}\r\n                        />\r\n                    )}\r\n            </div>\r\n        );\r\n    }\r\n}\r\nexport default connectWithTranslations(\r\n    \"data, assets, selectedAsset, config\",\r\n    actions\r\n)(TrueRangeVsDeviationContainer);\r\n","import { h, Component } from 'preact'\r\nimport { Provider } from 'unistore/preact'\r\nimport { createStore } from './store'\r\nimport TrueRangeVsDeviationContainer from './components/TrueRangeVsDeviationContainer'\r\n\r\nclass MarketImpactTrueRangeVsDeviationWidget extends Component {\r\n    constructor(props) {\r\n        super(props)\r\n        this.store = createStore(props)\r\n    }\r\n\r\n    render() {\r\n        return (\r\n            <Provider store={this.store}>\r\n                <TrueRangeVsDeviationContainer />\r\n            </Provider>\r\n        )\r\n    }\r\n}\r\n\r\nexport default MarketImpactTrueRangeVsDeviationWidget","export const getPostDateString = (date, culture) => {\r\n    if (date === undefined || date === null) {\r\n        return \"\";\r\n    }\r\n\r\n    var locale = culture.split('-')[0];\r\n    var month = new Intl.DateTimeFormat(locale, { month: 'long' }).format(date)\r\n    \r\n    var splittedDate = date.toString().split(\" \");\r\n    var splittedHours = splittedDate[4].split(\":\");\r\n    var eventDate = month + \" \" + splittedDate[2] + \", \" + splittedHours[0] + \":\" + splittedHours[1] + \" GMT\";\r\n\r\n    return eventDate;\r\n};\r\n\r\nexport const getOrdinalDay = (day) => {\r\n    switch (day) {\r\n        case \"one\":\r\n            return \"st\";\r\n        case \"two\":\r\n            return \"nd\";\r\n        case \"few\":\r\n            return \"rd\";\r\n        default:\r\n            return \"th\";\r\n    }\r\n};\r\n"],"sourceRoot":""}