{"version":3,"sources":["webpack://fxsWidgets/../src/js/widgets/calendar-settings/components/SettingsOptions.js","webpack://fxsWidgets/../src/js/widgets/calendar-settings/store.js","webpack://fxsWidgets/../src/js/widgets/calendar-settings/index.js","webpack://fxsWidgets/../src/js/widgets/calendar-settings/components/SettingsContainer.js","webpack://fxsWidgets/../src/js/widgets/calendar-settings/constants/gtmIds.js"],"names":["SettingsOptions","_Component","props","_this","_callSuper","e","isComposing","keyCode","search","target","value","_inherits","key","_ref","config","data","translate","onCheckboxChanged","notificationSoundOn","view","onOptionChange","toggle","onApply","h","class","SoundAlert","locale","this","culture","ConfigureView","onOptionSelected","option","showDescription","notificationsHelper","hasNotifications","for","title","IconSearchSolid","onKeyUp","filter","type","placeholder","name","autocomplete","colspan","x","isVisible","map","item","id","checked","onClick","tracking","GTM_ID","CONFIGURATION_PUSH_SELECT","GA4EVENT","NAMES","FEATURES_CALENDAR","ELEMENTS","concat","countryCode","toLowerCase","currencyCode","role","CONFIGURATION_APPLY","Component","connectWithTranslations","actions","SETTING_KEYS","INITIAL_STATE","calendarApiUrl","CALENDAR_API_URL","show","openCloseEventName","subscriptionChangedEventName","hasPremium","premiumUrl","isFetching","fetchError","lastUpdated","settings","settingsMapper","state","defaultSettings","CALENDAR_VIEW","Configure_View_Default","undefined","resultState","_objectSpread","storageSettings","getSetting","convertCulture","input","Object","keys","translations","includes","CalendarSettingsWidget","store","createCustomStore","createStore","Provider","SettingsContainer","_defineProperty","items","actualFilterType","FILTER_TYPE","custom","saveData","setState","showAdvice","noChangeView","saveState","then","clockEvent","CustomEvent","SETTINGS_SAVED_EVENT_NAME","detail","document","dispatchEvent","lenght","toUnsubscribe","unsubscribeToEvents","close","fetchLocalizations","initEventNotifications","openCloseListener","updateSettingsFromStorage","nextProps","Configure_View_Premium","_this2","Promise","resolve","persistSettings","saveSettings","_this3","tabindex","CONFIGURATION_CLOSE","IconTimes","ConfirmationPopUp","cancel","save","applySettings","NOTIFICATIONS","eventDateId"],"mappings":"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","file":"calendar-settings.93592138e6333939d122.js","sourcesContent":["import { Component } from \"preact\";\r\nimport { connectWithTranslations } from \"../../common/helpers/translationsHelpers\";\r\nimport actions from \"../actions\";\r\nimport { GTM_ID, GA4EVENT } from \"../constants\";\r\nimport SoundAlert from \"../../calendar-common/components/SoundAlert\";\r\nimport ConfigureView from \"../../calendar-common/components/ConfigureView\";\r\nimport IconSearchSolid from \"../../common/components/icons/IconSearchSolid\";\r\nclass SettingsOptions extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n filter = (e) => {\r\n if (e.isComposing || e.keyCode === 229) {\r\n return;\r\n }\r\n let value = e.target.value;\r\n this.props.search(value);\r\n };\r\n\r\n render({\r\n config,\r\n data,\r\n translate,\r\n onCheckboxChanged,\r\n notificationSoundOn,\r\n view,\r\n onOptionChange,\r\n toggle,\r\n onApply,\r\n }) {\r\n return (\r\n <div>\r\n <div class=\"fxs_detail fxs_cs_detail\">\r\n <h2 class=\"fxs_headline_from_small_to_medium fxs_marginBase_bottom_big\">\r\n {translate(\"Notifications_Title\")}\r\n </h2>\r\n <SoundAlert\r\n onCheckboxChanged={() => onCheckboxChanged()}\r\n notificationSoundOn={notificationSoundOn}\r\n locale={this.props.config.culture}\r\n ></SoundAlert>\r\n <ConfigureView\r\n view={view}\r\n onOptionSelected={(option) => onOptionChange(option)}\r\n showDescription={true}\r\n locale={this.props.config.culture}\r\n ></ConfigureView>\r\n {(config.notificationsHelper ||\r\n config.hasNotifications) && (\r\n <div>\r\n <h3 class=\"fxs_headline_small\">\r\n {translate(\"Notifications\")}\r\n </h3>\r\n <p class=\"fxs_entryPlain_txt\">\r\n {translate(\"Notifications_Summary_1\")}\r\n <br />\r\n {translate(\"Notifications_Summary_2\")}\r\n </p>\r\n <div class=\"fxs_search_module fxs_cs_search_module\">\r\n <div class=\"fxs_search_box fxs_cs_search_box\">\r\n <label\r\n for=\"searchEvent\"\r\n class=\"fxs_btn_filter\"\r\n title=\"Search event\"\r\n >\r\n <IconSearchSolid />\r\n <span class=\"fxs_skip\">\r\n {\" \"}\r\n {translate(\r\n \"Notifications_Search_Event\"\r\n )}\r\n </span>\r\n </label>\r\n <input\r\n onKeyUp={this.filter}\r\n type=\"search\"\r\n class=\"fxs_search_input\"\r\n placeholder=\"Search event\"\r\n name=\"search\"\r\n autocomplete=\"off\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"fxs_cs_table_wrapper\">\r\n <table class=\"fxs_cs_table\">\r\n <thead class=\"fxs_cs_header\">\r\n <tr>\r\n <th class=\"fxs_cs_item\">\r\n {translate(\r\n \"Notifications_NotifyMe\"\r\n )}\r\n </th>\r\n <th class=\"fxs_cs_item\" colspan=\"2\">\r\n {translate(\r\n \"Notifications_Currency\"\r\n )}\r\n </th>\r\n <th class=\"fxs_cs_item fxs_cs_event\">\r\n {translate(\r\n \"Notifications_Event\"\r\n )}\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {data &&\r\n data\r\n .filter((x) => x.isVisible)\r\n .map((item) => (\r\n <tr class=\"fxs_cs_row\">\r\n <td class=\"fxs_cs_item fxs_cs_checkbox\">\r\n <input\r\n key={\r\n item.id +\r\n \"_calendarsettings\"\r\n }\r\n type=\"checkbox\"\r\n value={item.id}\r\n checked={\r\n item.checked\r\n }\r\n onClick={() =>\r\n toggle(item)\r\n }\r\n data-gtmid={\r\n config.tracking &&\r\n GTM_ID.CONFIGURATION_PUSH_SELECT(\r\n item.id,\r\n item.checked\r\n )\r\n }\r\n data-ga4event-clk-name={config.tracking && GA4EVENT.NAMES.FEATURES_CALENDAR}\r\n data-ga4event-element={config.tracking && GA4EVENT.ELEMENTS.CONFIGURATION_PUSH_SELECT(item.checked)}\r\n data-ga4event-eventdateid={item.id}\r\n ></input>\r\n </td>\r\n <td class=\"fxs_cs_item fxs_cs_flag\">\r\n <span\r\n class={`fxs_flag fxs_${item.countryCode.toLowerCase()}`}\r\n ></span>\r\n </td>\r\n <td class=\"fxs_cs_item fxs_cs_currency\">\r\n <span>\r\n {\r\n item.currencyCode\r\n }\r\n </span>\r\n </td>\r\n <td class=\"fxs_cs_item fxs_cs_name\">\r\n {item.name}\r\n </td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n )}\r\n <button\r\n type=\"button\"\r\n onClick={() => onApply(data)}\r\n class=\"fxs_btn fxs_btn_cta fxs_fRight fxs_marginBase_top\"\r\n role=\"button\"\r\n data-gtmid={\r\n config.tracking && GTM_ID.CONFIGURATION_APPLY\r\n }\r\n data-ga4event-clk-name={config.tracking && GA4EVENT.NAMES.FEATURES_CALENDAR}\r\n data-ga4event-element={config.tracking && GA4EVENT.ELEMENTS.CONFIGURATION_APPLY}\r\n\r\n >\r\n {translate(\"Notifications_Apply\")}\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default connectWithTranslations(\r\n \"settings, config, data\",\r\n actions\r\n)(SettingsOptions);\r\n","import { getSetting } from \"../common/helpers/settingStorageHelpers\";\r\nimport { createCustomStore } from \"../common/helpers/storeHelpers\";\r\nimport { translations } from \"./actions/localizationActions\";\r\nimport { CALENDAR_VIEW } from \"../calendar-common/constants/view\";\r\n\r\nconst SETTING_KEYS = {\r\n Settings: 'calendarSettings'\r\n}\r\n\r\nconst INITIAL_STATE = {\r\n config: {\r\n culture: \"en\",\r\n calendarApiUrl: CALENDAR_API_URL,\r\n notificationsHelper: null,\r\n show: false,\r\n openCloseEventName: null,\r\n subscriptionChangedEventName: null,\r\n tracking: false,\r\n hasPremium: false,\r\n premiumUrl:'',\r\n hasNotifications: false\r\n },\r\n isFetching: false,\r\n fetchError: false,\r\n data: null,\r\n lastUpdated: null,\r\n settings: {},\r\n};\r\n\r\nconst settingsMapper = (state) => {\r\n const defaultSettings = {\r\n notificationSoundOn: false,\r\n view: CALENDAR_VIEW.Configure_View_Default\r\n }\r\n\r\n if (state.config.notificationSoundOn)\r\n defaultSettings.notificationSoundOn = state.config.notificationSoundOn\r\n\r\n if (state.config.premiumUrl != undefined && state.config.premiumUrl != \"\")\r\n state.config.hasPremium = true;\r\n\r\n let resultState = {\r\n ...state,\r\n defaultSettings,\r\n }\r\n\r\n let settings = {}\r\n let storageSettings = getSetting(SETTING_KEYS.Settings)\r\n\r\n if (storageSettings){\r\n settings.notificationSoundOn = storageSettings.notificationSoundOn ? storageSettings.notificationSoundOn : false;\r\n settings.view = storageSettings.view ? storageSettings.view : CALENDAR_VIEW.Configure_View_Default;\r\n }\r\n else{\r\n settings = defaultSettings\r\n }\r\n\r\n resultState = {\r\n ...resultState,\r\n settings\r\n }\r\n\r\n return resultState\r\n}\r\nconst convertCulture = (input) => {\r\n const result =\r\n input && Object.keys(translations).includes(input.toLowerCase())\r\n ? input.toLowerCase()\r\n : \"en\";\r\n return result;\r\n};\r\n\r\nconst createStore = (props) => {\r\n const result = createCustomStore(props,\r\n INITIAL_STATE, {\r\n culture: convertCulture\r\n }, settingsMapper);\r\n return result;\r\n};\r\n\r\nexport { createStore };\r\n","import { h, Component } from 'preact'\r\nimport { Provider } from 'unistore/preact'\r\nimport { createStore } from './store'\r\nimport SettingsContainer from './components/SettingsContainer'\r\n\r\nclass CalendarSettingsWidget 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 <SettingsContainer />\r\n </Provider>\r\n )\r\n }\r\n}\r\n\r\nexport default CalendarSettingsWidget\r\n","import { Component } from \"preact\";\r\nimport { connectWithTranslations } from \"../../common/helpers/translationsHelpers\";\r\nimport actions from \"../actions\";\r\nimport { persistSettings } from \"../../calendar-common/helpers/settingsHelper\";\r\nimport {\r\n CALENDAR_VIEW,\r\n FILTER_TYPE,\r\n SETTINGS_SAVED_EVENT_NAME,\r\n} from \"../../calendar-common/constants\";\r\nimport SettingsOptions from \"./SettingsOptions\";\r\nimport IconTimes from \"../../common/components/icons/IconTimes\";\r\nimport { GTM_ID, GA4EVENT} from \"../constants\";\r\nimport ConfirmationPopUp from \"../../calendar-common/components/ConfirmationPopUp\";\r\n\r\nclass SettingsContainer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n settings: {\r\n notificationSoundOn: null,\r\n view: null,\r\n },\r\n showAdvice: false,\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n this.props.fetchLocalizations();\r\n this.props.initEventNotifications();\r\n this.props.openCloseListener();\r\n this.props.updateSettingsFromStorage();\r\n\r\n const { settings } = this.props;\r\n this.setState({ settings });\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n const { settings } = nextProps;\r\n this.setState({ settings });\r\n }\r\n\r\n toggle = (item) => {\r\n item.checked = !item.checked;\r\n };\r\n\r\n onCheckboxChanged() {\r\n this.setState({\r\n settings: {\r\n ...this.state.settings,\r\n notificationSoundOn: !this.state.settings.notificationSoundOn,\r\n },\r\n });\r\n }\r\n\r\n onOptionChange(option) {\r\n // Disabled for premium view\r\n if (option != CALENDAR_VIEW.Configure_View_Premium)\r\n this.setState({\r\n settings: { ...this.state.settings, view: option },\r\n });\r\n }\r\n\r\n saveState() {\r\n return new Promise((resolve, reject) => {\r\n persistSettings(this.state.settings);\r\n this.props.saveSettings(this.state.settings);\r\n\r\n return resolve();\r\n });\r\n }\r\n close() {\r\n const { settings } = this.props;\r\n this.setState({ ...settings, showAdvice: false });\r\n this.props.close();\r\n }\r\n\r\n onApply = (items) => {\r\n const { settings } = this.props;\r\n if (\r\n settings.actualFilterType == FILTER_TYPE.custom &&\r\n settings.view != this.state.settings.view\r\n ) {\r\n this.setState({ ...this.state, showAdvice: true });\r\n return;\r\n }\r\n this.saveData(false, false, items);\r\n };\r\n\r\n saveData = (noChangeView, showAdvice, items) => {\r\n this.saveState().then(() => {\r\n const clockEvent = new CustomEvent(SETTINGS_SAVED_EVENT_NAME, {\r\n detail: { noChangeView: noChangeView, showAdvice: showAdvice },\r\n });\r\n document.dispatchEvent(clockEvent);\r\n });\r\n\r\n if (!items || items.lenght === 0) {\r\n this.setState({ showAdvice: false });\r\n this.props.close();\r\n } else {\r\n var toUnsubscribe = items\r\n .filter((x) => !x.checked)\r\n .map((x) => x.id);\r\n this.props.unsubscribeToEvents(toUnsubscribe).then(() => {\r\n this.props.close();\r\n this.setState({ showAdvice: false });\r\n });\r\n }\r\n };\r\n applySettings(data) {\r\n this.saveData(false, true, data);\r\n }\r\n\r\n cancel(data) {\r\n const { settings } = this.props;\r\n this.state.settings.view = settings.view;\r\n this.saveData(true, true, data);\r\n }\r\n render({ config, data, translate }) {\r\n return (\r\n config.show && (\r\n <div\r\n class=\"fxs_widget fxs_cs_modal\"\r\n tabindex=\"-1\"\r\n role=\"dialog\"\r\n aria-hidden=\"true\"\r\n >\r\n <div\r\n class={`fxs_cs_modal_content ${\r\n this.state.showAdvice\r\n ? \"fxs_cs_modal_content_advice\"\r\n : \"\"\r\n }`}\r\n >\r\n <button\r\n type=\"button\"\r\n onClick={() => this.close()}\r\n class=\"fxs_modal_close fxs_btn_icon close fxs_cs_modal_close\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close Modal\"\r\n data-gtmid={\r\n config.tracking && GTM_ID.CONFIGURATION_CLOSE\r\n }\r\n data-ga4event-clk-name={ config.tracking && GA4EVENT.NAMES.FEATURES_CALENDAR}\r\n data-ga4event-element = { config.tracking && GA4EVENT.ELEMENTS.CONFIGURATION_CLOSE}\r\n\r\n >\r\n <IconTimes />\r\n <span class=\"fxs_skip\">Close</span>\r\n </button>\r\n {this.state.showAdvice ? (\r\n <ConfirmationPopUp\r\n cancel={() => this.cancel(data)}\r\n save={() => this.applySettings(data)}\r\n ></ConfirmationPopUp>\r\n ) : (\r\n <SettingsOptions\r\n onCheckboxChanged={() =>\r\n this.onCheckboxChanged()\r\n }\r\n notificationSoundOn={\r\n this.state.settings.notificationSoundOn\r\n }\r\n view={this.state.settings.view}\r\n onOptionChange={(option) =>\r\n this.onOptionChange(option)\r\n }\r\n toggle={(item) => this.toggle(item)}\r\n onApply={(data) => this.onApply(data)}\r\n ></SettingsOptions>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n );\r\n }\r\n}\r\n\r\nexport default connectWithTranslations(\r\n \"settings, config, data\",\r\n actions\r\n)(SettingsContainer);\r\n","export const GTM_ID = {\r\n NOTIFICATIONS: \"features-calendar-configuration-notifications\",\r\n CONFIGURATION_APPLY: \"features-calendar-configuration-apply\",\r\n CONFIGURATION_CLOSE: \"features-calendar-configuration-close\",\r\n CONFIGURATION_PUSH_SELECT: (eventDateId, checked) =>\r\n checked ? `features-calendar-configuration-select-${eventDateId}` : `features-calendar-configuration-unselect-${eventDateId}`,\r\n};\r\nexport const GA4EVENT = {\r\n NAMES: { FEATURES_CALENDAR: \"features-calendar\" },\r\n ELEMENTS: {\r\n NOTIFICATIONS: \"configuration-notifications\",\r\n CONFIGURATION_APPLY: \"configuration-apply\",\r\n CONFIGURATION_CLOSE: \"configuration-close\",\r\n CONFIGURATION_PUSH_SELECT: (checked) =>\r\n checked ? `configuration-select` : `configuration-unselect`,\r\n }\r\n};\r\n"],"sourceRoot":""}