{"version":3,"sources":["webpack://fxsWidgets/../src/js/widgets/calendar-common/helpers/formatDate.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerange/actions/localizationActions.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerange/store.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerange/actions/trueRangeDataActions.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerange/actions/assetActions.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerange/actions/index.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerange/constants/seriesConfig.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerange/components/TrueRangeChart.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerange/constants/chartOptions.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerange/components/PairDropdown.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerange/components/TrueRangeContainer.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-truerange/index.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-common/helpers/getInitialDate.js"],"names":["getOrdinalDay","day","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","initialDate","selectedAsset","convertAssets","split","convertCulture","input","Object","keys","includes","settingsMapper","state","resultState","_objectSpread","selectedPair","length","received","values","_store$getState$confi","mapped","map","x","date","convertDateToTimezone","dateUtc","getInitialDate","setState","error","fetchTrueRangeData","_store$getState2","_store$getState2$conf","requested","url","concat","cacheFetch","then","response","ok","json","status","catch","err","console","fetchAssetsAndData","changeSelectedAssetAndFetchData","assetId","seriesConfig","TrueRange15Min","nameKey","type","color","mapProperty","item","trueRange15Min","TrueRange15MinAveraged","averageTrueRange15Min","TrueRange4h","trueRange4h","TrueRange4hAveraged","averageTrueRange4h","TrueRangeChart","_Component","props","_this","translate","_callSuper","options","chart","toolbar","tools","download","zoomin","zoomout","zoom","enabled","autoScaleYaxis","animations","fontFamily","grid","padding","left","colors","s","stroke","width","curve","xaxis","tooltip","axisBorder","show","offsetX","min","getTime","undefined","yaxis","labels","formatter","value","toFixed","dateFormatLocalizedSync","y","plotOptions","bar","columnWidth","getNumberDependingOnBars","legend","position","horizontalAlign","offsetY","itemMargin","vertical","horizontal","markers","responsive","breakpoint","series","getSeries","bind","_inherits","key","nextProps","this","_this2","name","prepareSeries","_ref2","_objectDestructuringEmpty","h","Chart","Component","connectWithTranslations","PairDropdown","_classCallCheck","onOptionSelected","isOpen","class","IconCaretUp","IconCaretDown","option","id","pairs","Dropdown","selectedValue","renderTitle","renderOption","titleClass","connect","actions","TrueRangeContainer","preloadDateFormatTranslation","shouldShowChart","find","a","dir","style","SpinnerIcon","Spinner","WidgetError","message","NoDataWidgetError","MarketImpactTrueRangeWidget","createCustomStore","createStore","Provider","result","slice"],"mappings":"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","file":"marketimpact-truerange.93592138e6333939d122.js","sourcesContent":["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","export const translations = {\r\n    \"ar\": () => import(/*webpackChunkName: 'marketimpact-truerange-t-ar'*/\"../translations/ar\"),\r\n    \"de\": () => import(/*webpackChunkName: 'marketimpact-truerange-t-de'*/\"../translations/de\"),\r\n    \"en\": () => import(/*webpackChunkName: 'marketimpact-truerange-t-en'*/\"../translations/en\"),\r\n    \"es\": () => import(/*webpackChunkName: 'marketimpact-truerange-t-es'*/\"../translations/es\"),\r\n    \"fr\": () => import(/*webpackChunkName: 'marketimpact-truerange-t-fr'*/\"../translations/fr\"),\r\n    \"id\": () => import(/*webpackChunkName: 'marketimpact-truerange-t-id'*/\"../translations/id\"),\r\n    \"ru\": () => import(/*webpackChunkName: 'marketimpact-truerange-t-ru'*/\"../translations/ru\"),\r\n    \"tr\": () => import(/*webpackChunkName: 'marketimpact-truerange-t-tr'*/\"../translations/tr\"),\r\n    \"zh-cht\": () => import(/*webpackChunkName: 'marketimpact-truerange-t-zh-cht'*/\"../translations/zh-cht\"),\r\n    \"zh-cn\": () => import(/*webpackChunkName: 'marketimpact-truerange-t-zh-cn'*/\"../translations/zh-cn\"),\r\n    \"vi\": () => import(/*webpackChunkName: 'marketimpact-truerange-t-vi'*/\"../translations/vi\"),\r\n    \"fa\": () => import(/*webpackChunkName: 'marketimpact-truerange-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        initialDate: 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 { convertDateToTimezone } from \"../../common/helpers/dateHelpers\";\r\nimport { cacheFetch } from \"../../common/helpers/cacheFetchHelpers\";\r\nimport { getInitialDate } from \"../../marketimpact-common/helpers/getInitialDate\";\r\n\r\nconst requested = (store) => {\r\n    store.setState({\r\n        data: {\r\n            isFetching: true,\r\n            fetchError: false,\r\n            items: null,\r\n            initialDate: null,\r\n        },\r\n    });\r\n};\r\n\r\nconst received = (store, values) => {\r\n    const {\r\n        config: { timezoneOffset, zoomable, take },\r\n    } = store.getState();\r\n    const mapped = values.map((x) => {\r\n        let value = {\r\n            ...x,\r\n            date: convertDateToTimezone(x.dateUtc, timezoneOffset),\r\n        };\r\n        return value;\r\n    });\r\n\r\n    const initialDate = zoomable && getInitialDate(take, mapped);\r\n\r\n    store.setState({\r\n        data: {\r\n            isFetching: false,\r\n            fetchError: false,\r\n            items: mapped,\r\n            initialDate: initialDate,\r\n        },\r\n    });\r\n};\r\n\r\nconst error = (store) => {\r\n    store.setState({\r\n        data: {\r\n            isFetching: false,\r\n            fetchError: true,\r\n            items: null,\r\n            initialDate: null,\r\n        },\r\n    });\r\n};\r\n\r\nexport const fetchTrueRangeData = (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    const url =\r\n        `${calendarApiUrl}/${culture}/api/v1/marketImpact/${eventId}/trueRange/${selectedAsset}` +\r\n        (zoomable ? \"\" : `?take=${take}`);\r\n\r\n    cacheFetch(url)\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\r\nexport const changeSelectedAssetAndFetchData = (store, selectedAsset) => {\r\n    store.setState({ selectedAsset });\r\n    fetchTrueRangeData(store);\r\n};\r\n","import { fetchTrueRangeData } from './trueRangeDataActions'\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    fetchTrueRangeData(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 { config: { calendarApiUrl, culture } } = 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}","import { changeSelectedAssetAndFetchData } from './trueRangeDataActions'\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    type: 'bar',\r\n    color: '#f4cfa4',\r\n    mapProperty: item => item.trueRange15Min\r\n}\r\n\r\nconst TrueRange15MinAveraged = {\r\n    nameKey: 'SeriesName_15MinTrueRangeAveraged',\r\n    type: 'line',\r\n    color: '#d1495b',\r\n    mapProperty: item => item.averageTrueRange15Min\r\n}\r\n\r\nconst TrueRange4h = {\r\n    nameKey: 'SeriesName_4hTrueRange',\r\n    type: 'bar',\r\n    color: '#bccde3',\r\n    mapProperty: item => item.trueRange4h\r\n}\r\n\r\nconst TrueRange4hAveraged = {\r\n    nameKey: 'SeriesName_4hTrueRangeAveraged',\r\n    type: 'line',\r\n    color: '#304c70',\r\n    mapProperty: item => item.averageTrueRange4h\r\n}\r\n\r\nexport const seriesConfig = {\r\n    TrueRange15Min,\r\n    TrueRange15MinAveraged,\r\n    TrueRange4h,\r\n    TrueRange4hAveraged\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 TrueRangeChart extends Component {\r\n    constructor(props) {\r\n        super(props)\r\n        this.state = {\r\n            options: getChartOptions(props.translate, props.config, props.data),\r\n            series: props.data ? this.getSeries(props.data.items) : []\r\n        }\r\n\r\n        this.getSeries = this.getSeries.bind(this)\r\n    }\r\n\r\n    componentWillReceiveProps(nextProps) {\r\n        if ((this.props.data.items !== nextProps.data.items) && nextProps.data.items && nextProps.data.items.length > 0) {\r\n            const data = nextProps.data.items\r\n            const series = this.getSeries(data)\r\n            this.setState({ series })\r\n        }\r\n    }\r\n\r\n    prepareSeries(data, mapProperty) {\r\n        const result = data.map(item => ([item.date, mapProperty(item)]))\r\n        return result\r\n    }\r\n\r\n    getSeries(data) {\r\n        const series = Object.values(seriesConfig).map(s => ({\r\n            name: this.props.translate(s.nameKey),\r\n            type: s.type,\r\n            data: this.prepareSeries(data, s.mapProperty)\r\n        }))\r\n        return series\r\n    }\r\n\r\n    render({ }, { series, options }) {\r\n        return (\r\n            <Chart options={options} series={series} />\r\n        )\r\n    }\r\n}\r\n\r\nexport default connectWithTranslations('config,data')(TrueRangeChart)\r\n","import { seriesConfig } from \"./seriesConfig\";\r\nimport { dateFormatLocalizedSync } from \"../../common/helpers/dateHelpers\";\r\nimport { getNumberDependingOnBars } from \"../../common/helpers/chartHelpers\";\r\n\r\nexport const getChartOptions = (translate, config, data) => ({\r\n    chart: {\r\n        height: config.height || \"auto\",\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    colors: Object.values(seriesConfig).map((s) => s.color),\r\n    stroke: { width: 1, curve: \"straight\" },\r\n    xaxis: {\r\n        type: \"datetime\",\r\n        tooltip: { enabled: false },\r\n        axisBorder: {\r\n            show: true,\r\n            color: \"#DDDEDF\",\r\n            height: 1,\r\n            offsetX: translate(\"IsRightToLeftOriented\") ? 30 : 0,\r\n        },\r\n        min: data.initialDate ? data.initialDate.getTime() : undefined,\r\n    },\r\n    yaxis: {\r\n        axisBorder: {\r\n            show: true,\r\n            color: \"#DDDEDF\",\r\n            width: 1,\r\n            offsetX: translate(\"IsRightToLeftOriented\") ? 30 : 5,\r\n        },\r\n        labels: {\r\n            formatter: (value) => value.toFixed(3),\r\n            offsetX: translate(\"IsRightToLeftOriented\") ? -30 : -15,\r\n        },\r\n    },\r\n    tooltip: {\r\n        x: { formatter: (value) => dateFormatLocalizedSync(value, \"ll\") },\r\n        y: { formatter: (value) => value && value.toFixed(4) },\r\n    },\r\n    plotOptions: { bar: { columnWidth: getNumberDependingOnBars(data) } },\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            },\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 TrueRangeChart from './TrueRangeChart'\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 TrueRangeContainer 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 = nextProps.data.items !== null && nextProps.data.items.length > 0\r\n        const shouldShowChart = nextProps.translations && (dataIsAvailable || (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({ data, assets, config, selectedAsset, translate, translations }, { shouldShowChart }) {\r\n        const selectedPair = assets.items && assets.items.find(x => x.id === selectedAsset)\r\n        const pairs = config.assets && assets.items && config.assets.map(a => assets.items.find(x => x.id === a))\r\n        return (\r\n            <div class=\"fxs_widget fxs_true-range\" dir={`${!!translate('IsRightToLeftOriented') ? 'rtl' : 'auto'}`} style=\"height:450px\">\r\n                {selectedPair && shouldShowChart &&\r\n                    <h2 class=\"fxs_headline_small\">\r\n                        <span>{translate('ChartTitle')} </span>\r\n                        {pairs.length > 1 && <PairDropdown pairs={pairs} selectedPair={selectedPair} />}\r\n                        {data.isFetching && <SpinnerIcon />}\r\n                    </h2>\r\n                }\r\n                { (data.isFetching || assets.isFetching) && !shouldShowChart && !data.fetchError && !assets.fetchError && <Spinner /> }\r\n                { (data.fetchError || assets.fetchError) && <WidgetError message={\r\n                    <p>\r\n                        {this.props.translate('WidgetErrorMessageLine1')}\r\n                        <br />\r\n                        {this.props.translate('WidgetErrorMessageLine2')}\r\n                    </p>\r\n                } />}\r\n                {!data.isFetching && !data.fetchError && !assets.isFetching && !assets.fetchError && assets.items\r\n                    && data.items && data.items.length === 0 && <NoDataWidgetError message={\r\n                        <p>\r\n                            {this.props.translate('NoDataWidgetErrorMessageLine1')}\r\n                        </p>\r\n                    } />}\r\n                {translations && shouldShowChart && !data.fetchError && !assets.fetchError && <TrueRangeChart data={data.items} />}\r\n            </div>\r\n\r\n        )\r\n    }\r\n}\r\n\r\nexport default connectWithTranslations('data, assets, selectedAsset, config', actions)(TrueRangeContainer)\r\n","import { h, Component } from 'preact'\r\nimport { Provider } from 'unistore/preact'\r\nimport { createStore } from './store'\r\nimport TrueRangeContainer from './components/TrueRangeContainer'\r\n\r\nclass MarketImpactTrueRangeWidget extends Component {\r\n    constructor(props) {\r\n        super(props)\r\n        this.store = createStore(props)\r\n    }\r\n\r\n    render(props) {\r\n        return (\r\n            <Provider store={this.store}>\r\n                <TrueRangeContainer />\r\n            </Provider>\r\n        )\r\n    }\r\n}\r\n\r\nexport default MarketImpactTrueRangeWidget","export const getInitialDate = (take, items) => {\r\n    let result = null;\r\n\r\n    if (items.length < 1 || take < 0) return result;\r\n\r\n    let position = take <= items.length ? take : items.length;\r\n    result = items.slice(0, position)[position - 1].date;\r\n\r\n    return result;\r\n};\r\n"],"sourceRoot":""}